/* ------------------------------------------------------------------------ *\
 * Helpers
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Mixins
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Functions
\* ------------------------------------------------------------------------ */
/*
 * Retrieve a color variable
 *
 * @param  {string}  $color - The name of the color as defined in _variables
 * @param  {string}  $tone  - The variant of the color (shade|base|tint)
 */
/*
 * Remove the unit of a length
 *
 * @param  {Number}  $number
 */
/*
 * Convert PX units in to EM or REM, relative to a specified base sizes
 *
 * @param  {Number}  $size - Array of up to four sizes in PX units
 * @param  {Number}  $base - Font size to base calculations off of
 * @param  {String}  $unit - Either "em" or "rem"
 */
/*
 * Convert Photoshop leading to CSS line-height
 *
 * @param  {Number}  $size - Value of Leading in Photoshop's Character Panel
 * @param  {Number}  $base - Value of Font Size in Photosohp's Character Panel
 */
/*
 * Convert Photoshop tracking to CSS letter-spacing
 *
 * @param  {Number}  $size - Value of Tracking in Photoshop's Character Panel
 * @param  {Number}  $base - Value of Font Size in Photosohp's Character Panel
 */
/* ------------------------------------------------------------------------ *\
 * Colors
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Fonts                                                                    *
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Widths                                                                   *
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Break Points                                                             *
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Layers                                                                   *
\* ------------------------------------------------------------------------ */
.__dark {
  color: #000000 !important; }

.__light {
  color: #FFFFFF !important; }

.__big {
  font-size: 1.25em !important; }

.__small {
  font-size: 0.75em !important; }

.__bold {
  font-weight: 700 !important; }

.__italic {
  font-style: italic !important; }

.__textcenter {
  text-align: center !important; }

.__textleft {
  text-align: left !important; }

.__textright {
  text-align: right !important; }

.__nowrap {
  white-space: nowrap !important; }

.__center {
  margin-left: auto !important;
  margin-right: auto !important; }

.__left {
  float: left !important; }

.__right {
  float: right !important; }

.__nomargin {
  margin: 0 !important; }

.__nopadding {
  padding: 0 !important; }

.__notransform {
  transform: none !important; }

.__notransition {
  transition: none !important; }

.__block {
  display: block !important; }

.__flex {
  display: flex !important; }

.__visuallyhidden,
.visually-hidden {
  left: -999em !important;
  position: absolute !important;
  top: -999em !important; }

.__primary {
  color: #008340 !important; }

.__accent {
  color: #A5530D !important; }

.__warning {
  color: #C62828 !important; }

/* visibility classes */
@media (pointer: fine) {
  .__touch {
    display: none !important; } }

@supports not (pointer: fine) {
  .__touch {
    display: none !important; } }

@media (pointer: course) {
  .__mouse {
    display: none !important; } }

@media print {
  .__noprint {
    display: none !important; } }

/* "visible" classes */
@media (max-width: 47.9375em) {
  .__visible-xs {
    display: none !important; } }

@media (max-width: 53.25em) {
  .__visible-s {
    display: none !important; } }

@media (max-width: 59.9375em) {
  .__visible-m {
    display: none !important; } }

@media (max-width: 63.9375em) {
  .__visible-l {
    display: none !important; } }

@media (max-width: 79.9375em) {
  .__visible-xl {
    display: none !important; } }

/* "hidden" classes -- NOTE: It is important that _hidden classes come after _visible for override purposes */
@media (min-width: 48em) {
  .__hidden-xs {
    display: none !important; } }

@media (min-width: 53.3125em) {
  .__hidden-s {
    display: none !important; } }

@media (min-width: 60em) {
  .__hidden-m {
    display: none !important; } }

@media (min-width: 64em) {
  .__hidden-l {
    display: none !important; } }

@media (min-width: 80em) {
  .__hidden-xl {
    display: none !important; } }

/* ------------------------------------------------------------------------ *\
 * Module
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Layout
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Module
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Layout
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Module
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Article
\* ------------------------------------------------------------------------ */
/* excerpt variant */
.article--excerpt .article__image {
  height: 15.625em !important; }

/* full variant */
.article--full .article__figure {
  float: left;
  margin-right: 30px;
  margin-right: 1.875rem;
  width: 33.33333%; }

/* ------------------------------------------------------------------------ *\
 * Call to Action
\* ------------------------------------------------------------------------ */
.call-to-action {
  margin-bottom: 0; }

.call-to-action__content {
  padding: 35px;
  padding: 2.1875rem; }

/* ------------------------------------------------------------------------ *\
 * Swiper (http://idangero.us/swiper/)
\* ------------------------------------------------------------------------ */
/* stylelint-disable selector-class-pattern */
.swiper-image {
  height: 24.375em; }

.swiper-slide--tall .swiper-image {
  height: 33.125em; }

.swiper-caption {
  padding: 35px 55px;
  padding: 2.1875rem 3.4375rem; }

.swiper-slide--tall .swiper-caption {
  left: 0;
  max-height: 100%;
  overflow: auto;
  padding-left: 100px;
  padding-left: 6.25rem;
  padding-right: 100px;
  padding-right: 6.25rem;
  position: absolute;
  top: 50%;
  transform: translateY(-50%); }

.swiper-slide--tall .swiper-caption .swiper-caption-inner {
  justify-content: flex-start; }

.swiper-user-content {
  /* stylelint-disable selector-max-type */
  /* stylelint-enable selector-max-type */ }
  .swiper-slide--tall .swiper-user-content p {
    max-width: 620px;
    max-width: 38.75rem;
    width: 100%; }

/* ------------------------------------------------------------------------ *\
 * Layout
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Content
\* ------------------------------------------------------------------------ */
.content__sidebar {
  margin: -125px 30px 0px 0px;
  margin: -7.8125rem 1.875rem 0rem 0rem; }

/* ------------------------------------------------------------------------ *\
 * Callouts
\* ------------------------------------------------------------------------ */
.callouts__inner {
  padding: 90px 95px;
  padding: 5.625rem 5.9375rem; }

/* fullbleed variant */
.callouts-block--fullbleed {
  padding: 90px 95px;
  padding: 5.625rem 5.9375rem; }

.callouts-block--fullbleed > .callouts__inner {
  padding: 0; }

/* ------------------------------------------------------------------------ *\
 * Related
\* ------------------------------------------------------------------------ */
.related__inner {
  padding-bottom: 75px;
  padding-bottom: 4.6875rem;
  padding-top: 75px;
  padding-top: 4.6875rem; }

.related__logo {
  margin-bottom: 0; }

/* fullbleed variant */
.related-block--fullbleed {
  padding: 0px 25px;
  padding: 0rem 1.5625rem; }

.related-block--fullbleed > .related__inner {
  padding-left: 0;
  padding-right: 0; }

/* ------------------------------------------------------------------------ *\
 * Newsletter
\* ------------------------------------------------------------------------ */
.newsletter__inner {
  margin-bottom: 20px;
  margin-bottom: 1.25rem;
  margin-top: 20px;
  margin-top: 1.25rem;
  padding: 35px 40px;
  padding: 2.1875rem 2.5rem; }

.newsletter__button {
  width: 100%; }

.newsletter__text {
  margin-bottom: 0; }

.newsletter__input {
  margin-bottom: 0; }

/* fullbleed variant */
.newsletter-block--fullbleed {
  margin-bottom: 20px;
  margin-bottom: 1.25rem;
  margin-top: 20px;
  margin-top: 1.25rem;
  padding: 35px 40px;
  padding: 2.1875rem 2.5rem; }

.newsletter-block--fullbleed > .newsletter__inner {
  margin-bottom: 0px;
  margin-bottom: 0rem;
  margin-top: 0px;
  margin-top: 0rem;
  padding: 0; }

/* ------------------------------------------------------------------------ *\
 * Footer
\* ------------------------------------------------------------------------ */
.footer__inner {
  padding-left: 40px;
  padding-left: 2.5rem;
  padding-right: 40px;
  padding-right: 2.5rem; }

.footer__text {
  font-size: 0.8125em;
  line-height: 2em;
  margin-bottom: 0; }

.footer__logo {
  margin-bottom: 0; }

.footer__menu-list__container .menu-list--sitemap {
  font-size: 0.8125em;
  line-height: 2em; }

/* fullbleed variant */
.footer-block--fullbleed {
  padding-left: 40px;
  padding-left: 2.5rem;
  padding-right: 40px;
  padding-right: 2.5rem; }

.footer-block--fullbleed > .footer__inner {
  padding-left: 0;
  padding-right: 0; }

/* ------------------------------------------------------------------------ *\
 * Module
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Layout
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Module
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Layout
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Module
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Layout
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Header
\* ------------------------------------------------------------------------ */
@media screen and (max-width: 96.875em) {
  .header-block {
    font-size: 1.032258064516129vw; } }

.header__inner {
  padding-bottom: 20px;
  padding-bottom: 1.25rem;
  padding-top: 20px;
  padding-top: 1.25rem; }

.header__logo .logo__image {
  width: 17.5em; }

/* fullbleed variant */
.header-block--fullbleed {
  padding-bottom: 20px;
  padding-bottom: 1.25rem;
  padding-top: 20px;
  padding-top: 1.25rem; }

.header-block--fullbleed > .header__inner {
  padding-bottom: 0;
  padding-top: 0; }

/* ------------------------------------------------------------------------ *\
 * Module
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Layout
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Module
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Layout
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Module
\* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ *\
 * Layout
\* ------------------------------------------------------------------------ */
.col-1 {
  max-width: 8.33333%; }

.col-2 {
  max-width: 16.66667%; }

.col-3 {
  max-width: 25%; }

.col-4 {
  max-width: 33.33333%; }

.col-5 {
  max-width: 41.66667%; }

.col-6 {
  max-width: 50%; }

.col-7 {
  max-width: 58.33333%; }

.col-8 {
  max-width: 66.66667%; }

.col-9 {
  max-width: 75%; }

.col-10 {
  max-width: 83.33333%; }

.col-11 {
  max-width: 91.66667%; }

.col-12 {
  max-width: 100%; }

@media (min-width: 48em) {
  .col-xs-1 {
    max-width: 8.33333%; }
  .col-xs-2 {
    max-width: 16.66667%; }
  .col-xs-3 {
    max-width: 25%; }
  .col-xs-4 {
    max-width: 33.33333%; }
  .col-xs-5 {
    max-width: 41.66667%; }
  .col-xs-6 {
    max-width: 50%; }
  .col-xs-7 {
    max-width: 58.33333%; }
  .col-xs-8 {
    max-width: 66.66667%; }
  .col-xs-9 {
    max-width: 75%; }
  .col-xs-10 {
    max-width: 83.33333%; }
  .col-xs-11 {
    max-width: 91.66667%; }
  .col-xs-12 {
    max-width: 100%; } }

@media (min-width: 53.3125em) {
  .col-s-1 {
    max-width: 8.33333%; }
  .col-s-2 {
    max-width: 16.66667%; }
  .col-s-3 {
    max-width: 25%; }
  .col-s-4 {
    max-width: 33.33333%; }
  .col-s-5 {
    max-width: 41.66667%; }
  .col-s-6 {
    max-width: 50%; }
  .col-s-7 {
    max-width: 58.33333%; }
  .col-s-8 {
    max-width: 66.66667%; }
  .col-s-9 {
    max-width: 75%; }
  .col-s-10 {
    max-width: 83.33333%; }
  .col-s-11 {
    max-width: 91.66667%; }
  .col-s-12 {
    max-width: 100%; } }

@media (min-width: 60em) {
  .col-m-1 {
    max-width: 8.33333%; }
  .col-m-2 {
    max-width: 16.66667%; }
  .col-m-3 {
    max-width: 25%; }
  .col-m-4 {
    max-width: 33.33333%; }
  .col-m-5 {
    max-width: 41.66667%; }
  .col-m-6 {
    max-width: 50%; }
  .col-m-7 {
    max-width: 58.33333%; }
  .col-m-8 {
    max-width: 66.66667%; }
  .col-m-9 {
    max-width: 75%; }
  .col-m-10 {
    max-width: 83.33333%; }
  .col-m-11 {
    max-width: 91.66667%; }
  .col-m-12 {
    max-width: 100%; } }

@media (min-width: 64em) {
  .col-l-1 {
    max-width: 8.33333%; }
  .col-l-2 {
    max-width: 16.66667%; }
  .col-l-3 {
    max-width: 25%; }
  .col-l-4 {
    max-width: 33.33333%; }
  .col-l-5 {
    max-width: 41.66667%; }
  .col-l-6 {
    max-width: 50%; }
  .col-l-7 {
    max-width: 58.33333%; }
  .col-l-8 {
    max-width: 66.66667%; }
  .col-l-9 {
    max-width: 75%; }
  .col-l-10 {
    max-width: 83.33333%; }
  .col-l-11 {
    max-width: 91.66667%; }
  .col-l-12 {
    max-width: 100%; } }

@media (min-width: 80em) {
  .col-xl-1 {
    max-width: 8.33333%; }
  .col-xl-2 {
    max-width: 16.66667%; }
  .col-xl-3 {
    max-width: 25%; }
  .col-xl-4 {
    max-width: 33.33333%; }
  .col-xl-5 {
    max-width: 41.66667%; }
  .col-xl-6 {
    max-width: 50%; }
  .col-xl-7 {
    max-width: 58.33333%; }
  .col-xl-8 {
    max-width: 66.66667%; }
  .col-xl-9 {
    max-width: 75%; }
  .col-xl-10 {
    max-width: 83.33333%; }
  .col-xl-11 {
    max-width: 91.66667%; }
  .col-xl-12 {
    max-width: 100%; } }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhlbHBlcnMvX2hlbHBlcnMuc2NzcyIsImxlZ2FjeS5jc3MiLCJoZWxwZXJzL19taXhpbnMuc2NzcyIsImhlbHBlcnMvX2Z1bmN0aW9ucy5zY3NzIiwiaGVscGVycy9fdmFyaWFibGVzLnNjc3MiLCJ2aWV3cy9fc2NyZWVuX3h4eHMuc2NzcyIsInZpZXdzL19zY3JlZW5feHhzLnNjc3MiLCJ2aWV3cy9fc2NyZWVuX3hzLnNjc3MiLCJtb2R1bGUvYXJ0aWNsZS9fYXJ0aWNsZV94cy5zY3NzIiwibW9kdWxlL2NhbGwtdG8tYWN0aW9uL19jYWxsLXRvLWFjdGlvbl94cy5zY3NzIiwibW9kdWxlL3N3aXBlci9fc3dpcGVyX3hzLnNjc3MiLCJsYXlvdXQvY29udGVudC9fY29udGVudF94cy5zY3NzIiwibGF5b3V0L2NhbGxvdXRzL19jYWxsb3V0c194cy5zY3NzIiwibGF5b3V0L3JlbGF0ZWQvX3JlbGF0ZWRfeHMuc2NzcyIsImxheW91dC9uZXdzbGV0dGVyL19uZXdzbGV0dGVyX3hzLnNjc3MiLCJsYXlvdXQvZm9vdGVyL19mb290ZXJfeHMuc2NzcyIsInZpZXdzL19zY3JlZW5fcy5zY3NzIiwidmlld3MvX3NjcmVlbl9tLnNjc3MiLCJ2aWV3cy9fc2NyZWVuX2wuc2NzcyIsImxheW91dC9oZWFkZXIvX2hlYWRlcl9sLnNjc3MiLCJ2aWV3cy9fc2NyZWVuX3hsLnNjc3MiLCJ2aWV3cy9fc2NyZWVuX3h4bC5zY3NzIiwidmlld3MvX3NjcmVlbl94eHhsLnNjc3MiLCJsZWdhY3kuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7NkVDQTZFO0FDQTdFOzs2RURHNkU7QUVIN0U7OzZFRk02RTtBRUY3RTs7Ozs7RUZRRTtBRUVGOzs7O0VGR0U7QUVNRjs7Ozs7O0VGQ0U7QUU4QkY7Ozs7O0VGeEJFO0FFcUNGOzs7OztFRi9CRTtBR3BDRjs7NkVIdUM2RTtBR2tCN0U7OzZFSGY2RTtBR3NCN0U7OzZFSG5CNkU7QUcyQjdFOzs2RUh4QjZFO0FHa0Q3RTs7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RTtBVWhRN0U7OzZFVm1RNkU7QVUvUDdFO0VBRVEsMkJSNkNxRDtFUTdDckQscUNSNkNxRCxFQUFBOztBU25EN0Q7OzZFWHlRNkU7QVdyUTdFO0VBRVEsa0JUNkNxRDtFUzdDckQsMkJUNkNxRCxFQUFBOztBU3pDN0Qsc0JBQUE7QUFFQTtFQUVRLGtCVHFDcUQ7RVNyQ3JELDJCVHFDcUQsRUFBQTs7QVN2QzdEO0VBTVEsVUFBVSxFQUFBOztBQ2xCbEI7OzZFWnNSNkU7QVlsUjdFO0VBRVEsb0JWNkNxRDtFVTdDckQseUJWNkNxRDtFVTVDckQsaUJWNENxRDtFVTVDckQsc0JWNENxRCxFQUFBOztBVXhDN0Q7RUFFUSxnQkFBZ0IsRUFBQTs7QUFJeEIsc0JBQUE7QUFFQTtFQUVRLGlCVjhCcUQ7RVU5QnJELHVCVjhCcUQsRUFBQTs7QVVoQzdEO0VBTVEsZUFBZTtFQUNmLGdCQUFnQixFQUFBOztBQzFCeEI7OzZFYndTNkU7QWFwUzdFO0VBRVEsbUJYNkNxRDtFVzdDckQsc0JYNkNxRDtFVzVDckQsZ0JYNENxRDtFVzVDckQsbUJYNENxRDtFVzNDckQsa0JYMkNxRDtFVzNDckQseUJYMkNxRCxFQUFBOztBV3ZDN0Q7RUFFUSxXQUFXLEVBQUE7O0FBSW5CO0VBRVEsZ0JBQWdCLEVBQUE7O0FBSXhCO0VBRVEsZ0JBQWdCLEVBQUE7O0FBSXhCLHNCQUFBO0FBRUE7RUFFUSxtQlhpQnFEO0VXakJyRCxzQlhpQnFEO0VXaEJyRCxnQlhnQnFEO0VXaEJyRCxtQlhnQnFEO0VXZnJELGtCWGVxRDtFV2ZyRCx5QlhlcUQsRUFBQTs7QVduQjdEO0VBUVEsa0JYV3FEO0VXWHJELG1CWFdxRDtFV1ZyRCxlWFVxRDtFV1ZyRCxnQlhVcUQ7RVdUckQsVUFBVSxFQUFBOztBQzFDbEI7OzZFZG9VNkU7QWNoVTdFO0VBRVEsa0JaNkNxRDtFWTdDckQsb0JaNkNxRDtFWTVDckQsbUJaNENxRDtFWTVDckQscUJaNENxRCxFQUFBOztBWXhDN0Q7RUFFUSxtQlpzQ3FEO0VZckNyRCxnQlpxQ3FEO0VZcENyRCxnQkFBZ0IsRUFBQTs7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ZUFBMkIsRUFBQSxFQUM5Qjs7QXJCbUZMO0VxQjdFSTtJQUNJLG1CQUEyQixFQUFBO0VBRC9CO0lBQ0ksb0JBQTJCLEVBQUE7RUFEL0I7SUFDSSxjQUEyQixFQUFBO0VBRC9CO0lBQ0ksb0JBQTJCLEVBQUE7RUFEL0I7SUFDSSxvQkFBMkIsRUFBQTtFQUQvQjtJQUNJLGNBQTJCLEVBQUE7RUFEL0I7SUFDSSxvQkFBMkIsRUFBQTtFQUQvQjtJQUNJLG9CQUEyQixFQUFBO0VBRC9CO0lBQ0ksY0FBMkIsRUFBQTtFQUQvQjtJQUNJLG9CQUEyQixFQUFBO0VBRC9CO0lBQ0ksb0JBQTJCLEVBQUE7RUFEL0I7SUFDSSxlQUEyQixFQUFBLEVBQzlCOztBckIyRUw7RXFCckVJO0lBQ0ksbUJBQTJCLEVBQUE7RUFEL0I7SUFDSSxvQkFBMkIsRUFBQTtFQUQvQjtJQUNJLGNBQTJCLEVBQUE7RUFEL0I7SUFDSSxvQkFBMkIsRUFBQTtFQUQvQjtJQUNJLG9CQUEyQixFQUFBO0VBRC9CO0lBQ0ksY0FBMkIsRUFBQTtFQUQvQjtJQUNJLG9CQUEyQixFQUFBO0VBRC9CO0lBQ0ksb0JBQTJCLEVBQUE7RUFEL0I7SUFDSSxjQUEyQixFQUFBO0VBRC9CO0lBQ0ksb0JBQTJCLEVBQUE7RUFEL0I7SUFDSSxvQkFBMkIsRUFBQTtFQUQvQjtJQUNJLGVBQTJCLEVBQUEsRUFDOUIiLCJmaWxlIjoibGVnYWN5LmMxYTJkYzU3LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFN0eWxlcyB3cml0dGVuIGJ5IEphY29iIEJlYXJjZSBAIFdlYmxpbngsIEluYy5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogSGVscGVyc1xuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vLyB2ZW5kb3JcblxuQGltcG9ydCBcImFuZ2xlZC1lZGdlcy9fYW5nbGVkLWVkZ2VzXCI7XG5cbi8vIGltcG9ydHNcblxuQGltcG9ydCBcIl9taXhpbnNcIjtcbkBpbXBvcnQgXCJfZnVuY3Rpb25zXCI7XG5AaW1wb3J0IFwiX3ZhcmlhYmxlc1wiO1xuXG4vLyBnZW5lcmljIGhlbHBlcnNcblxuLl9fZGFyayB7XG4gICAgY29sb3I6IGNvbG9yKFwiZGFya1wiKSAhaW1wb3J0YW50O1xufVxuXG4uX19saWdodCB7XG4gICAgY29sb3I6IGNvbG9yKFwibGlnaHRcIikgIWltcG9ydGFudDtcbn1cblxuLl9fYmlnIHtcbiAgICBmb250LXNpemU6IDEuMjVlbSAhaW1wb3J0YW50O1xufVxuXG4uX19zbWFsbCB7XG4gICAgZm9udC1zaXplOiAwLjc1ZW0gIWltcG9ydGFudDtcbn1cblxuLl9fYm9sZCB7XG4gICAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50O1xufVxuXG4uX19pdGFsaWMge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYyAhaW1wb3J0YW50O1xufVxuXG4uX190ZXh0Y2VudGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbn1cblxuLl9fdGV4dGxlZnQge1xuICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDtcbn1cblxuLl9fdGV4dHJpZ2h0IHtcbiAgICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50O1xufVxuXG4uX19ub3dyYXAge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcbn1cblxuLl9fY2VudGVyIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50O1xufVxuXG4uX19sZWZ0IHtcbiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50O1xufVxuXG4uX19yaWdodCB7XG4gICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7XG59XG5cbi5fX25vbWFyZ2luIHtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbn1cblxuLl9fbm9wYWRkaW5nIHtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5fX25vdHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLl9fbm90cmFuc2l0aW9uIHtcbiAgICB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5fX2Jsb2NrIHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xufVxuXG4uX19mbGV4IHtcbiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG59XG5cbi5fX3Zpc3VhbGx5aGlkZGVuLFxuLnZpc3VhbGx5LWhpZGRlbiB7IC8vIERydXBhbFxuICAgIGxlZnQ6IC05OTllbSAhaW1wb3J0YW50O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICAgIHRvcDogLTk5OWVtICFpbXBvcnRhbnQ7XG59XG5cbi5fX3ByaW1hcnkge1xuICAgIGNvbG9yOiBjb2xvcihcInByaW1hcnlcIikgIWltcG9ydGFudDtcbn1cblxuLl9fYWNjZW50IHtcbiAgICBjb2xvcjogY29sb3IoXCJhY2NlbnRcIikgIWltcG9ydGFudDtcbn1cblxuLl9fd2FybmluZyB7XG4gICAgY29sb3I6IGNvbG9yKFwid2FybmluZ1wiKSAhaW1wb3J0YW50O1xufVxuXG4vKiB2aXNpYmlsaXR5IGNsYXNzZXMgKi9cblxuLy8gd2hlbiBwb2ludGVyIGlzIHByZWNpc2UgKG1vdXNlKVxuQG1lZGlhIChwb2ludGVyOiBmaW5lKSB7XG4gICAgLl9fdG91Y2gge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyB3aGVuIHBvaW50ZXI6IGZpbmUgaXMgbm90IHN1cHBvcnRlZFxuQHN1cHBvcnRzIG5vdCAocG9pbnRlcjogZmluZSkge1xuICAgIC5fX3RvdWNoIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLy8gd2hlbiBwb2ludGVyIGlzIGlucHJlY2lzZSAodG91Y2gpXG5AbWVkaWEgKHBvaW50ZXI6IGNvdXJzZSkge1xuICAgIC5fX21vdXNlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLy8gd2hlbiBwcmludGluZ1xuQG1lZGlhIHByaW50IHtcbiAgICAuX19ub3ByaW50IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLyogXCJ2aXNpYmxlXCIgY2xhc3NlcyAqL1xuXG4vLyAkeHMtYnJlYWtcblxuLl9fdmlzaWJsZS14cyB7XG4gICAgQGluY2x1ZGUgc21hbGxlci10aGFuKHhzKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi8vICRzLWJyZWFrXG5cbi5fX3Zpc2libGUtcyB7XG4gICAgQGluY2x1ZGUgc21hbGxlci10aGFuKHMpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLy8gJG0tYnJlYWtcblxuLl9fdmlzaWJsZS1tIHtcbiAgICBAaW5jbHVkZSBzbWFsbGVyLXRoYW4obSkge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyAkbC1icmVha1xuXG4uX192aXNpYmxlLWwge1xuICAgIEBpbmNsdWRlIHNtYWxsZXItdGhhbihsKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi8vICR4bC1icmVha1xuXG4uX192aXNpYmxlLXhsIHtcbiAgICBAaW5jbHVkZSBzbWFsbGVyLXRoYW4oeGwpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLyogXCJoaWRkZW5cIiBjbGFzc2VzIC0tIE5PVEU6IEl0IGlzIGltcG9ydGFudCB0aGF0IF9oaWRkZW4gY2xhc3NlcyBjb21lIGFmdGVyIF92aXNpYmxlIGZvciBvdmVycmlkZSBwdXJwb3NlcyAqL1xuXG4vLyAkeHMtYnJlYWtcblxuLl9faGlkZGVuLXhzIHtcbiAgICBAaW5jbHVkZSBsYXJnZXItdGhhbih4cykge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyAkcy1icmVha1xuXG4uX19oaWRkZW4tcyB7XG4gICAgQGluY2x1ZGUgbGFyZ2VyLXRoYW4ocykge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyAkbS1icmVha1xuXG4uX19oaWRkZW4tbSB7XG4gICAgQGluY2x1ZGUgbGFyZ2VyLXRoYW4obSkge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyAkbC1icmVha1xuXG4uX19oaWRkZW4tbCB7XG4gICAgQGluY2x1ZGUgbGFyZ2VyLXRoYW4obCkge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyAkeGwtYnJlYWtcblxuLl9faGlkZGVuLXhsIHtcbiAgICBAaW5jbHVkZSBsYXJnZXItdGhhbih4bCkge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIiwiLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogSGVscGVyc1xuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogTWl4aW5zXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBGdW5jdGlvbnNcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qXG4gKiBSZXRyaWV2ZSBhIGNvbG9yIHZhcmlhYmxlXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSAgJGNvbG9yIC0gVGhlIG5hbWUgb2YgdGhlIGNvbG9yIGFzIGRlZmluZWQgaW4gX3ZhcmlhYmxlc1xuICogQHBhcmFtICB7c3RyaW5nfSAgJHRvbmUgIC0gVGhlIHZhcmlhbnQgb2YgdGhlIGNvbG9yIChzaGFkZXxiYXNlfHRpbnQpXG4gKi9cbi8qXG4gKiBSZW1vdmUgdGhlIHVuaXQgb2YgYSBsZW5ndGhcbiAqXG4gKiBAcGFyYW0gIHtOdW1iZXJ9ICAkbnVtYmVyXG4gKi9cbi8qXG4gKiBDb252ZXJ0IFBYIHVuaXRzIGluIHRvIEVNIG9yIFJFTSwgcmVsYXRpdmUgdG8gYSBzcGVjaWZpZWQgYmFzZSBzaXplc1xuICpcbiAqIEBwYXJhbSAge051bWJlcn0gICRzaXplIC0gQXJyYXkgb2YgdXAgdG8gZm91ciBzaXplcyBpbiBQWCB1bml0c1xuICogQHBhcmFtICB7TnVtYmVyfSAgJGJhc2UgLSBGb250IHNpemUgdG8gYmFzZSBjYWxjdWxhdGlvbnMgb2ZmIG9mXG4gKiBAcGFyYW0gIHtTdHJpbmd9ICAkdW5pdCAtIEVpdGhlciBcImVtXCIgb3IgXCJyZW1cIlxuICovXG4vKlxuICogQ29udmVydCBQaG90b3Nob3AgbGVhZGluZyB0byBDU1MgbGluZS1oZWlnaHRcbiAqXG4gKiBAcGFyYW0gIHtOdW1iZXJ9ICAkc2l6ZSAtIFZhbHVlIG9mIExlYWRpbmcgaW4gUGhvdG9zaG9wJ3MgQ2hhcmFjdGVyIFBhbmVsXG4gKiBAcGFyYW0gIHtOdW1iZXJ9ICAkYmFzZSAtIFZhbHVlIG9mIEZvbnQgU2l6ZSBpbiBQaG90b3NvaHAncyBDaGFyYWN0ZXIgUGFuZWxcbiAqL1xuLypcbiAqIENvbnZlcnQgUGhvdG9zaG9wIHRyYWNraW5nIHRvIENTUyBsZXR0ZXItc3BhY2luZ1xuICpcbiAqIEBwYXJhbSAge051bWJlcn0gICRzaXplIC0gVmFsdWUgb2YgVHJhY2tpbmcgaW4gUGhvdG9zaG9wJ3MgQ2hhcmFjdGVyIFBhbmVsXG4gKiBAcGFyYW0gIHtOdW1iZXJ9ICAkYmFzZSAtIFZhbHVlIG9mIEZvbnQgU2l6ZSBpbiBQaG90b3NvaHAncyBDaGFyYWN0ZXIgUGFuZWxcbiAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogQ29sb3JzXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBGb250cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogV2lkdGhzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIEJyZWFrIFBvaW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBMYXllcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLl9fZGFyayB7XG4gIGNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7IH1cblxuLl9fbGlnaHQge1xuICBjb2xvcjogI0ZGRkZGRiAhaW1wb3J0YW50OyB9XG5cbi5fX2JpZyB7XG4gIGZvbnQtc2l6ZTogMS4yNWVtICFpbXBvcnRhbnQ7IH1cblxuLl9fc21hbGwge1xuICBmb250LXNpemU6IDAuNzVlbSAhaW1wb3J0YW50OyB9XG5cbi5fX2JvbGQge1xuICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7IH1cblxuLl9faXRhbGljIHtcbiAgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnQ7IH1cblxuLl9fdGV4dGNlbnRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OyB9XG5cbi5fX3RleHRsZWZ0IHtcbiAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OyB9XG5cbi5fX3RleHRyaWdodCB7XG4gIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7IH1cblxuLl9fbm93cmFwIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50OyB9XG5cbi5fX2NlbnRlciB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OyB9XG5cbi5fX2xlZnQge1xuICBmbG9hdDogbGVmdCAhaW1wb3J0YW50OyB9XG5cbi5fX3JpZ2h0IHtcbiAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7IH1cblxuLl9fbm9tYXJnaW4ge1xuICBtYXJnaW46IDAgIWltcG9ydGFudDsgfVxuXG4uX19ub3BhZGRpbmcge1xuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IH1cblxuLl9fbm90cmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDsgfVxuXG4uX19ub3RyYW5zaXRpb24ge1xuICB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7IH1cblxuLl9fYmxvY2sge1xuICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG5cbi5fX2ZsZXgge1xuICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IH1cblxuLl9fdmlzdWFsbHloaWRkZW4sXG4udmlzdWFsbHktaGlkZGVuIHtcbiAgbGVmdDogLTk5OWVtICFpbXBvcnRhbnQ7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICB0b3A6IC05OTllbSAhaW1wb3J0YW50OyB9XG5cbi5fX3ByaW1hcnkge1xuICBjb2xvcjogIzAwODM0MCAhaW1wb3J0YW50OyB9XG5cbi5fX2FjY2VudCB7XG4gIGNvbG9yOiAjQTU1MzBEICFpbXBvcnRhbnQ7IH1cblxuLl9fd2FybmluZyB7XG4gIGNvbG9yOiAjQzYyODI4ICFpbXBvcnRhbnQ7IH1cblxuLyogdmlzaWJpbGl0eSBjbGFzc2VzICovXG5AbWVkaWEgKHBvaW50ZXI6IGZpbmUpIHtcbiAgLl9fdG91Y2gge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSB9XG5cbkBzdXBwb3J0cyBub3QgKHBvaW50ZXI6IGZpbmUpIHtcbiAgLl9fdG91Y2gge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAocG9pbnRlcjogY291cnNlKSB7XG4gIC5fX21vdXNlIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgcHJpbnQge1xuICAuX19ub3ByaW50IHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0gfVxuXG4vKiBcInZpc2libGVcIiBjbGFzc2VzICovXG5AbWVkaWEgKG1heC13aWR0aDogNDcuOTM3NWVtKSB7XG4gIC5fX3Zpc2libGUteHMge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA1My4yNWVtKSB7XG4gIC5fX3Zpc2libGUtcyB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDU5LjkzNzVlbSkge1xuICAuX192aXNpYmxlLW0ge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA2My45Mzc1ZW0pIHtcbiAgLl9fdmlzaWJsZS1sIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzkuOTM3NWVtKSB7XG4gIC5fX3Zpc2libGUteGwge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSB9XG5cbi8qIFwiaGlkZGVuXCIgY2xhc3NlcyAtLSBOT1RFOiBJdCBpcyBpbXBvcnRhbnQgdGhhdCBfaGlkZGVuIGNsYXNzZXMgY29tZSBhZnRlciBfdmlzaWJsZSBmb3Igb3ZlcnJpZGUgcHVycG9zZXMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSB7XG4gIC5fX2hpZGRlbi14cyB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDUzLjMxMjVlbSkge1xuICAuX19oaWRkZW4tcyB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLl9faGlkZGVuLW0ge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NGVtKSB7XG4gIC5fX2hpZGRlbi1sIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogODBlbSkge1xuICAuX19oaWRkZW4teGwge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSB9XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIE1vZHVsZVxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogTGF5b3V0XG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBNb2R1bGVcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIExheW91dFxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogTW9kdWxlXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBBcnRpY2xlXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiBleGNlcnB0IHZhcmlhbnQgKi9cbi5hcnRpY2xlLS1leGNlcnB0IC5hcnRpY2xlX19pbWFnZSB7XG4gIGhlaWdodDogMTUuNjI1ZW0gIWltcG9ydGFudDsgfVxuXG4vKiBmdWxsIHZhcmlhbnQgKi9cbi5hcnRpY2xlLS1mdWxsIC5hcnRpY2xlX19maWd1cmUge1xuICBmbG9hdDogbGVmdDtcbiAgbWFyZ2luLXJpZ2h0OiAxLjg3NXJlbTtcbiAgd2lkdGg6IDMzLjMzMzMzJTsgfVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBDYWxsIHRvIEFjdGlvblxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLmNhbGwtdG8tYWN0aW9uIHtcbiAgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG4uY2FsbC10by1hY3Rpb25fX2NvbnRlbnQge1xuICBwYWRkaW5nOiAyLjE4NzVyZW07IH1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogU3dpcGVyIChodHRwOi8vaWRhbmdlcm8udXMvc3dpcGVyLylcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gKi9cbi5zd2lwZXItaW1hZ2Uge1xuICBoZWlnaHQ6IDI0LjM3NWVtOyB9XG5cbi5zd2lwZXItc2xpZGUtLXRhbGwgLnN3aXBlci1pbWFnZSB7XG4gIGhlaWdodDogMzMuMTI1ZW07IH1cblxuLnN3aXBlci1jYXB0aW9uIHtcbiAgcGFkZGluZzogMi4xODc1cmVtIDMuNDM3NXJlbTsgfVxuXG4uc3dpcGVyLXNsaWRlLS10YWxsIC5zd2lwZXItY2FwdGlvbiB7XG4gIGxlZnQ6IDA7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG4gIG92ZXJmbG93OiBhdXRvO1xuICBwYWRkaW5nLWxlZnQ6IDYuMjVyZW07XG4gIHBhZGRpbmctcmlnaHQ6IDYuMjVyZW07XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgfVxuXG4uc3dpcGVyLXNsaWRlLS10YWxsIC5zd2lwZXItY2FwdGlvbiAuc3dpcGVyLWNhcHRpb24taW5uZXIge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IH1cblxuLnN3aXBlci11c2VyLWNvbnRlbnQge1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1tYXgtdHlwZSAqL1xuICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNlbGVjdG9yLW1heC10eXBlICovIH1cbiAgLnN3aXBlci1zbGlkZS0tdGFsbCAuc3dpcGVyLXVzZXItY29udGVudCBwIHtcbiAgICBtYXgtd2lkdGg6IDM4Ljc1cmVtO1xuICAgIHdpZHRoOiAxMDAlOyB9XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIExheW91dFxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogQ29udGVudFxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLmNvbnRlbnRfX3NpZGViYXIge1xuICBtYXJnaW46IC03LjgxMjVyZW0gMS44NzVyZW0gMHJlbSAwcmVtOyB9XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIENhbGxvdXRzXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4uY2FsbG91dHNfX2lubmVyIHtcbiAgcGFkZGluZzogNS42MjVyZW0gNS45Mzc1cmVtOyB9XG5cbi8qIGZ1bGxibGVlZCB2YXJpYW50ICovXG4uY2FsbG91dHMtYmxvY2stLWZ1bGxibGVlZCB7XG4gIHBhZGRpbmc6IDUuNjI1cmVtIDUuOTM3NXJlbTsgfVxuXG4uY2FsbG91dHMtYmxvY2stLWZ1bGxibGVlZCA+IC5jYWxsb3V0c19faW5uZXIge1xuICBwYWRkaW5nOiAwOyB9XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIFJlbGF0ZWRcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi5yZWxhdGVkX19pbm5lciB7XG4gIHBhZGRpbmctYm90dG9tOiA0LjY4NzVyZW07XG4gIHBhZGRpbmctdG9wOiA0LjY4NzVyZW07IH1cblxuLnJlbGF0ZWRfX2xvZ28ge1xuICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbi8qIGZ1bGxibGVlZCB2YXJpYW50ICovXG4ucmVsYXRlZC1ibG9jay0tZnVsbGJsZWVkIHtcbiAgcGFkZGluZzogMHJlbSAxLjU2MjVyZW07IH1cblxuLnJlbGF0ZWQtYmxvY2stLWZ1bGxibGVlZCA+IC5yZWxhdGVkX19pbm5lciB7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgcGFkZGluZy1yaWdodDogMDsgfVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBOZXdzbGV0dGVyXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4ubmV3c2xldHRlcl9faW5uZXIge1xuICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xuICBtYXJnaW4tdG9wOiAxLjI1cmVtO1xuICBwYWRkaW5nOiAyLjE4NzVyZW0gMi41cmVtOyB9XG5cbi5uZXdzbGV0dGVyX19idXR0b24ge1xuICB3aWR0aDogMTAwJTsgfVxuXG4ubmV3c2xldHRlcl9fdGV4dCB7XG4gIG1hcmdpbi1ib3R0b206IDA7IH1cblxuLm5ld3NsZXR0ZXJfX2lucHV0IHtcbiAgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG4vKiBmdWxsYmxlZWQgdmFyaWFudCAqL1xuLm5ld3NsZXR0ZXItYmxvY2stLWZ1bGxibGVlZCB7XG4gIG1hcmdpbi1ib3R0b206IDEuMjVyZW07XG4gIG1hcmdpbi10b3A6IDEuMjVyZW07XG4gIHBhZGRpbmc6IDIuMTg3NXJlbSAyLjVyZW07IH1cblxuLm5ld3NsZXR0ZXItYmxvY2stLWZ1bGxibGVlZCA+IC5uZXdzbGV0dGVyX19pbm5lciB7XG4gIG1hcmdpbi1ib3R0b206IDByZW07XG4gIG1hcmdpbi10b3A6IDByZW07XG4gIHBhZGRpbmc6IDA7IH1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogRm9vdGVyXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4uZm9vdGVyX19pbm5lciB7XG4gIHBhZGRpbmctbGVmdDogMi41cmVtO1xuICBwYWRkaW5nLXJpZ2h0OiAyLjVyZW07IH1cblxuLmZvb3Rlcl9fdGV4dCB7XG4gIGZvbnQtc2l6ZTogMC44MTI1ZW07XG4gIGxpbmUtaGVpZ2h0OiAyZW07XG4gIG1hcmdpbi1ib3R0b206IDA7IH1cblxuLmZvb3Rlcl9fbG9nbyB7XG4gIG1hcmdpbi1ib3R0b206IDA7IH1cblxuLmZvb3Rlcl9fbWVudS1saXN0X19jb250YWluZXIgLm1lbnUtbGlzdC0tc2l0ZW1hcCB7XG4gIGZvbnQtc2l6ZTogMC44MTI1ZW07XG4gIGxpbmUtaGVpZ2h0OiAyZW07IH1cblxuLyogZnVsbGJsZWVkIHZhcmlhbnQgKi9cbi5mb290ZXItYmxvY2stLWZ1bGxibGVlZCB7XG4gIHBhZGRpbmctbGVmdDogMi41cmVtO1xuICBwYWRkaW5nLXJpZ2h0OiAyLjVyZW07IH1cblxuLmZvb3Rlci1ibG9jay0tZnVsbGJsZWVkID4gLmZvb3Rlcl9faW5uZXIge1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIHBhZGRpbmctcmlnaHQ6IDA7IH1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogTW9kdWxlXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBMYXlvdXRcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIE1vZHVsZVxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogTGF5b3V0XG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBNb2R1bGVcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIExheW91dFxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogSGVhZGVyXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5Ni44NzVlbSkge1xuICAuaGVhZGVyLWJsb2NrIHtcbiAgICBmb250LXNpemU6IDEuMDMyMjU4MDY0NTE2MTI5dnc7IH0gfVxuXG4uaGVhZGVyX19pbm5lciB7XG4gIHBhZGRpbmctYm90dG9tOiAxLjI1cmVtO1xuICBwYWRkaW5nLXRvcDogMS4yNXJlbTsgfVxuXG4uaGVhZGVyX19sb2dvIC5sb2dvX19pbWFnZSB7XG4gIHdpZHRoOiAxNy41ZW07IH1cblxuLyogZnVsbGJsZWVkIHZhcmlhbnQgKi9cbi5oZWFkZXItYmxvY2stLWZ1bGxibGVlZCB7XG4gIHBhZGRpbmctYm90dG9tOiAxLjI1cmVtO1xuICBwYWRkaW5nLXRvcDogMS4yNXJlbTsgfVxuXG4uaGVhZGVyLWJsb2NrLS1mdWxsYmxlZWQgPiAuaGVhZGVyX19pbm5lciB7XG4gIHBhZGRpbmctYm90dG9tOiAwO1xuICBwYWRkaW5nLXRvcDogMDsgfVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBNb2R1bGVcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIExheW91dFxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogTW9kdWxlXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBMYXlvdXRcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIE1vZHVsZVxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogTGF5b3V0XG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4uY29sLTEge1xuICBtYXgtd2lkdGg6IDguMzMzMzMlOyB9XG5cbi5jb2wtMiB7XG4gIG1heC13aWR0aDogMTYuNjY2NjclOyB9XG5cbi5jb2wtMyB7XG4gIG1heC13aWR0aDogMjUlOyB9XG5cbi5jb2wtNCB7XG4gIG1heC13aWR0aDogMzMuMzMzMzMlOyB9XG5cbi5jb2wtNSB7XG4gIG1heC13aWR0aDogNDEuNjY2NjclOyB9XG5cbi5jb2wtNiB7XG4gIG1heC13aWR0aDogNTAlOyB9XG5cbi5jb2wtNyB7XG4gIG1heC13aWR0aDogNTguMzMzMzMlOyB9XG5cbi5jb2wtOCB7XG4gIG1heC13aWR0aDogNjYuNjY2NjclOyB9XG5cbi5jb2wtOSB7XG4gIG1heC13aWR0aDogNzUlOyB9XG5cbi5jb2wtMTAge1xuICBtYXgtd2lkdGg6IDgzLjMzMzMzJTsgfVxuXG4uY29sLTExIHtcbiAgbWF4LXdpZHRoOiA5MS42NjY2NyU7IH1cblxuLmNvbC0xMiB7XG4gIG1heC13aWR0aDogMTAwJTsgfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAuY29sLXhzLTEge1xuICAgIG1heC13aWR0aDogOC4zMzMzMyU7IH1cbiAgLmNvbC14cy0yIHtcbiAgICBtYXgtd2lkdGg6IDE2LjY2NjY3JTsgfVxuICAuY29sLXhzLTMge1xuICAgIG1heC13aWR0aDogMjUlOyB9XG4gIC5jb2wteHMtNCB7XG4gICAgbWF4LXdpZHRoOiAzMy4zMzMzMyU7IH1cbiAgLmNvbC14cy01IHtcbiAgICBtYXgtd2lkdGg6IDQxLjY2NjY3JTsgfVxuICAuY29sLXhzLTYge1xuICAgIG1heC13aWR0aDogNTAlOyB9XG4gIC5jb2wteHMtNyB7XG4gICAgbWF4LXdpZHRoOiA1OC4zMzMzMyU7IH1cbiAgLmNvbC14cy04IHtcbiAgICBtYXgtd2lkdGg6IDY2LjY2NjY3JTsgfVxuICAuY29sLXhzLTkge1xuICAgIG1heC13aWR0aDogNzUlOyB9XG4gIC5jb2wteHMtMTAge1xuICAgIG1heC13aWR0aDogODMuMzMzMzMlOyB9XG4gIC5jb2wteHMtMTEge1xuICAgIG1heC13aWR0aDogOTEuNjY2NjclOyB9XG4gIC5jb2wteHMtMTIge1xuICAgIG1heC13aWR0aDogMTAwJTsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1My4zMTI1ZW0pIHtcbiAgLmNvbC1zLTEge1xuICAgIG1heC13aWR0aDogOC4zMzMzMyU7IH1cbiAgLmNvbC1zLTIge1xuICAgIG1heC13aWR0aDogMTYuNjY2NjclOyB9XG4gIC5jb2wtcy0zIHtcbiAgICBtYXgtd2lkdGg6IDI1JTsgfVxuICAuY29sLXMtNCB7XG4gICAgbWF4LXdpZHRoOiAzMy4zMzMzMyU7IH1cbiAgLmNvbC1zLTUge1xuICAgIG1heC13aWR0aDogNDEuNjY2NjclOyB9XG4gIC5jb2wtcy02IHtcbiAgICBtYXgtd2lkdGg6IDUwJTsgfVxuICAuY29sLXMtNyB7XG4gICAgbWF4LXdpZHRoOiA1OC4zMzMzMyU7IH1cbiAgLmNvbC1zLTgge1xuICAgIG1heC13aWR0aDogNjYuNjY2NjclOyB9XG4gIC5jb2wtcy05IHtcbiAgICBtYXgtd2lkdGg6IDc1JTsgfVxuICAuY29sLXMtMTAge1xuICAgIG1heC13aWR0aDogODMuMzMzMzMlOyB9XG4gIC5jb2wtcy0xMSB7XG4gICAgbWF4LXdpZHRoOiA5MS42NjY2NyU7IH1cbiAgLmNvbC1zLTEyIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7IH0gfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjBlbSkge1xuICAuY29sLW0tMSB7XG4gICAgbWF4LXdpZHRoOiA4LjMzMzMzJTsgfVxuICAuY29sLW0tMiB7XG4gICAgbWF4LXdpZHRoOiAxNi42NjY2NyU7IH1cbiAgLmNvbC1tLTMge1xuICAgIG1heC13aWR0aDogMjUlOyB9XG4gIC5jb2wtbS00IHtcbiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzJTsgfVxuICAuY29sLW0tNSB7XG4gICAgbWF4LXdpZHRoOiA0MS42NjY2NyU7IH1cbiAgLmNvbC1tLTYge1xuICAgIG1heC13aWR0aDogNTAlOyB9XG4gIC5jb2wtbS03IHtcbiAgICBtYXgtd2lkdGg6IDU4LjMzMzMzJTsgfVxuICAuY29sLW0tOCB7XG4gICAgbWF4LXdpZHRoOiA2Ni42NjY2NyU7IH1cbiAgLmNvbC1tLTkge1xuICAgIG1heC13aWR0aDogNzUlOyB9XG4gIC5jb2wtbS0xMCB7XG4gICAgbWF4LXdpZHRoOiA4My4zMzMzMyU7IH1cbiAgLmNvbC1tLTExIHtcbiAgICBtYXgtd2lkdGg6IDkxLjY2NjY3JTsgfVxuICAuY29sLW0tMTIge1xuICAgIG1heC13aWR0aDogMTAwJTsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NGVtKSB7XG4gIC5jb2wtbC0xIHtcbiAgICBtYXgtd2lkdGg6IDguMzMzMzMlOyB9XG4gIC5jb2wtbC0yIHtcbiAgICBtYXgtd2lkdGg6IDE2LjY2NjY3JTsgfVxuICAuY29sLWwtMyB7XG4gICAgbWF4LXdpZHRoOiAyNSU7IH1cbiAgLmNvbC1sLTQge1xuICAgIG1heC13aWR0aDogMzMuMzMzMzMlOyB9XG4gIC5jb2wtbC01IHtcbiAgICBtYXgtd2lkdGg6IDQxLjY2NjY3JTsgfVxuICAuY29sLWwtNiB7XG4gICAgbWF4LXdpZHRoOiA1MCU7IH1cbiAgLmNvbC1sLTcge1xuICAgIG1heC13aWR0aDogNTguMzMzMzMlOyB9XG4gIC5jb2wtbC04IHtcbiAgICBtYXgtd2lkdGg6IDY2LjY2NjY3JTsgfVxuICAuY29sLWwtOSB7XG4gICAgbWF4LXdpZHRoOiA3NSU7IH1cbiAgLmNvbC1sLTEwIHtcbiAgICBtYXgtd2lkdGg6IDgzLjMzMzMzJTsgfVxuICAuY29sLWwtMTEge1xuICAgIG1heC13aWR0aDogOTEuNjY2NjclOyB9XG4gIC5jb2wtbC0xMiB7XG4gICAgbWF4LXdpZHRoOiAxMDAlOyB9IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDgwZW0pIHtcbiAgLmNvbC14bC0xIHtcbiAgICBtYXgtd2lkdGg6IDguMzMzMzMlOyB9XG4gIC5jb2wteGwtMiB7XG4gICAgbWF4LXdpZHRoOiAxNi42NjY2NyU7IH1cbiAgLmNvbC14bC0zIHtcbiAgICBtYXgtd2lkdGg6IDI1JTsgfVxuICAuY29sLXhsLTQge1xuICAgIG1heC13aWR0aDogMzMuMzMzMzMlOyB9XG4gIC5jb2wteGwtNSB7XG4gICAgbWF4LXdpZHRoOiA0MS42NjY2NyU7IH1cbiAgLmNvbC14bC02IHtcbiAgICBtYXgtd2lkdGg6IDUwJTsgfVxuICAuY29sLXhsLTcge1xuICAgIG1heC13aWR0aDogNTguMzMzMzMlOyB9XG4gIC5jb2wteGwtOCB7XG4gICAgbWF4LXdpZHRoOiA2Ni42NjY2NyU7IH1cbiAgLmNvbC14bC05IHtcbiAgICBtYXgtd2lkdGg6IDc1JTsgfVxuICAuY29sLXhsLTEwIHtcbiAgICBtYXgtd2lkdGg6IDgzLjMzMzMzJTsgfVxuICAuY29sLXhsLTExIHtcbiAgICBtYXgtd2lkdGg6IDkxLjY2NjY3JTsgfVxuICAuY29sLXhsLTEyIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7IH0gfVxuIiwiLy8gU3R5bGVzIHdyaXR0ZW4gYnkgSmFjb2IgQmVhcmNlIEAgV2VibGlueCwgSW5jLlxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBNaXhpbnNcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLy8gbnRoLWNoaWxkOiBodHRwczovL3BhdWx1bmQuY28udWsvbnRoLWNoaWxkLXNhc3MtbWl4aW5zXG5cbkBtaXhpbiBmaXJzdC1jaGlsZCgpIHtcbiAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbkBtaXhpbiBsYXN0LWNoaWxkKCkge1xuICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gZXZlbigpIHtcbiAgICAmOm50aC1jaGlsZChldmVuKSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuQG1peGluIG9kZCgpIHtcbiAgICAmOm50aC1jaGlsZChvZGQpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gZmlyc3QoJG51bSkge1xuICAgIEBpZiAkbnVtID09IDEge1xuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgICAmOm50aC1jaGlsZCgtbiArICN7JG51bX0pIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gbGFzdCgkbnVtKSB7XG4gICAgJjpudGgtbGFzdC1jaGlsZCgtbiArICN7JG51bX0pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gYWZ0ZXIoJG51bSkge1xuICAgICY6bnRoLWNoaWxkKG4rI3skbnVtICsgMX0pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gZnJvbS1lbmQoJG51bSkge1xuICAgICY6bnRoLWxhc3QtY2hpbGQoI3skbnVtfSkge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbkBtaXhpbiBiZXR3ZWVuKCRmaXJzdCwkbGFzdCkge1xuICAgICY6bnRoLWNoaWxkKG4rI3skZmlyc3R9KTpudGgtY2hpbGQoLW4rI3skbGFzdH0pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gYWxsLWJ1dCgkbnVtKSB7XG4gICAgJjpub3QoOm50aC1jaGlsZCgjeyRudW19KSkge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbkBtaXhpbiBlYWNoKCRudW0pIHtcbiAgICAmOm50aC1jaGlsZCgjeyRudW19bikge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbi8vIGxheWVyc1xuXG5AbWl4aW4gbGF5ZXIoJGxheWVyLW5hbWUpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogbWFwLWdldCgkbGF5ZXJzLCAkbGF5ZXItbmFtZSk7XG59XG5cbi8vIFNjYWxlIGR5bmFpbWNhbGx5IHVudGlsIGEgZ2l2ZW4gdmlld3BvcnRcblxuQG1peGluIHZpZXdwb3J0LXNjYWxlKCRzaXplOiAxNiwgJGJhc2U6IDEwMjQsICRtaW4td2lkdGg6IDAsICRtYXgtd2lkdGg6IG51bGwpIHtcbiAgICAkbWF4LXdpZHRoOiBpZigkbWF4LXdpZHRoID09IG51bGwsICRiYXNlLCAkbWF4LXdpZHRoKTtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IHJlbWlmeSgkbWluLXdpZHRoLCAxNikpIGFuZCAobWF4LXdpZHRoOiByZW1pZnkoJG1heC13aWR0aCwgMTYpKSB7XG4gICAgICAgIGZvbnQtc2l6ZTogKCRzaXplIC8gJGJhc2UpICogMTAwdnc7XG4gICAgfVxufVxuXG4vLyBDcmVhdGUgYSBtZWRpYSBxdWVyeSByZWxhdGllIHRvIGEgYnJlYWsgcG9pbnQgdmFyaWFibGVcblxuQG1peGluIHNtYWxsZXItdGhhbigkcG9pbnQtbmFtZSwgJGluY2x1c2l2ZTogZmFsc2UpIHtcbiAgICAkd2lkdGg6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkcG9pbnQtbmFtZSk7XG5cbiAgICBAaWYgJGluY2x1c2l2ZSA9PSBmYWxzZSB7XG4gICAgICAgICR3aWR0aDogJHdpZHRoIC0gKDEgLyAxNik7XG4gICAgfVxuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICR3aWR0aCkge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbi8vIENyZWF0ZSBhIG1lZGlhIHF1ZXJ5IHJlbGF0aWUgdG8gYSBicmVhayBwb2ludCB2YXJpYWJsZVxuXG5AbWl4aW4gbGFyZ2VyLXRoYW4oJHBvaW50LW5hbWUsICRpbmNsdXNpdmU6IHRydWUpIHtcbiAgICAkd2lkdGg6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkcG9pbnQtbmFtZSk7XG5cbiAgICBAaWYgJGluY2x1c2l2ZSA9PSBmYWxzZSB7XG4gICAgICAgICR3aWR0aDogJHdpZHRoICsgKDEgLyAxNik7XG4gICAgfVxuXG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICR3aWR0aCkge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG4iLCIvLyBTdHlsZXMgd3JpdHRlbiBieSBKYWNvYiBCZWFyY2UgQCBXZWJsaW54LCBJbmMuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIEZ1bmN0aW9uc1xuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKlxuICogUmV0cmlldmUgYSBjb2xvciB2YXJpYWJsZVxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gICRjb2xvciAtIFRoZSBuYW1lIG9mIHRoZSBjb2xvciBhcyBkZWZpbmVkIGluIF92YXJpYWJsZXNcbiAqIEBwYXJhbSAge3N0cmluZ30gICR0b25lICAtIFRoZSB2YXJpYW50IG9mIHRoZSBjb2xvciAoc2hhZGV8YmFzZXx0aW50KVxuICovXG5AZnVuY3Rpb24gY29sb3IoJGNvbG9yLCAkdG9uZTogYmFzZSkge1xuICAgIEByZXR1cm4gbWFwLWdldChtYXAtZ2V0KCRjb2xvcnMsICRjb2xvciksICR0b25lKTtcbn1cblxuLypcbiAqIFJlbW92ZSB0aGUgdW5pdCBvZiBhIGxlbmd0aFxuICpcbiAqIEBwYXJhbSAge051bWJlcn0gICRudW1iZXJcbiAqL1xuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJG51bWJlcikge1xuICAgIEByZXR1cm4gaWYodHlwZS1vZigkbnVtYmVyKSA9PSBcIm51bWJlclwiIGFuZCBub3QgdW5pdGxlc3MoJG51bWJlciksICRudW1iZXIgLyAoJG51bWJlciAqIDAgKzEpLCAkbnVtYmVyKTtcbn1cblxuLypcbiAqIENvbnZlcnQgUFggdW5pdHMgaW4gdG8gRU0gb3IgUkVNLCByZWxhdGl2ZSB0byBhIHNwZWNpZmllZCBiYXNlIHNpemVzXG4gKlxuICogQHBhcmFtICB7TnVtYmVyfSAgJHNpemUgLSBBcnJheSBvZiB1cCB0byBmb3VyIHNpemVzIGluIFBYIHVuaXRzXG4gKiBAcGFyYW0gIHtOdW1iZXJ9ICAkYmFzZSAtIEZvbnQgc2l6ZSB0byBiYXNlIGNhbGN1bGF0aW9ucyBvZmYgb2ZcbiAqIEBwYXJhbSAge1N0cmluZ30gICR1bml0IC0gRWl0aGVyIFwiZW1cIiBvciBcInJlbVwiXG4gKi9cbkBmdW5jdGlvbiByZW1pZnkoJHNpemVzOiAoJHNpemUxLCAkc2l6ZTIsICRzaXplMywgJHNpemU0KSwgJGJhc2U6IG51bGwsICR1bml0OiBudWxsKSB7XG4gICAgJHVuaXQ6IGlmKCR1bml0ID09IG51bGwsIGlmKCRiYXNlID09IG51bGwsIHJlbSwgZW0pLCAkdW5pdCk7XG4gICAgJGJhc2U6IGlmKCRiYXNlID09IG51bGwsIDE2LCBzdHJpcC11bml0KCRiYXNlKSk7XG4gICAgJG91dHB1dDogXCJcIjtcblxuICAgIEBlYWNoICRzaXplIGluICRzaXplcyB7XG4gICAgICAgICRzaXplOiBzdHJpcC11bml0KCRzaXplKTtcblxuICAgICAgICBAaWYgdHlwZS1vZigkc2l6ZSkgPT0gXCJudW1iZXJcIiB7XG4gICAgICAgICAgICAvLyBhZGQgYXMgc3BhY2UgaWYgJG91dHB1dCBhbHJlYWR5IGhhcyBhIHZhbHVlXG4gICAgICAgICAgICAkb3V0cHV0OiBpZigkb3V0cHV0ID09IFwiXCIsIFwiXCIsICRvdXRwdXQgKyBcIiBcIik7XG4gICAgICAgICAgICAvLyBjYWxjdWxhdGUsIGFwcGVuZCB2YWx1ZSB0byAkb3V0cHV0XG4gICAgICAgICAgICAkb3V0cHV0OiAkb3V0cHV0ICsgKChzdHJpcC11bml0KCRzaXplKSAvIHN0cmlwLXVuaXQoJGJhc2UpKSArICR1bml0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAgIC8vIHBhc3MgdGhlIHZhbHVlIHRocm91Z2ggdW5jaGFnbmVkIGlmICRzaXplIGlzIG5vdCBhIG51bWJlclxuICAgICAgICAgICAgJG91dHB1dDogJG91dHB1dCArIFwiIFwiICsgJHNpemU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuIGlmKHR5cGUtb2YoJG91dHB1dCkgPT0gXCJzdHJpbmdcIiwgdW5xdW90ZSgkb3V0cHV0KSwgJG91dHB1dCk7XG59XG5cbi8qXG4gKiBDb252ZXJ0IFBob3Rvc2hvcCBsZWFkaW5nIHRvIENTUyBsaW5lLWhlaWdodFxuICpcbiAqIEBwYXJhbSAge051bWJlcn0gICRzaXplIC0gVmFsdWUgb2YgTGVhZGluZyBpbiBQaG90b3Nob3AncyBDaGFyYWN0ZXIgUGFuZWxcbiAqIEBwYXJhbSAge051bWJlcn0gICRiYXNlIC0gVmFsdWUgb2YgRm9udCBTaXplIGluIFBob3Rvc29ocCdzIENoYXJhY3RlciBQYW5lbFxuICovXG5AZnVuY3Rpb24gbGVhZGluZygkc2l6ZSwgJGJhc2U6IG51bGwpIHtcbiAgICAkYmFzZTogaWYoJGJhc2UgPT0gbnVsbCwgMTYsIHN0cmlwLXVuaXQoJGJhc2UpKTtcbiAgICAkb3V0cHV0OiAkYmFzZSArIChzdHJpcC11bml0KCRzaXplKSAvIDIpO1xuXG4gICAgQHJldHVybiAkb3V0cHV0O1xufVxuXG4vKlxuICogQ29udmVydCBQaG90b3Nob3AgdHJhY2tpbmcgdG8gQ1NTIGxldHRlci1zcGFjaW5nXG4gKlxuICogQHBhcmFtICB7TnVtYmVyfSAgJHNpemUgLSBWYWx1ZSBvZiBUcmFja2luZyBpbiBQaG90b3Nob3AncyBDaGFyYWN0ZXIgUGFuZWxcbiAqIEBwYXJhbSAge051bWJlcn0gICRiYXNlIC0gVmFsdWUgb2YgRm9udCBTaXplIGluIFBob3Rvc29ocCdzIENoYXJhY3RlciBQYW5lbFxuICovXG5AZnVuY3Rpb24gdHJhY2tpbmcoJHNpemUsICRiYXNlOiBudWxsKSB7XG4gICAgJGJhc2U6IGlmKCRiYXNlID09IG51bGwsIDE2LCBzdHJpcC11bml0KCRiYXNlKSk7XG4gICAgJG91dHB1dDogKCRzaXplIC8gMTAwMCkgKiBzdHJpcC11bml0KCRiYXNlKTtcblxuICAgIEByZXR1cm4gJG91dHB1dDtcbn1cbiIsIi8vIFN0eWxlcyB3cml0dGVuIGJ5IEphY29iIEJlYXJjZSBAIFdlYmxpbngsIEluYy5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogQ29sb3JzXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbiRjb2xvcnM6IChcbiAgICBcInByaW1hcnlcIjogKFxuICAgICAgICB0aW50OiAgIzAwQjY1OSxcbiAgICAgICAgYmFzZTogICMwMDgzNDAsXG4gICAgICAgIHNoYWRlOiAjMDA1MDI4LFxuICAgICksXG4gICAgXCJzZWNvbmRhcnlcIjogKFxuICAgICAgICB0aW50OiAgIzdBNTgzRSxcbiAgICAgICAgYmFzZTogICM1ODQwMkQsXG4gICAgICAgIHNoYWRlOiAjMzYyODFDLFxuICAgICksXG4gICAgXCJ0ZXJ0aWFyeVwiOiAoXG4gICAgICAgIHRpbnQ6ICAjRTlFOEU2LFxuICAgICAgICBiYXNlOiAgIzk0OTM4NSxcbiAgICAgICAgc2hhZGU6ICM3QTc5NkMsXG4gICAgKSxcbiAgICBcImFjY2VudFwiOiAoXG4gICAgICAgIHRpbnQ6ICAjRUNFNEQxLFxuICAgICAgICBiYXNlOiAgI0E1NTMwRCxcbiAgICAgICAgc2hhZGU6ICM3NjNDMDksXG4gICAgKSxcbiAgICBcIndhcm5pbmdcIjogKFxuICAgICAgICB0aW50OiAgI0ZGNUY1MixcbiAgICAgICAgYmFzZTogICNDNjI4MjgsXG4gICAgICAgIHNoYWRlOiAjOEUwMDAwLFxuICAgICksXG4gICAgXCJmb3JlZ3JvdW5kXCI6IChcbiAgICAgICAgdGludDogICMxQjFCMUIsXG4gICAgICAgIGJhc2U6ICAjMDAwMDAwLFxuICAgICAgICBzaGFkZTogIzAwMDAwMCxcbiAgICApLFxuICAgIFwiYmFja2dyb3VuZFwiOiAoXG4gICAgICAgIHRpbnQ6ICAjRkZGRkZGLFxuICAgICAgICBiYXNlOiAgI0ZGRkZGRixcbiAgICAgICAgc2hhZGU6ICNEOEQ4RDgsXG4gICAgKSxcbiAgICBcInBhZ2UtYmFja2dyb3VuZFwiOiAoXG4gICAgICAgIHRpbnQ6ICAjRkZGRkZGLFxuICAgICAgICBiYXNlOiAgI0ZGRkZGRixcbiAgICAgICAgc2hhZGU6ICM4RDhEOEQsXG4gICAgKSxcbiAgICBcImxpZ2h0XCI6IChcbiAgICAgICAgdGludDogICNGRkZGRkYsXG4gICAgICAgIGJhc2U6ICAjRkZGRkZGLFxuICAgICAgICBzaGFkZTogI0Q1RDVENSxcbiAgICApLFxuICAgIFwiZGFya1wiOiAoXG4gICAgICAgIHRpbnQ6ICAjNEE0QTRBLFxuICAgICAgICBiYXNlOiAgIzAwMDAwMCxcbiAgICAgICAgc2hhZGU6ICMwMDAwMDAsXG4gICAgKSxcbik7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIEZvbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbiRoZWFkaW5nLWZvbnQ6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiRib2R5LWZvbnQ6IFwiVGltZXMgTmV3IFJvbWFuXCIsIFwiVGltZXNcIiwgXCJHZW9yZ2lhXCIsIHNlcmlmO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBXaWR0aHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4kc2l0ZS13aWR0aDogMTQ0MDtcbiRjb2x1bW4tZ2FwOiAzMDtcbiRjb250ZW50LXBhZGRpbmc6IDI1O1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBCcmVhayBQb2ludHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4kYnJlYWtwb2ludHM6IChcbiAgICB4eHhsOiAxNDQwZW0gLyAxNixcbiAgICB4eGw6ICAxMzY2ZW0gLyAxNixcbiAgICB4bDogICAxMjgwZW0gLyAxNixcbiAgICBsOiAgICAxMDI0ZW0gLyAxNixcbiAgICBtOiAgICA5NjBlbSAvIDE2LFxuICAgIHM6ICAgIDg1M2VtIC8gMTYsXG4gICAgeHM6ICAgNzY4ZW0gLyAxNixcbiAgICB4eHM6ICA2NDBlbSAvIDE2LFxuICAgIHh4eHM6IDQ4MGVtIC8gMTYsXG4pO1xuXG4keHh4bC1icmVhazogMTQ0MGVtIC8gMTY7XG4keHhsLWJyZWFrOiAxMzY2ZW0gLyAxNjtcbiR4bC1icmVhazogMTI4MGVtIC8gMTY7XG4kbC1icmVhazogMTAyNGVtIC8gMTY7XG4kbS1icmVhazogOTYwZW0gLyAxNjtcbiRzLWJyZWFrOiA4NTNlbSAvIDE2O1xuJHhzLWJyZWFrOiA3NjhlbSAvIDE2O1xuJHh4cy1icmVhazogNjQwZW0gLyAxNjtcbiR4eHhzLWJyZWFrOiA0ODBlbSAvIDE2O1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBMYXllcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4kbGF5ZXJzOiAoXG4gICAgaGVhZGVyOiA3LFxuICAgIG5hdmlnYXRpb246IDYsXG4gICAgaGVybzogNCxcbiAgICBjb250ZW50OiA1LFxuICAgIHJlbGF0ZWQ6IDMsXG4gICAgbmV3c2xldHRlcjogMixcbiAgICBmb290ZXI6IDEsXG4pO1xuIiwiLy8gU3R5bGVzIHdyaXR0ZW4gYnkgSmFjb2IgQmVhcmNlIEAgV2VibGlueCwgSW5jLlxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBNb2R1bGVcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogTGF5b3V0XG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4iLCIvLyBTdHlsZXMgd3JpdHRlbiBieSBKYWNvYiBCZWFyY2UgQCBXZWJsaW54LCBJbmMuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIE1vZHVsZVxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBMYXlvdXRcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiIsIi8vIFN0eWxlcyB3cml0dGVuIGJ5IEphY29iIEJlYXJjZSBAIFdlYmxpbngsIEluYy5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogTW9kdWxlXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbkBpbXBvcnQgXCIuLi9tb2R1bGUvYXJ0aWNsZS9fYXJ0aWNsZV94c1wiO1xuQGltcG9ydCBcIi4uL21vZHVsZS9jYWxsLXRvLWFjdGlvbi9fY2FsbC10by1hY3Rpb25feHNcIjtcbkBpbXBvcnQgXCIuLi9tb2R1bGUvc3dpcGVyL19zd2lwZXJfeHNcIjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogTGF5b3V0XG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbkBpbXBvcnQgXCIuLi9sYXlvdXQvY29udGVudC9fY29udGVudF94c1wiO1xuQGltcG9ydCBcIi4uL2xheW91dC9jYWxsb3V0cy9fY2FsbG91dHNfeHNcIjtcbkBpbXBvcnQgXCIuLi9sYXlvdXQvcmVsYXRlZC9fcmVsYXRlZF94c1wiO1xuQGltcG9ydCBcIi4uL2xheW91dC9uZXdzbGV0dGVyL19uZXdzbGV0dGVyX3hzXCI7XG5AaW1wb3J0IFwiLi4vbGF5b3V0L2Zvb3Rlci9fZm9vdGVyX3hzXCI7XG4iLCIvLyBTdHlsZXMgd3JpdHRlbiBieSBKYWNvYiBCZWFyY2UgQCBXZWJsaW54LCBJbmMuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIEFydGljbGVcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyogZXhjZXJwdCB2YXJpYW50ICovXG5cbi5hcnRpY2xlLS1leGNlcnB0IHtcbiAgICAuYXJ0aWNsZV9faW1hZ2Uge1xuICAgICAgICBoZWlnaHQ6IHJlbWlmeSgyNTAsIDE2KSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLyogZnVsbCB2YXJpYW50ICovXG5cbi5hcnRpY2xlLS1mdWxsIHtcbiAgICAuYXJ0aWNsZV9fZmlndXJlIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDogcmVtaWZ5KDMwKTtcbiAgICAgICAgd2lkdGg6ICgxMDAlIC8gMyk7XG4gICAgfVxufVxuIiwiLy8gU3R5bGVzIHdyaXR0ZW4gYnkgSmFjb2IgQmVhcmNlIEAgV2VibGlueCwgSW5jLlxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBDYWxsIHRvIEFjdGlvblxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4uY2FsbC10by1hY3Rpb24ge1xuICAgICYge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbn1cblxuLmNhbGwtdG8tYWN0aW9uX19jb250ZW50IHtcbiAgICAmIHtcbiAgICAgICAgcGFkZGluZzogcmVtaWZ5KCRjb250ZW50LXBhZGRpbmcgKiAxLjQpO1xuICAgIH1cbn1cbiIsIi8vIFN0eWxlcyB3cml0dGVuIGJ5IEphY29iIEJlYXJjZSBAIFdlYmxpbngsIEluYy5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogU3dpcGVyIChodHRwOi8vaWRhbmdlcm8udXMvc3dpcGVyLylcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyogc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAqL1xuXG4vLyBDdXN0b21cblxuLnN3aXBlci1pbWFnZSB7XG4gICAgJiB7XG4gICAgICAgIGhlaWdodDogcmVtaWZ5KDM5MCwgMTYpO1xuICAgIH1cblxuICAgIC5zd2lwZXItc2xpZGUtLXRhbGwgJiB7XG4gICAgICAgIGhlaWdodDogcmVtaWZ5KDUzMCwgMTYpO1xuICAgIH1cbn1cblxuLnN3aXBlci1jYXB0aW9uIHtcbiAgICAmIHtcbiAgICAgICAgcGFkZGluZzogcmVtaWZ5KCgkY29udGVudC1wYWRkaW5nICogMS40KSAoJGNvbnRlbnQtcGFkZGluZyAqIDIuMikpO1xuICAgIH1cblxuICAgIC5zd2lwZXItc2xpZGUtLXRhbGwgJiB7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IHJlbWlmeSgkY29udGVudC1wYWRkaW5nICogNCk7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IHJlbWlmeSgkY29udGVudC1wYWRkaW5nICogNCk7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICB9XG5cbiAgICAuc3dpcGVyLXNsaWRlLS10YWxsICYgLnN3aXBlci1jYXB0aW9uLWlubmVyIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIH1cbn1cblxuLnN3aXBlci11c2VyLWNvbnRlbnQge1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLW1heC10eXBlICovXG5cbiAgICAuc3dpcGVyLXNsaWRlLS10YWxsICYgcCB7XG4gICAgICAgIG1heC13aWR0aDogcmVtaWZ5KDYyMCk7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC8qIHN0eWxlbGludC1lbmFibGUgc2VsZWN0b3ItbWF4LXR5cGUgKi9cbn1cbiIsIi8vIFN0eWxlcyB3cml0dGVuIGJ5IEphY29iIEJlYXJjZSBAIFdlYmxpbngsIEluYy5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogQ29udGVudFxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4uY29udGVudF9fc2lkZWJhciB7XG4gICAgJiB7XG4gICAgICAgIG1hcmdpbjogcmVtaWZ5KCgkY29udGVudC1wYWRkaW5nICogLTUpICRjb2x1bW4tZ2FwIDAgMCk7XG4gICAgfVxufVxuIiwiLy8gU3R5bGVzIHdyaXR0ZW4gYnkgSmFjb2IgQmVhcmNlIEAgV2VibGlueCwgSW5jLlxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBDYWxsb3V0c1xuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4uY2FsbG91dHNfX2lubmVyIHtcbiAgICAmIHtcbiAgICAgICAgcGFkZGluZzogcmVtaWZ5KCgkY29udGVudC1wYWRkaW5nICogMy42KSAoJGNvbnRlbnQtcGFkZGluZyAqIDMuOCkpO1xuICAgIH1cbn1cblxuLyogZnVsbGJsZWVkIHZhcmlhbnQgKi9cblxuLmNhbGxvdXRzLWJsb2NrLS1mdWxsYmxlZWQge1xuICAgICYge1xuICAgICAgICBwYWRkaW5nOiByZW1pZnkoKCRjb250ZW50LXBhZGRpbmcgKiAzLjYpICgkY29udGVudC1wYWRkaW5nICogMy44KSk7XG4gICAgfVxuXG4gICAgPiAuY2FsbG91dHNfX2lubmVyIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG59XG4iLCIvLyBTdHlsZXMgd3JpdHRlbiBieSBKYWNvYiBCZWFyY2UgQCBXZWJsaW54LCBJbmMuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIFJlbGF0ZWRcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLnJlbGF0ZWRfX2lubmVyIHtcbiAgICAmIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IHJlbWlmeSgkY29udGVudC1wYWRkaW5nICogMyk7XG4gICAgICAgIHBhZGRpbmctdG9wOiByZW1pZnkoJGNvbnRlbnQtcGFkZGluZyAqIDMpO1xuICAgIH1cbn1cblxuLnJlbGF0ZWRfX2xvZ28ge1xuICAgICYge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbn1cblxuLyogZnVsbGJsZWVkIHZhcmlhbnQgKi9cblxuLnJlbGF0ZWQtYmxvY2stLWZ1bGxibGVlZCB7XG4gICAgJiB7XG4gICAgICAgIHBhZGRpbmc6IHJlbWlmeSgwICRjb250ZW50LXBhZGRpbmcpO1xuICAgIH1cblxuICAgID4gLnJlbGF0ZWRfX2lubmVyIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIH1cbn1cbiIsIi8vIFN0eWxlcyB3cml0dGVuIGJ5IEphY29iIEJlYXJjZSBAIFdlYmxpbngsIEluYy5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogTmV3c2xldHRlclxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4ubmV3c2xldHRlcl9faW5uZXIge1xuICAgICYge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiByZW1pZnkoMjApO1xuICAgICAgICBtYXJnaW4tdG9wOiByZW1pZnkoMjApO1xuICAgICAgICBwYWRkaW5nOiByZW1pZnkoKCRjb250ZW50LXBhZGRpbmcgKiAxLjQpICgkY29udGVudC1wYWRkaW5nICogMS42KSk7XG4gICAgfVxufVxuXG4ubmV3c2xldHRlcl9fYnV0dG9uIHtcbiAgICAmIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxufVxuXG4ubmV3c2xldHRlcl9fdGV4dCB7XG4gICAgJiB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4ubmV3c2xldHRlcl9faW5wdXQge1xuICAgICYge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbn1cblxuLyogZnVsbGJsZWVkIHZhcmlhbnQgKi9cblxuLm5ld3NsZXR0ZXItYmxvY2stLWZ1bGxibGVlZCB7XG4gICAgJiB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbWlmeSgyMCk7XG4gICAgICAgIG1hcmdpbi10b3A6IHJlbWlmeSgyMCk7XG4gICAgICAgIHBhZGRpbmc6IHJlbWlmeSgoJGNvbnRlbnQtcGFkZGluZyAqIDEuNCkgKCRjb250ZW50LXBhZGRpbmcgKiAxLjYpKTtcbiAgICB9XG5cbiAgICA+IC5uZXdzbGV0dGVyX19pbm5lciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbWlmeSgwKTtcbiAgICAgICAgbWFyZ2luLXRvcDogcmVtaWZ5KDApO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cbn1cbiIsIi8vIFN0eWxlcyB3cml0dGVuIGJ5IEphY29iIEJlYXJjZSBAIFdlYmxpbngsIEluYy5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogRm9vdGVyXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi5mb290ZXJfX2lubmVyIHtcbiAgICAmIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiByZW1pZnkoJGNvbnRlbnQtcGFkZGluZyAqIDEuNik7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IHJlbWlmeSgkY29udGVudC1wYWRkaW5nICogMS42KTtcbiAgICB9XG59XG5cbi5mb290ZXJfX3RleHQge1xuICAgICYge1xuICAgICAgICBmb250LXNpemU6IHJlbWlmeSgxMywgMTYpO1xuICAgICAgICBsaW5lLWhlaWdodDogcmVtaWZ5KDI2LCAxMyk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4uZm9vdGVyX19sb2dvIHtcbiAgICAmIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi5mb290ZXJfX21lbnUtbGlzdF9fY29udGFpbmVyIHtcbiAgICAubWVudS1saXN0LS1zaXRlbWFwIHtcbiAgICAgICAgZm9udC1zaXplOiByZW1pZnkoMTMsIDE2KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHJlbWlmeSgyNiwgMTMpO1xuICAgIH1cbn1cblxuLyogZnVsbGJsZWVkIHZhcmlhbnQgKi9cblxuLmZvb3Rlci1ibG9jay0tZnVsbGJsZWVkIHtcbiAgICAmIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiByZW1pZnkoJGNvbnRlbnQtcGFkZGluZyAqIDEuNik7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IHJlbWlmeSgkY29udGVudC1wYWRkaW5nICogMS42KTtcbiAgICB9XG5cbiAgICA+IC5mb290ZXJfX2lubmVyIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIH1cbn1cbiIsIi8vIFN0eWxlcyB3cml0dGVuIGJ5IEphY29iIEJlYXJjZSBAIFdlYmxpbngsIEluYy5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogTW9kdWxlXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIExheW91dFxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuIiwiLy8gU3R5bGVzIHdyaXR0ZW4gYnkgSmFjb2IgQmVhcmNlIEAgV2VibGlueCwgSW5jLlxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBNb2R1bGVcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogTGF5b3V0XG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4iLCIvLyBTdHlsZXMgd3JpdHRlbiBieSBKYWNvYiBCZWFyY2UgQCBXZWJsaW54LCBJbmMuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIE1vZHVsZVxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBMYXlvdXRcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuQGltcG9ydCBcIi4uL2xheW91dC9oZWFkZXIvX2hlYWRlcl9sXCI7XG4iLCIvLyBTdHlsZXMgd3JpdHRlbiBieSBKYWNvYiBCZWFyY2UgQCBXZWJsaW54LCBJbmMuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIEhlYWRlclxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4uaGVhZGVyLWJsb2NrIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5Ni44NzVlbSkge1xuICAgICAgICBmb250LXNpemU6IDEuMDMyMjU4MDY0NTE2MTI5dnc7XG4gICAgfVxufVxuXG4uaGVhZGVyX19pbm5lciB7XG4gICAgJiB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiByZW1pZnkoJGNvbnRlbnQtcGFkZGluZyAqIDAuOCk7XG4gICAgICAgIHBhZGRpbmctdG9wOiByZW1pZnkoJGNvbnRlbnQtcGFkZGluZyAqIDAuOCk7XG4gICAgfVxufVxuXG4uaGVhZGVyX19sb2dvIHtcbiAgICAubG9nb19faW1hZ2Uge1xuICAgICAgICB3aWR0aDogcmVtaWZ5KDI4MCwgMTYpO1xuICAgIH1cbn1cblxuLyogZnVsbGJsZWVkIHZhcmlhbnQgKi9cblxuLmhlYWRlci1ibG9jay0tZnVsbGJsZWVkIHtcbiAgICAmIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IHJlbWlmeSgkY29udGVudC1wYWRkaW5nICogMC44KTtcbiAgICAgICAgcGFkZGluZy10b3A6IHJlbWlmeSgkY29udGVudC1wYWRkaW5nICogMC44KTtcbiAgICB9XG5cbiAgICA+IC5oZWFkZXJfX2lubmVyIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIH1cbn1cbiIsIi8vIFN0eWxlcyB3cml0dGVuIGJ5IEphY29iIEJlYXJjZSBAIFdlYmxpbngsIEluYy5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogTW9kdWxlXG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIExheW91dFxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuIiwiLy8gU3R5bGVzIHdyaXR0ZW4gYnkgSmFjb2IgQmVhcmNlIEAgV2VibGlueCwgSW5jLlxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBNb2R1bGVcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcXFxuICogTGF5b3V0XG5cXCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4iLCIvLyBTdHlsZXMgd3JpdHRlbiBieSBKYWNvYiBCZWFyY2UgQCBXZWJsaW54LCBJbmMuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXFxcbiAqIE1vZHVsZVxuXFwqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxcXG4gKiBMYXlvdXRcblxcKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiIsIi8vIFN0eWxlcyB3cml0dGVuIGJ5IEphY29iIEJlYXJjZSBAIFdlYmxpbngsIEluYy5cblxuQGltcG9ydCBcImhlbHBlcnMvX2hlbHBlcnNcIjtcbkBpbXBvcnQgXCJ2aWV3cy9fc2NyZWVuX3h4eHNcIjtcbkBpbXBvcnQgXCJ2aWV3cy9fc2NyZWVuX3h4c1wiO1xuQGltcG9ydCBcInZpZXdzL19zY3JlZW5feHNcIjtcbkBpbXBvcnQgXCJ2aWV3cy9fc2NyZWVuX3NcIjtcbkBpbXBvcnQgXCJ2aWV3cy9fc2NyZWVuX21cIjtcbkBpbXBvcnQgXCJ2aWV3cy9fc2NyZWVuX2xcIjtcbkBpbXBvcnQgXCJ2aWV3cy9fc2NyZWVuX3hsXCI7XG5AaW1wb3J0IFwidmlld3MvX3NjcmVlbl94eGxcIjtcbkBpbXBvcnQgXCJ2aWV3cy9fc2NyZWVuX3h4eGxcIjtcblxuQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAxMiB7XG4gICAgLmNvbC0jeyRpfSB7XG4gICAgICAgIG1heC13aWR0aDogKCRpIC8gMTIpICogMTAwJTtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGxhcmdlci10aGFuKHhzKSB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAxMiB7XG4gICAgICAgIC5jb2wteHMtI3skaX0ge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAoJGkgLyAxMikgKiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBsYXJnZXItdGhhbihzKSB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAxMiB7XG4gICAgICAgIC5jb2wtcy0jeyRpfSB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6ICgkaSAvIDEyKSAqIDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGxhcmdlci10aGFuKG0pIHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIDEyIHtcbiAgICAgICAgLmNvbC1tLSN7JGl9IHtcbiAgICAgICAgICAgIG1heC13aWR0aDogKCRpIC8gMTIpICogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgbGFyZ2VyLXRoYW4obCkge1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggMTIge1xuICAgICAgICAuY29sLWwtI3skaX0ge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAoJGkgLyAxMikgKiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBsYXJnZXItdGhhbih4bCkge1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggMTIge1xuICAgICAgICAuY29sLXhsLSN7JGl9IHtcbiAgICAgICAgICAgIG1heC13aWR0aDogKCRpIC8gMTIpICogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ== */
