
/* classes attached to <body> */
/* TODO: make fc-event selector work when calender in shadow DOM */
.fc-not-allowed,
.fc-not-allowed .fc-event { /* override events' custom cursors */
  cursor: not-allowed;
}

/* TODO: not attached to body. attached to specific els. move */
.fc-unselectable {
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  -webkit-touch-callout: none;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
.fc {
  /* layout of immediate children */
  display: flex;
  flex-direction: column;

  font-size: 1em
}
.fc,
  .fc *,
  .fc *:before,
  .fc *:after {
    box-sizing: border-box;
  }
.fc table {
    border-collapse: collapse;
    border-spacing: 0;
    font-size: 1em; /* normalize cross-browser */
  }
.fc th {
    text-align: center;
  }
.fc th,
  .fc td {
    vertical-align: top;
    padding: 0;
  }
.fc a[data-navlink] {
    cursor: pointer;
  }
.fc a[data-navlink]:hover {
    text-decoration: underline;
  }
.fc-direction-ltr {
  direction: ltr;
  text-align: left;
}
.fc-direction-rtl {
  direction: rtl;
  text-align: right;
}
.fc-theme-standard td,
  .fc-theme-standard th {
    border: 1px solid #ddd;
    border: 1px solid var(--fc-border-color, #ddd);
  }
/* for FF, which doesn't expand a 100% div within a table cell. use absolute positioning */
/* inner-wrappers are responsible for being absolute */
/* TODO: best place for this? */
.fc-liquid-hack td,
  .fc-liquid-hack th {
    position: relative;
  }

@font-face {
  font-family: 'fcicons';
  src: url("data:application/x-font-ttf;charset=utf-8;base64,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") format('truetype');
  font-weight: normal;
  font-style: normal;
}

.fc-icon {
  /* added for fc */
  display: inline-block;
  width: 1em;
  height: 1em;
  text-align: center;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;

  /* use !important to prevent issues with browser extensions that change fonts */
  font-family: 'fcicons' !important;
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;

  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.fc-icon-chevron-left:before {
  content: "\e900";
}

.fc-icon-chevron-right:before {
  content: "\e901";
}

.fc-icon-chevrons-left:before {
  content: "\e902";
}

.fc-icon-chevrons-right:before {
  content: "\e903";
}

.fc-icon-minus-square:before {
  content: "\e904";
}

.fc-icon-plus-square:before {
  content: "\e905";
}

.fc-icon-x:before {
  content: "\e906";
}
/*
Lots taken from Flatly (MIT): https://bootswatch.com/4/flatly/bootstrap.css

These styles only apply when the standard-theme is activated.
When it's NOT activated, the fc-button classes won't even be in the DOM.
*/
.fc {

  /* reset */

}
.fc .fc-button {
    border-radius: 0;
    overflow: visible;
    text-transform: none;
    margin: 0;
    font-family: inherit;
    font-size: inherit;
    line-height: inherit;
  }
.fc .fc-button:focus {
    outline: 1px dotted;
    outline: 5px auto -webkit-focus-ring-color;
  }
.fc .fc-button {
    -webkit-appearance: button;
  }
.fc .fc-button:not(:disabled) {
    cursor: pointer;
  }
.fc .fc-button::-moz-focus-inner {
    padding: 0;
    border-style: none;
  }
.fc {

  /* theme */

}
.fc .fc-button {
    display: inline-block;
    font-weight: 400;
    text-align: center;
    vertical-align: middle;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
    background-color: transparent;
    border: 1px solid transparent;
    padding: 0.4em 0.65em;
    font-size: 1em;
    line-height: 1.5;
    border-radius: 0.25em;
  }
.fc .fc-button:hover {
    text-decoration: none;
  }
.fc .fc-button:focus {
    outline: 0;
    box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);
  }
.fc .fc-button:disabled {
    opacity: 0.65;
  }
.fc {

  /* "primary" coloring */

}
.fc .fc-button-primary {
    color: #fff;
    color: var(--fc-button-text-color, #fff);
    background-color: #2C3E50;
    background-color: var(--fc-button-bg-color, #2C3E50);
    border-color: #2C3E50;
    border-color: var(--fc-button-border-color, #2C3E50);
  }
.fc .fc-button-primary:hover {
    color: #fff;
    color: var(--fc-button-text-color, #fff);
    background-color: #1e2b37;
    background-color: var(--fc-button-hover-bg-color, #1e2b37);
    border-color: #1a252f;
    border-color: var(--fc-button-hover-border-color, #1a252f);
  }
.fc .fc-button-primary:disabled { /* not DRY */
    color: #fff;
    color: var(--fc-button-text-color, #fff);
    background-color: #2C3E50;
    background-color: var(--fc-button-bg-color, #2C3E50);
    border-color: #2C3E50;
    border-color: var(--fc-button-border-color, #2C3E50); /* overrides :hover */
  }
.fc .fc-button-primary:focus {
    box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5);
  }
.fc .fc-button-primary:not(:disabled):active,
  .fc .fc-button-primary:not(:disabled).fc-button-active {
    color: #fff;
    color: var(--fc-button-text-color, #fff);
    background-color: #1a252f;
    background-color: var(--fc-button-active-bg-color, #1a252f);
    border-color: #151e27;
    border-color: var(--fc-button-active-border-color, #151e27);
  }
.fc .fc-button-primary:not(:disabled):active:focus,
  .fc .fc-button-primary:not(:disabled).fc-button-active:focus {
    box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5);
  }
.fc {

  /* icons within buttons */

}
.fc .fc-button .fc-icon {
    vertical-align: middle;
    font-size: 1.5em; /* bump up the size (but don't make it bigger than line-height of button, which is 1.5em also) */
  }
.fc .fc-button-group {
    position: relative;
    display: inline-flex;
    vertical-align: middle;
  }
.fc .fc-button-group > .fc-button {
    position: relative;
    flex: 1 1 auto;
  }
.fc .fc-button-group > .fc-button:hover {
    z-index: 1;
  }
.fc .fc-button-group > .fc-button:focus,
  .fc .fc-button-group > .fc-button:active,
  .fc .fc-button-group > .fc-button.fc-button-active {
    z-index: 1;
  }
.fc-direction-ltr .fc-button-group > .fc-button:not(:first-child) {
    margin-left: -1px;
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
  }
.fc-direction-ltr .fc-button-group > .fc-button:not(:last-child) {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
  }
.fc-direction-rtl .fc-button-group > .fc-button:not(:first-child) {
    margin-right: -1px;
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
  }
.fc-direction-rtl .fc-button-group > .fc-button:not(:last-child) {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
  }
.fc .fc-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
  }
.fc .fc-toolbar.fc-header-toolbar {
    margin-bottom: 1.5em;
  }
.fc .fc-toolbar.fc-footer-toolbar {
    margin-top: 1.5em;
  }
.fc .fc-toolbar-title {
    font-size: 1.75em;
    margin: 0;
  }
.fc-direction-ltr .fc-toolbar > * > :not(:first-child) {
    margin-left: .75em; /* space between */
  }
.fc-direction-rtl .fc-toolbar > * > :not(:first-child) {
    margin-right: .75em; /* space between */
  }
.fc-direction-rtl .fc-toolbar-ltr { /* when the toolbar-chunk positioning system is explicitly left-to-right */
    flex-direction: row-reverse;
  }
.fc .fc-scroller {
    -webkit-overflow-scrolling: touch;
    position: relative; /* for abs-positioned elements within */
  }
.fc .fc-scroller-liquid {
    height: 100%;
  }
.fc .fc-scroller-liquid-absolute {
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    bottom: 0;
  }
.fc .fc-scroller-harness {
    position: relative;
    overflow: hidden;
    direction: ltr;
      /* hack for chrome computing the scroller's right/left wrong for rtl. undone below... */
      /* TODO: demonstrate in codepen */
  }
.fc .fc-scroller-harness-liquid {
    height: 100%;
  }
.fc-direction-rtl .fc-scroller-harness > .fc-scroller { /* undo above hack */
    direction: rtl;
  }
.fc-theme-standard .fc-scrollgrid {
    border: 1px solid #ddd;
    border: 1px solid var(--fc-border-color, #ddd); /* bootstrap does this. match */
  }
.fc .fc-scrollgrid,
    .fc .fc-scrollgrid table { /* all tables (self included) */
      width: 100%; /* because tables don't normally do this */
      table-layout: fixed;
    }
.fc .fc-scrollgrid table { /* inner tables */
      border-top-style: hidden;
      border-left-style: hidden;
      border-right-style: hidden;
    }
.fc .fc-scrollgrid {

    border-collapse: separate;
    border-right-width: 0;
    border-bottom-width: 0;

  }
.fc .fc-scrollgrid-liquid {
    height: 100%;
  }
.fc .fc-scrollgrid-section { /* a <tr> */
    height: 1px /* better than 0, for firefox */

  }
.fc .fc-scrollgrid-section > td {
      height: 1px; /* needs a height so inner div within grow. better than 0, for firefox */
    }
.fc .fc-scrollgrid-section table {
      height: 1px;
        /* for most browsers, if a height isn't set on the table, can't do liquid-height within cells */
        /* serves as a min-height. harmless */
    }
.fc .fc-scrollgrid-section-liquid > td {
      height: 100%; /* better than `auto`, for firefox */
    }
.fc .fc-scrollgrid-section > * {
    border-top-width: 0;
    border-left-width: 0;
  }
.fc .fc-scrollgrid-section-header > *,
  .fc .fc-scrollgrid-section-footer > * {
    border-bottom-width: 0;
  }
.fc .fc-scrollgrid-section-body table,
  .fc .fc-scrollgrid-section-footer table {
    border-bottom-style: hidden; /* head keeps its bottom border tho */
  }
.fc {

  /* stickiness */

}
.fc .fc-scrollgrid-section-sticky > * {
    background: #fff;
    background: var(--fc-page-bg-color, #fff);
    position: sticky;
    z-index: 3; /* TODO: var */
    /* TODO: box-shadow when sticking */
  }
.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky > * {
    top: 0; /* because border-sharing causes a gap at the top */
      /* TODO: give safari -1. has bug */
  }
.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky > * {
    bottom: 0; /* known bug: bottom-stickiness doesn't work in safari */
  }
.fc .fc-scrollgrid-sticky-shim { /* for horizontal scrollbar */
    height: 1px; /* needs height to create scrollbars */
    margin-bottom: -1px;
  }
.fc-sticky { /* no .fc wrap because used as child of body */
  position: sticky;
}
.fc .fc-view-harness {
    flex-grow: 1; /* because this harness is WITHIN the .fc's flexbox */
    position: relative;
  }
.fc {

  /* when the harness controls the height, make the view liquid */

}
.fc .fc-view-harness-active > .fc-view {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
  }
.fc .fc-col-header-cell-cushion {
    display: inline-block; /* x-browser for when sticky (when multi-tier header) */
    padding: 2px 4px;
  }
.fc .fc-bg-event,
  .fc .fc-non-business,
  .fc .fc-highlight {
    /* will always have a harness with position:relative/absolute, so absolutely expand */
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
  }
.fc .fc-non-business {
    background: rgba(215, 215, 215, 0.3);
    background: var(--fc-non-business-color, rgba(215, 215, 215, 0.3));
  }
.fc .fc-bg-event {
    background: rgb(143, 223, 130);
    background: var(--fc-bg-event-color, rgb(143, 223, 130));
    opacity: 0.3;
    opacity: var(--fc-bg-event-opacity, 0.3)
  }
.fc .fc-bg-event .fc-event-title {
      margin: .5em;
      font-size: .85em;
      font-size: var(--fc-small-font-size, .85em);
      font-style: italic;
    }
.fc .fc-highlight {
    background: rgba(188, 232, 241, 0.3);
    background: var(--fc-highlight-color, rgba(188, 232, 241, 0.3));
  }
.fc .fc-cell-shaded,
  .fc .fc-day-disabled {
    background: rgba(208, 208, 208, 0.3);
    background: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));
  }
/* link resets */
/* ---------------------------------------------------------------------------------------------------- */
a.fc-event,
a.fc-event:hover {
  text-decoration: none;
}
/* cursor */
.fc-event[href],
.fc-event.fc-event-draggable {
  cursor: pointer;
}
/* event text content */
/* ---------------------------------------------------------------------------------------------------- */
.fc-event .fc-event-main {
    position: relative;
    z-index: 2;
  }
/* dragging */
/* ---------------------------------------------------------------------------------------------------- */
.fc-event-dragging:not(.fc-event-selected) { /* MOUSE */
    opacity: 0.75;
  }
.fc-event-dragging.fc-event-selected { /* TOUCH */
    box-shadow: 0 2px 7px rgba(0, 0, 0, 0.3);
  }
/* resizing */
/* ---------------------------------------------------------------------------------------------------- */
/* (subclasses should hone positioning for touch and non-touch) */
.fc-event .fc-event-resizer {
    display: none;
    position: absolute;
    z-index: 4;
  }
.fc-event:hover, /* MOUSE */
.fc-event-selected { /* TOUCH */

}
.fc-event:hover .fc-event-resizer, .fc-event-selected .fc-event-resizer {
    display: block;
  }
.fc-event-selected .fc-event-resizer {
    border-radius: 4px;
    border-radius: calc(var(--fc-event-resizer-dot-total-width, 8px) / 2);
    border-width: 1px;
    border-width: var(--fc-event-resizer-dot-border-width, 1px);
    width: 8px;
    width: var(--fc-event-resizer-dot-total-width, 8px);
    height: 8px;
    height: var(--fc-event-resizer-dot-total-width, 8px);
    border-style: solid;
    border-color: inherit;
    background: #fff;
    background: var(--fc-page-bg-color, #fff)

    /* expand hit area */

  }
.fc-event-selected .fc-event-resizer:before {
      content: '';
      position: absolute;
      top: -20px;
      left: -20px;
      right: -20px;
      bottom: -20px;
    }
/* selecting (always TOUCH) */
/* OR, focused by tab-index */
/* (TODO: maybe not the best focus-styling for .fc-daygrid-dot-event) */
/* ---------------------------------------------------------------------------------------------------- */
.fc-event-selected,
.fc-event:focus {
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2)

  /* expand hit area (subclasses should expand) */

}
.fc-event-selected:before, .fc-event:focus:before {
    content: "";
    position: absolute;
    z-index: 3;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
  }
.fc-event-selected,
.fc-event:focus {

  /* dimmer effect */

}
.fc-event-selected:after, .fc-event:focus:after {
    content: "";
    background: rgba(0, 0, 0, 0.25);
    background: var(--fc-event-selected-overlay-color, rgba(0, 0, 0, 0.25));
    position: absolute;
    z-index: 1;

    /* assume there's a border on all sides. overcome it. */
    /* sometimes there's NOT a border, in which case the dimmer will go over */
    /* an adjacent border, which looks fine. */
    top: -1px;
    left: -1px;
    right: -1px;
    bottom: -1px;
  }
/*
A HORIZONTAL event
*/
.fc-h-event { /* allowed to be top-level */
  display: block;
  border: 1px solid #3788d8;
  border: 1px solid var(--fc-event-border-color, #3788d8);
  background-color: #3788d8;
  background-color: var(--fc-event-bg-color, #3788d8)

}
.fc-h-event .fc-event-main {
    color: #fff;
    color: var(--fc-event-text-color, #fff);
  }
.fc-h-event .fc-event-main-frame {
    display: flex; /* for make fc-event-title-container expand */
  }
.fc-h-event .fc-event-time {
    max-width: 100%; /* clip overflow on this element */
    overflow: hidden;
  }
.fc-h-event .fc-event-title-container { /* serves as a container for the sticky cushion */
    flex-grow: 1;
    flex-shrink: 1;
    min-width: 0; /* important for allowing to shrink all the way */
  }
.fc-h-event .fc-event-title {
    display: inline-block; /* need this to be sticky cross-browser */
    vertical-align: top; /* for not messing up line-height */
    left: 0;  /* for sticky */
    right: 0; /* for sticky */
    max-width: 100%; /* clip overflow on this element */
    overflow: hidden;
  }
.fc-h-event.fc-event-selected:before {
    /* expand hit area */
    top: -10px;
    bottom: -10px;
  }
/* adjust border and border-radius (if there is any) for non-start/end */
.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),
.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end) {
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
  border-left-width: 0;
}
.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),
.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start) {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
  border-right-width: 0;
}
/* resizers */
.fc-h-event:not(.fc-event-selected) .fc-event-resizer {
  top: 0;
  bottom: 0;
  width: 8px;
  width: var(--fc-event-resizer-thickness, 8px);
}
.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,
.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end {
  cursor: w-resize;
  left: -4px;
  left: calc(-0.5 * var(--fc-event-resizer-thickness, 8px));
}
.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,
.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start {
  cursor: e-resize;
  right: -4px;
  right: calc(-0.5 * var(--fc-event-resizer-thickness, 8px));
}
/* resizers for TOUCH */
.fc-h-event.fc-event-selected .fc-event-resizer {
  top: 50%;
  margin-top: -4px;
  margin-top: calc(-0.5 * var(--fc-event-resizer-dot-total-width, 8px));
}
.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,
.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end {
  left: -4px;
  left: calc(-0.5 * var(--fc-event-resizer-dot-total-width, 8px));
}
.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,
.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start {
  right: -4px;
  right: calc(-0.5 * var(--fc-event-resizer-dot-total-width, 8px));
}
.fc .fc-popover {
    position: absolute;
    z-index: 9999;
    box-shadow: 0 2px 6px rgba(0,0,0,.15);
  }
.fc .fc-popover-header {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    padding: 3px 4px;
  }
.fc .fc-popover-title {
    margin: 0 2px;
  }
.fc .fc-popover-close {
    cursor: pointer;
    opacity: 0.65;
    font-size: 1.1em;
  }
.fc-theme-standard .fc-popover {
    border: 1px solid #ddd;
    border: 1px solid var(--fc-border-color, #ddd);
    background: #fff;
    background: var(--fc-page-bg-color, #fff);
  }
.fc-theme-standard .fc-popover-header {
    background: rgba(208, 208, 208, 0.3);
    background: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));
  }


:root {
  --fc-daygrid-event-dot-width: 8px;
}
/* help things clear margins of inner content */
.fc-daygrid-day-frame,
.fc-daygrid-day-events,
.fc-daygrid-event-harness { /* for event top/bottom margins */
}
.fc-daygrid-day-frame:before, .fc-daygrid-day-events:before, .fc-daygrid-event-harness:before {
  content: "";
  clear: both;
  display: table; }
.fc-daygrid-day-frame:after, .fc-daygrid-day-events:after, .fc-daygrid-event-harness:after {
  content: "";
  clear: both;
  display: table; }
.fc .fc-daygrid-body { /* a <div> that wraps the table */
    position: relative;
    z-index: 1; /* container inner z-index's because <tr>s can't do it */
  }
.fc .fc-daygrid-day.fc-day-today {
      background-color: rgba(255, 220, 40, 0.15);
      background-color: var(--fc-today-bg-color, rgba(255, 220, 40, 0.15));
    }
.fc .fc-daygrid-day-frame {
    position: relative;
    min-height: 100%; /* seems to work better than `height` because sets height after rows/cells naturally do it */
  }
.fc {

  /* cell top */

}
.fc .fc-daygrid-day-top {
    display: flex;
    flex-direction: row-reverse;
  }
.fc .fc-day-other .fc-daygrid-day-top {
    opacity: 0.3;
  }
.fc {

  /* day number (within cell top) */

}
.fc .fc-daygrid-day-number {
    position: relative;
    z-index: 4;
    padding: 4px;
  }
.fc {

  /* event container */

}
.fc .fc-daygrid-day-events {
    margin-top: 1px; /* needs to be margin, not padding, so that available cell height can be computed */
  }
.fc {

  /* positioning for balanced vs natural */

}
.fc .fc-daygrid-body-balanced .fc-daygrid-day-events {
      position: absolute;
      left: 0;
      right: 0;
    }
.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events {
      position: relative; /* for containing abs positioned event harnesses */
      min-height: 2em; /* in addition to being a min-height during natural height, equalizes the heights a little bit */
    }
.fc .fc-daygrid-body-natural { /* can coexist with -unbalanced */
  }
.fc .fc-daygrid-body-natural .fc-daygrid-day-events {
      margin-bottom: 1em;
    }
.fc {

  /* event harness */

}
.fc .fc-daygrid-event-harness {
    position: relative;
  }
.fc .fc-daygrid-event-harness-abs {
    position: absolute;
    top: 0; /* fallback coords for when cannot yet be computed */
    left: 0; /* */
    right: 0; /* */
  }
.fc .fc-daygrid-bg-harness {
    position: absolute;
    top: 0;
    bottom: 0;
  }
.fc {

  /* bg content */

}
.fc .fc-daygrid-day-bg .fc-non-business { z-index: 1 }
.fc .fc-daygrid-day-bg .fc-bg-event { z-index: 2 }
.fc .fc-daygrid-day-bg .fc-highlight { z-index: 3 }
.fc {

  /* events */

}
.fc .fc-daygrid-event {
    z-index: 6;
    margin-top: 1px;
  }
.fc .fc-daygrid-event.fc-event-mirror {
    z-index: 7;
  }
.fc {

  /* cell bottom (within day-events) */

}
.fc .fc-daygrid-day-bottom {
    font-size: .85em;
    padding: 2px 3px 0
  }
.fc .fc-daygrid-day-bottom:before {
  content: "";
  clear: both;
  display: table; }
.fc .fc-daygrid-more-link {
    position: relative;
    z-index: 4;
    cursor: pointer;
  }
.fc {

  /* week number (within frame) */

}
.fc .fc-daygrid-week-number {
    position: absolute;
    z-index: 5;
    top: 0;
    padding: 2px;
    min-width: 1.5em;
    text-align: center;
    background-color: rgba(208, 208, 208, 0.3);
    background-color: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));
    color: #808080;
    color: var(--fc-neutral-text-color, #808080);
  }
.fc {

  /* popover */

}
.fc .fc-more-popover .fc-popover-body {
    min-width: 220px;
    padding: 10px;
  }
.fc-direction-ltr .fc-daygrid-event.fc-event-start,
.fc-direction-rtl .fc-daygrid-event.fc-event-end {
  margin-left: 2px;
}
.fc-direction-ltr .fc-daygrid-event.fc-event-end,
.fc-direction-rtl .fc-daygrid-event.fc-event-start {
  margin-right: 2px;
}
.fc-direction-ltr .fc-daygrid-week-number {
    left: 0;
    border-radius: 0 0 3px 0;
  }
.fc-direction-rtl .fc-daygrid-week-number {
    right: 0;
    border-radius: 0 0 0 3px;
  }
.fc-liquid-hack .fc-daygrid-day-frame {
    position: static; /* will cause inner absolute stuff to expand to <td> */
  }
.fc-daygrid-event { /* make root-level, because will be dragged-and-dropped outside of a component root */
  position: relative; /* for z-indexes assigned later */
  white-space: nowrap;
  border-radius: 3px; /* dot event needs this to when selected */
  font-size: .85em;
  font-size: var(--fc-small-font-size, .85em);
}
/* --- the rectangle ("block") style of event --- */
.fc-daygrid-block-event .fc-event-time {
    font-weight: bold;
  }
.fc-daygrid-block-event .fc-event-time,
  .fc-daygrid-block-event .fc-event-title {
    padding: 1px;
  }
/* --- the dot style of event --- */
.fc-daygrid-dot-event {
  display: flex;
  align-items: center;
  padding: 2px 0

}
.fc-daygrid-dot-event .fc-event-title {
    flex-grow: 1;
    flex-shrink: 1;
    min-width: 0; /* important for allowing to shrink all the way */
    overflow: hidden;
    font-weight: bold;
  }
.fc-daygrid-dot-event:hover,
  .fc-daygrid-dot-event.fc-event-mirror {
    background: rgba(0, 0, 0, 0.1);
  }
.fc-daygrid-dot-event.fc-event-selected:before {
    /* expand hit area */
    top: -10px;
    bottom: -10px;
  }
.fc-daygrid-event-dot { /* the actual dot */
  margin: 0 4px;
  box-sizing: content-box;
  width: 0;
  height: 0;
  border: 4px solid #3788d8;
  border: calc(var(--fc-daygrid-event-dot-width, 8px) / 2) solid var(--fc-event-border-color, #3788d8);
  border-radius: 4px;
  border-radius: calc(var(--fc-daygrid-event-dot-width, 8px) / 2);
}
/* --- spacing between time and title --- */
.fc-direction-ltr .fc-daygrid-event .fc-event-time {
    margin-right: 3px;
  }
.fc-direction-rtl .fc-daygrid-event .fc-event-time {
    margin-left: 3px;
  }


:root {
  --fc-list-event-dot-width: 10px;
  --fc-list-event-hover-bg-color: #f5f5f5;
}
.fc-theme-standard .fc-list {
    border: 1px solid #ddd;
    border: 1px solid var(--fc-border-color, #ddd);
  }
.fc {

  /* message when no events */

}
.fc .fc-list-empty {
    background-color: rgba(208, 208, 208, 0.3);
    background-color: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center; /* vertically aligns fc-list-empty-inner */
  }
.fc .fc-list-empty-cushion {
    margin: 5em 0;
  }
.fc {

  /* table within the scroller */
  /* ---------------------------------------------------------------------------------------------------- */

}
.fc .fc-list-table {
    width: 100%;
    border-style: hidden; /* kill outer border on theme */
  }
.fc .fc-list-table tr > * {
    border-left: 0;
    border-right: 0;
  }
.fc .fc-list-sticky .fc-list-day > * { /* the cells */
      position: sticky;
      top: 0;
      background: #fff;
      background: var(--fc-page-bg-color, #fff); /* for when headers are styled to be transparent and sticky */
    }
.fc {

  /* only exists for aria reasons, hide for non-screen-readers */

}
.fc .fc-list-table thead {
    position: absolute;
    left: -10000px;
  }
.fc {

  /* the table's border-style:hidden gets confused by hidden thead. force-hide top border of first cell */

}
.fc .fc-list-table tbody > tr:first-child th {
    border-top: 0;
  }
.fc .fc-list-table th {
    padding: 0; /* uses an inner-wrapper instead... */
  }
.fc .fc-list-table td,
  .fc .fc-list-day-cushion {
    padding: 8px 14px;
  }
.fc {


  /* date heading rows */
  /* ---------------------------------------------------------------------------------------------------- */

}
.fc .fc-list-day-cushion:after {
  content: "";
  clear: both;
  display: table; /* clear floating */
    }
.fc-theme-standard .fc-list-day-cushion {
    background-color: rgba(208, 208, 208, 0.3);
    background-color: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));
  }
.fc-direction-ltr .fc-list-day-text,
.fc-direction-rtl .fc-list-day-side-text {
  float: left;
}
.fc-direction-ltr .fc-list-day-side-text,
.fc-direction-rtl .fc-list-day-text {
  float: right;
}
/* make the dot closer to the event title */
.fc-direction-ltr .fc-list-table .fc-list-event-graphic { padding-right: 0 }
.fc-direction-rtl .fc-list-table .fc-list-event-graphic { padding-left: 0 }
.fc .fc-list-event.fc-event-forced-url {
    cursor: pointer; /* whole row will seem clickable */
  }
.fc .fc-list-event:hover td {
    background-color: #f5f5f5;
    background-color: var(--fc-list-event-hover-bg-color, #f5f5f5);
  }
.fc {

  /* shrink certain cols */

}
.fc .fc-list-event-graphic,
  .fc .fc-list-event-time {
    white-space: nowrap;
    width: 1px;
  }
.fc .fc-list-event-dot {
    display: inline-block;
    box-sizing: content-box;
    width: 0;
    height: 0;
    border: 5px solid #3788d8;
    border: calc(var(--fc-list-event-dot-width, 10px) / 2) solid var(--fc-event-border-color, #3788d8);
    border-radius: 5px;
    border-radius: calc(var(--fc-list-event-dot-width, 10px) / 2);
  }
.fc {

  /* reset <a> styling */

}
.fc .fc-list-event-title a {
    color: inherit;
    text-decoration: none;
  }
.fc {

  /* underline link when hovering over any part of row */

}
.fc .fc-list-event.fc-event-forced-url:hover a {
    text-decoration: underline;
  }



  .fc .fc-resource-timeline-divider {
    width: 3px; /* important to have width to shrink this cell. no cross-browser problems */
    cursor: col-resize;
  }

.fc .fc-resource-group {
    /* make it look less like a <th> */
    font-weight: inherit;
    text-align: inherit;
  }

.fc {


  /* will match horizontal groups in the datagrid AND group lanes in the timeline area */

}

.fc .fc-resource-timeline .fc-resource-group:not([rowspan]) {
      background: rgba(208, 208, 208, 0.3);
      background: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));
    }

.fc .fc-timeline-lane-frame {
    position: relative; /* contains the fc-timeline-bg container, which liquidly expands */
    /* the height is explicitly set by row-height-sync */
  }

.fc .fc-timeline-overlap-enabled .fc-timeline-lane-frame .fc-timeline-events { /* has height set on it */
    box-sizing: content-box; /* padding no longer part of height */
    padding-bottom: 10px; /* give extra spacing underneath for selecting */
  }

/* hack to make bg expand to lane's full height in resource-timeline with expandRows (#6134) */
.fc-timeline-body-expandrows td.fc-timeline-lane {
    position: relative;
  }
.fc-timeline-body-expandrows .fc-timeline-lane-frame {
    position: static;
  }
/* the "frame" */
.fc-datagrid-cell-frame-liquid {
  height: 100%; /* needs liquid hack */
}
.fc-liquid-hack .fc-datagrid-cell-frame-liquid {
  height: auto;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  }
.fc {

  /* the "frame" in a HEADER */
  /* needs to position the column resizer */
  /* needs to vertically center content */

}
.fc .fc-datagrid-header .fc-datagrid-cell-frame {
      position: relative; /* for resizer */
      display: flex;
      justify-content: flex-start; /* horizontal align (natural left/right) */
      align-items: center; /* vertical align */
    }
.fc {

  /* the column resizer (only in HEADER) */

}
.fc .fc-datagrid-cell-resizer {
    position: absolute;
    z-index: 1;
    top: 0;
    bottom: 0;
    width: 5px;
    cursor: col-resize;
  }
.fc {

  /* the cushion */

}
.fc .fc-datagrid-cell-cushion {
    padding: 8px;
    white-space: nowrap;
    overflow: hidden; /* problem for col resizer :( */
  }
.fc {

  /* expander icons */

}
.fc .fc-datagrid-expander {
    cursor: pointer;
    opacity: 0.65

  }
.fc .fc-datagrid-expander .fc-icon { /* the expander and spacers before the expander */
      display: inline-block;
      width: 1em; /* ensure constant width, esp for empty icons */
    }
.fc .fc-datagrid-expander-placeholder {
    cursor: auto;
  }
.fc .fc-resource-timeline-flat .fc-datagrid-expander-placeholder {
      display: none;
    }
.fc-direction-ltr .fc-datagrid-cell-resizer { right: -3px }
.fc-direction-rtl .fc-datagrid-cell-resizer { left: -3px }
.fc-direction-ltr .fc-datagrid-expander { margin-right: 3px }
.fc-direction-rtl .fc-datagrid-expander { margin-left: 3px }



  .fc .fc-timeline-body {
    min-height: 100%;
    position: relative;
    z-index: 1; /* scope slots, bg, etc */
  }
/*
vertical slots in both the header AND the body
*/
.fc .fc-timeline-slots {
    position: absolute;
    z-index: 1;
    top: 0;
    bottom: 0
  }
.fc .fc-timeline-slots > table {
      height: 100%;
    }
.fc {

  /* border for both header AND body cells */

}
.fc .fc-timeline-slot-minor {
    border-style: dotted;
  }
.fc {

  /* header cells (aka "label") */

}
.fc .fc-timeline-slot-frame {
    display: flex;
    align-items: center; /* vertical align */
    justify-content: center; /* horizontal align */
  }
.fc .fc-timeline-header-row-chrono { /* a row of times */
  }
.fc .fc-timeline-header-row-chrono .fc-timeline-slot-frame {
      justify-content: flex-start; /* horizontal align left or right */
    }
.fc .fc-timeline-header-row:last-child { /* guaranteed NOT to have sticky elements */
  }
.fc .fc-timeline-header-row:last-child .fc-timeline-slot-frame {
      /* so text doesn't bleed out and cause extra scroll */
      /* (won't work with sticky elements) */
      overflow: hidden;
    }
.fc .fc-timeline-slot-cushion {
    padding: 4px 5px; /* TODO: unify with fc-col-header? */
    white-space: nowrap;
  }
.fc {

  /* NOTE: how does the top row of cells get horizontally centered? */
  /* for the non-chrono-row, the fc-sticky system looks for text-align center, */
  /* and it's a fluke that the default browser stylesheet already does this for <th> */
  /* TODO: have StickyScrolling look at natural left coord to detect centeredness. */

}
/* only owns one side, so can do dotted */
.fc-direction-ltr .fc-timeline-slot { border-right: 0 !important }
.fc-direction-rtl .fc-timeline-slot { border-left: 0 !important }
.fc .fc-timeline-now-indicator-container {
    position: absolute;
    z-index: 4;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    width: 0;
  }
.fc .fc-timeline-now-indicator-arrow,
  .fc .fc-timeline-now-indicator-line {
    position: absolute;
    top: 0;
    border-style: solid;
    border-color: red;
    border-color: var(--fc-now-indicator-color, red);
  }
.fc .fc-timeline-now-indicator-arrow {
    margin: 0 -6px; /* 5, then one more to counteract scroller's negative margins */

    /* triangle pointing down. TODO: mixin */
    border-width: 6px 5px 0 5px;
    border-left-color: transparent;
    border-right-color: transparent;
  }
.fc .fc-timeline-now-indicator-line {
    margin: 0 -1px; /* counteract scroller's negative margins */
    bottom: 0;
    border-width: 0 0 0 1px;
  }
.fc {

  /* container */

}
.fc .fc-timeline-events {
    position: relative;
    z-index: 3;
    width: 0; /* for event positioning. will end up on correct side based on dir */
  }
.fc {

  /* harness */

}
.fc .fc-timeline-event-harness,
  .fc .fc-timeline-more-link {
    position: absolute;
    top: 0; /* for when when top can't be computed yet */
    /* JS will set tht left/right */
  }
/* z-index, scoped within fc-timeline-events */
.fc-timeline-event { z-index: 1 }
.fc-timeline-event.fc-event-mirror { z-index: 2 }
.fc-timeline-event {
  position: relative; /* contains things. TODO: make part of fc-h-event and fc-v-event */
  display: flex; /* for v-aligning start/end arrows and making fc-event-main stretch all the way */
  align-items: center;
  border-radius: 0;
  padding: 2px 1px;
  margin-bottom: 1px;
  font-size: .85em;
  font-size: var(--fc-small-font-size, .85em)

  /* time and title spacing */
  /* ---------------------------------------------------------------------------------------------------- */
}
.fc-timeline-event .fc-event-main {
    flex-grow: 1;
    flex-shrink: 1;
    min-width: 0; /* important for allowing to shrink all the way */
  }
.fc-timeline-event .fc-event-time {
    font-weight: bold;
  }
.fc-timeline-event .fc-event-time,
  .fc-timeline-event .fc-event-title {
    white-space: nowrap;
    padding: 0 2px;
  }
/* move 1px away from slot line */
.fc-direction-ltr .fc-timeline-event.fc-event-end,
  .fc-direction-ltr .fc-timeline-more-link {
    margin-right: 1px;
  }
.fc-direction-rtl .fc-timeline-event.fc-event-end,
  .fc-direction-rtl .fc-timeline-more-link {
    margin-left: 1px;
  }
/* make event beefier when overlap not allowed */
.fc-timeline-overlap-disabled .fc-timeline-event {
  padding-top: 5px;
  padding-bottom: 5px;
  margin-bottom: 0;
}
/* arrows indicating the event continues into past/future */
/* ---------------------------------------------------------------------------------------------------- */
/* part of the flexbox flow */
.fc-timeline-event:not(.fc-event-start):before,
.fc-timeline-event:not(.fc-event-end):after {
  content: "";
  flex-grow: 0;
  flex-shrink: 0;
  opacity: .5;

  /* triangle. TODO: mixin */
  width: 0;
  height: 0;
  margin: 0 1px;
  border: 5px solid #000; /* TODO: var */
  border-top-color: transparent;
  border-bottom-color: transparent;
}
/* pointing left */
.fc-direction-ltr .fc-timeline-event:not(.fc-event-start):before,
.fc-direction-rtl .fc-timeline-event:not(.fc-event-end):after {
  border-left: 0;
}
/* pointing right */
.fc-direction-ltr .fc-timeline-event:not(.fc-event-end):after,
.fc-direction-rtl .fc-timeline-event:not(.fc-event-start):before {
  border-right: 0;
}
/* +more events indicator */
/* ---------------------------------------------------------------------------------------------------- */
.fc-timeline-more-link {
  font-size: .85em;
  font-size: var(--fc-small-font-size, .85em);
  color: inherit;
  color: var(--fc-more-link-text-color, inherit);
  background: #d0d0d0;
  background: var(--fc-more-link-bg-color, #d0d0d0);
  padding: 1px;
  cursor: pointer;
}
.fc-timeline-more-link-inner { /* has fc-sticky */
  display: inline-block;
  left: 0;
  right: 0;
  padding: 2px;
}
.fc .fc-timeline-bg { /* a container for bg content */
    position: absolute;
    z-index: 2;
    top: 0;
    bottom: 0;
    width: 0;
    left: 0; /* will take precedence when LTR */
    right: 0; /* will take precedence when RTL */ /* TODO: kill */
  }
.fc .fc-timeline-bg .fc-non-business { z-index: 1 }
.fc .fc-timeline-bg .fc-bg-event { z-index: 2 }
.fc .fc-timeline-bg .fc-highlight { z-index: 3 }
.fc .fc-timeline-bg-harness {
    position: absolute;
    top: 0;
    bottom: 0;
  }



/*
A VERTICAL event
*/

.fc-v-event { /* allowed to be top-level */
  display: block;
  border: 1px solid #3788d8;
  border: 1px solid var(--fc-event-border-color, #3788d8);
  background-color: #3788d8;
  background-color: var(--fc-event-bg-color, #3788d8)

}

.fc-v-event .fc-event-main {
    color: #fff;
    color: var(--fc-event-text-color, #fff);
    height: 100%;
  }

.fc-v-event .fc-event-main-frame {
    height: 100%;
    display: flex;
    flex-direction: column;
  }

.fc-v-event .fc-event-time {
    flex-grow: 0;
    flex-shrink: 0;
    max-height: 100%;
    overflow: hidden;
  }

.fc-v-event .fc-event-title-container { /* a container for the sticky cushion */
    flex-grow: 1;
    flex-shrink: 1;
    min-height: 0; /* important for allowing to shrink all the way */
  }

.fc-v-event .fc-event-title { /* will have fc-sticky on it */
    top: 0;
    bottom: 0;
    max-height: 100%; /* clip overflow */
    overflow: hidden;
  }

.fc-v-event:not(.fc-event-start) {
    border-top-width: 0;
    border-top-left-radius: 0;
    border-top-right-radius: 0;
  }

.fc-v-event:not(.fc-event-end) {
    border-bottom-width: 0;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
  }

.fc-v-event.fc-event-selected:before {
    /* expand hit area */
    left: -10px;
    right: -10px;
  }

.fc-v-event {

  /* resizer (mouse AND touch) */

}

.fc-v-event .fc-event-resizer-start {
    cursor: n-resize;
  }

.fc-v-event .fc-event-resizer-end {
    cursor: s-resize;
  }

.fc-v-event {

  /* resizer for MOUSE */

}

.fc-v-event:not(.fc-event-selected) .fc-event-resizer {
      height: 8px;
      height: var(--fc-event-resizer-thickness, 8px);
      left: 0;
      right: 0;
    }

.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start {
      top: -4px;
      top: calc(var(--fc-event-resizer-thickness, 8px) / -2);
    }

.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end {
      bottom: -4px;
      bottom: calc(var(--fc-event-resizer-thickness, 8px) / -2);
    }

.fc-v-event {

  /* resizer for TOUCH (when event is "selected") */

}

.fc-v-event.fc-event-selected .fc-event-resizer {
      left: 50%;
      margin-left: -4px;
      margin-left: calc(var(--fc-event-resizer-dot-total-width, 8px) / -2);
    }

.fc-v-event.fc-event-selected .fc-event-resizer-start {
      top: -4px;
      top: calc(var(--fc-event-resizer-dot-total-width, 8px) / -2);
    }

.fc-v-event.fc-event-selected .fc-event-resizer-end {
      bottom: -4px;
      bottom: calc(var(--fc-event-resizer-dot-total-width, 8px) / -2);
    }
.fc .fc-timegrid .fc-daygrid-body { /* the all-day daygrid within the timegrid view */
    z-index: 2; /* put above the timegrid-body so that more-popover is above everything. TODO: better solution */
  }
.fc .fc-timegrid-divider {
    padding: 0 0 2px; /* browsers get confused when you set height. use padding instead */
  }
.fc .fc-timegrid-body {
    position: relative;
    z-index: 1; /* scope the z-indexes of slots and cols */
    min-height: 100%; /* fill height always, even when slat table doesn't grow */
  }
.fc .fc-timegrid-axis-chunk { /* for advanced ScrollGrid */
    position: relative /* offset parent for now-indicator-container */

  }
.fc .fc-timegrid-axis-chunk > table {
      position: relative;
      z-index: 1; /* above the now-indicator-container */
    }
.fc .fc-timegrid-slots {
    position: relative;
    z-index: 1;
  }
.fc .fc-timegrid-slot { /* a <td> */
    height: 1.5em;
    border-bottom: 0 /* each cell owns its top border */
  }
.fc .fc-timegrid-slot:empty:before {
      content: '\00a0'; /* make sure there's at least an empty space to create height for height syncing */
    }
.fc .fc-timegrid-slot-minor {
    border-top-style: dotted;
  }
.fc .fc-timegrid-slot-label-cushion {
    display: inline-block;
    white-space: nowrap;
  }
.fc .fc-timegrid-slot-label {
    vertical-align: middle; /* vertical align the slots */
  }
.fc {


  /* slots AND axis cells (top-left corner of view including the "all-day" text) */

}
.fc .fc-timegrid-axis-cushion,
  .fc .fc-timegrid-slot-label-cushion {
    padding: 0 4px;
  }
.fc {


  /* axis cells (top-left corner of view including the "all-day" text) */
  /* vertical align is more complicated, uses flexbox */

}
.fc .fc-timegrid-axis-frame-liquid {
    height: 100%; /* will need liquid-hack in FF */
  }
.fc .fc-timegrid-axis-frame {
    overflow: hidden;
    display: flex;
    align-items: center; /* vertical align */
    justify-content: flex-end; /* horizontal align. matches text-align below */
  }
.fc .fc-timegrid-axis-cushion {
    max-width: 60px; /* limits the width of the "all-day" text */
    flex-shrink: 0; /* allows text to expand how it normally would, regardless of constrained width */
  }
.fc-direction-ltr .fc-timegrid-slot-label-frame {
    text-align: right;
  }
.fc-direction-rtl .fc-timegrid-slot-label-frame {
    text-align: left;
  }
.fc-liquid-hack .fc-timegrid-axis-frame-liquid {
  height: auto;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  }
.fc .fc-timegrid-col.fc-day-today {
      background-color: rgba(255, 220, 40, 0.15);
      background-color: var(--fc-today-bg-color, rgba(255, 220, 40, 0.15));
    }
.fc .fc-timegrid-col-frame {
    min-height: 100%; /* liquid-hack is below */
    position: relative;
  }
.fc-media-screen.fc-liquid-hack .fc-timegrid-col-frame {
  height: auto;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
    }
.fc-media-screen .fc-timegrid-cols {
    position: absolute; /* no z-index. children will decide and go above slots */
    top: 0;
    left: 0;
    right: 0;
    bottom: 0
  }
.fc-media-screen .fc-timegrid-cols > table {
      height: 100%;
    }
.fc-media-screen .fc-timegrid-col-bg,
  .fc-media-screen .fc-timegrid-col-events,
  .fc-media-screen .fc-timegrid-now-indicator-container {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
  }
.fc {

  /* bg */

}
.fc .fc-timegrid-col-bg {
    z-index: 2; /* TODO: kill */
  }
.fc .fc-timegrid-col-bg .fc-non-business { z-index: 1 }
.fc .fc-timegrid-col-bg .fc-bg-event { z-index: 2 }
.fc .fc-timegrid-col-bg .fc-highlight { z-index: 3 }
.fc .fc-timegrid-bg-harness {
    position: absolute; /* top/bottom will be set by JS */
    left: 0;
    right: 0;
  }
.fc {

  /* fg events */
  /* (the mirror segs are put into a separate container with same classname, */
  /* and they must be after the normal seg container to appear at a higher z-index) */

}
.fc .fc-timegrid-col-events {
    z-index: 3;
    /* child event segs have z-indexes that are scoped within this div */
  }
.fc {

  /* now indicator */

}
.fc .fc-timegrid-now-indicator-container {
    bottom: 0;
    overflow: hidden; /* don't let overflow of lines/arrows cause unnecessary scrolling */
    /* z-index is set on the individual elements */
  }
.fc-direction-ltr .fc-timegrid-col-events {
    margin: 0 2.5% 0 2px;
  }
.fc-direction-rtl .fc-timegrid-col-events {
    margin: 0 2px 0 2.5%;
  }
.fc-timegrid-event-harness {
  position: absolute /* top/left/right/bottom will all be set by JS */
}
.fc-timegrid-event-harness > .fc-timegrid-event {
    position: absolute; /* absolute WITHIN the harness */
    top: 0; /* for when not yet positioned */
    bottom: 0; /* " */
    left: 0;
    right: 0;
  }
.fc-timegrid-event-harness-inset .fc-timegrid-event,
.fc-timegrid-event.fc-event-mirror,
.fc-timegrid-more-link {
  box-shadow: 0px 0px 0px 1px #fff;
  box-shadow: 0px 0px 0px 1px var(--fc-page-bg-color, #fff);
}
.fc-timegrid-event,
.fc-timegrid-more-link { /* events need to be root */
  font-size: .85em;
  font-size: var(--fc-small-font-size, .85em);
  border-radius: 3px;
}
.fc-timegrid-event { /* events need to be root */
  margin-bottom: 1px /* give some space from bottom */
}
.fc-timegrid-event .fc-event-main {
    padding: 1px 1px 0;
  }
.fc-timegrid-event .fc-event-time {
    white-space: nowrap;
    font-size: .85em;
    font-size: var(--fc-small-font-size, .85em);
    margin-bottom: 1px;
  }
.fc-timegrid-event-short .fc-event-main-frame {
    flex-direction: row;
    overflow: hidden;
  }
.fc-timegrid-event-short .fc-event-time:after {
    content: '\00a0-\00a0'; /* dash surrounded by non-breaking spaces */
  }
.fc-timegrid-event-short .fc-event-title {
    font-size: .85em;
    font-size: var(--fc-small-font-size, .85em)
  }
.fc-timegrid-more-link { /* does NOT inherit from fc-timegrid-event */
  position: absolute;
  z-index: 9999; /* hack */
  color: inherit;
  color: var(--fc-more-link-text-color, inherit);
  background: #d0d0d0;
  background: var(--fc-more-link-bg-color, #d0d0d0);
  cursor: pointer;
  margin-bottom: 1px; /* match space below fc-timegrid-event */
}
.fc-timegrid-more-link-inner { /* has fc-sticky */
  padding: 3px 2px;
  top: 0;
}
.fc-direction-ltr .fc-timegrid-more-link {
    right: 0;
  }
.fc-direction-rtl .fc-timegrid-more-link {
    left: 0;
  }
.fc {

  /* line */

}
.fc .fc-timegrid-now-indicator-line {
    position: absolute;
    z-index: 4;
    left: 0;
    right: 0;
    border-style: solid;
    border-color: red;
    border-color: var(--fc-now-indicator-color, red);
    border-width: 1px 0 0;
  }
.fc {

  /* arrow */

}
.fc .fc-timegrid-now-indicator-arrow {
    position: absolute;
    z-index: 4;
    margin-top: -5px; /* vertically center on top coordinate */
    border-style: solid;
    border-color: red;
    border-color: var(--fc-now-indicator-color, red);
  }
.fc-direction-ltr .fc-timegrid-now-indicator-arrow {
    left: 0;

    /* triangle pointing right. TODO: mixin */
    border-width: 5px 0 5px 6px;
    border-top-color: transparent;
    border-bottom-color: transparent;
  }
.fc-direction-rtl .fc-timegrid-now-indicator-arrow {
    right: 0;

    /* triangle pointing left. TODO: mixin */
    border-width: 5px 6px 5px 0;
    border-top-color: transparent;
    border-bottom-color: transparent;
  }

/**
 * jQuery toast plugin created by Kamran Ahmed copyright MIT license 2014
 */
.jq-toast-wrap { display: block; position: fixed; width: 250px;  pointer-events: none !important; margin: 0; padding: 0; letter-spacing: normal; z-index: 9000 !important; }
.jq-toast-wrap * { margin: 0; padding: 0; }

.jq-toast-wrap.bottom-left { bottom: 20px; left: 20px; }
.jq-toast-wrap.bottom-right { bottom: 20px; right: 40px; }
.jq-toast-wrap.top-left { top: 20px; left: 20px; }
.jq-toast-wrap.top-right { top: 20px; right: 40px; }

.jq-toast-single { display: block; width: 100%; padding: 10px; margin: 0px 0px 5px; border-radius: 4px; font-size: 12px; font-family: arial, sans-serif; line-height: 17px; position: relative;  pointer-events: all !important; background-color: #444444; color: white; }

.jq-toast-single h2 { font-family: arial, sans-serif; font-size: 14px; margin: 0px 0px 7px; background: none; color: inherit; line-height: inherit; letter-spacing: normal; }
.jq-toast-single a { color: #eee; text-decoration: none; font-weight: bold; border-bottom: 1px solid white; padding-bottom: 3px; font-size: 12px; }

.jq-toast-single ul { margin: 0px 0px 0px 15px; background: none; padding:0px; }
.jq-toast-single ul li { list-style-type: disc !important; line-height: 17px; background: none; margin: 0; padding: 0; letter-spacing: normal; }

.close-jq-toast-single { position: absolute; top: 3px; right: 7px; font-size: 14px; cursor: pointer; }

.jq-toast-loader { display: block; position: absolute; top: -2px; height: 5px; width: 0%; left: 0; border-radius: 5px; background: red; }
.jq-toast-loaded { width: 100%; }
.jq-has-icon { padding: 10px 10px 10px 50px; background-repeat: no-repeat; background-position: 10px; }
.jq-icon-info { background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII='); background-color: #31708f; color: #d9edf7; border-color: #bce8f1; }
.jq-icon-warning { background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII='); background-color: #8a6d3b; color: #fcf8e3; border-color: #faebcc; }
.jq-icon-error { background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII='); background-color: #a94442; color: #f2dede; border-color: #ebccd1; }
.jq-icon-success { background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg=='); color: #dff0d8; background-color: #3c763d; border-color: #d6e9c6; }

/* classes attached to <body> */
/* TODO: make fc-event selector work when calender in shadow DOM */
.fc-not-allowed,
.fc-not-allowed .fc-event { /* override events' custom cursors */
  cursor: not-allowed;
}

/* TODO: not attached to body. attached to specific els. move */
.fc-unselectable {
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  -webkit-touch-callout: none;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
.fc {
  /* layout of immediate children */
  display: flex;
  flex-direction: column;

  font-size: 1em
}
.fc,
  .fc *,
  .fc *:before,
  .fc *:after {
    box-sizing: border-box;
  }
.fc table {
    border-collapse: collapse;
    border-spacing: 0;
    font-size: 1em; /* normalize cross-browser */
  }
.fc th {
    text-align: center;
  }
.fc th,
  .fc td {
    vertical-align: top;
    padding: 0;
  }
.fc a[data-navlink] {
    cursor: pointer;
  }
.fc a[data-navlink]:hover {
    text-decoration: underline;
  }
.fc-direction-ltr {
  direction: ltr;
  text-align: left;
}
.fc-direction-rtl {
  direction: rtl;
  text-align: right;
}
.fc-theme-standard td,
  .fc-theme-standard th {
    border: 1px solid #ddd;
    border: 1px solid var(--fc-border-color, #ddd);
  }
/* for FF, which doesn't expand a 100% div within a table cell. use absolute positioning */
/* inner-wrappers are responsible for being absolute */
/* TODO: best place for this? */
.fc-liquid-hack td,
  .fc-liquid-hack th {
    position: relative;
  }

@font-face {
  font-family: 'fcicons';
  src: url("data:application/x-font-ttf;charset=utf-8;base64,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") format('truetype');
  font-weight: normal;
  font-style: normal;
}

.fc-icon {
  /* added for fc */
  display: inline-block;
  width: 1em;
  height: 1em;
  text-align: center;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;

  /* use !important to prevent issues with browser extensions that change fonts */
  font-family: 'fcicons' !important;
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;

  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.fc-icon-chevron-left:before {
  content: "\e900";
}

.fc-icon-chevron-right:before {
  content: "\e901";
}

.fc-icon-chevrons-left:before {
  content: "\e902";
}

.fc-icon-chevrons-right:before {
  content: "\e903";
}

.fc-icon-minus-square:before {
  content: "\e904";
}

.fc-icon-plus-square:before {
  content: "\e905";
}

.fc-icon-x:before {
  content: "\e906";
}
/*
Lots taken from Flatly (MIT): https://bootswatch.com/4/flatly/bootstrap.css

These styles only apply when the standard-theme is activated.
When it's NOT activated, the fc-button classes won't even be in the DOM.
*/
.fc {

  /* reset */

}
.fc .fc-button {
    border-radius: 0;
    overflow: visible;
    text-transform: none;
    margin: 0;
    font-family: inherit;
    font-size: inherit;
    line-height: inherit;
  }
.fc .fc-button:focus {
    outline: 1px dotted;
    outline: 5px auto -webkit-focus-ring-color;
  }
.fc .fc-button {
    -webkit-appearance: button;
  }
.fc .fc-button:not(:disabled) {
    cursor: pointer;
  }
.fc .fc-button::-moz-focus-inner {
    padding: 0;
    border-style: none;
  }
.fc {

  /* theme */

}
.fc .fc-button {
    display: inline-block;
    font-weight: 400;
    text-align: center;
    vertical-align: middle;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
    background-color: transparent;
    border: 1px solid transparent;
    padding: 0.4em 0.65em;
    font-size: 1em;
    line-height: 1.5;
    border-radius: 0.25em;
  }
.fc .fc-button:hover {
    text-decoration: none;
  }
.fc .fc-button:focus {
    outline: 0;
    box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);
  }
.fc .fc-button:disabled {
    opacity: 0.65;
  }
.fc {

  /* "primary" coloring */

}
.fc .fc-button-primary {
    color: #fff;
    color: var(--fc-button-text-color, #fff);
    background-color: #2C3E50;
    background-color: var(--fc-button-bg-color, #2C3E50);
    border-color: #2C3E50;
    border-color: var(--fc-button-border-color, #2C3E50);
  }
.fc .fc-button-primary:hover {
    color: #fff;
    color: var(--fc-button-text-color, #fff);
    background-color: #1e2b37;
    background-color: var(--fc-button-hover-bg-color, #1e2b37);
    border-color: #1a252f;
    border-color: var(--fc-button-hover-border-color, #1a252f);
  }
.fc .fc-button-primary:disabled { /* not DRY */
    color: #fff;
    color: var(--fc-button-text-color, #fff);
    background-color: #2C3E50;
    background-color: var(--fc-button-bg-color, #2C3E50);
    border-color: #2C3E50;
    border-color: var(--fc-button-border-color, #2C3E50); /* overrides :hover */
  }
.fc .fc-button-primary:focus {
    box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5);
  }
.fc .fc-button-primary:not(:disabled):active,
  .fc .fc-button-primary:not(:disabled).fc-button-active {
    color: #fff;
    color: var(--fc-button-text-color, #fff);
    background-color: #1a252f;
    background-color: var(--fc-button-active-bg-color, #1a252f);
    border-color: #151e27;
    border-color: var(--fc-button-active-border-color, #151e27);
  }
.fc .fc-button-primary:not(:disabled):active:focus,
  .fc .fc-button-primary:not(:disabled).fc-button-active:focus {
    box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5);
  }
.fc {

  /* icons within buttons */

}
.fc .fc-button .fc-icon {
    vertical-align: middle;
    font-size: 1.5em; /* bump up the size (but don't make it bigger than line-height of button, which is 1.5em also) */
  }
.fc .fc-button-group {
    position: relative;
    display: inline-flex;
    vertical-align: middle;
  }
.fc .fc-button-group > .fc-button {
    position: relative;
    flex: 1 1 auto;
  }
.fc .fc-button-group > .fc-button:hover {
    z-index: 1;
  }
.fc .fc-button-group > .fc-button:focus,
  .fc .fc-button-group > .fc-button:active,
  .fc .fc-button-group > .fc-button.fc-button-active {
    z-index: 1;
  }
.fc-direction-ltr .fc-button-group > .fc-button:not(:first-child) {
    margin-left: -1px;
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
  }
.fc-direction-ltr .fc-button-group > .fc-button:not(:last-child) {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
  }
.fc-direction-rtl .fc-button-group > .fc-button:not(:first-child) {
    margin-right: -1px;
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
  }
.fc-direction-rtl .fc-button-group > .fc-button:not(:last-child) {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
  }
.fc .fc-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
  }
.fc .fc-toolbar.fc-header-toolbar {
    margin-bottom: 1.5em;
  }
.fc .fc-toolbar.fc-footer-toolbar {
    margin-top: 1.5em;
  }
.fc .fc-toolbar-title {
    font-size: 1.75em;
    margin: 0;
  }
.fc-direction-ltr .fc-toolbar > * > :not(:first-child) {
    margin-left: .75em; /* space between */
  }
.fc-direction-rtl .fc-toolbar > * > :not(:first-child) {
    margin-right: .75em; /* space between */
  }
.fc-direction-rtl .fc-toolbar-ltr { /* when the toolbar-chunk positioning system is explicitly left-to-right */
    flex-direction: row-reverse;
  }
.fc .fc-scroller {
    -webkit-overflow-scrolling: touch;
    position: relative; /* for abs-positioned elements within */
  }
.fc .fc-scroller-liquid {
    height: 100%;
  }
.fc .fc-scroller-liquid-absolute {
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    bottom: 0;
  }
.fc .fc-scroller-harness {
    position: relative;
    overflow: hidden;
    direction: ltr;
      /* hack for chrome computing the scroller's right/left wrong for rtl. undone below... */
      /* TODO: demonstrate in codepen */
  }
.fc .fc-scroller-harness-liquid {
    height: 100%;
  }
.fc-direction-rtl .fc-scroller-harness > .fc-scroller { /* undo above hack */
    direction: rtl;
  }
.fc-theme-standard .fc-scrollgrid {
    border: 1px solid #ddd;
    border: 1px solid var(--fc-border-color, #ddd); /* bootstrap does this. match */
  }
.fc .fc-scrollgrid,
    .fc .fc-scrollgrid table { /* all tables (self included) */
      width: 100%; /* because tables don't normally do this */
      table-layout: fixed;
    }
.fc .fc-scrollgrid table { /* inner tables */
      border-top-style: hidden;
      border-left-style: hidden;
      border-right-style: hidden;
    }
.fc .fc-scrollgrid {

    border-collapse: separate;
    border-right-width: 0;
    border-bottom-width: 0;

  }
.fc .fc-scrollgrid-liquid {
    height: 100%;
  }
.fc .fc-scrollgrid-section { /* a <tr> */
    height: 1px /* better than 0, for firefox */

  }
.fc .fc-scrollgrid-section > td {
      height: 1px; /* needs a height so inner div within grow. better than 0, for firefox */
    }
.fc .fc-scrollgrid-section table {
      height: 1px;
        /* for most browsers, if a height isn't set on the table, can't do liquid-height within cells */
        /* serves as a min-height. harmless */
    }
.fc .fc-scrollgrid-section-liquid > td {
      height: 100%; /* better than `auto`, for firefox */
    }
.fc .fc-scrollgrid-section > * {
    border-top-width: 0;
    border-left-width: 0;
  }
.fc .fc-scrollgrid-section-header > *,
  .fc .fc-scrollgrid-section-footer > * {
    border-bottom-width: 0;
  }
.fc .fc-scrollgrid-section-body table,
  .fc .fc-scrollgrid-section-footer table {
    border-bottom-style: hidden; /* head keeps its bottom border tho */
  }
.fc {

  /* stickiness */

}
.fc .fc-scrollgrid-section-sticky > * {
    background: #fff;
    background: var(--fc-page-bg-color, #fff);
    position: sticky;
    z-index: 3; /* TODO: var */
    /* TODO: box-shadow when sticking */
  }
.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky > * {
    top: 0; /* because border-sharing causes a gap at the top */
      /* TODO: give safari -1. has bug */
  }
.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky > * {
    bottom: 0; /* known bug: bottom-stickiness doesn't work in safari */
  }
.fc .fc-scrollgrid-sticky-shim { /* for horizontal scrollbar */
    height: 1px; /* needs height to create scrollbars */
    margin-bottom: -1px;
  }
.fc-sticky { /* no .fc wrap because used as child of body */
  position: sticky;
}
.fc .fc-view-harness {
    flex-grow: 1; /* because this harness is WITHIN the .fc's flexbox */
    position: relative;
  }
.fc {

  /* when the harness controls the height, make the view liquid */

}
.fc .fc-view-harness-active > .fc-view {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
  }
.fc .fc-col-header-cell-cushion {
    display: inline-block; /* x-browser for when sticky (when multi-tier header) */
    padding: 2px 4px;
  }
.fc .fc-bg-event,
  .fc .fc-non-business,
  .fc .fc-highlight {
    /* will always have a harness with position:relative/absolute, so absolutely expand */
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
  }
.fc .fc-non-business {
    background: rgba(215, 215, 215, 0.3);
    background: var(--fc-non-business-color, rgba(215, 215, 215, 0.3));
  }
.fc .fc-bg-event {
    background: rgb(143, 223, 130);
    background: var(--fc-bg-event-color, rgb(143, 223, 130));
    opacity: 0.3;
    opacity: var(--fc-bg-event-opacity, 0.3)
  }
.fc .fc-bg-event .fc-event-title {
      margin: .5em;
      font-size: .85em;
      font-size: var(--fc-small-font-size, .85em);
      font-style: italic;
    }
.fc .fc-highlight {
    background: rgba(188, 232, 241, 0.3);
    background: var(--fc-highlight-color, rgba(188, 232, 241, 0.3));
  }
.fc .fc-cell-shaded,
  .fc .fc-day-disabled {
    background: rgba(208, 208, 208, 0.3);
    background: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));
  }
/* link resets */
/* ---------------------------------------------------------------------------------------------------- */
a.fc-event,
a.fc-event:hover {
  text-decoration: none;
}
/* cursor */
.fc-event[href],
.fc-event.fc-event-draggable {
  cursor: pointer;
}
/* event text content */
/* ---------------------------------------------------------------------------------------------------- */
.fc-event .fc-event-main {
    position: relative;
    z-index: 2;
  }
/* dragging */
/* ---------------------------------------------------------------------------------------------------- */
.fc-event-dragging:not(.fc-event-selected) { /* MOUSE */
    opacity: 0.75;
  }
.fc-event-dragging.fc-event-selected { /* TOUCH */
    box-shadow: 0 2px 7px rgba(0, 0, 0, 0.3);
  }
/* resizing */
/* ---------------------------------------------------------------------------------------------------- */
/* (subclasses should hone positioning for touch and non-touch) */
.fc-event .fc-event-resizer {
    display: none;
    position: absolute;
    z-index: 4;
  }
.fc-event:hover, /* MOUSE */
.fc-event-selected { /* TOUCH */

}
.fc-event:hover .fc-event-resizer, .fc-event-selected .fc-event-resizer {
    display: block;
  }
.fc-event-selected .fc-event-resizer {
    border-radius: 4px;
    border-radius: calc(var(--fc-event-resizer-dot-total-width, 8px) / 2);
    border-width: 1px;
    border-width: var(--fc-event-resizer-dot-border-width, 1px);
    width: 8px;
    width: var(--fc-event-resizer-dot-total-width, 8px);
    height: 8px;
    height: var(--fc-event-resizer-dot-total-width, 8px);
    border-style: solid;
    border-color: inherit;
    background: #fff;
    background: var(--fc-page-bg-color, #fff)

    /* expand hit area */

  }
.fc-event-selected .fc-event-resizer:before {
      content: '';
      position: absolute;
      top: -20px;
      left: -20px;
      right: -20px;
      bottom: -20px;
    }
/* selecting (always TOUCH) */
/* OR, focused by tab-index */
/* (TODO: maybe not the best focus-styling for .fc-daygrid-dot-event) */
/* ---------------------------------------------------------------------------------------------------- */
.fc-event-selected,
.fc-event:focus {
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2)

  /* expand hit area (subclasses should expand) */

}
.fc-event-selected:before, .fc-event:focus:before {
    content: "";
    position: absolute;
    z-index: 3;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
  }
.fc-event-selected,
.fc-event:focus {

  /* dimmer effect */

}
.fc-event-selected:after, .fc-event:focus:after {
    content: "";
    background: rgba(0, 0, 0, 0.25);
    background: var(--fc-event-selected-overlay-color, rgba(0, 0, 0, 0.25));
    position: absolute;
    z-index: 1;

    /* assume there's a border on all sides. overcome it. */
    /* sometimes there's NOT a border, in which case the dimmer will go over */
    /* an adjacent border, which looks fine. */
    top: -1px;
    left: -1px;
    right: -1px;
    bottom: -1px;
  }
/*
A HORIZONTAL event
*/
.fc-h-event { /* allowed to be top-level */
  display: block;
  border: 1px solid #3788d8;
  border: 1px solid var(--fc-event-border-color, #3788d8);
  background-color: #3788d8;
  background-color: var(--fc-event-bg-color, #3788d8)

}
.fc-h-event .fc-event-main {
    color: #fff;
    color: var(--fc-event-text-color, #fff);
  }
.fc-h-event .fc-event-main-frame {
    display: flex; /* for make fc-event-title-container expand */
  }
.fc-h-event .fc-event-time {
    max-width: 100%; /* clip overflow on this element */
    overflow: hidden;
  }
.fc-h-event .fc-event-title-container { /* serves as a container for the sticky cushion */
    flex-grow: 1;
    flex-shrink: 1;
    min-width: 0; /* important for allowing to shrink all the way */
  }
.fc-h-event .fc-event-title {
    display: inline-block; /* need this to be sticky cross-browser */
    vertical-align: top; /* for not messing up line-height */
    left: 0;  /* for sticky */
    right: 0; /* for sticky */
    max-width: 100%; /* clip overflow on this element */
    overflow: hidden;
  }
.fc-h-event.fc-event-selected:before {
    /* expand hit area */
    top: -10px;
    bottom: -10px;
  }
/* adjust border and border-radius (if there is any) for non-start/end */
.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),
.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end) {
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
  border-left-width: 0;
}
.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),
.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start) {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
  border-right-width: 0;
}
/* resizers */
.fc-h-event:not(.fc-event-selected) .fc-event-resizer {
  top: 0;
  bottom: 0;
  width: 8px;
  width: var(--fc-event-resizer-thickness, 8px);
}
.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,
.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end {
  cursor: w-resize;
  left: -4px;
  left: calc(-0.5 * var(--fc-event-resizer-thickness, 8px));
}
.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,
.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start {
  cursor: e-resize;
  right: -4px;
  right: calc(-0.5 * var(--fc-event-resizer-thickness, 8px));
}
/* resizers for TOUCH */
.fc-h-event.fc-event-selected .fc-event-resizer {
  top: 50%;
  margin-top: -4px;
  margin-top: calc(-0.5 * var(--fc-event-resizer-dot-total-width, 8px));
}
.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,
.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end {
  left: -4px;
  left: calc(-0.5 * var(--fc-event-resizer-dot-total-width, 8px));
}
.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,
.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start {
  right: -4px;
  right: calc(-0.5 * var(--fc-event-resizer-dot-total-width, 8px));
}
.fc .fc-popover {
    position: absolute;
    z-index: 9999;
    box-shadow: 0 2px 6px rgba(0,0,0,.15);
  }
.fc .fc-popover-header {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    padding: 3px 4px;
  }
.fc .fc-popover-title {
    margin: 0 2px;
  }
.fc .fc-popover-close {
    cursor: pointer;
    opacity: 0.65;
    font-size: 1.1em;
  }
.fc-theme-standard .fc-popover {
    border: 1px solid #ddd;
    border: 1px solid var(--fc-border-color, #ddd);
    background: #fff;
    background: var(--fc-page-bg-color, #fff);
  }
.fc-theme-standard .fc-popover-header {
    background: rgba(208, 208, 208, 0.3);
    background: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));
  }


:root {
  --fc-daygrid-event-dot-width: 8px;
}
/* help things clear margins of inner content */
.fc-daygrid-day-frame,
.fc-daygrid-day-events,
.fc-daygrid-event-harness { /* for event top/bottom margins */
}
.fc-daygrid-day-frame:before, .fc-daygrid-day-events:before, .fc-daygrid-event-harness:before {
  content: "";
  clear: both;
  display: table; }
.fc-daygrid-day-frame:after, .fc-daygrid-day-events:after, .fc-daygrid-event-harness:after {
  content: "";
  clear: both;
  display: table; }
.fc .fc-daygrid-body { /* a <div> that wraps the table */
    position: relative;
    z-index: 1; /* container inner z-index's because <tr>s can't do it */
  }
.fc .fc-daygrid-day.fc-day-today {
      background-color: rgba(255, 220, 40, 0.15);
      background-color: var(--fc-today-bg-color, rgba(255, 220, 40, 0.15));
    }
.fc .fc-daygrid-day-frame {
    position: relative;
    min-height: 100%; /* seems to work better than `height` because sets height after rows/cells naturally do it */
  }
.fc {

  /* cell top */

}
.fc .fc-daygrid-day-top {
    display: flex;
    flex-direction: row-reverse;
  }
.fc .fc-day-other .fc-daygrid-day-top {
    opacity: 0.3;
  }
.fc {

  /* day number (within cell top) */

}
.fc .fc-daygrid-day-number {
    position: relative;
    z-index: 4;
    padding: 4px;
  }
.fc {

  /* event container */

}
.fc .fc-daygrid-day-events {
    margin-top: 1px; /* needs to be margin, not padding, so that available cell height can be computed */
  }
.fc {

  /* positioning for balanced vs natural */

}
.fc .fc-daygrid-body-balanced .fc-daygrid-day-events {
      position: absolute;
      left: 0;
      right: 0;
    }
.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events {
      position: relative; /* for containing abs positioned event harnesses */
      min-height: 2em; /* in addition to being a min-height during natural height, equalizes the heights a little bit */
    }
.fc .fc-daygrid-body-natural { /* can coexist with -unbalanced */
  }
.fc .fc-daygrid-body-natural .fc-daygrid-day-events {
      margin-bottom: 1em;
    }
.fc {

  /* event harness */

}
.fc .fc-daygrid-event-harness {
    position: relative;
  }
.fc .fc-daygrid-event-harness-abs {
    position: absolute;
    top: 0; /* fallback coords for when cannot yet be computed */
    left: 0; /* */
    right: 0; /* */
  }
.fc .fc-daygrid-bg-harness {
    position: absolute;
    top: 0;
    bottom: 0;
  }
.fc {

  /* bg content */

}
.fc .fc-daygrid-day-bg .fc-non-business { z-index: 1 }
.fc .fc-daygrid-day-bg .fc-bg-event { z-index: 2 }
.fc .fc-daygrid-day-bg .fc-highlight { z-index: 3 }
.fc {

  /* events */

}
.fc .fc-daygrid-event {
    z-index: 6;
    margin-top: 1px;
  }
.fc .fc-daygrid-event.fc-event-mirror {
    z-index: 7;
  }
.fc {

  /* cell bottom (within day-events) */

}
.fc .fc-daygrid-day-bottom {
    font-size: .85em;
    padding: 2px 3px 0
  }
.fc .fc-daygrid-day-bottom:before {
  content: "";
  clear: both;
  display: table; }
.fc .fc-daygrid-more-link {
    position: relative;
    z-index: 4;
    cursor: pointer;
  }
.fc {

  /* week number (within frame) */

}
.fc .fc-daygrid-week-number {
    position: absolute;
    z-index: 5;
    top: 0;
    padding: 2px;
    min-width: 1.5em;
    text-align: center;
    background-color: rgba(208, 208, 208, 0.3);
    background-color: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));
    color: #808080;
    color: var(--fc-neutral-text-color, #808080);
  }
.fc {

  /* popover */

}
.fc .fc-more-popover .fc-popover-body {
    min-width: 220px;
    padding: 10px;
  }
.fc-direction-ltr .fc-daygrid-event.fc-event-start,
.fc-direction-rtl .fc-daygrid-event.fc-event-end {
  margin-left: 2px;
}
.fc-direction-ltr .fc-daygrid-event.fc-event-end,
.fc-direction-rtl .fc-daygrid-event.fc-event-start {
  margin-right: 2px;
}
.fc-direction-ltr .fc-daygrid-week-number {
    left: 0;
    border-radius: 0 0 3px 0;
  }
.fc-direction-rtl .fc-daygrid-week-number {
    right: 0;
    border-radius: 0 0 0 3px;
  }
.fc-liquid-hack .fc-daygrid-day-frame {
    position: static; /* will cause inner absolute stuff to expand to <td> */
  }
.fc-daygrid-event { /* make root-level, because will be dragged-and-dropped outside of a component root */
  position: relative; /* for z-indexes assigned later */
  white-space: nowrap;
  border-radius: 3px; /* dot event needs this to when selected */
  font-size: .85em;
  font-size: var(--fc-small-font-size, .85em);
}
/* --- the rectangle ("block") style of event --- */
.fc-daygrid-block-event .fc-event-time {
    font-weight: bold;
  }
.fc-daygrid-block-event .fc-event-time,
  .fc-daygrid-block-event .fc-event-title {
    padding: 1px;
  }
/* --- the dot style of event --- */
.fc-daygrid-dot-event {
  display: flex;
  align-items: center;
  padding: 2px 0

}
.fc-daygrid-dot-event .fc-event-title {
    flex-grow: 1;
    flex-shrink: 1;
    min-width: 0; /* important for allowing to shrink all the way */
    overflow: hidden;
    font-weight: bold;
  }
.fc-daygrid-dot-event:hover,
  .fc-daygrid-dot-event.fc-event-mirror {
    background: rgba(0, 0, 0, 0.1);
  }
.fc-daygrid-dot-event.fc-event-selected:before {
    /* expand hit area */
    top: -10px;
    bottom: -10px;
  }
.fc-daygrid-event-dot { /* the actual dot */
  margin: 0 4px;
  box-sizing: content-box;
  width: 0;
  height: 0;
  border: 4px solid #3788d8;
  border: calc(var(--fc-daygrid-event-dot-width, 8px) / 2) solid var(--fc-event-border-color, #3788d8);
  border-radius: 4px;
  border-radius: calc(var(--fc-daygrid-event-dot-width, 8px) / 2);
}
/* --- spacing between time and title --- */
.fc-direction-ltr .fc-daygrid-event .fc-event-time {
    margin-right: 3px;
  }
.fc-direction-rtl .fc-daygrid-event .fc-event-time {
    margin-left: 3px;
  }


/*
A VERTICAL event
*/

.fc-v-event { /* allowed to be top-level */
  display: block;
  border: 1px solid #3788d8;
  border: 1px solid var(--fc-event-border-color, #3788d8);
  background-color: #3788d8;
  background-color: var(--fc-event-bg-color, #3788d8)

}

.fc-v-event .fc-event-main {
    color: #fff;
    color: var(--fc-event-text-color, #fff);
    height: 100%;
  }

.fc-v-event .fc-event-main-frame {
    height: 100%;
    display: flex;
    flex-direction: column;
  }

.fc-v-event .fc-event-time {
    flex-grow: 0;
    flex-shrink: 0;
    max-height: 100%;
    overflow: hidden;
  }

.fc-v-event .fc-event-title-container { /* a container for the sticky cushion */
    flex-grow: 1;
    flex-shrink: 1;
    min-height: 0; /* important for allowing to shrink all the way */
  }

.fc-v-event .fc-event-title { /* will have fc-sticky on it */
    top: 0;
    bottom: 0;
    max-height: 100%; /* clip overflow */
    overflow: hidden;
  }

.fc-v-event:not(.fc-event-start) {
    border-top-width: 0;
    border-top-left-radius: 0;
    border-top-right-radius: 0;
  }

.fc-v-event:not(.fc-event-end) {
    border-bottom-width: 0;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
  }

.fc-v-event.fc-event-selected:before {
    /* expand hit area */
    left: -10px;
    right: -10px;
  }

.fc-v-event {

  /* resizer (mouse AND touch) */

}

.fc-v-event .fc-event-resizer-start {
    cursor: n-resize;
  }

.fc-v-event .fc-event-resizer-end {
    cursor: s-resize;
  }

.fc-v-event {

  /* resizer for MOUSE */

}

.fc-v-event:not(.fc-event-selected) .fc-event-resizer {
      height: 8px;
      height: var(--fc-event-resizer-thickness, 8px);
      left: 0;
      right: 0;
    }

.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start {
      top: -4px;
      top: calc(var(--fc-event-resizer-thickness, 8px) / -2);
    }

.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end {
      bottom: -4px;
      bottom: calc(var(--fc-event-resizer-thickness, 8px) / -2);
    }

.fc-v-event {

  /* resizer for TOUCH (when event is "selected") */

}

.fc-v-event.fc-event-selected .fc-event-resizer {
      left: 50%;
      margin-left: -4px;
      margin-left: calc(var(--fc-event-resizer-dot-total-width, 8px) / -2);
    }

.fc-v-event.fc-event-selected .fc-event-resizer-start {
      top: -4px;
      top: calc(var(--fc-event-resizer-dot-total-width, 8px) / -2);
    }

.fc-v-event.fc-event-selected .fc-event-resizer-end {
      bottom: -4px;
      bottom: calc(var(--fc-event-resizer-dot-total-width, 8px) / -2);
    }
.fc .fc-timegrid .fc-daygrid-body { /* the all-day daygrid within the timegrid view */
    z-index: 2; /* put above the timegrid-body so that more-popover is above everything. TODO: better solution */
  }
.fc .fc-timegrid-divider {
    padding: 0 0 2px; /* browsers get confused when you set height. use padding instead */
  }
.fc .fc-timegrid-body {
    position: relative;
    z-index: 1; /* scope the z-indexes of slots and cols */
    min-height: 100%; /* fill height always, even when slat table doesn't grow */
  }
.fc .fc-timegrid-axis-chunk { /* for advanced ScrollGrid */
    position: relative /* offset parent for now-indicator-container */

  }
.fc .fc-timegrid-axis-chunk > table {
      position: relative;
      z-index: 1; /* above the now-indicator-container */
    }
.fc .fc-timegrid-slots {
    position: relative;
    z-index: 1;
  }
.fc .fc-timegrid-slot { /* a <td> */
    height: 1.5em;
    border-bottom: 0 /* each cell owns its top border */
  }
.fc .fc-timegrid-slot:empty:before {
      content: '\00a0'; /* make sure there's at least an empty space to create height for height syncing */
    }
.fc .fc-timegrid-slot-minor {
    border-top-style: dotted;
  }
.fc .fc-timegrid-slot-label-cushion {
    display: inline-block;
    white-space: nowrap;
  }
.fc .fc-timegrid-slot-label {
    vertical-align: middle; /* vertical align the slots */
  }
.fc {


  /* slots AND axis cells (top-left corner of view including the "all-day" text) */

}
.fc .fc-timegrid-axis-cushion,
  .fc .fc-timegrid-slot-label-cushion {
    padding: 0 4px;
  }
.fc {


  /* axis cells (top-left corner of view including the "all-day" text) */
  /* vertical align is more complicated, uses flexbox */

}
.fc .fc-timegrid-axis-frame-liquid {
    height: 100%; /* will need liquid-hack in FF */
  }
.fc .fc-timegrid-axis-frame {
    overflow: hidden;
    display: flex;
    align-items: center; /* vertical align */
    justify-content: flex-end; /* horizontal align. matches text-align below */
  }
.fc .fc-timegrid-axis-cushion {
    max-width: 60px; /* limits the width of the "all-day" text */
    flex-shrink: 0; /* allows text to expand how it normally would, regardless of constrained width */
  }
.fc-direction-ltr .fc-timegrid-slot-label-frame {
    text-align: right;
  }
.fc-direction-rtl .fc-timegrid-slot-label-frame {
    text-align: left;
  }
.fc-liquid-hack .fc-timegrid-axis-frame-liquid {
  height: auto;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  }
.fc .fc-timegrid-col.fc-day-today {
      background-color: rgba(255, 220, 40, 0.15);
      background-color: var(--fc-today-bg-color, rgba(255, 220, 40, 0.15));
    }
.fc .fc-timegrid-col-frame {
    min-height: 100%; /* liquid-hack is below */
    position: relative;
  }
.fc-media-screen.fc-liquid-hack .fc-timegrid-col-frame {
  height: auto;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
    }
.fc-media-screen .fc-timegrid-cols {
    position: absolute; /* no z-index. children will decide and go above slots */
    top: 0;
    left: 0;
    right: 0;
    bottom: 0
  }
.fc-media-screen .fc-timegrid-cols > table {
      height: 100%;
    }
.fc-media-screen .fc-timegrid-col-bg,
  .fc-media-screen .fc-timegrid-col-events,
  .fc-media-screen .fc-timegrid-now-indicator-container {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
  }
.fc {

  /* bg */

}
.fc .fc-timegrid-col-bg {
    z-index: 2; /* TODO: kill */
  }
.fc .fc-timegrid-col-bg .fc-non-business { z-index: 1 }
.fc .fc-timegrid-col-bg .fc-bg-event { z-index: 2 }
.fc .fc-timegrid-col-bg .fc-highlight { z-index: 3 }
.fc .fc-timegrid-bg-harness {
    position: absolute; /* top/bottom will be set by JS */
    left: 0;
    right: 0;
  }
.fc {

  /* fg events */
  /* (the mirror segs are put into a separate container with same classname, */
  /* and they must be after the normal seg container to appear at a higher z-index) */

}
.fc .fc-timegrid-col-events {
    z-index: 3;
    /* child event segs have z-indexes that are scoped within this div */
  }
.fc {

  /* now indicator */

}
.fc .fc-timegrid-now-indicator-container {
    bottom: 0;
    overflow: hidden; /* don't let overflow of lines/arrows cause unnecessary scrolling */
    /* z-index is set on the individual elements */
  }
.fc-direction-ltr .fc-timegrid-col-events {
    margin: 0 2.5% 0 2px;
  }
.fc-direction-rtl .fc-timegrid-col-events {
    margin: 0 2px 0 2.5%;
  }
.fc-timegrid-event-harness {
  position: absolute /* top/left/right/bottom will all be set by JS */
}
.fc-timegrid-event-harness > .fc-timegrid-event {
    position: absolute; /* absolute WITHIN the harness */
    top: 0; /* for when not yet positioned */
    bottom: 0; /* " */
    left: 0;
    right: 0;
  }
.fc-timegrid-event-harness-inset .fc-timegrid-event,
.fc-timegrid-event.fc-event-mirror,
.fc-timegrid-more-link {
  box-shadow: 0px 0px 0px 1px #fff;
  box-shadow: 0px 0px 0px 1px var(--fc-page-bg-color, #fff);
}
.fc-timegrid-event,
.fc-timegrid-more-link { /* events need to be root */
  font-size: .85em;
  font-size: var(--fc-small-font-size, .85em);
  border-radius: 3px;
}
.fc-timegrid-event { /* events need to be root */
  margin-bottom: 1px /* give some space from bottom */
}
.fc-timegrid-event .fc-event-main {
    padding: 1px 1px 0;
  }
.fc-timegrid-event .fc-event-time {
    white-space: nowrap;
    font-size: .85em;
    font-size: var(--fc-small-font-size, .85em);
    margin-bottom: 1px;
  }
.fc-timegrid-event-short .fc-event-main-frame {
    flex-direction: row;
    overflow: hidden;
  }
.fc-timegrid-event-short .fc-event-time:after {
    content: '\00a0-\00a0'; /* dash surrounded by non-breaking spaces */
  }
.fc-timegrid-event-short .fc-event-title {
    font-size: .85em;
    font-size: var(--fc-small-font-size, .85em)
  }
.fc-timegrid-more-link { /* does NOT inherit from fc-timegrid-event */
  position: absolute;
  z-index: 9999; /* hack */
  color: inherit;
  color: var(--fc-more-link-text-color, inherit);
  background: #d0d0d0;
  background: var(--fc-more-link-bg-color, #d0d0d0);
  cursor: pointer;
  margin-bottom: 1px; /* match space below fc-timegrid-event */
}
.fc-timegrid-more-link-inner { /* has fc-sticky */
  padding: 3px 2px;
  top: 0;
}
.fc-direction-ltr .fc-timegrid-more-link {
    right: 0;
  }
.fc-direction-rtl .fc-timegrid-more-link {
    left: 0;
  }
.fc {

  /* line */

}
.fc .fc-timegrid-now-indicator-line {
    position: absolute;
    z-index: 4;
    left: 0;
    right: 0;
    border-style: solid;
    border-color: red;
    border-color: var(--fc-now-indicator-color, red);
    border-width: 1px 0 0;
  }
.fc {

  /* arrow */

}
.fc .fc-timegrid-now-indicator-arrow {
    position: absolute;
    z-index: 4;
    margin-top: -5px; /* vertically center on top coordinate */
    border-style: solid;
    border-color: red;
    border-color: var(--fc-now-indicator-color, red);
  }
.fc-direction-ltr .fc-timegrid-now-indicator-arrow {
    left: 0;

    /* triangle pointing right. TODO: mixin */
    border-width: 5px 0 5px 6px;
    border-top-color: transparent;
    border-bottom-color: transparent;
  }
.fc-direction-rtl .fc-timegrid-now-indicator-arrow {
    right: 0;

    /* triangle pointing left. TODO: mixin */
    border-width: 5px 6px 5px 0;
    border-top-color: transparent;
    border-bottom-color: transparent;
  }


:root {
  --fc-list-event-dot-width: 10px;
  --fc-list-event-hover-bg-color: #f5f5f5;
}
.fc-theme-standard .fc-list {
    border: 1px solid #ddd;
    border: 1px solid var(--fc-border-color, #ddd);
  }
.fc {

  /* message when no events */

}
.fc .fc-list-empty {
    background-color: rgba(208, 208, 208, 0.3);
    background-color: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center; /* vertically aligns fc-list-empty-inner */
  }
.fc .fc-list-empty-cushion {
    margin: 5em 0;
  }
.fc {

  /* table within the scroller */
  /* ---------------------------------------------------------------------------------------------------- */

}
.fc .fc-list-table {
    width: 100%;
    border-style: hidden; /* kill outer border on theme */
  }
.fc .fc-list-table tr > * {
    border-left: 0;
    border-right: 0;
  }
.fc .fc-list-sticky .fc-list-day > * { /* the cells */
      position: sticky;
      top: 0;
      background: #fff;
      background: var(--fc-page-bg-color, #fff); /* for when headers are styled to be transparent and sticky */
    }
.fc {

  /* only exists for aria reasons, hide for non-screen-readers */

}
.fc .fc-list-table thead {
    position: absolute;
    left: -10000px;
  }
.fc {

  /* the table's border-style:hidden gets confused by hidden thead. force-hide top border of first cell */

}
.fc .fc-list-table tbody > tr:first-child th {
    border-top: 0;
  }
.fc .fc-list-table th {
    padding: 0; /* uses an inner-wrapper instead... */
  }
.fc .fc-list-table td,
  .fc .fc-list-day-cushion {
    padding: 8px 14px;
  }
.fc {


  /* date heading rows */
  /* ---------------------------------------------------------------------------------------------------- */

}
.fc .fc-list-day-cushion:after {
  content: "";
  clear: both;
  display: table; /* clear floating */
    }
.fc-theme-standard .fc-list-day-cushion {
    background-color: rgba(208, 208, 208, 0.3);
    background-color: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));
  }
.fc-direction-ltr .fc-list-day-text,
.fc-direction-rtl .fc-list-day-side-text {
  float: left;
}
.fc-direction-ltr .fc-list-day-side-text,
.fc-direction-rtl .fc-list-day-text {
  float: right;
}
/* make the dot closer to the event title */
.fc-direction-ltr .fc-list-table .fc-list-event-graphic { padding-right: 0 }
.fc-direction-rtl .fc-list-table .fc-list-event-graphic { padding-left: 0 }
.fc .fc-list-event.fc-event-forced-url {
    cursor: pointer; /* whole row will seem clickable */
  }
.fc .fc-list-event:hover td {
    background-color: #f5f5f5;
    background-color: var(--fc-list-event-hover-bg-color, #f5f5f5);
  }
.fc {

  /* shrink certain cols */

}
.fc .fc-list-event-graphic,
  .fc .fc-list-event-time {
    white-space: nowrap;
    width: 1px;
  }
.fc .fc-list-event-dot {
    display: inline-block;
    box-sizing: content-box;
    width: 0;
    height: 0;
    border: 5px solid #3788d8;
    border: calc(var(--fc-list-event-dot-width, 10px) / 2) solid var(--fc-event-border-color, #3788d8);
    border-radius: 5px;
    border-radius: calc(var(--fc-list-event-dot-width, 10px) / 2);
  }
.fc {

  /* reset <a> styling */

}
.fc .fc-list-event-title a {
    color: inherit;
    text-decoration: none;
  }
.fc {

  /* underline link when hovering over any part of row */

}
.fc .fc-list-event.fc-event-forced-url:hover a {
    text-decoration: underline;
  }



  .fc-theme-bootstrap a:not([href]) {
    color: inherit; /* natural color for navlinks */
  }



  .fc-theme-bootstrap5 a:not([href]) {
    color: inherit;
    text-decoration: inherit;
  }

.fc-theme-bootstrap5 .fc-list,
  .fc-theme-bootstrap5 .fc-scrollgrid,
  .fc-theme-bootstrap5 td,
  .fc-theme-bootstrap5 th {
    border: 1px solid var(--bs-gray-400);
  }

.fc-theme-bootstrap5 {

  /* HACK: reapply core styles after highe-precedence border statement above */
}

.fc-theme-bootstrap5 .fc-scrollgrid {
    border-right-width: 0;
    border-bottom-width: 0;
  }

.fc-theme-bootstrap5-shaded {
  background-color: var(--bs-gray-200);
}



/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vbWFpbi5jc3MiLCJ3ZWJwYWNrOi8vL2pxdWVyeS50b2FzdC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLCtCQUErQjtBQUMvQixrRUFBa0U7QUFDbEU7NEJBQzRCLG9DQUFvQztFQUM5RCxtQkFBbUI7QUFDckI7O0FBRUEsK0RBQStEO0FBQy9EO0VBQ0UseUJBQXlCO0tBQ3RCLHNCQUFzQjtNQUNyQixxQkFBcUI7VUFDakIsaUJBQWlCO0VBQ3pCLDJCQUEyQjtFQUMzQiw2Q0FBNkM7QUFDL0M7QUFDQTtFQUNFLGlDQUFpQztFQUNqQyxhQUFhO0VBQ2Isc0JBQXNCOztFQUV0QjtBQUNGO0FBQ0E7Ozs7SUFJSSxzQkFBc0I7RUFDeEI7QUFDRjtJQUNJLHlCQUF5QjtJQUN6QixpQkFBaUI7SUFDakIsY0FBYyxFQUFFLDRCQUE0QjtFQUM5QztBQUNGO0lBQ0ksa0JBQWtCO0VBQ3BCO0FBQ0Y7O0lBRUksbUJBQW1CO0lBQ25CLFVBQVU7RUFDWjtBQUNGO0lBQ0ksZUFBZTtFQUNqQjtBQUNGO0lBQ0ksMEJBQTBCO0VBQzVCO0FBQ0Y7RUFDRSxjQUFjO0VBQ2QsZ0JBQWdCO0FBQ2xCO0FBQ0E7RUFDRSxjQUFjO0VBQ2QsaUJBQWlCO0FBQ25CO0FBQ0E7O0lBRUksc0JBQXNCO0lBQ3RCLDhDQUE4QztFQUNoRDtBQUNGLDBGQUEwRjtBQUMxRixzREFBc0Q7QUFDdEQsK0JBQStCO0FBQy9COztJQUVJLGtCQUFrQjtFQUNwQjs7QUFFRjtFQUNFLHNCQUFzQjtFQUN0Qiw0bUdBQTRtRztFQUM1bUcsbUJBQW1CO0VBQ25CLGtCQUFrQjtBQUNwQjs7QUFFQTtFQUNFLGlCQUFpQjtFQUNqQixxQkFBcUI7RUFDckIsVUFBVTtFQUNWLFdBQVc7RUFDWCxrQkFBa0I7RUFDbEIseUJBQXlCO0tBQ3RCLHNCQUFzQjtNQUNyQixxQkFBcUI7VUFDakIsaUJBQWlCOztFQUV6QiwrRUFBK0U7RUFDL0UsaUNBQWlDO0VBQ2pDLFdBQVc7RUFDWCxrQkFBa0I7RUFDbEIsbUJBQW1CO0VBQ25CLG9CQUFvQjtFQUNwQixvQkFBb0I7RUFDcEIsY0FBYzs7RUFFZCxzQ0FBc0M7RUFDdEMsbUNBQW1DO0VBQ25DLGtDQUFrQztBQUNwQzs7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjs7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjs7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjs7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjs7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjs7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjs7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjtBQUNBOzs7OztDQUtDO0FBQ0Q7O0VBRUUsVUFBVTs7QUFFWjtBQUNBO0lBQ0ksZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixvQkFBb0I7SUFDcEIsU0FBUztJQUNULG9CQUFvQjtJQUNwQixrQkFBa0I7SUFDbEIsb0JBQW9CO0VBQ3RCO0FBQ0Y7SUFDSSxtQkFBbUI7SUFDbkIsMENBQTBDO0VBQzVDO0FBQ0Y7SUFDSSwwQkFBMEI7RUFDNUI7QUFDRjtJQUNJLGVBQWU7RUFDakI7QUFDRjtJQUNJLFVBQVU7SUFDVixrQkFBa0I7RUFDcEI7QUFDRjs7RUFFRSxVQUFVOztBQUVaO0FBQ0E7SUFDSSxxQkFBcUI7SUFDckIsZ0JBQWdCO0lBQ2hCLGtCQUFrQjtJQUNsQixzQkFBc0I7SUFDdEIseUJBQXlCO09BQ3RCLHNCQUFzQjtRQUNyQixxQkFBcUI7WUFDakIsaUJBQWlCO0lBQ3pCLDZCQUE2QjtJQUM3Qiw2QkFBNkI7SUFDN0IscUJBQXFCO0lBQ3JCLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIscUJBQXFCO0VBQ3ZCO0FBQ0Y7SUFDSSxxQkFBcUI7RUFDdkI7QUFDRjtJQUNJLFVBQVU7SUFDViwrQ0FBK0M7RUFDakQ7QUFDRjtJQUNJLGFBQWE7RUFDZjtBQUNGOztFQUVFLHVCQUF1Qjs7QUFFekI7QUFDQTtJQUNJLFdBQVc7SUFDWCx3Q0FBd0M7SUFDeEMseUJBQXlCO0lBQ3pCLG9EQUFvRDtJQUNwRCxxQkFBcUI7SUFDckIsb0RBQW9EO0VBQ3REO0FBQ0Y7SUFDSSxXQUFXO0lBQ1gsd0NBQXdDO0lBQ3hDLHlCQUF5QjtJQUN6QiwwREFBMEQ7SUFDMUQscUJBQXFCO0lBQ3JCLDBEQUEwRDtFQUM1RDtBQUNGLGtDQUFrQyxZQUFZO0lBQzFDLFdBQVc7SUFDWCx3Q0FBd0M7SUFDeEMseUJBQXlCO0lBQ3pCLG9EQUFvRDtJQUNwRCxxQkFBcUI7SUFDckIsb0RBQW9ELEVBQUUscUJBQXFCO0VBQzdFO0FBQ0Y7SUFDSSwrQ0FBK0M7RUFDakQ7QUFDRjs7SUFFSSxXQUFXO0lBQ1gsd0NBQXdDO0lBQ3hDLHlCQUF5QjtJQUN6QiwyREFBMkQ7SUFDM0QscUJBQXFCO0lBQ3JCLDJEQUEyRDtFQUM3RDtBQUNGOztJQUVJLCtDQUErQztFQUNqRDtBQUNGOztFQUVFLHlCQUF5Qjs7QUFFM0I7QUFDQTtJQUNJLHNCQUFzQjtJQUN0QixnQkFBZ0IsRUFBRSxnR0FBZ0c7RUFDcEg7QUFDRjtJQUNJLGtCQUFrQjtJQUNsQixvQkFBb0I7SUFDcEIsc0JBQXNCO0VBQ3hCO0FBQ0Y7SUFDSSxrQkFBa0I7SUFDbEIsY0FBYztFQUNoQjtBQUNGO0lBQ0ksVUFBVTtFQUNaO0FBQ0Y7OztJQUdJLFVBQVU7RUFDWjtBQUNGO0lBQ0ksaUJBQWlCO0lBQ2pCLHlCQUF5QjtJQUN6Qiw0QkFBNEI7RUFDOUI7QUFDRjtJQUNJLDBCQUEwQjtJQUMxQiw2QkFBNkI7RUFDL0I7QUFDRjtJQUNJLGtCQUFrQjtJQUNsQiwwQkFBMEI7SUFDMUIsNkJBQTZCO0VBQy9CO0FBQ0Y7SUFDSSx5QkFBeUI7SUFDekIsNEJBQTRCO0VBQzlCO0FBQ0Y7SUFDSSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLG1CQUFtQjtFQUNyQjtBQUNGO0lBQ0ksb0JBQW9CO0VBQ3RCO0FBQ0Y7SUFDSSxpQkFBaUI7RUFDbkI7QUFDRjtJQUNJLGlCQUFpQjtJQUNqQixTQUFTO0VBQ1g7QUFDRjtJQUNJLGtCQUFrQixFQUFFLGtCQUFrQjtFQUN4QztBQUNGO0lBQ0ksbUJBQW1CLEVBQUUsa0JBQWtCO0VBQ3pDO0FBQ0Ysb0NBQW9DLDBFQUEwRTtJQUMxRywyQkFBMkI7RUFDN0I7QUFDRjtJQUNJLGlDQUFpQztJQUNqQyxrQkFBa0IsRUFBRSx1Q0FBdUM7RUFDN0Q7QUFDRjtJQUNJLFlBQVk7RUFDZDtBQUNGO0lBQ0ksa0JBQWtCO0lBQ2xCLE1BQU07SUFDTixRQUFRO0lBQ1IsT0FBTztJQUNQLFNBQVM7RUFDWDtBQUNGO0lBQ0ksa0JBQWtCO0lBQ2xCLGdCQUFnQjtJQUNoQixjQUFjO01BQ1osdUZBQXVGO01BQ3ZGLGlDQUFpQztFQUNyQztBQUNGO0lBQ0ksWUFBWTtFQUNkO0FBQ0Ysd0RBQXdELG9CQUFvQjtJQUN4RSxjQUFjO0VBQ2hCO0FBQ0Y7SUFDSSxzQkFBc0I7SUFDdEIsOENBQThDLEVBQUUsK0JBQStCO0VBQ2pGO0FBQ0Y7K0JBQytCLCtCQUErQjtNQUN4RCxXQUFXLEVBQUUsMENBQTBDO01BQ3ZELG1CQUFtQjtJQUNyQjtBQUNKLDJCQUEyQixpQkFBaUI7TUFDdEMsd0JBQXdCO01BQ3hCLHlCQUF5QjtNQUN6QiwwQkFBMEI7SUFDNUI7QUFDSjs7SUFFSSx5QkFBeUI7SUFDekIscUJBQXFCO0lBQ3JCLHNCQUFzQjs7RUFFeEI7QUFDRjtJQUNJLFlBQVk7RUFDZDtBQUNGLDZCQUE2QixXQUFXO0lBQ3BDLFVBQVUsRUFBRSwrQkFBK0I7O0VBRTdDO0FBQ0Y7TUFDTSxXQUFXLEVBQUUsd0VBQXdFO0lBQ3ZGO0FBQ0o7TUFDTSxXQUFXO1FBQ1QsK0ZBQStGO1FBQy9GLHFDQUFxQztJQUN6QztBQUNKO01BQ00sWUFBWSxFQUFFLG9DQUFvQztJQUNwRDtBQUNKO0lBQ0ksbUJBQW1CO0lBQ25CLG9CQUFvQjtFQUN0QjtBQUNGOztJQUVJLHNCQUFzQjtFQUN4QjtBQUNGOztJQUVJLDJCQUEyQixFQUFFLHFDQUFxQztFQUNwRTtBQUNGOztFQUVFLGVBQWU7O0FBRWpCO0FBQ0E7SUFDSSxnQkFBZ0I7SUFDaEIseUNBQXlDO0lBQ3pDLGdCQUFnQjtJQUNoQixVQUFVLEVBQUUsY0FBYztJQUMxQixtQ0FBbUM7RUFDckM7QUFDRjtJQUNJLE1BQU0sRUFBRSxtREFBbUQ7TUFDekQsa0NBQWtDO0VBQ3RDO0FBQ0Y7SUFDSSxTQUFTLEVBQUUsd0RBQXdEO0VBQ3JFO0FBQ0YsaUNBQWlDLDZCQUE2QjtJQUMxRCxXQUFXLEVBQUUsc0NBQXNDO0lBQ25ELG1CQUFtQjtFQUNyQjtBQUNGLGFBQWEsOENBQThDO0VBQ3pELGdCQUFnQjtBQUNsQjtBQUNBO0lBQ0ksWUFBWSxFQUFFLHFEQUFxRDtJQUNuRSxrQkFBa0I7RUFDcEI7QUFDRjs7RUFFRSwrREFBK0Q7O0FBRWpFO0FBQ0E7SUFDSSxrQkFBa0I7SUFDbEIsTUFBTTtJQUNOLFFBQVE7SUFDUixTQUFTO0lBQ1QsT0FBTztFQUNUO0FBQ0Y7SUFDSSxxQkFBcUIsRUFBRSx1REFBdUQ7SUFDOUUsZ0JBQWdCO0VBQ2xCO0FBQ0Y7OztJQUdJLHFGQUFxRjtJQUNyRixrQkFBa0I7SUFDbEIsTUFBTTtJQUNOLE9BQU87SUFDUCxRQUFRO0lBQ1IsU0FBUztFQUNYO0FBQ0Y7SUFDSSxvQ0FBb0M7SUFDcEMsa0VBQWtFO0VBQ3BFO0FBQ0Y7SUFDSSw4QkFBOEI7SUFDOUIsd0RBQXdEO0lBQ3hELFlBQVk7SUFDWjtFQUNGO0FBQ0Y7TUFDTSxZQUFZO01BQ1osZ0JBQWdCO01BQ2hCLDJDQUEyQztNQUMzQyxrQkFBa0I7SUFDcEI7QUFDSjtJQUNJLG9DQUFvQztJQUNwQywrREFBK0Q7RUFDakU7QUFDRjs7SUFFSSxvQ0FBb0M7SUFDcEMsZ0VBQWdFO0VBQ2xFO0FBQ0YsZ0JBQWdCO0FBQ2hCLHlHQUF5RztBQUN6Rzs7RUFFRSxxQkFBcUI7QUFDdkI7QUFDQSxXQUFXO0FBQ1g7O0VBRUUsZUFBZTtBQUNqQjtBQUNBLHVCQUF1QjtBQUN2Qix5R0FBeUc7QUFDekc7SUFDSSxrQkFBa0I7SUFDbEIsVUFBVTtFQUNaO0FBQ0YsYUFBYTtBQUNiLHlHQUF5RztBQUN6Ryw2Q0FBNkMsVUFBVTtJQUNuRCxhQUFhO0VBQ2Y7QUFDRix1Q0FBdUMsVUFBVTtJQUM3Qyx3Q0FBd0M7RUFDMUM7QUFDRixhQUFhO0FBQ2IseUdBQXlHO0FBQ3pHLGlFQUFpRTtBQUNqRTtJQUNJLGFBQWE7SUFDYixrQkFBa0I7SUFDbEIsVUFBVTtFQUNaO0FBQ0Y7cUJBQ3FCLFVBQVU7O0FBRS9CO0FBQ0E7SUFDSSxjQUFjO0VBQ2hCO0FBQ0Y7SUFDSSxrQkFBa0I7SUFDbEIscUVBQXFFO0lBQ3JFLGlCQUFpQjtJQUNqQiwyREFBMkQ7SUFDM0QsVUFBVTtJQUNWLG1EQUFtRDtJQUNuRCxXQUFXO0lBQ1gsb0RBQW9EO0lBQ3BELG1CQUFtQjtJQUNuQixxQkFBcUI7SUFDckIsZ0JBQWdCO0lBQ2hCLHdDQUF3Qzs7SUFFeEMsb0JBQW9COztFQUV0QjtBQUNGO01BQ00sV0FBVztNQUNYLGtCQUFrQjtNQUNsQixVQUFVO01BQ1YsV0FBVztNQUNYLFlBQVk7TUFDWixhQUFhO0lBQ2Y7QUFDSiw2QkFBNkI7QUFDN0IsNkJBQTZCO0FBQzdCLHVFQUF1RTtBQUN2RSx5R0FBeUc7QUFDekc7O0VBRUUsdUNBQXVDOztFQUV2QywrQ0FBK0M7O0FBRWpEO0FBQ0E7SUFDSSxXQUFXO0lBQ1gsa0JBQWtCO0lBQ2xCLFVBQVU7SUFDVixNQUFNO0lBQ04sT0FBTztJQUNQLFFBQVE7SUFDUixTQUFTO0VBQ1g7QUFDRjs7O0VBR0Usa0JBQWtCOztBQUVwQjtBQUNBO0lBQ0ksV0FBVztJQUNYLCtCQUErQjtJQUMvQix1RUFBdUU7SUFDdkUsa0JBQWtCO0lBQ2xCLFVBQVU7O0lBRVYsdURBQXVEO0lBQ3ZELDBFQUEwRTtJQUMxRSwwQ0FBMEM7SUFDMUMsU0FBUztJQUNULFVBQVU7SUFDVixXQUFXO0lBQ1gsWUFBWTtFQUNkO0FBQ0Y7O0NBRUM7QUFDRCxjQUFjLDRCQUE0QjtFQUN4QyxjQUFjO0VBQ2QseUJBQXlCO0VBQ3pCLHVEQUF1RDtFQUN2RCx5QkFBeUI7RUFDekI7O0FBRUY7QUFDQTtJQUNJLFdBQVc7SUFDWCx1Q0FBdUM7RUFDekM7QUFDRjtJQUNJLGFBQWEsRUFBRSw2Q0FBNkM7RUFDOUQ7QUFDRjtJQUNJLGVBQWUsRUFBRSxrQ0FBa0M7SUFDbkQsZ0JBQWdCO0VBQ2xCO0FBQ0Ysd0NBQXdDLGlEQUFpRDtJQUNyRixZQUFZO0lBQ1osY0FBYztJQUNkLFlBQVksRUFBRSxpREFBaUQ7RUFDakU7QUFDRjtJQUNJLHFCQUFxQixFQUFFLHlDQUF5QztJQUNoRSxtQkFBbUIsRUFBRSxtQ0FBbUM7SUFDeEQsT0FBTyxHQUFHLGVBQWU7SUFDekIsUUFBUSxFQUFFLGVBQWU7SUFDekIsZUFBZSxFQUFFLGtDQUFrQztJQUNuRCxnQkFBZ0I7RUFDbEI7QUFDRjtJQUNJLG9CQUFvQjtJQUNwQixVQUFVO0lBQ1YsYUFBYTtFQUNmO0FBQ0Ysd0VBQXdFO0FBQ3hFOztFQUVFLHlCQUF5QjtFQUN6Qiw0QkFBNEI7RUFDNUIsb0JBQW9CO0FBQ3RCO0FBQ0E7O0VBRUUsMEJBQTBCO0VBQzFCLDZCQUE2QjtFQUM3QixxQkFBcUI7QUFDdkI7QUFDQSxhQUFhO0FBQ2I7RUFDRSxNQUFNO0VBQ04sU0FBUztFQUNULFVBQVU7RUFDViw2Q0FBNkM7QUFDL0M7QUFDQTs7RUFFRSxnQkFBZ0I7RUFDaEIsVUFBVTtFQUNWLHlEQUF5RDtBQUMzRDtBQUNBOztFQUVFLGdCQUFnQjtFQUNoQixXQUFXO0VBQ1gsMERBQTBEO0FBQzVEO0FBQ0EsdUJBQXVCO0FBQ3ZCO0VBQ0UsUUFBUTtFQUNSLGdCQUFnQjtFQUNoQixxRUFBcUU7QUFDdkU7QUFDQTs7RUFFRSxVQUFVO0VBQ1YsK0RBQStEO0FBQ2pFO0FBQ0E7O0VBRUUsV0FBVztFQUNYLGdFQUFnRTtBQUNsRTtBQUNBO0lBQ0ksa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYixxQ0FBcUM7RUFDdkM7QUFDRjtJQUNJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsOEJBQThCO0lBQzlCLG1CQUFtQjtJQUNuQixnQkFBZ0I7RUFDbEI7QUFDRjtJQUNJLGFBQWE7RUFDZjtBQUNGO0lBQ0ksZUFBZTtJQUNmLGFBQWE7SUFDYixnQkFBZ0I7RUFDbEI7QUFDRjtJQUNJLHNCQUFzQjtJQUN0Qiw4Q0FBOEM7SUFDOUMsZ0JBQWdCO0lBQ2hCLHlDQUF5QztFQUMzQztBQUNGO0lBQ0ksb0NBQW9DO0lBQ3BDLGdFQUFnRTtFQUNsRTs7O0FBaHJCRjtFQUNFLGlDQUFpQztBQUNuQztBQUNBLCtDQUErQztBQUMvQzs7NEJBRTRCLGlDQUFpQztBQUM3RDtBQUNBO0VBQ0UsV0FBVztFQUNYLFdBQVc7RUFDWCxjQUFjLEVBQUU7QUFDbEI7RUFDRSxXQUFXO0VBQ1gsV0FBVztFQUNYLGNBQWMsRUFBRTtBQUNsQix1QkFBdUIsaUNBQWlDO0lBQ3BELGtCQUFrQjtJQUNsQixVQUFVLEVBQUUsd0RBQXdEO0VBQ3RFO0FBQ0Y7TUFDTSwwQ0FBMEM7TUFDMUMsb0VBQW9FO0lBQ3RFO0FBQ0o7SUFDSSxrQkFBa0I7SUFDbEIsZ0JBQWdCLEVBQUUsNEZBQTRGO0VBQ2hIO0FBQ0Y7O0VBRUUsYUFBYTs7QUFFZjtBQUNBO0lBQ0ksYUFBYTtJQUNiLDJCQUEyQjtFQUM3QjtBQUNGO0lBQ0ksWUFBWTtFQUNkO0FBQ0Y7O0VBRUUsaUNBQWlDOztBQUVuQztBQUNBO0lBQ0ksa0JBQWtCO0lBQ2xCLFVBQVU7SUFDVixZQUFZO0VBQ2Q7QUFDRjs7RUFFRSxvQkFBb0I7O0FBRXRCO0FBQ0E7SUFDSSxlQUFlLEVBQUUsbUZBQW1GO0VBQ3RHO0FBQ0Y7O0VBRUUsd0NBQXdDOztBQUUxQztBQUNBO01BQ00sa0JBQWtCO01BQ2xCLE9BQU87TUFDUCxRQUFRO0lBQ1Y7QUFDSjtNQUNNLGtCQUFrQixFQUFFLGtEQUFrRDtNQUN0RSxlQUFlLEVBQUUsZ0dBQWdHO0lBQ25IO0FBQ0osK0JBQStCLGlDQUFpQztFQUM5RDtBQUNGO01BQ00sa0JBQWtCO0lBQ3BCO0FBQ0o7O0VBRUUsa0JBQWtCOztBQUVwQjtBQUNBO0lBQ0ksa0JBQWtCO0VBQ3BCO0FBQ0Y7SUFDSSxrQkFBa0I7SUFDbEIsTUFBTSxFQUFFLG9EQUFvRDtJQUM1RCxPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxJQUFJO0VBQ2hCO0FBQ0Y7SUFDSSxrQkFBa0I7SUFDbEIsTUFBTTtJQUNOLFNBQVM7RUFDWDtBQUNGOztFQUVFLGVBQWU7O0FBRWpCO0FBQ0EsMENBQTBDLFdBQVc7QUFDckQsc0NBQXNDLFdBQVc7QUFDakQsdUNBQXVDLFdBQVc7QUFDbEQ7O0VBRUUsV0FBVzs7QUFFYjtBQUNBO0lBQ0ksVUFBVTtJQUNWLGVBQWU7RUFDakI7QUFDRjtJQUNJLFVBQVU7RUFDWjtBQUNGOztFQUVFLG9DQUFvQzs7QUFFdEM7QUFDQTtJQUNJLGdCQUFnQjtJQUNoQjtFQUNGO0FBQ0Y7RUFDRSxXQUFXO0VBQ1gsV0FBVztFQUNYLGNBQWMsRUFBRTtBQUNsQjtJQUNJLGtCQUFrQjtJQUNsQixVQUFVO0lBQ1YsZUFBZTtFQUNqQjtBQUNGOztFQUVFLCtCQUErQjs7QUFFakM7QUFDQTtJQUNJLGtCQUFrQjtJQUNsQixVQUFVO0lBQ1YsTUFBTTtJQUNOLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsa0JBQWtCO0lBQ2xCLDBDQUEwQztJQUMxQyxzRUFBc0U7SUFDdEUsY0FBYztJQUNkLDRDQUE0QztFQUM5QztBQUNGOztFQUVFLFlBQVk7O0FBRWQ7QUFDQTtJQUNJLGdCQUFnQjtJQUNoQixhQUFhO0VBQ2Y7QUFDRjs7RUFFRSxnQkFBZ0I7QUFDbEI7QUFDQTs7RUFFRSxpQkFBaUI7QUFDbkI7QUFDQTtJQUNJLE9BQU87SUFDUCx3QkFBd0I7RUFDMUI7QUFDRjtJQUNJLFFBQVE7SUFDUix3QkFBd0I7RUFDMUI7QUFDRjtJQUNJLGdCQUFnQixFQUFFLHNEQUFzRDtFQUMxRTtBQUNGLG9CQUFvQixxRkFBcUY7RUFDdkcsa0JBQWtCLEVBQUUsaUNBQWlDO0VBQ3JELG1CQUFtQjtFQUNuQixrQkFBa0IsRUFBRSwwQ0FBMEM7RUFDOUQsZ0JBQWdCO0VBQ2hCLDJDQUEyQztBQUM3QztBQUNBLG1EQUFtRDtBQUNuRDtJQUNJLGlCQUFpQjtFQUNuQjtBQUNGOztJQUVJLFlBQVk7RUFDZDtBQUNGLG1DQUFtQztBQUNuQztFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkI7O0FBRUY7QUFDQTtJQUNJLFlBQVk7SUFDWixjQUFjO0lBQ2QsWUFBWSxFQUFFLGlEQUFpRDtJQUMvRCxnQkFBZ0I7SUFDaEIsaUJBQWlCO0VBQ25CO0FBQ0Y7O0lBRUksOEJBQThCO0VBQ2hDO0FBQ0Y7SUFDSSxvQkFBb0I7SUFDcEIsVUFBVTtJQUNWLGFBQWE7RUFDZjtBQUNGLHdCQUF3QixtQkFBbUI7RUFDekMsYUFBYTtFQUNiLHVCQUF1QjtFQUN2QixRQUFRO0VBQ1IsU0FBUztFQUNULHlCQUF5QjtFQUN6QixvR0FBb0c7RUFDcEcsa0JBQWtCO0VBQ2xCLCtEQUErRDtBQUNqRTtBQUNBLDJDQUEyQztBQUMzQztJQUNJLGlCQUFpQjtFQUNuQjtBQUNGO0lBQ0ksZ0JBQWdCO0VBQ2xCOzs7QUF6T0Y7RUFDRSwrQkFBK0I7RUFDL0IsdUNBQXVDO0FBQ3pDO0FBQ0E7SUFDSSxzQkFBc0I7SUFDdEIsOENBQThDO0VBQ2hEO0FBQ0Y7O0VBRUUsMkJBQTJCOztBQUU3QjtBQUNBO0lBQ0ksMENBQTBDO0lBQzFDLHNFQUFzRTtJQUN0RSxZQUFZO0lBQ1osYUFBYTtJQUNiLHVCQUF1QjtJQUN2QixtQkFBbUIsRUFBRSwwQ0FBMEM7RUFDakU7QUFDRjtJQUNJLGFBQWE7RUFDZjtBQUNGOztFQUVFLDhCQUE4QjtFQUM5Qix5R0FBeUc7O0FBRTNHO0FBQ0E7SUFDSSxXQUFXO0lBQ1gsb0JBQW9CLEVBQUUsK0JBQStCO0VBQ3ZEO0FBQ0Y7SUFDSSxjQUFjO0lBQ2QsZUFBZTtFQUNqQjtBQUNGLHVDQUF1QyxjQUFjO01BQy9DLGdCQUFnQjtNQUNoQixNQUFNO01BQ04sZ0JBQWdCO01BQ2hCLHlDQUF5QyxFQUFFLDZEQUE2RDtJQUMxRztBQUNKOztFQUVFLDhEQUE4RDs7QUFFaEU7QUFDQTtJQUNJLGtCQUFrQjtJQUNsQixjQUFjO0VBQ2hCO0FBQ0Y7O0VBRUUsdUdBQXVHOztBQUV6RztBQUNBO0lBQ0ksYUFBYTtFQUNmO0FBQ0Y7SUFDSSxVQUFVLEVBQUUscUNBQXFDO0VBQ25EO0FBQ0Y7O0lBRUksaUJBQWlCO0VBQ25CO0FBQ0Y7OztFQUdFLHNCQUFzQjtFQUN0Qix5R0FBeUc7O0FBRTNHO0FBQ0E7RUFDRSxXQUFXO0VBQ1gsV0FBVztFQUNYLGNBQWMsRUFBRSxtQkFBbUI7SUFDakM7QUFDSjtJQUNJLDBDQUEwQztJQUMxQyxzRUFBc0U7RUFDeEU7QUFDRjs7RUFFRSxXQUFXO0FBQ2I7QUFDQTs7RUFFRSxZQUFZO0FBQ2Q7QUFDQSwyQ0FBMkM7QUFDM0MsMERBQTBELGlCQUFpQjtBQUMzRSwwREFBMEQsZ0JBQWdCO0FBQzFFO0lBQ0ksZUFBZSxFQUFFLGtDQUFrQztFQUNyRDtBQUNGO0lBQ0kseUJBQXlCO0lBQ3pCLDhEQUE4RDtFQUNoRTtBQUNGOztFQUVFLHdCQUF3Qjs7QUFFMUI7QUFDQTs7SUFFSSxtQkFBbUI7SUFDbkIsVUFBVTtFQUNaO0FBQ0Y7SUFDSSxxQkFBcUI7SUFDckIsdUJBQXVCO0lBQ3ZCLFFBQVE7SUFDUixTQUFTO0lBQ1QseUJBQXlCO0lBQ3pCLGtHQUFrRztJQUNsRyxrQkFBa0I7SUFDbEIsNkRBQTZEO0VBQy9EO0FBQ0Y7O0VBRUUsc0JBQXNCOztBQUV4QjtBQUNBO0lBQ0ksY0FBYztJQUNkLHFCQUFxQjtFQUN2QjtBQUNGOztFQUVFLHNEQUFzRDs7QUFFeEQ7QUFDQTtJQUNJLDBCQUEwQjtFQUM1Qjs7OztFQXpJQTtJQUNFLFVBQVUsRUFBRSwyRUFBMkU7SUFDdkYsa0JBQWtCO0VBQ3BCOztBQUVGO0lBQ0ksa0NBQWtDO0lBQ2xDLG9CQUFvQjtJQUNwQixtQkFBbUI7RUFDckI7O0FBRUY7OztFQUdFLHNGQUFzRjs7QUFFeEY7O0FBRUE7TUFDTSxvQ0FBb0M7TUFDcEMsZ0VBQWdFO0lBQ2xFOztBQUVKO0lBQ0ksa0JBQWtCLEVBQUUsa0VBQWtFO0lBQ3RGLG9EQUFvRDtFQUN0RDs7QUFFRiwrRUFBK0UseUJBQXlCO0lBQ3BHLHVCQUF1QixFQUFFLHFDQUFxQztJQUM5RCxvQkFBb0IsRUFBRSxnREFBZ0Q7RUFDeEU7O0FBRUYsOEZBQThGO0FBQzlGO0lBQ0ksa0JBQWtCO0VBQ3BCO0FBQ0Y7SUFDSSxnQkFBZ0I7RUFDbEI7QUFDRixnQkFBZ0I7QUFDaEI7RUFDRSxZQUFZLEVBQUUsc0JBQXNCO0FBQ3RDO0FBQ0E7RUFDRSxZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLE1BQU07RUFDTixRQUFRO0VBQ1IsU0FBUztFQUNULE9BQU87RUFDUDtBQUNGOztFQUVFLDRCQUE0QjtFQUM1Qix5Q0FBeUM7RUFDekMsdUNBQXVDOztBQUV6QztBQUNBO01BQ00sa0JBQWtCLEVBQUUsZ0JBQWdCO01BQ3BDLGFBQWE7TUFDYiwyQkFBMkIsRUFBRSwwQ0FBMEM7TUFDdkUsbUJBQW1CLEVBQUUsbUJBQW1CO0lBQzFDO0FBQ0o7O0VBRUUsd0NBQXdDOztBQUUxQztBQUNBO0lBQ0ksa0JBQWtCO0lBQ2xCLFVBQVU7SUFDVixNQUFNO0lBQ04sU0FBUztJQUNULFVBQVU7SUFDVixrQkFBa0I7RUFDcEI7QUFDRjs7RUFFRSxnQkFBZ0I7O0FBRWxCO0FBQ0E7SUFDSSxZQUFZO0lBQ1osbUJBQW1CO0lBQ25CLGdCQUFnQixFQUFFLCtCQUErQjtFQUNuRDtBQUNGOztFQUVFLG1CQUFtQjs7QUFFckI7QUFDQTtJQUNJLGVBQWU7SUFDZjs7RUFFRjtBQUNGLHFDQUFxQyxpREFBaUQ7TUFDaEYscUJBQXFCO01BQ3JCLFVBQVUsRUFBRSwrQ0FBK0M7SUFDN0Q7QUFDSjtJQUNJLFlBQVk7RUFDZDtBQUNGO01BQ00sYUFBYTtJQUNmO0FBQ0osOENBQThDLFlBQVk7QUFDMUQsOENBQThDLFdBQVc7QUFDekQsMENBQTBDLGtCQUFrQjtBQUM1RCwwQ0FBMEMsaUJBQWlCOzs7O0VBL0d6RDtJQUNFLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEIsVUFBVSxFQUFFLHlCQUF5QjtFQUN2QztBQUNGOztDQUVDO0FBQ0Q7SUFDSSxrQkFBa0I7SUFDbEIsVUFBVTtJQUNWLE1BQU07SUFDTjtFQUNGO0FBQ0Y7TUFDTSxZQUFZO0lBQ2Q7QUFDSjs7RUFFRSwwQ0FBMEM7O0FBRTVDO0FBQ0E7SUFDSSxvQkFBb0I7RUFDdEI7QUFDRjs7RUFFRSwrQkFBK0I7O0FBRWpDO0FBQ0E7SUFDSSxhQUFhO0lBQ2IsbUJBQW1CLEVBQUUsbUJBQW1CO0lBQ3hDLHVCQUF1QixFQUFFLHFCQUFxQjtFQUNoRDtBQUNGLHFDQUFxQyxtQkFBbUI7RUFDdEQ7QUFDRjtNQUNNLDJCQUEyQixFQUFFLG1DQUFtQztJQUNsRTtBQUNKLHlDQUF5QywyQ0FBMkM7RUFDbEY7QUFDRjtNQUNNLHFEQUFxRDtNQUNyRCxzQ0FBc0M7TUFDdEMsZ0JBQWdCO0lBQ2xCO0FBQ0o7SUFDSSxnQkFBZ0IsRUFBRSxvQ0FBb0M7SUFDdEQsbUJBQW1CO0VBQ3JCO0FBQ0Y7O0VBRUUsbUVBQW1FO0VBQ25FLDhFQUE4RTtFQUM5RSxvRkFBb0Y7RUFDcEYsa0ZBQWtGOztBQUVwRjtBQUNBLHlDQUF5QztBQUN6QyxzQ0FBc0MsMkJBQTJCO0FBQ2pFLHNDQUFzQywwQkFBMEI7QUFDaEU7SUFDSSxrQkFBa0I7SUFDbEIsVUFBVTtJQUNWLE1BQU07SUFDTixTQUFTO0lBQ1QsT0FBTztJQUNQLFFBQVE7SUFDUixRQUFRO0VBQ1Y7QUFDRjs7SUFFSSxrQkFBa0I7SUFDbEIsTUFBTTtJQUNOLG1CQUFtQjtJQUNuQixpQkFBaUI7SUFDakIsZ0RBQWdEO0VBQ2xEO0FBQ0Y7SUFDSSxjQUFjLEVBQUUsK0RBQStEOztJQUUvRSx3Q0FBd0M7SUFDeEMsMkJBQTJCO0lBQzNCLDhCQUE4QjtJQUM5QiwrQkFBK0I7RUFDakM7QUFDRjtJQUNJLGNBQWMsRUFBRSwyQ0FBMkM7SUFDM0QsU0FBUztJQUNULHVCQUF1QjtFQUN6QjtBQUNGOztFQUVFLGNBQWM7O0FBRWhCO0FBQ0E7SUFDSSxrQkFBa0I7SUFDbEIsVUFBVTtJQUNWLFFBQVEsRUFBRSxvRUFBb0U7RUFDaEY7QUFDRjs7RUFFRSxZQUFZOztBQUVkO0FBQ0E7O0lBRUksa0JBQWtCO0lBQ2xCLE1BQU0sRUFBRSw0Q0FBNEM7SUFDcEQsK0JBQStCO0VBQ2pDO0FBQ0YsOENBQThDO0FBQzlDLHFCQUFxQixXQUFXO0FBQ2hDLHFDQUFxQyxXQUFXO0FBQ2hEO0VBQ0Usa0JBQWtCLEVBQUUsa0VBQWtFO0VBQ3RGLGFBQWEsRUFBRSxpRkFBaUY7RUFDaEcsbUJBQW1CO0VBQ25CLGdCQUFnQjtFQUNoQixnQkFBZ0I7RUFDaEIsa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQiwwQ0FBMEM7O0VBRTFDLDJCQUEyQjtFQUMzQix5R0FBeUc7QUFDM0c7QUFDQTtJQUNJLFlBQVk7SUFDWixjQUFjO0lBQ2QsWUFBWSxFQUFFLGlEQUFpRDtFQUNqRTtBQUNGO0lBQ0ksaUJBQWlCO0VBQ25CO0FBQ0Y7O0lBRUksbUJBQW1CO0lBQ25CLGNBQWM7RUFDaEI7QUFDRixpQ0FBaUM7QUFDakM7O0lBRUksaUJBQWlCO0VBQ25CO0FBQ0Y7O0lBRUksZ0JBQWdCO0VBQ2xCO0FBQ0YsZ0RBQWdEO0FBQ2hEO0VBQ0UsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtFQUNuQixnQkFBZ0I7QUFDbEI7QUFDQSwyREFBMkQ7QUFDM0QseUdBQXlHO0FBQ3pHLDZCQUE2QjtBQUM3Qjs7RUFFRSxXQUFXO0VBQ1gsWUFBWTtFQUNaLGNBQWM7RUFDZCxXQUFXOztFQUVYLDBCQUEwQjtFQUMxQixRQUFRO0VBQ1IsU0FBUztFQUNULGFBQWE7RUFDYixzQkFBc0IsRUFBRSxjQUFjO0VBQ3RDLDZCQUE2QjtFQUM3QixnQ0FBZ0M7QUFDbEM7QUFDQSxrQkFBa0I7QUFDbEI7O0VBRUUsY0FBYztBQUNoQjtBQUNBLG1CQUFtQjtBQUNuQjs7RUFFRSxlQUFlO0FBQ2pCO0FBQ0EsMkJBQTJCO0FBQzNCLHlHQUF5RztBQUN6RztFQUNFLGdCQUFnQjtFQUNoQiwyQ0FBMkM7RUFDM0MsY0FBYztFQUNkLDhDQUE4QztFQUM5QyxtQkFBbUI7RUFDbkIsaURBQWlEO0VBQ2pELFlBQVk7RUFDWixlQUFlO0FBQ2pCO0FBQ0EsK0JBQStCLGtCQUFrQjtFQUMvQyxxQkFBcUI7RUFDckIsT0FBTztFQUNQLFFBQVE7RUFDUixZQUFZO0FBQ2Q7QUFDQSxzQkFBc0IsK0JBQStCO0lBQ2pELGtCQUFrQjtJQUNsQixVQUFVO0lBQ1YsTUFBTTtJQUNOLFNBQVM7SUFDVCxRQUFRO0lBQ1IsT0FBTyxFQUFFLGtDQUFrQztJQUMzQyxRQUFRLEVBQUUsa0NBQWtDLEVBQUUsZUFBZTtFQUMvRDtBQUNGLHVDQUF1QyxXQUFXO0FBQ2xELG1DQUFtQyxXQUFXO0FBQzlDLG9DQUFvQyxXQUFXO0FBQy9DO0lBQ0ksa0JBQWtCO0lBQ2xCLE1BQU07SUFDTixTQUFTO0VBQ1g7Ozs7QUE1TkY7O0NBRUM7O0FBRUQsY0FBYyw0QkFBNEI7RUFDeEMsY0FBYztFQUNkLHlCQUF5QjtFQUN6Qix1REFBdUQ7RUFDdkQseUJBQXlCO0VBQ3pCOztBQUVGOztBQUVBO0lBQ0ksV0FBVztJQUNYLHVDQUF1QztJQUN2QyxZQUFZO0VBQ2Q7O0FBRUY7SUFDSSxZQUFZO0lBQ1osYUFBYTtJQUNiLHNCQUFzQjtFQUN4Qjs7QUFFRjtJQUNJLFlBQVk7SUFDWixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtFQUNsQjs7QUFFRix3Q0FBd0MsdUNBQXVDO0lBQzNFLFlBQVk7SUFDWixjQUFjO0lBQ2QsYUFBYSxFQUFFLGlEQUFpRDtFQUNsRTs7QUFFRiw4QkFBOEIsOEJBQThCO0lBQ3hELE1BQU07SUFDTixTQUFTO0lBQ1QsZ0JBQWdCLEVBQUUsa0JBQWtCO0lBQ3BDLGdCQUFnQjtFQUNsQjs7QUFFRjtJQUNJLG1CQUFtQjtJQUNuQix5QkFBeUI7SUFDekIsMEJBQTBCO0VBQzVCOztBQUVGO0lBQ0ksc0JBQXNCO0lBQ3RCLDRCQUE0QjtJQUM1Qiw2QkFBNkI7RUFDL0I7O0FBRUY7SUFDSSxvQkFBb0I7SUFDcEIsV0FBVztJQUNYLFlBQVk7RUFDZDs7QUFFRjs7RUFFRSw4QkFBOEI7O0FBRWhDOztBQUVBO0lBQ0ksZ0JBQWdCO0VBQ2xCOztBQUVGO0lBQ0ksZ0JBQWdCO0VBQ2xCOztBQUVGOztFQUVFLHNCQUFzQjs7QUFFeEI7O0FBRUE7TUFDTSxXQUFXO01BQ1gsOENBQThDO01BQzlDLE9BQU87TUFDUCxRQUFRO0lBQ1Y7O0FBRUo7TUFDTSxTQUFTO01BQ1Qsc0RBQXNEO0lBQ3hEOztBQUVKO01BQ00sWUFBWTtNQUNaLHlEQUF5RDtJQUMzRDs7QUFFSjs7RUFFRSxpREFBaUQ7O0FBRW5EOztBQUVBO01BQ00sU0FBUztNQUNULGlCQUFpQjtNQUNqQixvRUFBb0U7SUFDdEU7O0FBRUo7TUFDTSxTQUFTO01BQ1QsNERBQTREO0lBQzlEOztBQUVKO01BQ00sWUFBWTtNQUNaLCtEQUErRDtJQUNqRTtBQUNKLG9DQUFvQyxpREFBaUQ7SUFDakYsVUFBVSxFQUFFLGdHQUFnRztFQUM5RztBQUNGO0lBQ0ksZ0JBQWdCLEVBQUUsbUVBQW1FO0VBQ3ZGO0FBQ0Y7SUFDSSxrQkFBa0I7SUFDbEIsVUFBVSxFQUFFLDBDQUEwQztJQUN0RCxnQkFBZ0IsRUFBRSwwREFBMEQ7RUFDOUU7QUFDRiw4QkFBOEIsNEJBQTRCO0lBQ3RELGlCQUFpQixFQUFFLDhDQUE4Qzs7RUFFbkU7QUFDRjtNQUNNLGtCQUFrQjtNQUNsQixVQUFVLEVBQUUsc0NBQXNDO0lBQ3BEO0FBQ0o7SUFDSSxrQkFBa0I7SUFDbEIsVUFBVTtFQUNaO0FBQ0Ysd0JBQXdCLFdBQVc7SUFDL0IsYUFBYTtJQUNiLGVBQWUsRUFBRSxrQ0FBa0M7RUFDckQ7QUFDRjtNQUNNLGdCQUFnQixFQUFFLGtGQUFrRjtJQUN0RztBQUNKO0lBQ0ksd0JBQXdCO0VBQzFCO0FBQ0Y7SUFDSSxxQkFBcUI7SUFDckIsbUJBQW1CO0VBQ3JCO0FBQ0Y7SUFDSSxzQkFBc0IsRUFBRSw2QkFBNkI7RUFDdkQ7QUFDRjs7O0VBR0UsZ0ZBQWdGOztBQUVsRjtBQUNBOztJQUVJLGNBQWM7RUFDaEI7QUFDRjs7O0VBR0Usc0VBQXNFO0VBQ3RFLHFEQUFxRDs7QUFFdkQ7QUFDQTtJQUNJLFlBQVksRUFBRSxnQ0FBZ0M7RUFDaEQ7QUFDRjtJQUNJLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsbUJBQW1CLEVBQUUsbUJBQW1CO0lBQ3hDLHlCQUF5QixFQUFFLCtDQUErQztFQUM1RTtBQUNGO0lBQ0ksZUFBZSxFQUFFLDJDQUEyQztJQUM1RCxjQUFjLEVBQUUsaUZBQWlGO0VBQ25HO0FBQ0Y7SUFDSSxpQkFBaUI7RUFDbkI7QUFDRjtJQUNJLGdCQUFnQjtFQUNsQjtBQUNGO0VBQ0UsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixNQUFNO0VBQ04sUUFBUTtFQUNSLFNBQVM7RUFDVCxPQUFPO0VBQ1A7QUFDRjtNQUNNLDBDQUEwQztNQUMxQyxvRUFBb0U7SUFDdEU7QUFDSjtJQUNJLGdCQUFnQixFQUFFLHlCQUF5QjtJQUMzQyxrQkFBa0I7RUFDcEI7QUFDRjtFQUNFLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsTUFBTTtFQUNOLFFBQVE7RUFDUixTQUFTO0VBQ1QsT0FBTztJQUNMO0FBQ0o7SUFDSSxrQkFBa0IsRUFBRSx3REFBd0Q7SUFDNUUsTUFBTTtJQUNOLE9BQU87SUFDUCxRQUFRO0lBQ1I7RUFDRjtBQUNGO01BQ00sWUFBWTtJQUNkO0FBQ0o7OztJQUdJLGtCQUFrQjtJQUNsQixNQUFNO0lBQ04sT0FBTztJQUNQLFFBQVE7RUFDVjtBQUNGOztFQUVFLE9BQU87O0FBRVQ7QUFDQTtJQUNJLFVBQVUsRUFBRSxlQUFlO0VBQzdCO0FBQ0YsMkNBQTJDLFdBQVc7QUFDdEQsdUNBQXVDLFdBQVc7QUFDbEQsd0NBQXdDLFdBQVc7QUFDbkQ7SUFDSSxrQkFBa0IsRUFBRSxpQ0FBaUM7SUFDckQsT0FBTztJQUNQLFFBQVE7RUFDVjtBQUNGOztFQUVFLGNBQWM7RUFDZCw0RUFBNEU7RUFDNUUsbUZBQW1GOztBQUVyRjtBQUNBO0lBQ0ksVUFBVTtJQUNWLG9FQUFvRTtFQUN0RTtBQUNGOztFQUVFLGtCQUFrQjs7QUFFcEI7QUFDQTtJQUNJLFNBQVM7SUFDVCxnQkFBZ0IsRUFBRSxtRUFBbUU7SUFDckYsOENBQThDO0VBQ2hEO0FBQ0Y7SUFDSSxvQkFBb0I7RUFDdEI7QUFDRjtJQUNJLG9CQUFvQjtFQUN0QjtBQUNGO0VBQ0UsaUJBQWlCLEVBQUUsZ0RBQWdEO0FBQ3JFO0FBQ0E7SUFDSSxrQkFBa0IsRUFBRSxnQ0FBZ0M7SUFDcEQsTUFBTSxFQUFFLGdDQUFnQztJQUN4QyxTQUFTLEVBQUUsTUFBTTtJQUNqQixPQUFPO0lBQ1AsUUFBUTtFQUNWO0FBQ0Y7OztFQUdFLGdDQUFnQztFQUNoQyx5REFBeUQ7QUFDM0Q7QUFDQTt5QkFDeUIsMkJBQTJCO0VBQ2xELGdCQUFnQjtFQUNoQiwyQ0FBMkM7RUFDM0Msa0JBQWtCO0FBQ3BCO0FBQ0EscUJBQXFCLDJCQUEyQjtFQUM5QyxpQkFBaUIsRUFBRSxnQ0FBZ0M7QUFDckQ7QUFDQTtJQUNJLGtCQUFrQjtFQUNwQjtBQUNGO0lBQ0ksbUJBQW1CO0lBQ25CLGdCQUFnQjtJQUNoQiwyQ0FBMkM7SUFDM0Msa0JBQWtCO0VBQ3BCO0FBQ0Y7SUFDSSxtQkFBbUI7SUFDbkIsZ0JBQWdCO0VBQ2xCO0FBQ0Y7SUFDSSxzQkFBc0IsRUFBRSwyQ0FBMkM7RUFDckU7QUFDRjtJQUNJLGdCQUFnQjtJQUNoQjtFQUNGO0FBQ0YseUJBQXlCLDRDQUE0QztFQUNuRSxrQkFBa0I7RUFDbEIsYUFBYSxFQUFFLFNBQVM7RUFDeEIsY0FBYztFQUNkLDhDQUE4QztFQUM5QyxtQkFBbUI7RUFDbkIsaURBQWlEO0VBQ2pELGVBQWU7RUFDZixrQkFBa0IsRUFBRSx3Q0FBd0M7QUFDOUQ7QUFDQSwrQkFBK0Isa0JBQWtCO0VBQy9DLGdCQUFnQjtFQUNoQixNQUFNO0FBQ1I7QUFDQTtJQUNJLFFBQVE7RUFDVjtBQUNGO0lBQ0ksT0FBTztFQUNUO0FBQ0Y7O0VBRUUsU0FBUzs7QUFFWDtBQUNBO0lBQ0ksa0JBQWtCO0lBQ2xCLFVBQVU7SUFDVixPQUFPO0lBQ1AsUUFBUTtJQUNSLG1CQUFtQjtJQUNuQixpQkFBaUI7SUFDakIsZ0RBQWdEO0lBQ2hELHFCQUFxQjtFQUN2QjtBQUNGOztFQUVFLFVBQVU7O0FBRVo7QUFDQTtJQUNJLGtCQUFrQjtJQUNsQixVQUFVO0lBQ1YsZ0JBQWdCLEVBQUUsd0NBQXdDO0lBQzFELG1CQUFtQjtJQUNuQixpQkFBaUI7SUFDakIsZ0RBQWdEO0VBQ2xEO0FBQ0Y7SUFDSSxPQUFPOztJQUVQLHlDQUF5QztJQUN6QywyQkFBMkI7SUFDM0IsNkJBQTZCO0lBQzdCLGdDQUFnQztFQUNsQztBQUNGO0lBQ0ksUUFBUTs7SUFFUix3Q0FBd0M7SUFDeEMsMkJBQTJCO0lBQzNCLDZCQUE2QjtJQUM3QixnQ0FBZ0M7RUFDbEM7O0FDdllGOztFQUVFO0FBQ0YsaUJBQWlCLGNBQWMsRUFBRSxlQUFlLEVBQUUsWUFBWSxHQUFHLCtCQUErQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsc0JBQXNCLEVBQUUsd0JBQXdCLEVBQUU7QUFDM0ssbUJBQW1CLFNBQVMsRUFBRSxVQUFVLEVBQUU7O0FBRTFDLDZCQUE2QixZQUFZLEVBQUUsVUFBVSxFQUFFO0FBQ3ZELDhCQUE4QixZQUFZLEVBQUUsV0FBVyxFQUFFO0FBQ3pELDBCQUEwQixTQUFTLEVBQUUsVUFBVSxFQUFFO0FBQ2pELDJCQUEyQixTQUFTLEVBQUUsV0FBVyxFQUFFOztBQUVuRCxtQkFBbUIsY0FBYyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLDhCQUE4QixFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixHQUFHLDhCQUE4QixFQUFFLHlCQUF5QixFQUFFLFlBQVksRUFBRTs7QUFFMVEsc0JBQXNCLDhCQUE4QixFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUU7QUFDNUsscUJBQXFCLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSw4QkFBOEIsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUU7O0FBRWxKLHNCQUFzQix3QkFBd0IsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUU7QUFDL0UseUJBQXlCLGdDQUFnQyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsc0JBQXNCLEVBQUU7O0FBRS9JLHlCQUF5QixrQkFBa0IsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUU7O0FBRXJHLG1CQUFtQixjQUFjLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRTtBQUN4SSxtQkFBbUIsV0FBVyxFQUFFO0FBQ2hDLGVBQWUsNEJBQTRCLEVBQUUsNEJBQTRCLEVBQUUseUJBQXlCLEVBQUU7QUFDdEcsZ0JBQWdCLCt2QkFBK3ZCLEVBQUUseUJBQXlCLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFO0FBQ24xQixtQkFBbUIsK3RCQUErdEIsRUFBRSx5QkFBeUIsRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUU7QUFDdHpCLGlCQUFpQix1eUJBQXV5QixFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRTtBQUM1M0IsbUJBQW1CLDJmQUEyZixFQUFFLGNBQWMsRUFBRSx5QkFBeUIsRUFBRSxxQkFBcUIsRUFBRSxDOztBRDFCbGxCLCtCQUErQjtBQUMvQixrRUFBa0U7QUFDbEU7NEJBQzRCLG9DQUFvQztFQUM5RCxtQkFBbUI7QUFDckI7O0FBRUEsK0RBQStEO0FBQy9EO0VBQ0UseUJBQXlCO0tBQ3RCLHNCQUFzQjtNQUNyQixxQkFBcUI7VUFDakIsaUJBQWlCO0VBQ3pCLDJCQUEyQjtFQUMzQiw2Q0FBNkM7QUFDL0M7QUFDQTtFQUNFLGlDQUFpQztFQUNqQyxhQUFhO0VBQ2Isc0JBQXNCOztFQUV0QjtBQUNGO0FBQ0E7Ozs7SUFJSSxzQkFBc0I7RUFDeEI7QUFDRjtJQUNJLHlCQUF5QjtJQUN6QixpQkFBaUI7SUFDakIsY0FBYyxFQUFFLDRCQUE0QjtFQUM5QztBQUNGO0lBQ0ksa0JBQWtCO0VBQ3BCO0FBQ0Y7O0lBRUksbUJBQW1CO0lBQ25CLFVBQVU7RUFDWjtBQUNGO0lBQ0ksZUFBZTtFQUNqQjtBQUNGO0lBQ0ksMEJBQTBCO0VBQzVCO0FBQ0Y7RUFDRSxjQUFjO0VBQ2QsZ0JBQWdCO0FBQ2xCO0FBQ0E7RUFDRSxjQUFjO0VBQ2QsaUJBQWlCO0FBQ25CO0FBQ0E7O0lBRUksc0JBQXNCO0lBQ3RCLDhDQUE4QztFQUNoRDtBQUNGLDBGQUEwRjtBQUMxRixzREFBc0Q7QUFDdEQsK0JBQStCO0FBQy9COztJQUVJLGtCQUFrQjtFQUNwQjs7QUFFRjtFQUNFLHNCQUFzQjtFQUN0Qiw0bUdBQTRtRztFQUM1bUcsbUJBQW1CO0VBQ25CLGtCQUFrQjtBQUNwQjs7QUFFQTtFQUNFLGlCQUFpQjtFQUNqQixxQkFBcUI7RUFDckIsVUFBVTtFQUNWLFdBQVc7RUFDWCxrQkFBa0I7RUFDbEIseUJBQXlCO0tBQ3RCLHNCQUFzQjtNQUNyQixxQkFBcUI7VUFDakIsaUJBQWlCOztFQUV6QiwrRUFBK0U7RUFDL0UsaUNBQWlDO0VBQ2pDLFdBQVc7RUFDWCxrQkFBa0I7RUFDbEIsbUJBQW1CO0VBQ25CLG9CQUFvQjtFQUNwQixvQkFBb0I7RUFDcEIsY0FBYzs7RUFFZCxzQ0FBc0M7RUFDdEMsbUNBQW1DO0VBQ25DLGtDQUFrQztBQUNwQzs7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjs7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjs7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjs7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjs7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjs7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjs7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjtBQUNBOzs7OztDQUtDO0FBQ0Q7O0VBRUUsVUFBVTs7QUFFWjtBQUNBO0lBQ0ksZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixvQkFBb0I7SUFDcEIsU0FBUztJQUNULG9CQUFvQjtJQUNwQixrQkFBa0I7SUFDbEIsb0JBQW9CO0VBQ3RCO0FBQ0Y7SUFDSSxtQkFBbUI7SUFDbkIsMENBQTBDO0VBQzVDO0FBQ0Y7SUFDSSwwQkFBMEI7RUFDNUI7QUFDRjtJQUNJLGVBQWU7RUFDakI7QUFDRjtJQUNJLFVBQVU7SUFDVixrQkFBa0I7RUFDcEI7QUFDRjs7RUFFRSxVQUFVOztBQUVaO0FBQ0E7SUFDSSxxQkFBcUI7SUFDckIsZ0JBQWdCO0lBQ2hCLGtCQUFrQjtJQUNsQixzQkFBc0I7SUFDdEIseUJBQXlCO09BQ3RCLHNCQUFzQjtRQUNyQixxQkFBcUI7WUFDakIsaUJBQWlCO0lBQ3pCLDZCQUE2QjtJQUM3Qiw2QkFBNkI7SUFDN0IscUJBQXFCO0lBQ3JCLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIscUJBQXFCO0VBQ3ZCO0FBQ0Y7SUFDSSxxQkFBcUI7RUFDdkI7QUFDRjtJQUNJLFVBQVU7SUFDViwrQ0FBK0M7RUFDakQ7QUFDRjtJQUNJLGFBQWE7RUFDZjtBQUNGOztFQUVFLHVCQUF1Qjs7QUFFekI7QUFDQTtJQUNJLFdBQVc7SUFDWCx3Q0FBd0M7SUFDeEMseUJBQXlCO0lBQ3pCLG9EQUFvRDtJQUNwRCxxQkFBcUI7SUFDckIsb0RBQW9EO0VBQ3REO0FBQ0Y7SUFDSSxXQUFXO0lBQ1gsd0NBQXdDO0lBQ3hDLHlCQUF5QjtJQUN6QiwwREFBMEQ7SUFDMUQscUJBQXFCO0lBQ3JCLDBEQUEwRDtFQUM1RDtBQUNGLGtDQUFrQyxZQUFZO0lBQzFDLFdBQVc7SUFDWCx3Q0FBd0M7SUFDeEMseUJBQXlCO0lBQ3pCLG9EQUFvRDtJQUNwRCxxQkFBcUI7SUFDckIsb0RBQW9ELEVBQUUscUJBQXFCO0VBQzdFO0FBQ0Y7SUFDSSwrQ0FBK0M7RUFDakQ7QUFDRjs7SUFFSSxXQUFXO0lBQ1gsd0NBQXdDO0lBQ3hDLHlCQUF5QjtJQUN6QiwyREFBMkQ7SUFDM0QscUJBQXFCO0lBQ3JCLDJEQUEyRDtFQUM3RDtBQUNGOztJQUVJLCtDQUErQztFQUNqRDtBQUNGOztFQUVFLHlCQUF5Qjs7QUFFM0I7QUFDQTtJQUNJLHNCQUFzQjtJQUN0QixnQkFBZ0IsRUFBRSxnR0FBZ0c7RUFDcEg7QUFDRjtJQUNJLGtCQUFrQjtJQUNsQixvQkFBb0I7SUFDcEIsc0JBQXNCO0VBQ3hCO0FBQ0Y7SUFDSSxrQkFBa0I7SUFDbEIsY0FBYztFQUNoQjtBQUNGO0lBQ0ksVUFBVTtFQUNaO0FBQ0Y7OztJQUdJLFVBQVU7RUFDWjtBQUNGO0lBQ0ksaUJBQWlCO0lBQ2pCLHlCQUF5QjtJQUN6Qiw0QkFBNEI7RUFDOUI7QUFDRjtJQUNJLDBCQUEwQjtJQUMxQiw2QkFBNkI7RUFDL0I7QUFDRjtJQUNJLGtCQUFrQjtJQUNsQiwwQkFBMEI7SUFDMUIsNkJBQTZCO0VBQy9CO0FBQ0Y7SUFDSSx5QkFBeUI7SUFDekIsNEJBQTRCO0VBQzlCO0FBQ0Y7SUFDSSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLG1CQUFtQjtFQUNyQjtBQUNGO0lBQ0ksb0JBQW9CO0VBQ3RCO0FBQ0Y7SUFDSSxpQkFBaUI7RUFDbkI7QUFDRjtJQUNJLGlCQUFpQjtJQUNqQixTQUFTO0VBQ1g7QUFDRjtJQUNJLGtCQUFrQixFQUFFLGtCQUFrQjtFQUN4QztBQUNGO0lBQ0ksbUJBQW1CLEVBQUUsa0JBQWtCO0VBQ3pDO0FBQ0Ysb0NBQW9DLDBFQUEwRTtJQUMxRywyQkFBMkI7RUFDN0I7QUFDRjtJQUNJLGlDQUFpQztJQUNqQyxrQkFBa0IsRUFBRSx1Q0FBdUM7RUFDN0Q7QUFDRjtJQUNJLFlBQVk7RUFDZDtBQUNGO0lBQ0ksa0JBQWtCO0lBQ2xCLE1BQU07SUFDTixRQUFRO0lBQ1IsT0FBTztJQUNQLFNBQVM7RUFDWDtBQUNGO0lBQ0ksa0JBQWtCO0lBQ2xCLGdCQUFnQjtJQUNoQixjQUFjO01BQ1osdUZBQXVGO01BQ3ZGLGlDQUFpQztFQUNyQztBQUNGO0lBQ0ksWUFBWTtFQUNkO0FBQ0Ysd0RBQXdELG9CQUFvQjtJQUN4RSxjQUFjO0VBQ2hCO0FBQ0Y7SUFDSSxzQkFBc0I7SUFDdEIsOENBQThDLEVBQUUsK0JBQStCO0VBQ2pGO0FBQ0Y7K0JBQytCLCtCQUErQjtNQUN4RCxXQUFXLEVBQUUsMENBQTBDO01BQ3ZELG1CQUFtQjtJQUNyQjtBQUNKLDJCQUEyQixpQkFBaUI7TUFDdEMsd0JBQXdCO01BQ3hCLHlCQUF5QjtNQUN6QiwwQkFBMEI7SUFDNUI7QUFDSjs7SUFFSSx5QkFBeUI7SUFDekIscUJBQXFCO0lBQ3JCLHNCQUFzQjs7RUFFeEI7QUFDRjtJQUNJLFlBQVk7RUFDZDtBQUNGLDZCQUE2QixXQUFXO0lBQ3BDLFVBQVUsRUFBRSwrQkFBK0I7O0VBRTdDO0FBQ0Y7TUFDTSxXQUFXLEVBQUUsd0VBQXdFO0lBQ3ZGO0FBQ0o7TUFDTSxXQUFXO1FBQ1QsK0ZBQStGO1FBQy9GLHFDQUFxQztJQUN6QztBQUNKO01BQ00sWUFBWSxFQUFFLG9DQUFvQztJQUNwRDtBQUNKO0lBQ0ksbUJBQW1CO0lBQ25CLG9CQUFvQjtFQUN0QjtBQUNGOztJQUVJLHNCQUFzQjtFQUN4QjtBQUNGOztJQUVJLDJCQUEyQixFQUFFLHFDQUFxQztFQUNwRTtBQUNGOztFQUVFLGVBQWU7O0FBRWpCO0FBQ0E7SUFDSSxnQkFBZ0I7SUFDaEIseUNBQXlDO0lBQ3pDLGdCQUFnQjtJQUNoQixVQUFVLEVBQUUsY0FBYztJQUMxQixtQ0FBbUM7RUFDckM7QUFDRjtJQUNJLE1BQU0sRUFBRSxtREFBbUQ7TUFDekQsa0NBQWtDO0VBQ3RDO0FBQ0Y7SUFDSSxTQUFTLEVBQUUsd0RBQXdEO0VBQ3JFO0FBQ0YsaUNBQWlDLDZCQUE2QjtJQUMxRCxXQUFXLEVBQUUsc0NBQXNDO0lBQ25ELG1CQUFtQjtFQUNyQjtBQUNGLGFBQWEsOENBQThDO0VBQ3pELGdCQUFnQjtBQUNsQjtBQUNBO0lBQ0ksWUFBWSxFQUFFLHFEQUFxRDtJQUNuRSxrQkFBa0I7RUFDcEI7QUFDRjs7RUFFRSwrREFBK0Q7O0FBRWpFO0FBQ0E7SUFDSSxrQkFBa0I7SUFDbEIsTUFBTTtJQUNOLFFBQVE7SUFDUixTQUFTO0lBQ1QsT0FBTztFQUNUO0FBQ0Y7SUFDSSxxQkFBcUIsRUFBRSx1REFBdUQ7SUFDOUUsZ0JBQWdCO0VBQ2xCO0FBQ0Y7OztJQUdJLHFGQUFxRjtJQUNyRixrQkFBa0I7SUFDbEIsTUFBTTtJQUNOLE9BQU87SUFDUCxRQUFRO0lBQ1IsU0FBUztFQUNYO0FBQ0Y7SUFDSSxvQ0FBb0M7SUFDcEMsa0VBQWtFO0VBQ3BFO0FBQ0Y7SUFDSSw4QkFBOEI7SUFDOUIsd0RBQXdEO0lBQ3hELFlBQVk7SUFDWjtFQUNGO0FBQ0Y7TUFDTSxZQUFZO01BQ1osZ0JBQWdCO01BQ2hCLDJDQUEyQztNQUMzQyxrQkFBa0I7SUFDcEI7QUFDSjtJQUNJLG9DQUFvQztJQUNwQywrREFBK0Q7RUFDakU7QUFDRjs7SUFFSSxvQ0FBb0M7SUFDcEMsZ0VBQWdFO0VBQ2xFO0FBQ0YsZ0JBQWdCO0FBQ2hCLHlHQUF5RztBQUN6Rzs7RUFFRSxxQkFBcUI7QUFDdkI7QUFDQSxXQUFXO0FBQ1g7O0VBRUUsZUFBZTtBQUNqQjtBQUNBLHVCQUF1QjtBQUN2Qix5R0FBeUc7QUFDekc7SUFDSSxrQkFBa0I7SUFDbEIsVUFBVTtFQUNaO0FBQ0YsYUFBYTtBQUNiLHlHQUF5RztBQUN6Ryw2Q0FBNkMsVUFBVTtJQUNuRCxhQUFhO0VBQ2Y7QUFDRix1Q0FBdUMsVUFBVTtJQUM3Qyx3Q0FBd0M7RUFDMUM7QUFDRixhQUFhO0FBQ2IseUdBQXlHO0FBQ3pHLGlFQUFpRTtBQUNqRTtJQUNJLGFBQWE7SUFDYixrQkFBa0I7SUFDbEIsVUFBVTtFQUNaO0FBQ0Y7cUJBQ3FCLFVBQVU7O0FBRS9CO0FBQ0E7SUFDSSxjQUFjO0VBQ2hCO0FBQ0Y7SUFDSSxrQkFBa0I7SUFDbEIscUVBQXFFO0lBQ3JFLGlCQUFpQjtJQUNqQiwyREFBMkQ7SUFDM0QsVUFBVTtJQUNWLG1EQUFtRDtJQUNuRCxXQUFXO0lBQ1gsb0RBQW9EO0lBQ3BELG1CQUFtQjtJQUNuQixxQkFBcUI7SUFDckIsZ0JBQWdCO0lBQ2hCLHdDQUF3Qzs7SUFFeEMsb0JBQW9COztFQUV0QjtBQUNGO01BQ00sV0FBVztNQUNYLGtCQUFrQjtNQUNsQixVQUFVO01BQ1YsV0FBVztNQUNYLFlBQVk7TUFDWixhQUFhO0lBQ2Y7QUFDSiw2QkFBNkI7QUFDN0IsNkJBQTZCO0FBQzdCLHVFQUF1RTtBQUN2RSx5R0FBeUc7QUFDekc7O0VBRUUsdUNBQXVDOztFQUV2QywrQ0FBK0M7O0FBRWpEO0FBQ0E7SUFDSSxXQUFXO0lBQ1gsa0JBQWtCO0lBQ2xCLFVBQVU7SUFDVixNQUFNO0lBQ04sT0FBTztJQUNQLFFBQVE7SUFDUixTQUFTO0VBQ1g7QUFDRjs7O0VBR0Usa0JBQWtCOztBQUVwQjtBQUNBO0lBQ0ksV0FBVztJQUNYLCtCQUErQjtJQUMvQix1RUFBdUU7SUFDdkUsa0JBQWtCO0lBQ2xCLFVBQVU7O0lBRVYsdURBQXVEO0lBQ3ZELDBFQUEwRTtJQUMxRSwwQ0FBMEM7SUFDMUMsU0FBUztJQUNULFVBQVU7SUFDVixXQUFXO0lBQ1gsWUFBWTtFQUNkO0FBQ0Y7O0NBRUM7QUFDRCxjQUFjLDRCQUE0QjtFQUN4QyxjQUFjO0VBQ2QseUJBQXlCO0VBQ3pCLHVEQUF1RDtFQUN2RCx5QkFBeUI7RUFDekI7O0FBRUY7QUFDQTtJQUNJLFdBQVc7SUFDWCx1Q0FBdUM7RUFDekM7QUFDRjtJQUNJLGFBQWEsRUFBRSw2Q0FBNkM7RUFDOUQ7QUFDRjtJQUNJLGVBQWUsRUFBRSxrQ0FBa0M7SUFDbkQsZ0JBQWdCO0VBQ2xCO0FBQ0Ysd0NBQXdDLGlEQUFpRDtJQUNyRixZQUFZO0lBQ1osY0FBYztJQUNkLFlBQVksRUFBRSxpREFBaUQ7RUFDakU7QUFDRjtJQUNJLHFCQUFxQixFQUFFLHlDQUF5QztJQUNoRSxtQkFBbUIsRUFBRSxtQ0FBbUM7SUFDeEQsT0FBTyxHQUFHLGVBQWU7SUFDekIsUUFBUSxFQUFFLGVBQWU7SUFDekIsZUFBZSxFQUFFLGtDQUFrQztJQUNuRCxnQkFBZ0I7RUFDbEI7QUFDRjtJQUNJLG9CQUFvQjtJQUNwQixVQUFVO0lBQ1YsYUFBYTtFQUNmO0FBQ0Ysd0VBQXdFO0FBQ3hFOztFQUVFLHlCQUF5QjtFQUN6Qiw0QkFBNEI7RUFDNUIsb0JBQW9CO0FBQ3RCO0FBQ0E7O0VBRUUsMEJBQTBCO0VBQzFCLDZCQUE2QjtFQUM3QixxQkFBcUI7QUFDdkI7QUFDQSxhQUFhO0FBQ2I7RUFDRSxNQUFNO0VBQ04sU0FBUztFQUNULFVBQVU7RUFDViw2Q0FBNkM7QUFDL0M7QUFDQTs7RUFFRSxnQkFBZ0I7RUFDaEIsVUFBVTtFQUNWLHlEQUF5RDtBQUMzRDtBQUNBOztFQUVFLGdCQUFnQjtFQUNoQixXQUFXO0VBQ1gsMERBQTBEO0FBQzVEO0FBQ0EsdUJBQXVCO0FBQ3ZCO0VBQ0UsUUFBUTtFQUNSLGdCQUFnQjtFQUNoQixxRUFBcUU7QUFDdkU7QUFDQTs7RUFFRSxVQUFVO0VBQ1YsK0RBQStEO0FBQ2pFO0FBQ0E7O0VBRUUsV0FBVztFQUNYLGdFQUFnRTtBQUNsRTtBQUNBO0lBQ0ksa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYixxQ0FBcUM7RUFDdkM7QUFDRjtJQUNJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsOEJBQThCO0lBQzlCLG1CQUFtQjtJQUNuQixnQkFBZ0I7RUFDbEI7QUFDRjtJQUNJLGFBQWE7RUFDZjtBQUNGO0lBQ0ksZUFBZTtJQUNmLGFBQWE7SUFDYixnQkFBZ0I7RUFDbEI7QUFDRjtJQUNJLHNCQUFzQjtJQUN0Qiw4Q0FBOEM7SUFDOUMsZ0JBQWdCO0lBQ2hCLHlDQUF5QztFQUMzQztBQUNGO0lBQ0ksb0NBQW9DO0lBQ3BDLGdFQUFnRTtFQUNsRTs7O0FBR0Y7RUFDRSxpQ0FBaUM7QUFDbkM7QUFDQSwrQ0FBK0M7QUFDL0M7OzRCQUU0QixpQ0FBaUM7QUFDN0Q7QUFDQTtFQUNFLFdBQVc7RUFDWCxXQUFXO0VBQ1gsY0FBYyxFQUFFO0FBQ2xCO0VBQ0UsV0FBVztFQUNYLFdBQVc7RUFDWCxjQUFjLEVBQUU7QUFDbEIsdUJBQXVCLGlDQUFpQztJQUNwRCxrQkFBa0I7SUFDbEIsVUFBVSxFQUFFLHdEQUF3RDtFQUN0RTtBQUNGO01BQ00sMENBQTBDO01BQzFDLG9FQUFvRTtJQUN0RTtBQUNKO0lBQ0ksa0JBQWtCO0lBQ2xCLGdCQUFnQixFQUFFLDRGQUE0RjtFQUNoSDtBQUNGOztFQUVFLGFBQWE7O0FBRWY7QUFDQTtJQUNJLGFBQWE7SUFDYiwyQkFBMkI7RUFDN0I7QUFDRjtJQUNJLFlBQVk7RUFDZDtBQUNGOztFQUVFLGlDQUFpQzs7QUFFbkM7QUFDQTtJQUNJLGtCQUFrQjtJQUNsQixVQUFVO0lBQ1YsWUFBWTtFQUNkO0FBQ0Y7O0VBRUUsb0JBQW9COztBQUV0QjtBQUNBO0lBQ0ksZUFBZSxFQUFFLG1GQUFtRjtFQUN0RztBQUNGOztFQUVFLHdDQUF3Qzs7QUFFMUM7QUFDQTtNQUNNLGtCQUFrQjtNQUNsQixPQUFPO01BQ1AsUUFBUTtJQUNWO0FBQ0o7TUFDTSxrQkFBa0IsRUFBRSxrREFBa0Q7TUFDdEUsZUFBZSxFQUFFLGdHQUFnRztJQUNuSDtBQUNKLCtCQUErQixpQ0FBaUM7RUFDOUQ7QUFDRjtNQUNNLGtCQUFrQjtJQUNwQjtBQUNKOztFQUVFLGtCQUFrQjs7QUFFcEI7QUFDQTtJQUNJLGtCQUFrQjtFQUNwQjtBQUNGO0lBQ0ksa0JBQWtCO0lBQ2xCLE1BQU0sRUFBRSxvREFBb0Q7SUFDNUQsT0FBTyxFQUFFLElBQUk7SUFDYixRQUFRLEVBQUUsSUFBSTtFQUNoQjtBQUNGO0lBQ0ksa0JBQWtCO0lBQ2xCLE1BQU07SUFDTixTQUFTO0VBQ1g7QUFDRjs7RUFFRSxlQUFlOztBQUVqQjtBQUNBLDBDQUEwQyxXQUFXO0FBQ3JELHNDQUFzQyxXQUFXO0FBQ2pELHVDQUF1QyxXQUFXO0FBQ2xEOztFQUVFLFdBQVc7O0FBRWI7QUFDQTtJQUNJLFVBQVU7SUFDVixlQUFlO0VBQ2pCO0FBQ0Y7SUFDSSxVQUFVO0VBQ1o7QUFDRjs7RUFFRSxvQ0FBb0M7O0FBRXRDO0FBQ0E7SUFDSSxnQkFBZ0I7SUFDaEI7RUFDRjtBQUNGO0VBQ0UsV0FBVztFQUNYLFdBQVc7RUFDWCxjQUFjLEVBQUU7QUFDbEI7SUFDSSxrQkFBa0I7SUFDbEIsVUFBVTtJQUNWLGVBQWU7RUFDakI7QUFDRjs7RUFFRSwrQkFBK0I7O0FBRWpDO0FBQ0E7SUFDSSxrQkFBa0I7SUFDbEIsVUFBVTtJQUNWLE1BQU07SUFDTixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGtCQUFrQjtJQUNsQiwwQ0FBMEM7SUFDMUMsc0VBQXNFO0lBQ3RFLGNBQWM7SUFDZCw0Q0FBNEM7RUFDOUM7QUFDRjs7RUFFRSxZQUFZOztBQUVkO0FBQ0E7SUFDSSxnQkFBZ0I7SUFDaEIsYUFBYTtFQUNmO0FBQ0Y7O0VBRUUsZ0JBQWdCO0FBQ2xCO0FBQ0E7O0VBRUUsaUJBQWlCO0FBQ25CO0FBQ0E7SUFDSSxPQUFPO0lBQ1Asd0JBQXdCO0VBQzFCO0FBQ0Y7SUFDSSxRQUFRO0lBQ1Isd0JBQXdCO0VBQzFCO0FBQ0Y7SUFDSSxnQkFBZ0IsRUFBRSxzREFBc0Q7RUFDMUU7QUFDRixvQkFBb0IscUZBQXFGO0VBQ3ZHLGtCQUFrQixFQUFFLGlDQUFpQztFQUNyRCxtQkFBbUI7RUFDbkIsa0JBQWtCLEVBQUUsMENBQTBDO0VBQzlELGdCQUFnQjtFQUNoQiwyQ0FBMkM7QUFDN0M7QUFDQSxtREFBbUQ7QUFDbkQ7SUFDSSxpQkFBaUI7RUFDbkI7QUFDRjs7SUFFSSxZQUFZO0VBQ2Q7QUFDRixtQ0FBbUM7QUFDbkM7RUFDRSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25COztBQUVGO0FBQ0E7SUFDSSxZQUFZO0lBQ1osY0FBYztJQUNkLFlBQVksRUFBRSxpREFBaUQ7SUFDL0QsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtFQUNuQjtBQUNGOztJQUVJLDhCQUE4QjtFQUNoQztBQUNGO0lBQ0ksb0JBQW9CO0lBQ3BCLFVBQVU7SUFDVixhQUFhO0VBQ2Y7QUFDRix3QkFBd0IsbUJBQW1CO0VBQ3pDLGFBQWE7RUFDYix1QkFBdUI7RUFDdkIsUUFBUTtFQUNSLFNBQVM7RUFDVCx5QkFBeUI7RUFDekIsb0dBQW9HO0VBQ3BHLGtCQUFrQjtFQUNsQiwrREFBK0Q7QUFDakU7QUFDQSwyQ0FBMkM7QUFDM0M7SUFDSSxpQkFBaUI7RUFDbkI7QUFDRjtJQUNJLGdCQUFnQjtFQUNsQjs7O0FBR0Y7O0NBRUM7O0FBRUQsY0FBYyw0QkFBNEI7RUFDeEMsY0FBYztFQUNkLHlCQUF5QjtFQUN6Qix1REFBdUQ7RUFDdkQseUJBQXlCO0VBQ3pCOztBQUVGOztBQUVBO0lBQ0ksV0FBVztJQUNYLHVDQUF1QztJQUN2QyxZQUFZO0VBQ2Q7O0FBRUY7SUFDSSxZQUFZO0lBQ1osYUFBYTtJQUNiLHNCQUFzQjtFQUN4Qjs7QUFFRjtJQUNJLFlBQVk7SUFDWixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtFQUNsQjs7QUFFRix3Q0FBd0MsdUNBQXVDO0lBQzNFLFlBQVk7SUFDWixjQUFjO0lBQ2QsYUFBYSxFQUFFLGlEQUFpRDtFQUNsRTs7QUFFRiw4QkFBOEIsOEJBQThCO0lBQ3hELE1BQU07SUFDTixTQUFTO0lBQ1QsZ0JBQWdCLEVBQUUsa0JBQWtCO0lBQ3BDLGdCQUFnQjtFQUNsQjs7QUFFRjtJQUNJLG1CQUFtQjtJQUNuQix5QkFBeUI7SUFDekIsMEJBQTBCO0VBQzVCOztBQUVGO0lBQ0ksc0JBQXNCO0lBQ3RCLDRCQUE0QjtJQUM1Qiw2QkFBNkI7RUFDL0I7O0FBRUY7SUFDSSxvQkFBb0I7SUFDcEIsV0FBVztJQUNYLFlBQVk7RUFDZDs7QUFFRjs7RUFFRSw4QkFBOEI7O0FBRWhDOztBQUVBO0lBQ0ksZ0JBQWdCO0VBQ2xCOztBQUVGO0lBQ0ksZ0JBQWdCO0VBQ2xCOztBQUVGOztFQUVFLHNCQUFzQjs7QUFFeEI7O0FBRUE7TUFDTSxXQUFXO01BQ1gsOENBQThDO01BQzlDLE9BQU87TUFDUCxRQUFRO0lBQ1Y7O0FBRUo7TUFDTSxTQUFTO01BQ1Qsc0RBQXNEO0lBQ3hEOztBQUVKO01BQ00sWUFBWTtNQUNaLHlEQUF5RDtJQUMzRDs7QUFFSjs7RUFFRSxpREFBaUQ7O0FBRW5EOztBQUVBO01BQ00sU0FBUztNQUNULGlCQUFpQjtNQUNqQixvRUFBb0U7SUFDdEU7O0FBRUo7TUFDTSxTQUFTO01BQ1QsNERBQTREO0lBQzlEOztBQUVKO01BQ00sWUFBWTtNQUNaLCtEQUErRDtJQUNqRTtBQUNKLG9DQUFvQyxpREFBaUQ7SUFDakYsVUFBVSxFQUFFLGdHQUFnRztFQUM5RztBQUNGO0lBQ0ksZ0JBQWdCLEVBQUUsbUVBQW1FO0VBQ3ZGO0FBQ0Y7SUFDSSxrQkFBa0I7SUFDbEIsVUFBVSxFQUFFLDBDQUEwQztJQUN0RCxnQkFBZ0IsRUFBRSwwREFBMEQ7RUFDOUU7QUFDRiw4QkFBOEIsNEJBQTRCO0lBQ3RELGlCQUFpQixFQUFFLDhDQUE4Qzs7RUFFbkU7QUFDRjtNQUNNLGtCQUFrQjtNQUNsQixVQUFVLEVBQUUsc0NBQXNDO0lBQ3BEO0FBQ0o7SUFDSSxrQkFBa0I7SUFDbEIsVUFBVTtFQUNaO0FBQ0Ysd0JBQXdCLFdBQVc7SUFDL0IsYUFBYTtJQUNiLGVBQWUsRUFBRSxrQ0FBa0M7RUFDckQ7QUFDRjtNQUNNLGdCQUFnQixFQUFFLGtGQUFrRjtJQUN0RztBQUNKO0lBQ0ksd0JBQXdCO0VBQzFCO0FBQ0Y7SUFDSSxxQkFBcUI7SUFDckIsbUJBQW1CO0VBQ3JCO0FBQ0Y7SUFDSSxzQkFBc0IsRUFBRSw2QkFBNkI7RUFDdkQ7QUFDRjs7O0VBR0UsZ0ZBQWdGOztBQUVsRjtBQUNBOztJQUVJLGNBQWM7RUFDaEI7QUFDRjs7O0VBR0Usc0VBQXNFO0VBQ3RFLHFEQUFxRDs7QUFFdkQ7QUFDQTtJQUNJLFlBQVksRUFBRSxnQ0FBZ0M7RUFDaEQ7QUFDRjtJQUNJLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsbUJBQW1CLEVBQUUsbUJBQW1CO0lBQ3hDLHlCQUF5QixFQUFFLCtDQUErQztFQUM1RTtBQUNGO0lBQ0ksZUFBZSxFQUFFLDJDQUEyQztJQUM1RCxjQUFjLEVBQUUsaUZBQWlGO0VBQ25HO0FBQ0Y7SUFDSSxpQkFBaUI7RUFDbkI7QUFDRjtJQUNJLGdCQUFnQjtFQUNsQjtBQUNGO0VBQ0UsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixNQUFNO0VBQ04sUUFBUTtFQUNSLFNBQVM7RUFDVCxPQUFPO0VBQ1A7QUFDRjtNQUNNLDBDQUEwQztNQUMxQyxvRUFBb0U7SUFDdEU7QUFDSjtJQUNJLGdCQUFnQixFQUFFLHlCQUF5QjtJQUMzQyxrQkFBa0I7RUFDcEI7QUFDRjtFQUNFLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsTUFBTTtFQUNOLFFBQVE7RUFDUixTQUFTO0VBQ1QsT0FBTztJQUNMO0FBQ0o7SUFDSSxrQkFBa0IsRUFBRSx3REFBd0Q7SUFDNUUsTUFBTTtJQUNOLE9BQU87SUFDUCxRQUFRO0lBQ1I7RUFDRjtBQUNGO01BQ00sWUFBWTtJQUNkO0FBQ0o7OztJQUdJLGtCQUFrQjtJQUNsQixNQUFNO0lBQ04sT0FBTztJQUNQLFFBQVE7RUFDVjtBQUNGOztFQUVFLE9BQU87O0FBRVQ7QUFDQTtJQUNJLFVBQVUsRUFBRSxlQUFlO0VBQzdCO0FBQ0YsMkNBQTJDLFdBQVc7QUFDdEQsdUNBQXVDLFdBQVc7QUFDbEQsd0NBQXdDLFdBQVc7QUFDbkQ7SUFDSSxrQkFBa0IsRUFBRSxpQ0FBaUM7SUFDckQsT0FBTztJQUNQLFFBQVE7RUFDVjtBQUNGOztFQUVFLGNBQWM7RUFDZCw0RUFBNEU7RUFDNUUsbUZBQW1GOztBQUVyRjtBQUNBO0lBQ0ksVUFBVTtJQUNWLG9FQUFvRTtFQUN0RTtBQUNGOztFQUVFLGtCQUFrQjs7QUFFcEI7QUFDQTtJQUNJLFNBQVM7SUFDVCxnQkFBZ0IsRUFBRSxtRUFBbUU7SUFDckYsOENBQThDO0VBQ2hEO0FBQ0Y7SUFDSSxvQkFBb0I7RUFDdEI7QUFDRjtJQUNJLG9CQUFvQjtFQUN0QjtBQUNGO0VBQ0UsaUJBQWlCLEVBQUUsZ0RBQWdEO0FBQ3JFO0FBQ0E7SUFDSSxrQkFBa0IsRUFBRSxnQ0FBZ0M7SUFDcEQsTUFBTSxFQUFFLGdDQUFnQztJQUN4QyxTQUFTLEVBQUUsTUFBTTtJQUNqQixPQUFPO0lBQ1AsUUFBUTtFQUNWO0FBQ0Y7OztFQUdFLGdDQUFnQztFQUNoQyx5REFBeUQ7QUFDM0Q7QUFDQTt5QkFDeUIsMkJBQTJCO0VBQ2xELGdCQUFnQjtFQUNoQiwyQ0FBMkM7RUFDM0Msa0JBQWtCO0FBQ3BCO0FBQ0EscUJBQXFCLDJCQUEyQjtFQUM5QyxpQkFBaUIsRUFBRSxnQ0FBZ0M7QUFDckQ7QUFDQTtJQUNJLGtCQUFrQjtFQUNwQjtBQUNGO0lBQ0ksbUJBQW1CO0lBQ25CLGdCQUFnQjtJQUNoQiwyQ0FBMkM7SUFDM0Msa0JBQWtCO0VBQ3BCO0FBQ0Y7SUFDSSxtQkFBbUI7SUFDbkIsZ0JBQWdCO0VBQ2xCO0FBQ0Y7SUFDSSxzQkFBc0IsRUFBRSwyQ0FBMkM7RUFDckU7QUFDRjtJQUNJLGdCQUFnQjtJQUNoQjtFQUNGO0FBQ0YseUJBQXlCLDRDQUE0QztFQUNuRSxrQkFBa0I7RUFDbEIsYUFBYSxFQUFFLFNBQVM7RUFDeEIsY0FBYztFQUNkLDhDQUE4QztFQUM5QyxtQkFBbUI7RUFDbkIsaURBQWlEO0VBQ2pELGVBQWU7RUFDZixrQkFBa0IsRUFBRSx3Q0FBd0M7QUFDOUQ7QUFDQSwrQkFBK0Isa0JBQWtCO0VBQy9DLGdCQUFnQjtFQUNoQixNQUFNO0FBQ1I7QUFDQTtJQUNJLFFBQVE7RUFDVjtBQUNGO0lBQ0ksT0FBTztFQUNUO0FBQ0Y7O0VBRUUsU0FBUzs7QUFFWDtBQUNBO0lBQ0ksa0JBQWtCO0lBQ2xCLFVBQVU7SUFDVixPQUFPO0lBQ1AsUUFBUTtJQUNSLG1CQUFtQjtJQUNuQixpQkFBaUI7SUFDakIsZ0RBQWdEO0lBQ2hELHFCQUFxQjtFQUN2QjtBQUNGOztFQUVFLFVBQVU7O0FBRVo7QUFDQTtJQUNJLGtCQUFrQjtJQUNsQixVQUFVO0lBQ1YsZ0JBQWdCLEVBQUUsd0NBQXdDO0lBQzFELG1CQUFtQjtJQUNuQixpQkFBaUI7SUFDakIsZ0RBQWdEO0VBQ2xEO0FBQ0Y7SUFDSSxPQUFPOztJQUVQLHlDQUF5QztJQUN6QywyQkFBMkI7SUFDM0IsNkJBQTZCO0lBQzdCLGdDQUFnQztFQUNsQztBQUNGO0lBQ0ksUUFBUTs7SUFFUix3Q0FBd0M7SUFDeEMsMkJBQTJCO0lBQzNCLDZCQUE2QjtJQUM3QixnQ0FBZ0M7RUFDbEM7OztBQUdGO0VBQ0UsK0JBQStCO0VBQy9CLHVDQUF1QztBQUN6QztBQUNBO0lBQ0ksc0JBQXNCO0lBQ3RCLDhDQUE4QztFQUNoRDtBQUNGOztFQUVFLDJCQUEyQjs7QUFFN0I7QUFDQTtJQUNJLDBDQUEwQztJQUMxQyxzRUFBc0U7SUFDdEUsWUFBWTtJQUNaLGFBQWE7SUFDYix1QkFBdUI7SUFDdkIsbUJBQW1CLEVBQUUsMENBQTBDO0VBQ2pFO0FBQ0Y7SUFDSSxhQUFhO0VBQ2Y7QUFDRjs7RUFFRSw4QkFBOEI7RUFDOUIseUdBQXlHOztBQUUzRztBQUNBO0lBQ0ksV0FBVztJQUNYLG9CQUFvQixFQUFFLCtCQUErQjtFQUN2RDtBQUNGO0lBQ0ksY0FBYztJQUNkLGVBQWU7RUFDakI7QUFDRix1Q0FBdUMsY0FBYztNQUMvQyxnQkFBZ0I7TUFDaEIsTUFBTTtNQUNOLGdCQUFnQjtNQUNoQix5Q0FBeUMsRUFBRSw2REFBNkQ7SUFDMUc7QUFDSjs7RUFFRSw4REFBOEQ7O0FBRWhFO0FBQ0E7SUFDSSxrQkFBa0I7SUFDbEIsY0FBYztFQUNoQjtBQUNGOztFQUVFLHVHQUF1Rzs7QUFFekc7QUFDQTtJQUNJLGFBQWE7RUFDZjtBQUNGO0lBQ0ksVUFBVSxFQUFFLHFDQUFxQztFQUNuRDtBQUNGOztJQUVJLGlCQUFpQjtFQUNuQjtBQUNGOzs7RUFHRSxzQkFBc0I7RUFDdEIseUdBQXlHOztBQUUzRztBQUNBO0VBQ0UsV0FBVztFQUNYLFdBQVc7RUFDWCxjQUFjLEVBQUUsbUJBQW1CO0lBQ2pDO0FBQ0o7SUFDSSwwQ0FBMEM7SUFDMUMsc0VBQXNFO0VBQ3hFO0FBQ0Y7O0VBRUUsV0FBVztBQUNiO0FBQ0E7O0VBRUUsWUFBWTtBQUNkO0FBQ0EsMkNBQTJDO0FBQzNDLDBEQUEwRCxpQkFBaUI7QUFDM0UsMERBQTBELGdCQUFnQjtBQUMxRTtJQUNJLGVBQWUsRUFBRSxrQ0FBa0M7RUFDckQ7QUFDRjtJQUNJLHlCQUF5QjtJQUN6Qiw4REFBOEQ7RUFDaEU7QUFDRjs7RUFFRSx3QkFBd0I7O0FBRTFCO0FBQ0E7O0lBRUksbUJBQW1CO0lBQ25CLFVBQVU7RUFDWjtBQUNGO0lBQ0kscUJBQXFCO0lBQ3JCLHVCQUF1QjtJQUN2QixRQUFRO0lBQ1IsU0FBUztJQUNULHlCQUF5QjtJQUN6QixrR0FBa0c7SUFDbEcsa0JBQWtCO0lBQ2xCLDZEQUE2RDtFQUMvRDtBQUNGOztFQUVFLHNCQUFzQjs7QUFFeEI7QUFDQTtJQUNJLGNBQWM7SUFDZCxxQkFBcUI7RUFDdkI7QUFDRjs7RUFFRSxzREFBc0Q7O0FBRXhEO0FBQ0E7SUFDSSwwQkFBMEI7RUFDNUI7Ozs7RUFJQTtJQUNFLGNBQWMsRUFBRSwrQkFBK0I7RUFDakQ7Ozs7RUFJQTtJQUNFLGNBQWM7SUFDZCx3QkFBd0I7RUFDMUI7O0FBRUY7Ozs7SUFJSSxvQ0FBb0M7RUFDdEM7O0FBRUY7O0VBRUUsNEVBQTRFO0FBQzlFOztBQUVBO0lBQ0kscUJBQXFCO0lBQ3JCLHNCQUFzQjtFQUN4Qjs7QUFFRjtFQUNFLG9DQUFvQztBQUN0QyIsImZpbGUiOiJ2ZW5kb3JzfmFwcC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qIGNsYXNzZXMgYXR0YWNoZWQgdG8gPGJvZHk+ICovXG4vKiBUT0RPOiBtYWtlIGZjLWV2ZW50IHNlbGVjdG9yIHdvcmsgd2hlbiBjYWxlbmRlciBpbiBzaGFkb3cgRE9NICovXG4uZmMtbm90LWFsbG93ZWQsXG4uZmMtbm90LWFsbG93ZWQgLmZjLWV2ZW50IHsgLyogb3ZlcnJpZGUgZXZlbnRzJyBjdXN0b20gY3Vyc29ycyAqL1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4vKiBUT0RPOiBub3QgYXR0YWNoZWQgdG8gYm9keS4gYXR0YWNoZWQgdG8gc3BlY2lmaWMgZWxzLiBtb3ZlICovXG4uZmMtdW5zZWxlY3RhYmxlIHtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lO1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7XG59XG4uZmMge1xuICAvKiBsYXlvdXQgb2YgaW1tZWRpYXRlIGNoaWxkcmVuICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgZm9udC1zaXplOiAxZW1cbn1cbi5mYyxcbiAgLmZjICosXG4gIC5mYyAqOmJlZm9yZSxcbiAgLmZjICo6YWZ0ZXIge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbi5mYyB0YWJsZSB7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgICBib3JkZXItc3BhY2luZzogMDtcbiAgICBmb250LXNpemU6IDFlbTsgLyogbm9ybWFsaXplIGNyb3NzLWJyb3dzZXIgKi9cbiAgfVxuLmZjIHRoIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbi5mYyB0aCxcbiAgLmZjIHRkIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbi5mYyBhW2RhdGEtbmF2bGlua10ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuLmZjIGFbZGF0YS1uYXZsaW5rXTpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIH1cbi5mYy1kaXJlY3Rpb24tbHRyIHtcbiAgZGlyZWN0aW9uOiBsdHI7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG4uZmMtZGlyZWN0aW9uLXJ0bCB7XG4gIGRpcmVjdGlvbjogcnRsO1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cbi5mYy10aGVtZS1zdGFuZGFyZCB0ZCxcbiAgLmZjLXRoZW1lLXN0YW5kYXJkIHRoIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWZjLWJvcmRlci1jb2xvciwgI2RkZCk7XG4gIH1cbi8qIGZvciBGRiwgd2hpY2ggZG9lc24ndCBleHBhbmQgYSAxMDAlIGRpdiB3aXRoaW4gYSB0YWJsZSBjZWxsLiB1c2UgYWJzb2x1dGUgcG9zaXRpb25pbmcgKi9cbi8qIGlubmVyLXdyYXBwZXJzIGFyZSByZXNwb25zaWJsZSBmb3IgYmVpbmcgYWJzb2x1dGUgKi9cbi8qIFRPRE86IGJlc3QgcGxhY2UgZm9yIHRoaXM/ICovXG4uZmMtbGlxdWlkLWhhY2sgdGQsXG4gIC5mYy1saXF1aWQtaGFjayB0aCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ2ZjaWNvbnMnO1xuICBzcmM6IHVybChcImRhdGE6YXBwbGljYXRpb24veC1mb250LXR0ZjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxBQUVBQUFBTEFJQUFBd0F3VDFNdk1nOFNCZkFBQUFDOEFBQUFZR050WVhBWFZ0S05BQUFCSEFBQUFGUm5ZWE53QUFBQUVBQUFBWEFBQUFBSVoyeDVaZ1l5ZHhJQUFBRjRBQUFGTkdobFlXUVVKN2NJQUFBR3JBQUFBRFpvYUdWaEIyMER6QUFBQnVRQUFBQWthRzEwZUNJQUJoUUFBQWNJQUFBQUxHeHZZMkVENEFVNkFBQUhOQUFBQUJodFlYaHdBQThBakFBQUIwd0FBQUFnYm1GdFpYc3I2OTBBQUFkc0FBQUJobkJ2YzNRQUF3QUFBQUFJOUFBQUFDQUFBd1BBQVpBQUJRQUFBcGtDekFBQUFJOENtUUxNQUFBQjZ3QXpBUWtBQUFBQUFBQUFBQUFBQUFBQUFBQUJFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQURwQmdQQS84QUFRQVBBQUVBQUFBQUJBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQURBQUFBQXdBQUFCd0FBUUFEQUFBQUhBQURBQUVBQUFBY0FBUUFPQUFBQUFvQUNBQUNBQUlBQVFBZzZRYi8vZi8vQUFBQUFBQWc2UUQvL2YvL0FBSC80eGNFQUFNQUFRQUFBQUFBQUFBQUFBQUFBUUFCLy84QUR3QUJBQUFBQUFBQUFBQUFBZ0FBTnprQkFBQUFBQUVBQUFBQUFBQUFBQUFDQUFBM09RRUFBQUFBQVFBQUFBQUFBQUFBQUFJQUFEYzVBUUFBQUFBQkFXSUFqUUtlQXNrQUV3QUFKU2MzTmpRbkppSUhBUVlVRndFV01qYzJOQ2NDbnVMaURRME1KQXovQUEwTkFRQU1KQXdORGNuaTRnd2pEUXdNL3dBTkl3ei9BQTBORENNTkFBQUFBUUZpQUkwQ25nTEpBQk1BQUNVQk5qUW5BU1lpQndZVUh3RUhCaFFYRmpJM0FaNEJBQTBOL3dBTUpBd05EZUxpRFEwTUpBeU5BUUFNSXcwQkFBd01EU01NNHVJTkl3d05EUUFBQUFJQTRnQzNBeDRDbmdBVEFDY0FBQ1VuTnpZMEp5WWlEd0VHRkI4QkZqSTNOalFuSVNjM05qUW5KaUlQQVFZVUh3RVdNamMyTkNjQjg3ZTNEUTBNSXczVkRRM1ZEU01NRFEwQks3ZTNEUTBNSkF6VkRRM1ZEQ1FNRFEzenVMY01KQXdORGRVTkl3eldEQXdOSXd5NHR3d2tEQTBOMVEwakROWU1EQTBqREFBQUFnRGlBTGNESGdLZUFCTUFKd0FBSlRjMk5DOEJKaUlIQmhRZkFRY0dGQmNXTWpjaE56WTBMd0VtSWdjR0ZCOEJCd1lVRnhZeU53SkoxUTBOMVEwakRBME50N2NORFF3akRmN1YxUTBOMVF3a0RBME50N2NORFF3a0RMZldEQ01OMVEwTkRDUU10N2dNSXcwTUROWU1JdzNWRFEwTUpBeTN1QXdqRFF3TUFBQURBRlVBQUFPckExVUFNd0JvQUhjQUFCTWlCZ2NPQVFjT0FRY09BUlVSRkJZWEhnRVhIZ0VYSGdFeklUSTJOejRCTno0Qk56NEJOUkUwSmljdUFTY3VBU2N1QVNNRklUSVdGeDRCRng0QkZ4NEJGUkVVQmdjT0FRY09BUWNPQVNNaElpWW5MZ0VuTGdFbkxnRTFFVFEyTno0Qk56NEJOejRCTXhNaE1qWTFOQ1lqSVNJR0ZSUVdNOVVOR0F3TEZRa0pEZ1VGQlFVRkJRNEpDUlVMREJnTkFsWU5HQXdMRlFrSkRnVUZCUVVGQlE0SkNSVUxEQmdOL2FvQ1ZnUUlCQVFIQXdNRkFRSUJBUUlCQlFNREJ3UUVDQVQ5cWdRSUJBUUhBd01GQVFJQkFRSUJCUU1EQndRRUNBU0FBVllSR1JrUi9xb1JHUmtSQTFVRkJBVU9DUWtWREFzWkRmMnJEUmtMREJVSkNBNEZCUVVGQlFVT0NRZ1ZEQXNaRFFKVkRSa0xEQlVKQ1E0RkJBVlZBZ0VDQlFNQ0J3UUVDQVg5cXdRSkF3UUhBd01GQVFJQ0FnSUJCUU1EQndRRENRUUNWUVVJQkFRSEFnTUZBZ0VDL29BWkVoRVpHUkVTR1FBQUFBQURBRlVBQUFPckExVUFNd0JvQUlrQUFCTWlCZ2NPQVFjT0FRY09BUlVSRkJZWEhnRVhIZ0VYSGdFeklUSTJOejRCTno0Qk56NEJOUkUwSmljdUFTY3VBU2N1QVNNRklUSVdGeDRCRng0QkZ4NEJGUkVVQmdjT0FRY09BUWNPQVNNaElpWW5MZ0VuTGdFbkxnRTFFVFEyTno0Qk56NEJOejRCTXhNekZSUVdNekkyUFFFek1qWTFOQ1lyQVRVMEppTWlCaDBCSXlJR0ZSUVdNOVVOR0F3TEZRa0pEZ1VGQlFVRkJRNEpDUlVMREJnTkFsWU5HQXdMRlFrSkRnVUZCUVVGQlE0SkNSVUxEQmdOL2FvQ1ZnUUlCQVFIQXdNRkFRSUJBUUlCQlFNREJ3UUVDQVQ5cWdRSUJBUUhBd01GQVFJQkFRSUJCUU1EQndRRUNBU0FnQmtTRWhtQUVSa1pFWUFaRWhJWmdCRVpHUkVEVlFVRUJRNEpDUlVNQ3hrTi9hc05HUXNNRlFrSURnVUZCUVVGQlE0SkNCVU1DeGtOQWxVTkdRc01GUWtKRGdVRUJWVUNBUUlGQXdJSEJBUUlCZjJyQkFrREJBY0RBd1VCQWdJQ0FnRUZBd01IQkFNSkJBSlZCUWdFQkFjQ0F3VUNBUUwrZ0lBU0dSa1NnQmtTRVJtQUVoa1pFb0FaRVJJWkFBQUJBT0lBalFNZUFza0FJQUFBRXhjSEJoUVhGakkvQVJjV01qYzJOQzhCTnpZMEp5WWlEd0VuSmlJSEJoUVg0dUxpRFEwTUpBemk0Z3drREEwTjR1SU5EUXdrRE9MaURDUU1EUTBDamVMaURTTU1EUTNoNFEwTkRDTU40dUlNSXcwTURPTGlEQXdOSXd3QUFBQUJBQUFBQVFBQWE1bjB5MThQUFBVQUN3UUFBQUFBQU5pdk9Wc0FBQUFBMks4NVd3QUFBQUFEcXdOVkFBQUFDQUFDQUFBQUFBQUFBQUVBQUFQQS84QUFBQVFBQUFBQUFBT3JBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUxCQUFBQUFBQUFBQUFBQUFBQWdBQUFBUUFBV0lFQUFGaUJBQUE0Z1FBQU9JRUFBQlZCQUFBVlFRQUFPSUFBQUFBQUFvQUZBQWVBRVFBYWdDcUFPb0JuZ0prQXBvQUFRQUFBQXNBaWdBREFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE0QXJnQUJBQUFBQUFBQkFBY0FBQUFCQUFBQUFBQUNBQWNBWUFBQkFBQUFBQUFEQUFjQU5nQUJBQUFBQUFBRUFBY0FkUUFCQUFBQUFBQUZBQXNBRlFBQkFBQUFBQUFHQUFjQVN3QUJBQUFBQUFBS0FCb0FpZ0FEQUFFRUNRQUJBQTRBQndBREFBRUVDUUFDQUE0QVp3QURBQUVFQ1FBREFBNEFQUUFEQUFFRUNRQUVBQTRBZkFBREFBRUVDUUFGQUJZQUlBQURBQUVFQ1FBR0FBNEFVZ0FEQUFFRUNRQUtBRFFBcEdaamFXTnZibk1BWmdCakFHa0FZd0J2QUc0QWMxWmxjbk5wYjI0Z01TNHdBRllBWlFCeUFITUFhUUJ2QUc0QUlBQXhBQzRBTUdaamFXTnZibk1BWmdCakFHa0FZd0J2QUc0QWMyWmphV052Ym5NQVpnQmpBR2tBWXdCdkFHNEFjMUpsWjNWc1lYSUFVZ0JsQUdjQWRRQnNBR0VBY21aamFXTnZibk1BWmdCakFHa0FZd0J2QUc0QWMwWnZiblFnWjJWdVpYSmhkR1ZrSUdKNUlFbGpiMDF2YjI0dUFFWUFid0J1QUhRQUlBQm5BR1VBYmdCbEFISUFZUUIwQUdVQVpBQWdBR0lBZVFBZ0FFa0FZd0J2QUUwQWJ3QnZBRzRBTGdBQUFBTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9XCIpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG4uZmMtaWNvbiB7XG4gIC8qIGFkZGVkIGZvciBmYyAqL1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxZW07XG4gIGhlaWdodDogMWVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgLyogdXNlICFpbXBvcnRhbnQgdG8gcHJldmVudCBpc3N1ZXMgd2l0aCBicm93c2VyIGV4dGVuc2lvbnMgdGhhdCBjaGFuZ2UgZm9udHMgKi9cbiAgZm9udC1mYW1pbHk6ICdmY2ljb25zJyAhaW1wb3J0YW50O1xuICBzcGVhazogbm9uZTtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuXG4gIC8qIEJldHRlciBGb250IFJlbmRlcmluZyA9PT09PT09PT09PSAqL1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cblxuLmZjLWljb24tY2hldnJvbi1sZWZ0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlOTAwXCI7XG59XG5cbi5mYy1pY29uLWNoZXZyb24tcmlnaHQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGU5MDFcIjtcbn1cblxuLmZjLWljb24tY2hldnJvbnMtbGVmdDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTkwMlwiO1xufVxuXG4uZmMtaWNvbi1jaGV2cm9ucy1yaWdodDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTkwM1wiO1xufVxuXG4uZmMtaWNvbi1taW51cy1zcXVhcmU6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGU5MDRcIjtcbn1cblxuLmZjLWljb24tcGx1cy1zcXVhcmU6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGU5MDVcIjtcbn1cblxuLmZjLWljb24teDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTkwNlwiO1xufVxuLypcbkxvdHMgdGFrZW4gZnJvbSBGbGF0bHkgKE1JVCk6IGh0dHBzOi8vYm9vdHN3YXRjaC5jb20vNC9mbGF0bHkvYm9vdHN0cmFwLmNzc1xuXG5UaGVzZSBzdHlsZXMgb25seSBhcHBseSB3aGVuIHRoZSBzdGFuZGFyZC10aGVtZSBpcyBhY3RpdmF0ZWQuXG5XaGVuIGl0J3MgTk9UIGFjdGl2YXRlZCwgdGhlIGZjLWJ1dHRvbiBjbGFzc2VzIHdvbid0IGV2ZW4gYmUgaW4gdGhlIERPTS5cbiovXG4uZmMge1xuXG4gIC8qIHJlc2V0ICovXG5cbn1cbi5mYyAuZmMtYnV0dG9uIHtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIH1cbi5mYyAuZmMtYnV0dG9uOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAxcHggZG90dGVkO1xuICAgIG91dGxpbmU6IDVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtcbiAgfVxuLmZjIC5mYy1idXR0b24ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICB9XG4uZmMgLmZjLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG4uZmMgLmZjLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXItc3R5bGU6IG5vbmU7XG4gIH1cbi5mYyB7XG5cbiAgLyogdGhlbWUgKi9cblxufVxuLmZjIC5mYy1idXR0b24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgcGFkZGluZzogMC40ZW0gMC42NWVtO1xuICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgYm9yZGVyLXJhZGl1czogMC4yNWVtO1xuICB9XG4uZmMgLmZjLWJ1dHRvbjpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG4uZmMgLmZjLWJ1dHRvbjpmb2N1cyB7XG4gICAgb3V0bGluZTogMDtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg0NCwgNjIsIDgwLCAwLjI1KTtcbiAgfVxuLmZjIC5mYy1idXR0b246ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuNjU7XG4gIH1cbi5mYyB7XG5cbiAgLyogXCJwcmltYXJ5XCIgY29sb3JpbmcgKi9cblxufVxuLmZjIC5mYy1idXR0b24tcHJpbWFyeSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgY29sb3I6IHZhcigtLWZjLWJ1dHRvbi10ZXh0LWNvbG9yLCAjZmZmKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkMzRTUwO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWZjLWJ1dHRvbi1iZy1jb2xvciwgIzJDM0U1MCk7XG4gICAgYm9yZGVyLWNvbG9yOiAjMkMzRTUwO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZmMtYnV0dG9uLWJvcmRlci1jb2xvciwgIzJDM0U1MCk7XG4gIH1cbi5mYyAuZmMtYnV0dG9uLXByaW1hcnk6aG92ZXIge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGNvbG9yOiB2YXIoLS1mYy1idXR0b24tdGV4dC1jb2xvciwgI2ZmZik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzFlMmIzNztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1mYy1idXR0b24taG92ZXItYmctY29sb3IsICMxZTJiMzcpO1xuICAgIGJvcmRlci1jb2xvcjogIzFhMjUyZjtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWZjLWJ1dHRvbi1ob3Zlci1ib3JkZXItY29sb3IsICMxYTI1MmYpO1xuICB9XG4uZmMgLmZjLWJ1dHRvbi1wcmltYXJ5OmRpc2FibGVkIHsgLyogbm90IERSWSAqL1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGNvbG9yOiB2YXIoLS1mYy1idXR0b24tdGV4dC1jb2xvciwgI2ZmZik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzJDM0U1MDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1mYy1idXR0b24tYmctY29sb3IsICMyQzNFNTApO1xuICAgIGJvcmRlci1jb2xvcjogIzJDM0U1MDtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWZjLWJ1dHRvbi1ib3JkZXItY29sb3IsICMyQzNFNTApOyAvKiBvdmVycmlkZXMgOmhvdmVyICovXG4gIH1cbi5mYyAuZmMtYnV0dG9uLXByaW1hcnk6Zm9jdXMge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDc2LCA5MSwgMTA2LCAwLjUpO1xuICB9XG4uZmMgLmZjLWJ1dHRvbi1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOmFjdGl2ZSxcbiAgLmZjIC5mYy1idXR0b24tcHJpbWFyeTpub3QoOmRpc2FibGVkKS5mYy1idXR0b24tYWN0aXZlIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBjb2xvcjogdmFyKC0tZmMtYnV0dG9uLXRleHQtY29sb3IsICNmZmYpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMxYTI1MmY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZmMtYnV0dG9uLWFjdGl2ZS1iZy1jb2xvciwgIzFhMjUyZik7XG4gICAgYm9yZGVyLWNvbG9yOiAjMTUxZTI3O1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZmMtYnV0dG9uLWFjdGl2ZS1ib3JkZXItY29sb3IsICMxNTFlMjcpO1xuICB9XG4uZmMgLmZjLWJ1dHRvbi1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cyxcbiAgLmZjIC5mYy1idXR0b24tcHJpbWFyeTpub3QoOmRpc2FibGVkKS5mYy1idXR0b24tYWN0aXZlOmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg3NiwgOTEsIDEwNiwgMC41KTtcbiAgfVxuLmZjIHtcblxuICAvKiBpY29ucyB3aXRoaW4gYnV0dG9ucyAqL1xuXG59XG4uZmMgLmZjLWJ1dHRvbiAuZmMtaWNvbiB7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBmb250LXNpemU6IDEuNWVtOyAvKiBidW1wIHVwIHRoZSBzaXplIChidXQgZG9uJ3QgbWFrZSBpdCBiaWdnZXIgdGhhbiBsaW5lLWhlaWdodCBvZiBidXR0b24sIHdoaWNoIGlzIDEuNWVtIGFsc28pICovXG4gIH1cbi5mYyAuZmMtYnV0dG9uLWdyb3VwIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuLmZjIC5mYy1idXR0b24tZ3JvdXAgPiAuZmMtYnV0dG9uIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZmxleDogMSAxIGF1dG87XG4gIH1cbi5mYyAuZmMtYnV0dG9uLWdyb3VwID4gLmZjLWJ1dHRvbjpob3ZlciB7XG4gICAgei1pbmRleDogMTtcbiAgfVxuLmZjIC5mYy1idXR0b24tZ3JvdXAgPiAuZmMtYnV0dG9uOmZvY3VzLFxuICAuZmMgLmZjLWJ1dHRvbi1ncm91cCA+IC5mYy1idXR0b246YWN0aXZlLFxuICAuZmMgLmZjLWJ1dHRvbi1ncm91cCA+IC5mYy1idXR0b24uZmMtYnV0dG9uLWFjdGl2ZSB7XG4gICAgei1pbmRleDogMTtcbiAgfVxuLmZjLWRpcmVjdGlvbi1sdHIgLmZjLWJ1dHRvbi1ncm91cCA+IC5mYy1idXR0b246bm90KDpmaXJzdC1jaGlsZCkge1xuICAgIG1hcmdpbi1sZWZ0OiAtMXB4O1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgfVxuLmZjLWRpcmVjdGlvbi1sdHIgLmZjLWJ1dHRvbi1ncm91cCA+IC5mYy1idXR0b246bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gIH1cbi5mYy1kaXJlY3Rpb24tcnRsIC5mYy1idXR0b24tZ3JvdXAgPiAuZmMtYnV0dG9uOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0xcHg7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gIH1cbi5mYy1kaXJlY3Rpb24tcnRsIC5mYy1idXR0b24tZ3JvdXAgPiAuZmMtYnV0dG9uOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgfVxuLmZjIC5mYy10b29sYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG4uZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIge1xuICAgIG1hcmdpbi1ib3R0b206IDEuNWVtO1xuICB9XG4uZmMgLmZjLXRvb2xiYXIuZmMtZm9vdGVyLXRvb2xiYXIge1xuICAgIG1hcmdpbi10b3A6IDEuNWVtO1xuICB9XG4uZmMgLmZjLXRvb2xiYXItdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMS43NWVtO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuLmZjLWRpcmVjdGlvbi1sdHIgLmZjLXRvb2xiYXIgPiAqID4gOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICBtYXJnaW4tbGVmdDogLjc1ZW07IC8qIHNwYWNlIGJldHdlZW4gKi9cbiAgfVxuLmZjLWRpcmVjdGlvbi1ydGwgLmZjLXRvb2xiYXIgPiAqID4gOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICBtYXJnaW4tcmlnaHQ6IC43NWVtOyAvKiBzcGFjZSBiZXR3ZWVuICovXG4gIH1cbi5mYy1kaXJlY3Rpb24tcnRsIC5mYy10b29sYmFyLWx0ciB7IC8qIHdoZW4gdGhlIHRvb2xiYXItY2h1bmsgcG9zaXRpb25pbmcgc3lzdGVtIGlzIGV4cGxpY2l0bHkgbGVmdC10by1yaWdodCAqL1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgfVxuLmZjIC5mYy1zY3JvbGxlciB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogZm9yIGFicy1wb3NpdGlvbmVkIGVsZW1lbnRzIHdpdGhpbiAqL1xuICB9XG4uZmMgLmZjLXNjcm9sbGVyLWxpcXVpZCB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG4uZmMgLmZjLXNjcm9sbGVyLWxpcXVpZC1hYnNvbHV0ZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgfVxuLmZjIC5mYy1zY3JvbGxlci1oYXJuZXNzIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBkaXJlY3Rpb246IGx0cjtcbiAgICAgIC8qIGhhY2sgZm9yIGNocm9tZSBjb21wdXRpbmcgdGhlIHNjcm9sbGVyJ3MgcmlnaHQvbGVmdCB3cm9uZyBmb3IgcnRsLiB1bmRvbmUgYmVsb3cuLi4gKi9cbiAgICAgIC8qIFRPRE86IGRlbW9uc3RyYXRlIGluIGNvZGVwZW4gKi9cbiAgfVxuLmZjIC5mYy1zY3JvbGxlci1oYXJuZXNzLWxpcXVpZCB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG4uZmMtZGlyZWN0aW9uLXJ0bCAuZmMtc2Nyb2xsZXItaGFybmVzcyA+IC5mYy1zY3JvbGxlciB7IC8qIHVuZG8gYWJvdmUgaGFjayAqL1xuICAgIGRpcmVjdGlvbjogcnRsO1xuICB9XG4uZmMtdGhlbWUtc3RhbmRhcmQgLmZjLXNjcm9sbGdyaWQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZmMtYm9yZGVyLWNvbG9yLCAjZGRkKTsgLyogYm9vdHN0cmFwIGRvZXMgdGhpcy4gbWF0Y2ggKi9cbiAgfVxuLmZjIC5mYy1zY3JvbGxncmlkLFxuICAgIC5mYyAuZmMtc2Nyb2xsZ3JpZCB0YWJsZSB7IC8qIGFsbCB0YWJsZXMgKHNlbGYgaW5jbHVkZWQpICovXG4gICAgICB3aWR0aDogMTAwJTsgLyogYmVjYXVzZSB0YWJsZXMgZG9uJ3Qgbm9ybWFsbHkgZG8gdGhpcyAqL1xuICAgICAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbiAgICB9XG4uZmMgLmZjLXNjcm9sbGdyaWQgdGFibGUgeyAvKiBpbm5lciB0YWJsZXMgKi9cbiAgICAgIGJvcmRlci10b3Atc3R5bGU6IGhpZGRlbjtcbiAgICAgIGJvcmRlci1sZWZ0LXN0eWxlOiBoaWRkZW47XG4gICAgICBib3JkZXItcmlnaHQtc3R5bGU6IGhpZGRlbjtcbiAgICB9XG4uZmMgLmZjLXNjcm9sbGdyaWQge1xuXG4gICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTtcbiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcblxuICB9XG4uZmMgLmZjLXNjcm9sbGdyaWQtbGlxdWlkIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbi5mYyAuZmMtc2Nyb2xsZ3JpZC1zZWN0aW9uIHsgLyogYSA8dHI+ICovXG4gICAgaGVpZ2h0OiAxcHggLyogYmV0dGVyIHRoYW4gMCwgZm9yIGZpcmVmb3ggKi9cblxuICB9XG4uZmMgLmZjLXNjcm9sbGdyaWQtc2VjdGlvbiA+IHRkIHtcbiAgICAgIGhlaWdodDogMXB4OyAvKiBuZWVkcyBhIGhlaWdodCBzbyBpbm5lciBkaXYgd2l0aGluIGdyb3cuIGJldHRlciB0aGFuIDAsIGZvciBmaXJlZm94ICovXG4gICAgfVxuLmZjIC5mYy1zY3JvbGxncmlkLXNlY3Rpb24gdGFibGUge1xuICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgIC8qIGZvciBtb3N0IGJyb3dzZXJzLCBpZiBhIGhlaWdodCBpc24ndCBzZXQgb24gdGhlIHRhYmxlLCBjYW4ndCBkbyBsaXF1aWQtaGVpZ2h0IHdpdGhpbiBjZWxscyAqL1xuICAgICAgICAvKiBzZXJ2ZXMgYXMgYSBtaW4taGVpZ2h0LiBoYXJtbGVzcyAqL1xuICAgIH1cbi5mYyAuZmMtc2Nyb2xsZ3JpZC1zZWN0aW9uLWxpcXVpZCA+IHRkIHtcbiAgICAgIGhlaWdodDogMTAwJTsgLyogYmV0dGVyIHRoYW4gYGF1dG9gLCBmb3IgZmlyZWZveCAqL1xuICAgIH1cbi5mYyAuZmMtc2Nyb2xsZ3JpZC1zZWN0aW9uID4gKiB7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgfVxuLmZjIC5mYy1zY3JvbGxncmlkLXNlY3Rpb24taGVhZGVyID4gKixcbiAgLmZjIC5mYy1zY3JvbGxncmlkLXNlY3Rpb24tZm9vdGVyID4gKiB7XG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgfVxuLmZjIC5mYy1zY3JvbGxncmlkLXNlY3Rpb24tYm9keSB0YWJsZSxcbiAgLmZjIC5mYy1zY3JvbGxncmlkLXNlY3Rpb24tZm9vdGVyIHRhYmxlIHtcbiAgICBib3JkZXItYm90dG9tLXN0eWxlOiBoaWRkZW47IC8qIGhlYWQga2VlcHMgaXRzIGJvdHRvbSBib3JkZXIgdGhvICovXG4gIH1cbi5mYyB7XG5cbiAgLyogc3RpY2tpbmVzcyAqL1xuXG59XG4uZmMgLmZjLXNjcm9sbGdyaWQtc2VjdGlvbi1zdGlja3kgPiAqIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWZjLXBhZ2UtYmctY29sb3IsICNmZmYpO1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgei1pbmRleDogMzsgLyogVE9ETzogdmFyICovXG4gICAgLyogVE9ETzogYm94LXNoYWRvdyB3aGVuIHN0aWNraW5nICovXG4gIH1cbi5mYyAuZmMtc2Nyb2xsZ3JpZC1zZWN0aW9uLWhlYWRlci5mYy1zY3JvbGxncmlkLXNlY3Rpb24tc3RpY2t5ID4gKiB7XG4gICAgdG9wOiAwOyAvKiBiZWNhdXNlIGJvcmRlci1zaGFyaW5nIGNhdXNlcyBhIGdhcCBhdCB0aGUgdG9wICovXG4gICAgICAvKiBUT0RPOiBnaXZlIHNhZmFyaSAtMS4gaGFzIGJ1ZyAqL1xuICB9XG4uZmMgLmZjLXNjcm9sbGdyaWQtc2VjdGlvbi1mb290ZXIuZmMtc2Nyb2xsZ3JpZC1zZWN0aW9uLXN0aWNreSA+ICoge1xuICAgIGJvdHRvbTogMDsgLyoga25vd24gYnVnOiBib3R0b20tc3RpY2tpbmVzcyBkb2Vzbid0IHdvcmsgaW4gc2FmYXJpICovXG4gIH1cbi5mYyAuZmMtc2Nyb2xsZ3JpZC1zdGlja3ktc2hpbSB7IC8qIGZvciBob3Jpem9udGFsIHNjcm9sbGJhciAqL1xuICAgIGhlaWdodDogMXB4OyAvKiBuZWVkcyBoZWlnaHQgdG8gY3JlYXRlIHNjcm9sbGJhcnMgKi9cbiAgICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICB9XG4uZmMtc3RpY2t5IHsgLyogbm8gLmZjIHdyYXAgYmVjYXVzZSB1c2VkIGFzIGNoaWxkIG9mIGJvZHkgKi9cbiAgcG9zaXRpb246IHN0aWNreTtcbn1cbi5mYyAuZmMtdmlldy1oYXJuZXNzIHtcbiAgICBmbGV4LWdyb3c6IDE7IC8qIGJlY2F1c2UgdGhpcyBoYXJuZXNzIGlzIFdJVEhJTiB0aGUgLmZjJ3MgZmxleGJveCAqL1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuLmZjIHtcblxuICAvKiB3aGVuIHRoZSBoYXJuZXNzIGNvbnRyb2xzIHRoZSBoZWlnaHQsIG1ha2UgdGhlIHZpZXcgbGlxdWlkICovXG5cbn1cbi5mYyAuZmMtdmlldy1oYXJuZXNzLWFjdGl2ZSA+IC5mYy12aWV3IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICB9XG4uZmMgLmZjLWNvbC1oZWFkZXItY2VsbC1jdXNoaW9uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIHgtYnJvd3NlciBmb3Igd2hlbiBzdGlja3kgKHdoZW4gbXVsdGktdGllciBoZWFkZXIpICovXG4gICAgcGFkZGluZzogMnB4IDRweDtcbiAgfVxuLmZjIC5mYy1iZy1ldmVudCxcbiAgLmZjIC5mYy1ub24tYnVzaW5lc3MsXG4gIC5mYyAuZmMtaGlnaGxpZ2h0IHtcbiAgICAvKiB3aWxsIGFsd2F5cyBoYXZlIGEgaGFybmVzcyB3aXRoIHBvc2l0aW9uOnJlbGF0aXZlL2Fic29sdXRlLCBzbyBhYnNvbHV0ZWx5IGV4cGFuZCAqL1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gIH1cbi5mYyAuZmMtbm9uLWJ1c2luZXNzIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIxNSwgMjE1LCAyMTUsIDAuMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZmMtbm9uLWJ1c2luZXNzLWNvbG9yLCByZ2JhKDIxNSwgMjE1LCAyMTUsIDAuMykpO1xuICB9XG4uZmMgLmZjLWJnLWV2ZW50IHtcbiAgICBiYWNrZ3JvdW5kOiByZ2IoMTQzLCAyMjMsIDEzMCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZmMtYmctZXZlbnQtY29sb3IsIHJnYigxNDMsIDIyMywgMTMwKSk7XG4gICAgb3BhY2l0eTogMC4zO1xuICAgIG9wYWNpdHk6IHZhcigtLWZjLWJnLWV2ZW50LW9wYWNpdHksIDAuMylcbiAgfVxuLmZjIC5mYy1iZy1ldmVudCAuZmMtZXZlbnQtdGl0bGUge1xuICAgICAgbWFyZ2luOiAuNWVtO1xuICAgICAgZm9udC1zaXplOiAuODVlbTtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZmMtc21hbGwtZm9udC1zaXplLCAuODVlbSk7XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgfVxuLmZjIC5mYy1oaWdobGlnaHQge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTg4LCAyMzIsIDI0MSwgMC4zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1mYy1oaWdobGlnaHQtY29sb3IsIHJnYmEoMTg4LCAyMzIsIDI0MSwgMC4zKSk7XG4gIH1cbi5mYyAuZmMtY2VsbC1zaGFkZWQsXG4gIC5mYyAuZmMtZGF5LWRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIwOCwgMjA4LCAyMDgsIDAuMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZmMtbmV1dHJhbC1iZy1jb2xvciwgcmdiYSgyMDgsIDIwOCwgMjA4LCAwLjMpKTtcbiAgfVxuLyogbGluayByZXNldHMgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbmEuZmMtZXZlbnQsXG5hLmZjLWV2ZW50OmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLyogY3Vyc29yICovXG4uZmMtZXZlbnRbaHJlZl0sXG4uZmMtZXZlbnQuZmMtZXZlbnQtZHJhZ2dhYmxlIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLyogZXZlbnQgdGV4dCBjb250ZW50ICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4uZmMtZXZlbnQgLmZjLWV2ZW50LW1haW4ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAyO1xuICB9XG4vKiBkcmFnZ2luZyAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLmZjLWV2ZW50LWRyYWdnaW5nOm5vdCguZmMtZXZlbnQtc2VsZWN0ZWQpIHsgLyogTU9VU0UgKi9cbiAgICBvcGFjaXR5OiAwLjc1O1xuICB9XG4uZmMtZXZlbnQtZHJhZ2dpbmcuZmMtZXZlbnQtc2VsZWN0ZWQgeyAvKiBUT1VDSCAqL1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gIH1cbi8qIHJlc2l6aW5nICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAoc3ViY2xhc3NlcyBzaG91bGQgaG9uZSBwb3NpdGlvbmluZyBmb3IgdG91Y2ggYW5kIG5vbi10b3VjaCkgKi9cbi5mYy1ldmVudCAuZmMtZXZlbnQtcmVzaXplciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogNDtcbiAgfVxuLmZjLWV2ZW50OmhvdmVyLCAvKiBNT1VTRSAqL1xuLmZjLWV2ZW50LXNlbGVjdGVkIHsgLyogVE9VQ0ggKi9cblxufVxuLmZjLWV2ZW50OmhvdmVyIC5mYy1ldmVudC1yZXNpemVyLCAuZmMtZXZlbnQtc2VsZWN0ZWQgLmZjLWV2ZW50LXJlc2l6ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG4uZmMtZXZlbnQtc2VsZWN0ZWQgLmZjLWV2ZW50LXJlc2l6ZXIge1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBib3JkZXItcmFkaXVzOiBjYWxjKHZhcigtLWZjLWV2ZW50LXJlc2l6ZXItZG90LXRvdGFsLXdpZHRoLCA4cHgpIC8gMik7XG4gICAgYm9yZGVyLXdpZHRoOiAxcHg7XG4gICAgYm9yZGVyLXdpZHRoOiB2YXIoLS1mYy1ldmVudC1yZXNpemVyLWRvdC1ib3JkZXItd2lkdGgsIDFweCk7XG4gICAgd2lkdGg6IDhweDtcbiAgICB3aWR0aDogdmFyKC0tZmMtZXZlbnQtcmVzaXplci1kb3QtdG90YWwtd2lkdGgsIDhweCk7XG4gICAgaGVpZ2h0OiA4cHg7XG4gICAgaGVpZ2h0OiB2YXIoLS1mYy1ldmVudC1yZXNpemVyLWRvdC10b3RhbC13aWR0aCwgOHB4KTtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogaW5oZXJpdDtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWZjLXBhZ2UtYmctY29sb3IsICNmZmYpXG5cbiAgICAvKiBleHBhbmQgaGl0IGFyZWEgKi9cblxuICB9XG4uZmMtZXZlbnQtc2VsZWN0ZWQgLmZjLWV2ZW50LXJlc2l6ZXI6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAtMjBweDtcbiAgICAgIGxlZnQ6IC0yMHB4O1xuICAgICAgcmlnaHQ6IC0yMHB4O1xuICAgICAgYm90dG9tOiAtMjBweDtcbiAgICB9XG4vKiBzZWxlY3RpbmcgKGFsd2F5cyBUT1VDSCkgKi9cbi8qIE9SLCBmb2N1c2VkIGJ5IHRhYi1pbmRleCAqL1xuLyogKFRPRE86IG1heWJlIG5vdCB0aGUgYmVzdCBmb2N1cy1zdHlsaW5nIGZvciAuZmMtZGF5Z3JpZC1kb3QtZXZlbnQpICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4uZmMtZXZlbnQtc2VsZWN0ZWQsXG4uZmMtZXZlbnQ6Zm9jdXMge1xuICBib3gtc2hhZG93OiAwIDJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjIpXG5cbiAgLyogZXhwYW5kIGhpdCBhcmVhIChzdWJjbGFzc2VzIHNob3VsZCBleHBhbmQpICovXG5cbn1cbi5mYy1ldmVudC1zZWxlY3RlZDpiZWZvcmUsIC5mYy1ldmVudDpmb2N1czpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDM7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICB9XG4uZmMtZXZlbnQtc2VsZWN0ZWQsXG4uZmMtZXZlbnQ6Zm9jdXMge1xuXG4gIC8qIGRpbW1lciBlZmZlY3QgKi9cblxufVxuLmZjLWV2ZW50LXNlbGVjdGVkOmFmdGVyLCAuZmMtZXZlbnQ6Zm9jdXM6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1mYy1ldmVudC1zZWxlY3RlZC1vdmVybGF5LWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMjUpKTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogMTtcblxuICAgIC8qIGFzc3VtZSB0aGVyZSdzIGEgYm9yZGVyIG9uIGFsbCBzaWRlcy4gb3ZlcmNvbWUgaXQuICovXG4gICAgLyogc29tZXRpbWVzIHRoZXJlJ3MgTk9UIGEgYm9yZGVyLCBpbiB3aGljaCBjYXNlIHRoZSBkaW1tZXIgd2lsbCBnbyBvdmVyICovXG4gICAgLyogYW4gYWRqYWNlbnQgYm9yZGVyLCB3aGljaCBsb29rcyBmaW5lLiAqL1xuICAgIHRvcDogLTFweDtcbiAgICBsZWZ0OiAtMXB4O1xuICAgIHJpZ2h0OiAtMXB4O1xuICAgIGJvdHRvbTogLTFweDtcbiAgfVxuLypcbkEgSE9SSVpPTlRBTCBldmVudFxuKi9cbi5mYy1oLWV2ZW50IHsgLyogYWxsb3dlZCB0byBiZSB0b3AtbGV2ZWwgKi9cbiAgZGlzcGxheTogYmxvY2s7XG4gIGJvcmRlcjogMXB4IHNvbGlkICMzNzg4ZDg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWZjLWV2ZW50LWJvcmRlci1jb2xvciwgIzM3ODhkOCk7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNzg4ZDg7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWZjLWV2ZW50LWJnLWNvbG9yLCAjMzc4OGQ4KVxuXG59XG4uZmMtaC1ldmVudCAuZmMtZXZlbnQtbWFpbiB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgY29sb3I6IHZhcigtLWZjLWV2ZW50LXRleHQtY29sb3IsICNmZmYpO1xuICB9XG4uZmMtaC1ldmVudCAuZmMtZXZlbnQtbWFpbi1mcmFtZSB7XG4gICAgZGlzcGxheTogZmxleDsgLyogZm9yIG1ha2UgZmMtZXZlbnQtdGl0bGUtY29udGFpbmVyIGV4cGFuZCAqL1xuICB9XG4uZmMtaC1ldmVudCAuZmMtZXZlbnQtdGltZSB7XG4gICAgbWF4LXdpZHRoOiAxMDAlOyAvKiBjbGlwIG92ZXJmbG93IG9uIHRoaXMgZWxlbWVudCAqL1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbi5mYy1oLWV2ZW50IC5mYy1ldmVudC10aXRsZS1jb250YWluZXIgeyAvKiBzZXJ2ZXMgYXMgYSBjb250YWluZXIgZm9yIHRoZSBzdGlja3kgY3VzaGlvbiAqL1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBmbGV4LXNocmluazogMTtcbiAgICBtaW4td2lkdGg6IDA7IC8qIGltcG9ydGFudCBmb3IgYWxsb3dpbmcgdG8gc2hyaW5rIGFsbCB0aGUgd2F5ICovXG4gIH1cbi5mYy1oLWV2ZW50IC5mYy1ldmVudC10aXRsZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvKiBuZWVkIHRoaXMgdG8gYmUgc3RpY2t5IGNyb3NzLWJyb3dzZXIgKi9cbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOyAvKiBmb3Igbm90IG1lc3NpbmcgdXAgbGluZS1oZWlnaHQgKi9cbiAgICBsZWZ0OiAwOyAgLyogZm9yIHN0aWNreSAqL1xuICAgIHJpZ2h0OiAwOyAvKiBmb3Igc3RpY2t5ICovXG4gICAgbWF4LXdpZHRoOiAxMDAlOyAvKiBjbGlwIG92ZXJmbG93IG9uIHRoaXMgZWxlbWVudCAqL1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbi5mYy1oLWV2ZW50LmZjLWV2ZW50LXNlbGVjdGVkOmJlZm9yZSB7XG4gICAgLyogZXhwYW5kIGhpdCBhcmVhICovXG4gICAgdG9wOiAtMTBweDtcbiAgICBib3R0b206IC0xMHB4O1xuICB9XG4vKiBhZGp1c3QgYm9yZGVyIGFuZCBib3JkZXItcmFkaXVzIChpZiB0aGVyZSBpcyBhbnkpIGZvciBub24tc3RhcnQvZW5kICovXG4uZmMtZGlyZWN0aW9uLWx0ciAuZmMtZGF5Z3JpZC1ibG9jay1ldmVudDpub3QoLmZjLWV2ZW50LXN0YXJ0KSxcbi5mYy1kaXJlY3Rpb24tcnRsIC5mYy1kYXlncmlkLWJsb2NrLWV2ZW50Om5vdCguZmMtZXZlbnQtZW5kKSB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xufVxuLmZjLWRpcmVjdGlvbi1sdHIgLmZjLWRheWdyaWQtYmxvY2stZXZlbnQ6bm90KC5mYy1ldmVudC1lbmQpLFxuLmZjLWRpcmVjdGlvbi1ydGwgLmZjLWRheWdyaWQtYmxvY2stZXZlbnQ6bm90KC5mYy1ldmVudC1zdGFydCkge1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gIGJvcmRlci1yaWdodC13aWR0aDogMDtcbn1cbi8qIHJlc2l6ZXJzICovXG4uZmMtaC1ldmVudDpub3QoLmZjLWV2ZW50LXNlbGVjdGVkKSAuZmMtZXZlbnQtcmVzaXplciB7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogOHB4O1xuICB3aWR0aDogdmFyKC0tZmMtZXZlbnQtcmVzaXplci10aGlja25lc3MsIDhweCk7XG59XG4uZmMtZGlyZWN0aW9uLWx0ciAuZmMtaC1ldmVudDpub3QoLmZjLWV2ZW50LXNlbGVjdGVkKSAuZmMtZXZlbnQtcmVzaXplci1zdGFydCxcbi5mYy1kaXJlY3Rpb24tcnRsIC5mYy1oLWV2ZW50Om5vdCguZmMtZXZlbnQtc2VsZWN0ZWQpIC5mYy1ldmVudC1yZXNpemVyLWVuZCB7XG4gIGN1cnNvcjogdy1yZXNpemU7XG4gIGxlZnQ6IC00cHg7XG4gIGxlZnQ6IGNhbGMoLTAuNSAqIHZhcigtLWZjLWV2ZW50LXJlc2l6ZXItdGhpY2tuZXNzLCA4cHgpKTtcbn1cbi5mYy1kaXJlY3Rpb24tbHRyIC5mYy1oLWV2ZW50Om5vdCguZmMtZXZlbnQtc2VsZWN0ZWQpIC5mYy1ldmVudC1yZXNpemVyLWVuZCxcbi5mYy1kaXJlY3Rpb24tcnRsIC5mYy1oLWV2ZW50Om5vdCguZmMtZXZlbnQtc2VsZWN0ZWQpIC5mYy1ldmVudC1yZXNpemVyLXN0YXJ0IHtcbiAgY3Vyc29yOiBlLXJlc2l6ZTtcbiAgcmlnaHQ6IC00cHg7XG4gIHJpZ2h0OiBjYWxjKC0wLjUgKiB2YXIoLS1mYy1ldmVudC1yZXNpemVyLXRoaWNrbmVzcywgOHB4KSk7XG59XG4vKiByZXNpemVycyBmb3IgVE9VQ0ggKi9cbi5mYy1oLWV2ZW50LmZjLWV2ZW50LXNlbGVjdGVkIC5mYy1ldmVudC1yZXNpemVyIHtcbiAgdG9wOiA1MCU7XG4gIG1hcmdpbi10b3A6IC00cHg7XG4gIG1hcmdpbi10b3A6IGNhbGMoLTAuNSAqIHZhcigtLWZjLWV2ZW50LXJlc2l6ZXItZG90LXRvdGFsLXdpZHRoLCA4cHgpKTtcbn1cbi5mYy1kaXJlY3Rpb24tbHRyIC5mYy1oLWV2ZW50LmZjLWV2ZW50LXNlbGVjdGVkIC5mYy1ldmVudC1yZXNpemVyLXN0YXJ0LFxuLmZjLWRpcmVjdGlvbi1ydGwgLmZjLWgtZXZlbnQuZmMtZXZlbnQtc2VsZWN0ZWQgLmZjLWV2ZW50LXJlc2l6ZXItZW5kIHtcbiAgbGVmdDogLTRweDtcbiAgbGVmdDogY2FsYygtMC41ICogdmFyKC0tZmMtZXZlbnQtcmVzaXplci1kb3QtdG90YWwtd2lkdGgsIDhweCkpO1xufVxuLmZjLWRpcmVjdGlvbi1sdHIgLmZjLWgtZXZlbnQuZmMtZXZlbnQtc2VsZWN0ZWQgLmZjLWV2ZW50LXJlc2l6ZXItZW5kLFxuLmZjLWRpcmVjdGlvbi1ydGwgLmZjLWgtZXZlbnQuZmMtZXZlbnQtc2VsZWN0ZWQgLmZjLWV2ZW50LXJlc2l6ZXItc3RhcnQge1xuICByaWdodDogLTRweDtcbiAgcmlnaHQ6IGNhbGMoLTAuNSAqIHZhcigtLWZjLWV2ZW50LXJlc2l6ZXItZG90LXRvdGFsLXdpZHRoLCA4cHgpKTtcbn1cbi5mYyAuZmMtcG9wb3ZlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDk5OTk7XG4gICAgYm94LXNoYWRvdzogMCAycHggNnB4IHJnYmEoMCwwLDAsLjE1KTtcbiAgfVxuLmZjIC5mYy1wb3BvdmVyLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDNweCA0cHg7XG4gIH1cbi5mYyAuZmMtcG9wb3Zlci10aXRsZSB7XG4gICAgbWFyZ2luOiAwIDJweDtcbiAgfVxuLmZjIC5mYy1wb3BvdmVyLWNsb3NlIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgb3BhY2l0eTogMC42NTtcbiAgICBmb250LXNpemU6IDEuMWVtO1xuICB9XG4uZmMtdGhlbWUtc3RhbmRhcmQgLmZjLXBvcG92ZXIge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZmMtYm9yZGVyLWNvbG9yLCAjZGRkKTtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWZjLXBhZ2UtYmctY29sb3IsICNmZmYpO1xuICB9XG4uZmMtdGhlbWUtc3RhbmRhcmQgLmZjLXBvcG92ZXItaGVhZGVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIwOCwgMjA4LCAyMDgsIDAuMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZmMtbmV1dHJhbC1iZy1jb2xvciwgcmdiYSgyMDgsIDIwOCwgMjA4LCAwLjMpKTtcbiAgfVxuXG5cbjpyb290IHtcbiAgLS1mYy1kYXlncmlkLWV2ZW50LWRvdC13aWR0aDogOHB4O1xufVxuLyogaGVscCB0aGluZ3MgY2xlYXIgbWFyZ2lucyBvZiBpbm5lciBjb250ZW50ICovXG4uZmMtZGF5Z3JpZC1kYXktZnJhbWUsXG4uZmMtZGF5Z3JpZC1kYXktZXZlbnRzLFxuLmZjLWRheWdyaWQtZXZlbnQtaGFybmVzcyB7IC8qIGZvciBldmVudCB0b3AvYm90dG9tIG1hcmdpbnMgKi9cbn1cbi5mYy1kYXlncmlkLWRheS1mcmFtZTpiZWZvcmUsIC5mYy1kYXlncmlkLWRheS1ldmVudHM6YmVmb3JlLCAuZmMtZGF5Z3JpZC1ldmVudC1oYXJuZXNzOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGNsZWFyOiBib3RoO1xuICBkaXNwbGF5OiB0YWJsZTsgfVxuLmZjLWRheWdyaWQtZGF5LWZyYW1lOmFmdGVyLCAuZmMtZGF5Z3JpZC1kYXktZXZlbnRzOmFmdGVyLCAuZmMtZGF5Z3JpZC1ldmVudC1oYXJuZXNzOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgY2xlYXI6IGJvdGg7XG4gIGRpc3BsYXk6IHRhYmxlOyB9XG4uZmMgLmZjLWRheWdyaWQtYm9keSB7IC8qIGEgPGRpdj4gdGhhdCB3cmFwcyB0aGUgdGFibGUgKi9cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTsgLyogY29udGFpbmVyIGlubmVyIHotaW5kZXgncyBiZWNhdXNlIDx0cj5zIGNhbid0IGRvIGl0ICovXG4gIH1cbi5mYyAuZmMtZGF5Z3JpZC1kYXkuZmMtZGF5LXRvZGF5IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyMjAsIDQwLCAwLjE1KTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWZjLXRvZGF5LWJnLWNvbG9yLCByZ2JhKDI1NSwgMjIwLCA0MCwgMC4xNSkpO1xuICAgIH1cbi5mYyAuZmMtZGF5Z3JpZC1kYXktZnJhbWUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlOyAvKiBzZWVtcyB0byB3b3JrIGJldHRlciB0aGFuIGBoZWlnaHRgIGJlY2F1c2Ugc2V0cyBoZWlnaHQgYWZ0ZXIgcm93cy9jZWxscyBuYXR1cmFsbHkgZG8gaXQgKi9cbiAgfVxuLmZjIHtcblxuICAvKiBjZWxsIHRvcCAqL1xuXG59XG4uZmMgLmZjLWRheWdyaWQtZGF5LXRvcCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG4gIH1cbi5mYyAuZmMtZGF5LW90aGVyIC5mYy1kYXlncmlkLWRheS10b3Age1xuICAgIG9wYWNpdHk6IDAuMztcbiAgfVxuLmZjIHtcblxuICAvKiBkYXkgbnVtYmVyICh3aXRoaW4gY2VsbCB0b3ApICovXG5cbn1cbi5mYyAuZmMtZGF5Z3JpZC1kYXktbnVtYmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogNDtcbiAgICBwYWRkaW5nOiA0cHg7XG4gIH1cbi5mYyB7XG5cbiAgLyogZXZlbnQgY29udGFpbmVyICovXG5cbn1cbi5mYyAuZmMtZGF5Z3JpZC1kYXktZXZlbnRzIHtcbiAgICBtYXJnaW4tdG9wOiAxcHg7IC8qIG5lZWRzIHRvIGJlIG1hcmdpbiwgbm90IHBhZGRpbmcsIHNvIHRoYXQgYXZhaWxhYmxlIGNlbGwgaGVpZ2h0IGNhbiBiZSBjb21wdXRlZCAqL1xuICB9XG4uZmMge1xuXG4gIC8qIHBvc2l0aW9uaW5nIGZvciBiYWxhbmNlZCB2cyBuYXR1cmFsICovXG5cbn1cbi5mYyAuZmMtZGF5Z3JpZC1ib2R5LWJhbGFuY2VkIC5mYy1kYXlncmlkLWRheS1ldmVudHMge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgbGVmdDogMDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgIH1cbi5mYyAuZmMtZGF5Z3JpZC1ib2R5LXVuYmFsYW5jZWQgLmZjLWRheWdyaWQtZGF5LWV2ZW50cyB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IC8qIGZvciBjb250YWluaW5nIGFicyBwb3NpdGlvbmVkIGV2ZW50IGhhcm5lc3NlcyAqL1xuICAgICAgbWluLWhlaWdodDogMmVtOyAvKiBpbiBhZGRpdGlvbiB0byBiZWluZyBhIG1pbi1oZWlnaHQgZHVyaW5nIG5hdHVyYWwgaGVpZ2h0LCBlcXVhbGl6ZXMgdGhlIGhlaWdodHMgYSBsaXR0bGUgYml0ICovXG4gICAgfVxuLmZjIC5mYy1kYXlncmlkLWJvZHktbmF0dXJhbCB7IC8qIGNhbiBjb2V4aXN0IHdpdGggLXVuYmFsYW5jZWQgKi9cbiAgfVxuLmZjIC5mYy1kYXlncmlkLWJvZHktbmF0dXJhbCAuZmMtZGF5Z3JpZC1kYXktZXZlbnRzIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgICB9XG4uZmMge1xuXG4gIC8qIGV2ZW50IGhhcm5lc3MgKi9cblxufVxuLmZjIC5mYy1kYXlncmlkLWV2ZW50LWhhcm5lc3Mge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuLmZjIC5mYy1kYXlncmlkLWV2ZW50LWhhcm5lc3MtYWJzIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwOyAvKiBmYWxsYmFjayBjb29yZHMgZm9yIHdoZW4gY2Fubm90IHlldCBiZSBjb21wdXRlZCAqL1xuICAgIGxlZnQ6IDA7IC8qICovXG4gICAgcmlnaHQ6IDA7IC8qICovXG4gIH1cbi5mYyAuZmMtZGF5Z3JpZC1iZy1oYXJuZXNzIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgfVxuLmZjIHtcblxuICAvKiBiZyBjb250ZW50ICovXG5cbn1cbi5mYyAuZmMtZGF5Z3JpZC1kYXktYmcgLmZjLW5vbi1idXNpbmVzcyB7IHotaW5kZXg6IDEgfVxuLmZjIC5mYy1kYXlncmlkLWRheS1iZyAuZmMtYmctZXZlbnQgeyB6LWluZGV4OiAyIH1cbi5mYyAuZmMtZGF5Z3JpZC1kYXktYmcgLmZjLWhpZ2hsaWdodCB7IHotaW5kZXg6IDMgfVxuLmZjIHtcblxuICAvKiBldmVudHMgKi9cblxufVxuLmZjIC5mYy1kYXlncmlkLWV2ZW50IHtcbiAgICB6LWluZGV4OiA2O1xuICAgIG1hcmdpbi10b3A6IDFweDtcbiAgfVxuLmZjIC5mYy1kYXlncmlkLWV2ZW50LmZjLWV2ZW50LW1pcnJvciB7XG4gICAgei1pbmRleDogNztcbiAgfVxuLmZjIHtcblxuICAvKiBjZWxsIGJvdHRvbSAod2l0aGluIGRheS1ldmVudHMpICovXG5cbn1cbi5mYyAuZmMtZGF5Z3JpZC1kYXktYm90dG9tIHtcbiAgICBmb250LXNpemU6IC44NWVtO1xuICAgIHBhZGRpbmc6IDJweCAzcHggMFxuICB9XG4uZmMgLmZjLWRheWdyaWQtZGF5LWJvdHRvbTpiZWZvcmUge1xuICBjb250ZW50OiBcIlwiO1xuICBjbGVhcjogYm90aDtcbiAgZGlzcGxheTogdGFibGU7IH1cbi5mYyAuZmMtZGF5Z3JpZC1tb3JlLWxpbmsge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiA0O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuLmZjIHtcblxuICAvKiB3ZWVrIG51bWJlciAod2l0aGluIGZyYW1lKSAqL1xuXG59XG4uZmMgLmZjLWRheWdyaWQtd2Vlay1udW1iZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB6LWluZGV4OiA1O1xuICAgIHRvcDogMDtcbiAgICBwYWRkaW5nOiAycHg7XG4gICAgbWluLXdpZHRoOiAxLjVlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMDgsIDIwOCwgMjA4LCAwLjMpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWZjLW5ldXRyYWwtYmctY29sb3IsIHJnYmEoMjA4LCAyMDgsIDIwOCwgMC4zKSk7XG4gICAgY29sb3I6ICM4MDgwODA7XG4gICAgY29sb3I6IHZhcigtLWZjLW5ldXRyYWwtdGV4dC1jb2xvciwgIzgwODA4MCk7XG4gIH1cbi5mYyB7XG5cbiAgLyogcG9wb3ZlciAqL1xuXG59XG4uZmMgLmZjLW1vcmUtcG9wb3ZlciAuZmMtcG9wb3Zlci1ib2R5IHtcbiAgICBtaW4td2lkdGg6IDIyMHB4O1xuICAgIHBhZGRpbmc6IDEwcHg7XG4gIH1cbi5mYy1kaXJlY3Rpb24tbHRyIC5mYy1kYXlncmlkLWV2ZW50LmZjLWV2ZW50LXN0YXJ0LFxuLmZjLWRpcmVjdGlvbi1ydGwgLmZjLWRheWdyaWQtZXZlbnQuZmMtZXZlbnQtZW5kIHtcbiAgbWFyZ2luLWxlZnQ6IDJweDtcbn1cbi5mYy1kaXJlY3Rpb24tbHRyIC5mYy1kYXlncmlkLWV2ZW50LmZjLWV2ZW50LWVuZCxcbi5mYy1kaXJlY3Rpb24tcnRsIC5mYy1kYXlncmlkLWV2ZW50LmZjLWV2ZW50LXN0YXJ0IHtcbiAgbWFyZ2luLXJpZ2h0OiAycHg7XG59XG4uZmMtZGlyZWN0aW9uLWx0ciAuZmMtZGF5Z3JpZC13ZWVrLW51bWJlciB7XG4gICAgbGVmdDogMDtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgM3B4IDA7XG4gIH1cbi5mYy1kaXJlY3Rpb24tcnRsIC5mYy1kYXlncmlkLXdlZWstbnVtYmVyIHtcbiAgICByaWdodDogMDtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgMCAzcHg7XG4gIH1cbi5mYy1saXF1aWQtaGFjayAuZmMtZGF5Z3JpZC1kYXktZnJhbWUge1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7IC8qIHdpbGwgY2F1c2UgaW5uZXIgYWJzb2x1dGUgc3R1ZmYgdG8gZXhwYW5kIHRvIDx0ZD4gKi9cbiAgfVxuLmZjLWRheWdyaWQtZXZlbnQgeyAvKiBtYWtlIHJvb3QtbGV2ZWwsIGJlY2F1c2Ugd2lsbCBiZSBkcmFnZ2VkLWFuZC1kcm9wcGVkIG91dHNpZGUgb2YgYSBjb21wb25lbnQgcm9vdCAqL1xuICBwb3NpdGlvbjogcmVsYXRpdmU7IC8qIGZvciB6LWluZGV4ZXMgYXNzaWduZWQgbGF0ZXIgKi9cbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgYm9yZGVyLXJhZGl1czogM3B4OyAvKiBkb3QgZXZlbnQgbmVlZHMgdGhpcyB0byB3aGVuIHNlbGVjdGVkICovXG4gIGZvbnQtc2l6ZTogLjg1ZW07XG4gIGZvbnQtc2l6ZTogdmFyKC0tZmMtc21hbGwtZm9udC1zaXplLCAuODVlbSk7XG59XG4vKiAtLS0gdGhlIHJlY3RhbmdsZSAoXCJibG9ja1wiKSBzdHlsZSBvZiBldmVudCAtLS0gKi9cbi5mYy1kYXlncmlkLWJsb2NrLWV2ZW50IC5mYy1ldmVudC10aW1lIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuLmZjLWRheWdyaWQtYmxvY2stZXZlbnQgLmZjLWV2ZW50LXRpbWUsXG4gIC5mYy1kYXlncmlkLWJsb2NrLWV2ZW50IC5mYy1ldmVudC10aXRsZSB7XG4gICAgcGFkZGluZzogMXB4O1xuICB9XG4vKiAtLS0gdGhlIGRvdCBzdHlsZSBvZiBldmVudCAtLS0gKi9cbi5mYy1kYXlncmlkLWRvdC1ldmVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDJweCAwXG5cbn1cbi5mYy1kYXlncmlkLWRvdC1ldmVudCAuZmMtZXZlbnQtdGl0bGUge1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBmbGV4LXNocmluazogMTtcbiAgICBtaW4td2lkdGg6IDA7IC8qIGltcG9ydGFudCBmb3IgYWxsb3dpbmcgdG8gc2hyaW5rIGFsbCB0aGUgd2F5ICovXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuLmZjLWRheWdyaWQtZG90LWV2ZW50OmhvdmVyLFxuICAuZmMtZGF5Z3JpZC1kb3QtZXZlbnQuZmMtZXZlbnQtbWlycm9yIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIH1cbi5mYy1kYXlncmlkLWRvdC1ldmVudC5mYy1ldmVudC1zZWxlY3RlZDpiZWZvcmUge1xuICAgIC8qIGV4cGFuZCBoaXQgYXJlYSAqL1xuICAgIHRvcDogLTEwcHg7XG4gICAgYm90dG9tOiAtMTBweDtcbiAgfVxuLmZjLWRheWdyaWQtZXZlbnQtZG90IHsgLyogdGhlIGFjdHVhbCBkb3QgKi9cbiAgbWFyZ2luOiAwIDRweDtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG4gIGJvcmRlcjogNHB4IHNvbGlkICMzNzg4ZDg7XG4gIGJvcmRlcjogY2FsYyh2YXIoLS1mYy1kYXlncmlkLWV2ZW50LWRvdC13aWR0aCwgOHB4KSAvIDIpIHNvbGlkIHZhcigtLWZjLWV2ZW50LWJvcmRlci1jb2xvciwgIzM3ODhkOCk7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYm9yZGVyLXJhZGl1czogY2FsYyh2YXIoLS1mYy1kYXlncmlkLWV2ZW50LWRvdC13aWR0aCwgOHB4KSAvIDIpO1xufVxuLyogLS0tIHNwYWNpbmcgYmV0d2VlbiB0aW1lIGFuZCB0aXRsZSAtLS0gKi9cbi5mYy1kaXJlY3Rpb24tbHRyIC5mYy1kYXlncmlkLWV2ZW50IC5mYy1ldmVudC10aW1lIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDNweDtcbiAgfVxuLmZjLWRpcmVjdGlvbi1ydGwgLmZjLWRheWdyaWQtZXZlbnQgLmZjLWV2ZW50LXRpbWUge1xuICAgIG1hcmdpbi1sZWZ0OiAzcHg7XG4gIH1cblxuXG4vKlxuQSBWRVJUSUNBTCBldmVudFxuKi9cblxuLmZjLXYtZXZlbnQgeyAvKiBhbGxvd2VkIHRvIGJlIHRvcC1sZXZlbCAqL1xuICBkaXNwbGF5OiBibG9jaztcbiAgYm9yZGVyOiAxcHggc29saWQgIzM3ODhkODtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZmMtZXZlbnQtYm9yZGVyLWNvbG9yLCAjMzc4OGQ4KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM3ODhkODtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZmMtZXZlbnQtYmctY29sb3IsICMzNzg4ZDgpXG5cbn1cblxuLmZjLXYtZXZlbnQgLmZjLWV2ZW50LW1haW4ge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGNvbG9yOiB2YXIoLS1mYy1ldmVudC10ZXh0LWNvbG9yLCAjZmZmKTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cblxuLmZjLXYtZXZlbnQgLmZjLWV2ZW50LW1haW4tZnJhbWUge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIH1cblxuLmZjLXYtZXZlbnQgLmZjLWV2ZW50LXRpbWUge1xuICAgIGZsZXgtZ3JvdzogMDtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cblxuLmZjLXYtZXZlbnQgLmZjLWV2ZW50LXRpdGxlLWNvbnRhaW5lciB7IC8qIGEgY29udGFpbmVyIGZvciB0aGUgc3RpY2t5IGN1c2hpb24gKi9cbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgZmxleC1zaHJpbms6IDE7XG4gICAgbWluLWhlaWdodDogMDsgLyogaW1wb3J0YW50IGZvciBhbGxvd2luZyB0byBzaHJpbmsgYWxsIHRoZSB3YXkgKi9cbiAgfVxuXG4uZmMtdi1ldmVudCAuZmMtZXZlbnQtdGl0bGUgeyAvKiB3aWxsIGhhdmUgZmMtc3RpY2t5IG9uIGl0ICovXG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlOyAvKiBjbGlwIG92ZXJmbG93ICovXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuXG4uZmMtdi1ldmVudDpub3QoLmZjLWV2ZW50LXN0YXJ0KSB7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICB9XG5cbi5mYy12LWV2ZW50Om5vdCguZmMtZXZlbnQtZW5kKSB7XG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICB9XG5cbi5mYy12LWV2ZW50LmZjLWV2ZW50LXNlbGVjdGVkOmJlZm9yZSB7XG4gICAgLyogZXhwYW5kIGhpdCBhcmVhICovXG4gICAgbGVmdDogLTEwcHg7XG4gICAgcmlnaHQ6IC0xMHB4O1xuICB9XG5cbi5mYy12LWV2ZW50IHtcblxuICAvKiByZXNpemVyIChtb3VzZSBBTkQgdG91Y2gpICovXG5cbn1cblxuLmZjLXYtZXZlbnQgLmZjLWV2ZW50LXJlc2l6ZXItc3RhcnQge1xuICAgIGN1cnNvcjogbi1yZXNpemU7XG4gIH1cblxuLmZjLXYtZXZlbnQgLmZjLWV2ZW50LXJlc2l6ZXItZW5kIHtcbiAgICBjdXJzb3I6IHMtcmVzaXplO1xuICB9XG5cbi5mYy12LWV2ZW50IHtcblxuICAvKiByZXNpemVyIGZvciBNT1VTRSAqL1xuXG59XG5cbi5mYy12LWV2ZW50Om5vdCguZmMtZXZlbnQtc2VsZWN0ZWQpIC5mYy1ldmVudC1yZXNpemVyIHtcbiAgICAgIGhlaWdodDogOHB4O1xuICAgICAgaGVpZ2h0OiB2YXIoLS1mYy1ldmVudC1yZXNpemVyLXRoaWNrbmVzcywgOHB4KTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICByaWdodDogMDtcbiAgICB9XG5cbi5mYy12LWV2ZW50Om5vdCguZmMtZXZlbnQtc2VsZWN0ZWQpIC5mYy1ldmVudC1yZXNpemVyLXN0YXJ0IHtcbiAgICAgIHRvcDogLTRweDtcbiAgICAgIHRvcDogY2FsYyh2YXIoLS1mYy1ldmVudC1yZXNpemVyLXRoaWNrbmVzcywgOHB4KSAvIC0yKTtcbiAgICB9XG5cbi5mYy12LWV2ZW50Om5vdCguZmMtZXZlbnQtc2VsZWN0ZWQpIC5mYy1ldmVudC1yZXNpemVyLWVuZCB7XG4gICAgICBib3R0b206IC00cHg7XG4gICAgICBib3R0b206IGNhbGModmFyKC0tZmMtZXZlbnQtcmVzaXplci10aGlja25lc3MsIDhweCkgLyAtMik7XG4gICAgfVxuXG4uZmMtdi1ldmVudCB7XG5cbiAgLyogcmVzaXplciBmb3IgVE9VQ0ggKHdoZW4gZXZlbnQgaXMgXCJzZWxlY3RlZFwiKSAqL1xuXG59XG5cbi5mYy12LWV2ZW50LmZjLWV2ZW50LXNlbGVjdGVkIC5mYy1ldmVudC1yZXNpemVyIHtcbiAgICAgIGxlZnQ6IDUwJTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtNHB4O1xuICAgICAgbWFyZ2luLWxlZnQ6IGNhbGModmFyKC0tZmMtZXZlbnQtcmVzaXplci1kb3QtdG90YWwtd2lkdGgsIDhweCkgLyAtMik7XG4gICAgfVxuXG4uZmMtdi1ldmVudC5mYy1ldmVudC1zZWxlY3RlZCAuZmMtZXZlbnQtcmVzaXplci1zdGFydCB7XG4gICAgICB0b3A6IC00cHg7XG4gICAgICB0b3A6IGNhbGModmFyKC0tZmMtZXZlbnQtcmVzaXplci1kb3QtdG90YWwtd2lkdGgsIDhweCkgLyAtMik7XG4gICAgfVxuXG4uZmMtdi1ldmVudC5mYy1ldmVudC1zZWxlY3RlZCAuZmMtZXZlbnQtcmVzaXplci1lbmQge1xuICAgICAgYm90dG9tOiAtNHB4O1xuICAgICAgYm90dG9tOiBjYWxjKHZhcigtLWZjLWV2ZW50LXJlc2l6ZXItZG90LXRvdGFsLXdpZHRoLCA4cHgpIC8gLTIpO1xuICAgIH1cbi5mYyAuZmMtdGltZWdyaWQgLmZjLWRheWdyaWQtYm9keSB7IC8qIHRoZSBhbGwtZGF5IGRheWdyaWQgd2l0aGluIHRoZSB0aW1lZ3JpZCB2aWV3ICovXG4gICAgei1pbmRleDogMjsgLyogcHV0IGFib3ZlIHRoZSB0aW1lZ3JpZC1ib2R5IHNvIHRoYXQgbW9yZS1wb3BvdmVyIGlzIGFib3ZlIGV2ZXJ5dGhpbmcuIFRPRE86IGJldHRlciBzb2x1dGlvbiAqL1xuICB9XG4uZmMgLmZjLXRpbWVncmlkLWRpdmlkZXIge1xuICAgIHBhZGRpbmc6IDAgMCAycHg7IC8qIGJyb3dzZXJzIGdldCBjb25mdXNlZCB3aGVuIHlvdSBzZXQgaGVpZ2h0LiB1c2UgcGFkZGluZyBpbnN0ZWFkICovXG4gIH1cbi5mYyAuZmMtdGltZWdyaWQtYm9keSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7IC8qIHNjb3BlIHRoZSB6LWluZGV4ZXMgb2Ygc2xvdHMgYW5kIGNvbHMgKi9cbiAgICBtaW4taGVpZ2h0OiAxMDAlOyAvKiBmaWxsIGhlaWdodCBhbHdheXMsIGV2ZW4gd2hlbiBzbGF0IHRhYmxlIGRvZXNuJ3QgZ3JvdyAqL1xuICB9XG4uZmMgLmZjLXRpbWVncmlkLWF4aXMtY2h1bmsgeyAvKiBmb3IgYWR2YW5jZWQgU2Nyb2xsR3JpZCAqL1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAvKiBvZmZzZXQgcGFyZW50IGZvciBub3ctaW5kaWNhdG9yLWNvbnRhaW5lciAqL1xuXG4gIH1cbi5mYyAuZmMtdGltZWdyaWQtYXhpcy1jaHVuayA+IHRhYmxlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHotaW5kZXg6IDE7IC8qIGFib3ZlIHRoZSBub3ctaW5kaWNhdG9yLWNvbnRhaW5lciAqL1xuICAgIH1cbi5mYyAuZmMtdGltZWdyaWQtc2xvdHMge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAxO1xuICB9XG4uZmMgLmZjLXRpbWVncmlkLXNsb3QgeyAvKiBhIDx0ZD4gKi9cbiAgICBoZWlnaHQ6IDEuNWVtO1xuICAgIGJvcmRlci1ib3R0b206IDAgLyogZWFjaCBjZWxsIG93bnMgaXRzIHRvcCBib3JkZXIgKi9cbiAgfVxuLmZjIC5mYy10aW1lZ3JpZC1zbG90OmVtcHR5OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAnXFwwMGEwJzsgLyogbWFrZSBzdXJlIHRoZXJlJ3MgYXQgbGVhc3QgYW4gZW1wdHkgc3BhY2UgdG8gY3JlYXRlIGhlaWdodCBmb3IgaGVpZ2h0IHN5bmNpbmcgKi9cbiAgICB9XG4uZmMgLmZjLXRpbWVncmlkLXNsb3QtbWlub3Ige1xuICAgIGJvcmRlci10b3Atc3R5bGU6IGRvdHRlZDtcbiAgfVxuLmZjIC5mYy10aW1lZ3JpZC1zbG90LWxhYmVsLWN1c2hpb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB9XG4uZmMgLmZjLXRpbWVncmlkLXNsb3QtbGFiZWwge1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IC8qIHZlcnRpY2FsIGFsaWduIHRoZSBzbG90cyAqL1xuICB9XG4uZmMge1xuXG5cbiAgLyogc2xvdHMgQU5EIGF4aXMgY2VsbHMgKHRvcC1sZWZ0IGNvcm5lciBvZiB2aWV3IGluY2x1ZGluZyB0aGUgXCJhbGwtZGF5XCIgdGV4dCkgKi9cblxufVxuLmZjIC5mYy10aW1lZ3JpZC1heGlzLWN1c2hpb24sXG4gIC5mYyAuZmMtdGltZWdyaWQtc2xvdC1sYWJlbC1jdXNoaW9uIHtcbiAgICBwYWRkaW5nOiAwIDRweDtcbiAgfVxuLmZjIHtcblxuXG4gIC8qIGF4aXMgY2VsbHMgKHRvcC1sZWZ0IGNvcm5lciBvZiB2aWV3IGluY2x1ZGluZyB0aGUgXCJhbGwtZGF5XCIgdGV4dCkgKi9cbiAgLyogdmVydGljYWwgYWxpZ24gaXMgbW9yZSBjb21wbGljYXRlZCwgdXNlcyBmbGV4Ym94ICovXG5cbn1cbi5mYyAuZmMtdGltZWdyaWQtYXhpcy1mcmFtZS1saXF1aWQge1xuICAgIGhlaWdodDogMTAwJTsgLyogd2lsbCBuZWVkIGxpcXVpZC1oYWNrIGluIEZGICovXG4gIH1cbi5mYyAuZmMtdGltZWdyaWQtYXhpcy1mcmFtZSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IC8qIHZlcnRpY2FsIGFsaWduICovXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgLyogaG9yaXpvbnRhbCBhbGlnbi4gbWF0Y2hlcyB0ZXh0LWFsaWduIGJlbG93ICovXG4gIH1cbi5mYyAuZmMtdGltZWdyaWQtYXhpcy1jdXNoaW9uIHtcbiAgICBtYXgtd2lkdGg6IDYwcHg7IC8qIGxpbWl0cyB0aGUgd2lkdGggb2YgdGhlIFwiYWxsLWRheVwiIHRleHQgKi9cbiAgICBmbGV4LXNocmluazogMDsgLyogYWxsb3dzIHRleHQgdG8gZXhwYW5kIGhvdyBpdCBub3JtYWxseSB3b3VsZCwgcmVnYXJkbGVzcyBvZiBjb25zdHJhaW5lZCB3aWR0aCAqL1xuICB9XG4uZmMtZGlyZWN0aW9uLWx0ciAuZmMtdGltZWdyaWQtc2xvdC1sYWJlbC1mcmFtZSB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIH1cbi5mYy1kaXJlY3Rpb24tcnRsIC5mYy10aW1lZ3JpZC1zbG90LWxhYmVsLWZyYW1lIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB9XG4uZmMtbGlxdWlkLWhhY2sgLmZjLXRpbWVncmlkLWF4aXMtZnJhbWUtbGlxdWlkIHtcbiAgaGVpZ2h0OiBhdXRvO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgfVxuLmZjIC5mYy10aW1lZ3JpZC1jb2wuZmMtZGF5LXRvZGF5IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyMjAsIDQwLCAwLjE1KTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWZjLXRvZGF5LWJnLWNvbG9yLCByZ2JhKDI1NSwgMjIwLCA0MCwgMC4xNSkpO1xuICAgIH1cbi5mYyAuZmMtdGltZWdyaWQtY29sLWZyYW1lIHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlOyAvKiBsaXF1aWQtaGFjayBpcyBiZWxvdyAqL1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuLmZjLW1lZGlhLXNjcmVlbi5mYy1saXF1aWQtaGFjayAuZmMtdGltZWdyaWQtY29sLWZyYW1lIHtcbiAgaGVpZ2h0OiBhdXRvO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgICB9XG4uZmMtbWVkaWEtc2NyZWVuIC5mYy10aW1lZ3JpZC1jb2xzIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7IC8qIG5vIHotaW5kZXguIGNoaWxkcmVuIHdpbGwgZGVjaWRlIGFuZCBnbyBhYm92ZSBzbG90cyAqL1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMFxuICB9XG4uZmMtbWVkaWEtc2NyZWVuIC5mYy10aW1lZ3JpZC1jb2xzID4gdGFibGUge1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cbi5mYy1tZWRpYS1zY3JlZW4gLmZjLXRpbWVncmlkLWNvbC1iZyxcbiAgLmZjLW1lZGlhLXNjcmVlbiAuZmMtdGltZWdyaWQtY29sLWV2ZW50cyxcbiAgLmZjLW1lZGlhLXNjcmVlbiAuZmMtdGltZWdyaWQtbm93LWluZGljYXRvci1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgfVxuLmZjIHtcblxuICAvKiBiZyAqL1xuXG59XG4uZmMgLmZjLXRpbWVncmlkLWNvbC1iZyB7XG4gICAgei1pbmRleDogMjsgLyogVE9ETzoga2lsbCAqL1xuICB9XG4uZmMgLmZjLXRpbWVncmlkLWNvbC1iZyAuZmMtbm9uLWJ1c2luZXNzIHsgei1pbmRleDogMSB9XG4uZmMgLmZjLXRpbWVncmlkLWNvbC1iZyAuZmMtYmctZXZlbnQgeyB6LWluZGV4OiAyIH1cbi5mYyAuZmMtdGltZWdyaWQtY29sLWJnIC5mYy1oaWdobGlnaHQgeyB6LWluZGV4OiAzIH1cbi5mYyAuZmMtdGltZWdyaWQtYmctaGFybmVzcyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlOyAvKiB0b3AvYm90dG9tIHdpbGwgYmUgc2V0IGJ5IEpTICovXG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgfVxuLmZjIHtcblxuICAvKiBmZyBldmVudHMgKi9cbiAgLyogKHRoZSBtaXJyb3Igc2VncyBhcmUgcHV0IGludG8gYSBzZXBhcmF0ZSBjb250YWluZXIgd2l0aCBzYW1lIGNsYXNzbmFtZSwgKi9cbiAgLyogYW5kIHRoZXkgbXVzdCBiZSBhZnRlciB0aGUgbm9ybWFsIHNlZyBjb250YWluZXIgdG8gYXBwZWFyIGF0IGEgaGlnaGVyIHotaW5kZXgpICovXG5cbn1cbi5mYyAuZmMtdGltZWdyaWQtY29sLWV2ZW50cyB7XG4gICAgei1pbmRleDogMztcbiAgICAvKiBjaGlsZCBldmVudCBzZWdzIGhhdmUgei1pbmRleGVzIHRoYXQgYXJlIHNjb3BlZCB3aXRoaW4gdGhpcyBkaXYgKi9cbiAgfVxuLmZjIHtcblxuICAvKiBub3cgaW5kaWNhdG9yICovXG5cbn1cbi5mYyAuZmMtdGltZWdyaWQtbm93LWluZGljYXRvci1jb250YWluZXIge1xuICAgIGJvdHRvbTogMDtcbiAgICBvdmVyZmxvdzogaGlkZGVuOyAvKiBkb24ndCBsZXQgb3ZlcmZsb3cgb2YgbGluZXMvYXJyb3dzIGNhdXNlIHVubmVjZXNzYXJ5IHNjcm9sbGluZyAqL1xuICAgIC8qIHotaW5kZXggaXMgc2V0IG9uIHRoZSBpbmRpdmlkdWFsIGVsZW1lbnRzICovXG4gIH1cbi5mYy1kaXJlY3Rpb24tbHRyIC5mYy10aW1lZ3JpZC1jb2wtZXZlbnRzIHtcbiAgICBtYXJnaW46IDAgMi41JSAwIDJweDtcbiAgfVxuLmZjLWRpcmVjdGlvbi1ydGwgLmZjLXRpbWVncmlkLWNvbC1ldmVudHMge1xuICAgIG1hcmdpbjogMCAycHggMCAyLjUlO1xuICB9XG4uZmMtdGltZWdyaWQtZXZlbnQtaGFybmVzcyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAvKiB0b3AvbGVmdC9yaWdodC9ib3R0b20gd2lsbCBhbGwgYmUgc2V0IGJ5IEpTICovXG59XG4uZmMtdGltZWdyaWQtZXZlbnQtaGFybmVzcyA+IC5mYy10aW1lZ3JpZC1ldmVudCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlOyAvKiBhYnNvbHV0ZSBXSVRISU4gdGhlIGhhcm5lc3MgKi9cbiAgICB0b3A6IDA7IC8qIGZvciB3aGVuIG5vdCB5ZXQgcG9zaXRpb25lZCAqL1xuICAgIGJvdHRvbTogMDsgLyogXCIgKi9cbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICB9XG4uZmMtdGltZWdyaWQtZXZlbnQtaGFybmVzcy1pbnNldCAuZmMtdGltZWdyaWQtZXZlbnQsXG4uZmMtdGltZWdyaWQtZXZlbnQuZmMtZXZlbnQtbWlycm9yLFxuLmZjLXRpbWVncmlkLW1vcmUtbGluayB7XG4gIGJveC1zaGFkb3c6IDBweCAwcHggMHB4IDFweCAjZmZmO1xuICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAxcHggdmFyKC0tZmMtcGFnZS1iZy1jb2xvciwgI2ZmZik7XG59XG4uZmMtdGltZWdyaWQtZXZlbnQsXG4uZmMtdGltZWdyaWQtbW9yZS1saW5rIHsgLyogZXZlbnRzIG5lZWQgdG8gYmUgcm9vdCAqL1xuICBmb250LXNpemU6IC44NWVtO1xuICBmb250LXNpemU6IHZhcigtLWZjLXNtYWxsLWZvbnQtc2l6ZSwgLjg1ZW0pO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG59XG4uZmMtdGltZWdyaWQtZXZlbnQgeyAvKiBldmVudHMgbmVlZCB0byBiZSByb290ICovXG4gIG1hcmdpbi1ib3R0b206IDFweCAvKiBnaXZlIHNvbWUgc3BhY2UgZnJvbSBib3R0b20gKi9cbn1cbi5mYy10aW1lZ3JpZC1ldmVudCAuZmMtZXZlbnQtbWFpbiB7XG4gICAgcGFkZGluZzogMXB4IDFweCAwO1xuICB9XG4uZmMtdGltZWdyaWQtZXZlbnQgLmZjLWV2ZW50LXRpbWUge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgZm9udC1zaXplOiAuODVlbTtcbiAgICBmb250LXNpemU6IHZhcigtLWZjLXNtYWxsLWZvbnQtc2l6ZSwgLjg1ZW0pO1xuICAgIG1hcmdpbi1ib3R0b206IDFweDtcbiAgfVxuLmZjLXRpbWVncmlkLWV2ZW50LXNob3J0IC5mYy1ldmVudC1tYWluLWZyYW1lIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbi5mYy10aW1lZ3JpZC1ldmVudC1zaG9ydCAuZmMtZXZlbnQtdGltZTphZnRlciB7XG4gICAgY29udGVudDogJ1xcMDBhMC1cXDAwYTAnOyAvKiBkYXNoIHN1cnJvdW5kZWQgYnkgbm9uLWJyZWFraW5nIHNwYWNlcyAqL1xuICB9XG4uZmMtdGltZWdyaWQtZXZlbnQtc2hvcnQgLmZjLWV2ZW50LXRpdGxlIHtcbiAgICBmb250LXNpemU6IC44NWVtO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZmMtc21hbGwtZm9udC1zaXplLCAuODVlbSlcbiAgfVxuLmZjLXRpbWVncmlkLW1vcmUtbGluayB7IC8qIGRvZXMgTk9UIGluaGVyaXQgZnJvbSBmYy10aW1lZ3JpZC1ldmVudCAqL1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDk5OTk7IC8qIGhhY2sgKi9cbiAgY29sb3I6IGluaGVyaXQ7XG4gIGNvbG9yOiB2YXIoLS1mYy1tb3JlLWxpbmstdGV4dC1jb2xvciwgaW5oZXJpdCk7XG4gIGJhY2tncm91bmQ6ICNkMGQwZDA7XG4gIGJhY2tncm91bmQ6IHZhcigtLWZjLW1vcmUtbGluay1iZy1jb2xvciwgI2QwZDBkMCk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogMXB4OyAvKiBtYXRjaCBzcGFjZSBiZWxvdyBmYy10aW1lZ3JpZC1ldmVudCAqL1xufVxuLmZjLXRpbWVncmlkLW1vcmUtbGluay1pbm5lciB7IC8qIGhhcyBmYy1zdGlja3kgKi9cbiAgcGFkZGluZzogM3B4IDJweDtcbiAgdG9wOiAwO1xufVxuLmZjLWRpcmVjdGlvbi1sdHIgLmZjLXRpbWVncmlkLW1vcmUtbGluayB7XG4gICAgcmlnaHQ6IDA7XG4gIH1cbi5mYy1kaXJlY3Rpb24tcnRsIC5mYy10aW1lZ3JpZC1tb3JlLWxpbmsge1xuICAgIGxlZnQ6IDA7XG4gIH1cbi5mYyB7XG5cbiAgLyogbGluZSAqL1xuXG59XG4uZmMgLmZjLXRpbWVncmlkLW5vdy1pbmRpY2F0b3ItbGluZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDQ7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogcmVkO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZmMtbm93LWluZGljYXRvci1jb2xvciwgcmVkKTtcbiAgICBib3JkZXItd2lkdGg6IDFweCAwIDA7XG4gIH1cbi5mYyB7XG5cbiAgLyogYXJyb3cgKi9cblxufVxuLmZjIC5mYy10aW1lZ3JpZC1ub3ctaW5kaWNhdG9yLWFycm93IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogNDtcbiAgICBtYXJnaW4tdG9wOiAtNXB4OyAvKiB2ZXJ0aWNhbGx5IGNlbnRlciBvbiB0b3AgY29vcmRpbmF0ZSAqL1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWNvbG9yOiByZWQ7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1mYy1ub3ctaW5kaWNhdG9yLWNvbG9yLCByZWQpO1xuICB9XG4uZmMtZGlyZWN0aW9uLWx0ciAuZmMtdGltZWdyaWQtbm93LWluZGljYXRvci1hcnJvdyB7XG4gICAgbGVmdDogMDtcblxuICAgIC8qIHRyaWFuZ2xlIHBvaW50aW5nIHJpZ2h0LiBUT0RPOiBtaXhpbiAqL1xuICAgIGJvcmRlci13aWR0aDogNXB4IDAgNXB4IDZweDtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuLmZjLWRpcmVjdGlvbi1ydGwgLmZjLXRpbWVncmlkLW5vdy1pbmRpY2F0b3ItYXJyb3cge1xuICAgIHJpZ2h0OiAwO1xuXG4gICAgLyogdHJpYW5nbGUgcG9pbnRpbmcgbGVmdC4gVE9ETzogbWl4aW4gKi9cbiAgICBib3JkZXItd2lkdGg6IDVweCA2cHggNXB4IDA7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cblxuXG46cm9vdCB7XG4gIC0tZmMtbGlzdC1ldmVudC1kb3Qtd2lkdGg6IDEwcHg7XG4gIC0tZmMtbGlzdC1ldmVudC1ob3Zlci1iZy1jb2xvcjogI2Y1ZjVmNTtcbn1cbi5mYy10aGVtZS1zdGFuZGFyZCAuZmMtbGlzdCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1mYy1ib3JkZXItY29sb3IsICNkZGQpO1xuICB9XG4uZmMge1xuXG4gIC8qIG1lc3NhZ2Ugd2hlbiBubyBldmVudHMgKi9cblxufVxuLmZjIC5mYy1saXN0LWVtcHR5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIwOCwgMjA4LCAyMDgsIDAuMyk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZmMtbmV1dHJhbC1iZy1jb2xvciwgcmdiYSgyMDgsIDIwOCwgMjA4LCAwLjMpKTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyOyAvKiB2ZXJ0aWNhbGx5IGFsaWducyBmYy1saXN0LWVtcHR5LWlubmVyICovXG4gIH1cbi5mYyAuZmMtbGlzdC1lbXB0eS1jdXNoaW9uIHtcbiAgICBtYXJnaW46IDVlbSAwO1xuICB9XG4uZmMge1xuXG4gIC8qIHRhYmxlIHdpdGhpbiB0aGUgc2Nyb2xsZXIgKi9cbiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG59XG4uZmMgLmZjLWxpc3QtdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1zdHlsZTogaGlkZGVuOyAvKiBraWxsIG91dGVyIGJvcmRlciBvbiB0aGVtZSAqL1xuICB9XG4uZmMgLmZjLWxpc3QtdGFibGUgdHIgPiAqIHtcbiAgICBib3JkZXItbGVmdDogMDtcbiAgICBib3JkZXItcmlnaHQ6IDA7XG4gIH1cbi5mYyAuZmMtbGlzdC1zdGlja3kgLmZjLWxpc3QtZGF5ID4gKiB7IC8qIHRoZSBjZWxscyAqL1xuICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1mYy1wYWdlLWJnLWNvbG9yLCAjZmZmKTsgLyogZm9yIHdoZW4gaGVhZGVycyBhcmUgc3R5bGVkIHRvIGJlIHRyYW5zcGFyZW50IGFuZCBzdGlja3kgKi9cbiAgICB9XG4uZmMge1xuXG4gIC8qIG9ubHkgZXhpc3RzIGZvciBhcmlhIHJlYXNvbnMsIGhpZGUgZm9yIG5vbi1zY3JlZW4tcmVhZGVycyAqL1xuXG59XG4uZmMgLmZjLWxpc3QtdGFibGUgdGhlYWQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAtMTAwMDBweDtcbiAgfVxuLmZjIHtcblxuICAvKiB0aGUgdGFibGUncyBib3JkZXItc3R5bGU6aGlkZGVuIGdldHMgY29uZnVzZWQgYnkgaGlkZGVuIHRoZWFkLiBmb3JjZS1oaWRlIHRvcCBib3JkZXIgb2YgZmlyc3QgY2VsbCAqL1xuXG59XG4uZmMgLmZjLWxpc3QtdGFibGUgdGJvZHkgPiB0cjpmaXJzdC1jaGlsZCB0aCB7XG4gICAgYm9yZGVyLXRvcDogMDtcbiAgfVxuLmZjIC5mYy1saXN0LXRhYmxlIHRoIHtcbiAgICBwYWRkaW5nOiAwOyAvKiB1c2VzIGFuIGlubmVyLXdyYXBwZXIgaW5zdGVhZC4uLiAqL1xuICB9XG4uZmMgLmZjLWxpc3QtdGFibGUgdGQsXG4gIC5mYyAuZmMtbGlzdC1kYXktY3VzaGlvbiB7XG4gICAgcGFkZGluZzogOHB4IDE0cHg7XG4gIH1cbi5mYyB7XG5cblxuICAvKiBkYXRlIGhlYWRpbmcgcm93cyAqL1xuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbn1cbi5mYyAuZmMtbGlzdC1kYXktY3VzaGlvbjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGNsZWFyOiBib3RoO1xuICBkaXNwbGF5OiB0YWJsZTsgLyogY2xlYXIgZmxvYXRpbmcgKi9cbiAgICB9XG4uZmMtdGhlbWUtc3RhbmRhcmQgLmZjLWxpc3QtZGF5LWN1c2hpb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjA4LCAyMDgsIDIwOCwgMC4zKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1mYy1uZXV0cmFsLWJnLWNvbG9yLCByZ2JhKDIwOCwgMjA4LCAyMDgsIDAuMykpO1xuICB9XG4uZmMtZGlyZWN0aW9uLWx0ciAuZmMtbGlzdC1kYXktdGV4dCxcbi5mYy1kaXJlY3Rpb24tcnRsIC5mYy1saXN0LWRheS1zaWRlLXRleHQge1xuICBmbG9hdDogbGVmdDtcbn1cbi5mYy1kaXJlY3Rpb24tbHRyIC5mYy1saXN0LWRheS1zaWRlLXRleHQsXG4uZmMtZGlyZWN0aW9uLXJ0bCAuZmMtbGlzdC1kYXktdGV4dCB7XG4gIGZsb2F0OiByaWdodDtcbn1cbi8qIG1ha2UgdGhlIGRvdCBjbG9zZXIgdG8gdGhlIGV2ZW50IHRpdGxlICovXG4uZmMtZGlyZWN0aW9uLWx0ciAuZmMtbGlzdC10YWJsZSAuZmMtbGlzdC1ldmVudC1ncmFwaGljIHsgcGFkZGluZy1yaWdodDogMCB9XG4uZmMtZGlyZWN0aW9uLXJ0bCAuZmMtbGlzdC10YWJsZSAuZmMtbGlzdC1ldmVudC1ncmFwaGljIHsgcGFkZGluZy1sZWZ0OiAwIH1cbi5mYyAuZmMtbGlzdC1ldmVudC5mYy1ldmVudC1mb3JjZWQtdXJsIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7IC8qIHdob2xlIHJvdyB3aWxsIHNlZW0gY2xpY2thYmxlICovXG4gIH1cbi5mYyAuZmMtbGlzdC1ldmVudDpob3ZlciB0ZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1mYy1saXN0LWV2ZW50LWhvdmVyLWJnLWNvbG9yLCAjZjVmNWY1KTtcbiAgfVxuLmZjIHtcblxuICAvKiBzaHJpbmsgY2VydGFpbiBjb2xzICovXG5cbn1cbi5mYyAuZmMtbGlzdC1ldmVudC1ncmFwaGljLFxuICAuZmMgLmZjLWxpc3QtZXZlbnQtdGltZSB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB3aWR0aDogMXB4O1xuICB9XG4uZmMgLmZjLWxpc3QtZXZlbnQtZG90IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICAgIGJvcmRlcjogNXB4IHNvbGlkICMzNzg4ZDg7XG4gICAgYm9yZGVyOiBjYWxjKHZhcigtLWZjLWxpc3QtZXZlbnQtZG90LXdpZHRoLCAxMHB4KSAvIDIpIHNvbGlkIHZhcigtLWZjLWV2ZW50LWJvcmRlci1jb2xvciwgIzM3ODhkOCk7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIGJvcmRlci1yYWRpdXM6IGNhbGModmFyKC0tZmMtbGlzdC1ldmVudC1kb3Qtd2lkdGgsIDEwcHgpIC8gMik7XG4gIH1cbi5mYyB7XG5cbiAgLyogcmVzZXQgPGE+IHN0eWxpbmcgKi9cblxufVxuLmZjIC5mYy1saXN0LWV2ZW50LXRpdGxlIGEge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxuLmZjIHtcblxuICAvKiB1bmRlcmxpbmUgbGluayB3aGVuIGhvdmVyaW5nIG92ZXIgYW55IHBhcnQgb2Ygcm93ICovXG5cbn1cbi5mYyAuZmMtbGlzdC1ldmVudC5mYy1ldmVudC1mb3JjZWQtdXJsOmhvdmVyIGEge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB9XG5cblxuXG4gIC5mYy10aGVtZS1ib290c3RyYXAgYTpub3QoW2hyZWZdKSB7XG4gICAgY29sb3I6IGluaGVyaXQ7IC8qIG5hdHVyYWwgY29sb3IgZm9yIG5hdmxpbmtzICovXG4gIH1cblxuXG5cbiAgLmZjLXRoZW1lLWJvb3RzdHJhcDUgYTpub3QoW2hyZWZdKSB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0O1xuICB9XG5cbi5mYy10aGVtZS1ib290c3RyYXA1IC5mYy1saXN0LFxuICAuZmMtdGhlbWUtYm9vdHN0cmFwNSAuZmMtc2Nyb2xsZ3JpZCxcbiAgLmZjLXRoZW1lLWJvb3RzdHJhcDUgdGQsXG4gIC5mYy10aGVtZS1ib290c3RyYXA1IHRoIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1icy1ncmF5LTQwMCk7XG4gIH1cblxuLmZjLXRoZW1lLWJvb3RzdHJhcDUge1xuXG4gIC8qIEhBQ0s6IHJlYXBwbHkgY29yZSBzdHlsZXMgYWZ0ZXIgaGlnaGUtcHJlY2VkZW5jZSBib3JkZXIgc3RhdGVtZW50IGFib3ZlICovXG59XG5cbi5mYy10aGVtZS1ib290c3RyYXA1IC5mYy1zY3JvbGxncmlkIHtcbiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgfVxuXG4uZmMtdGhlbWUtYm9vdHN0cmFwNS1zaGFkZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1icy1ncmF5LTIwMCk7XG59XG5cbiIsIi8qKlxuICogalF1ZXJ5IHRvYXN0IHBsdWdpbiBjcmVhdGVkIGJ5IEthbXJhbiBBaG1lZCBjb3B5cmlnaHQgTUlUIGxpY2Vuc2UgMjAxNFxuICovXG4uanEtdG9hc3Qtd3JhcCB7IGRpc3BsYXk6IGJsb2NrOyBwb3NpdGlvbjogZml4ZWQ7IHdpZHRoOiAyNTBweDsgIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgei1pbmRleDogOTAwMCAhaW1wb3J0YW50OyB9XG4uanEtdG9hc3Qtd3JhcCAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9XG5cbi5qcS10b2FzdC13cmFwLmJvdHRvbS1sZWZ0IHsgYm90dG9tOiAyMHB4OyBsZWZ0OiAyMHB4OyB9XG4uanEtdG9hc3Qtd3JhcC5ib3R0b20tcmlnaHQgeyBib3R0b206IDIwcHg7IHJpZ2h0OiA0MHB4OyB9XG4uanEtdG9hc3Qtd3JhcC50b3AtbGVmdCB7IHRvcDogMjBweDsgbGVmdDogMjBweDsgfVxuLmpxLXRvYXN0LXdyYXAudG9wLXJpZ2h0IHsgdG9wOiAyMHB4OyByaWdodDogNDBweDsgfVxuXG4uanEtdG9hc3Qtc2luZ2xlIHsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMDAlOyBwYWRkaW5nOiAxMHB4OyBtYXJnaW46IDBweCAwcHggNXB4OyBib3JkZXItcmFkaXVzOiA0cHg7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IGFyaWFsLCBzYW5zLXNlcmlmOyBsaW5lLWhlaWdodDogMTdweDsgcG9zaXRpb246IHJlbGF0aXZlOyAgcG9pbnRlci1ldmVudHM6IGFsbCAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9yOiAjNDQ0NDQ0OyBjb2xvcjogd2hpdGU7IH1cblxuLmpxLXRvYXN0LXNpbmdsZSBoMiB7IGZvbnQtZmFtaWx5OiBhcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNHB4OyBtYXJnaW46IDBweCAwcHggN3B4OyBiYWNrZ3JvdW5kOiBub25lOyBjb2xvcjogaW5oZXJpdDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IH1cbi5qcS10b2FzdC1zaW5nbGUgYSB7IGNvbG9yOiAjZWVlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtd2VpZ2h0OiBib2xkOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgd2hpdGU7IHBhZGRpbmctYm90dG9tOiAzcHg7IGZvbnQtc2l6ZTogMTJweDsgfVxuXG4uanEtdG9hc3Qtc2luZ2xlIHVsIHsgbWFyZ2luOiAwcHggMHB4IDBweCAxNXB4OyBiYWNrZ3JvdW5kOiBub25lOyBwYWRkaW5nOjBweDsgfVxuLmpxLXRvYXN0LXNpbmdsZSB1bCBsaSB7IGxpc3Qtc3R5bGUtdHlwZTogZGlzYyAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDogMTdweDsgYmFja2dyb3VuZDogbm9uZTsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB9XG5cbi5jbG9zZS1qcS10b2FzdC1zaW5nbGUgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogM3B4OyByaWdodDogN3B4OyBmb250LXNpemU6IDE0cHg7IGN1cnNvcjogcG9pbnRlcjsgfVxuXG4uanEtdG9hc3QtbG9hZGVyIHsgZGlzcGxheTogYmxvY2s7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAtMnB4OyBoZWlnaHQ6IDVweDsgd2lkdGg6IDAlOyBsZWZ0OiAwOyBib3JkZXItcmFkaXVzOiA1cHg7IGJhY2tncm91bmQ6IHJlZDsgfVxuLmpxLXRvYXN0LWxvYWRlZCB7IHdpZHRoOiAxMDAlOyB9XG4uanEtaGFzLWljb24geyBwYWRkaW5nOiAxMHB4IDEwcHggMTBweCA1MHB4OyBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMHB4OyB9XG4uanEtaWNvbi1pbmZvIHsgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9Jyk7IGJhY2tncm91bmQtY29sb3I6ICMzMTcwOGY7IGNvbG9yOiAjZDllZGY3OyBib3JkZXItY29sb3I6ICNiY2U4ZjE7IH1cbi5qcS1pY29uLXdhcm5pbmcgeyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFHWVNVUkJWRWhMNVpTdlRzTlFGTWJYWkdJQ01ZR1ltSmhBUUlKQUlDWVFQQUFDaVNEQjhBaUlDUVFKVDRDcVFFd2dKdllBU0FRQ2laaVltSmhBSUJBVENBUkp5KzlyVHNsZGQ4c0t1MU0wK2RMYjA1N3Y2L2xicS8yckswbVMvVFJOajljV05BS1BZSUpJSTdnSXhDY1E1MWN2cUlEK0dJRVg4QVNHNEIxYks1Z0laRmVRZm9KZEVYT2ZnWDRRQVFnN2tIMkE2NXlRODdseXhiMjdzZ2drQXpBdUZoYmJnMUsya2dDa0IxYlZ3eUlSOW0yTDdQUlBJaERVSVhnR3R5S3c1NzV5ejNsVE5zNlg0SlhualYrTEtNL20zTXlkblRidE9LSWp0ejZWaENCcTR2U20zbmNkckQybGswVmdVWFNWS2pWREpYSnppalcxUlFkc1U3Rjc3SGU4dTY4a29OWlR6OE96NXlHYTZKM0gzbFoweFlnWEJLMlF5bWxXV0ErUlduWWhza0xCdjJ2bUUraEJNQ3RiQTdLWDVkcld5UlQvMkpzcVoySXZmQjlZNGJXRE5NRmJKUkZtQzlFNzRTb1MwQ3F1bHdqa0MwKzVicGNWMUNaOE5NZWo0cGp5MFUrZG9EUXNHeW8xaHpWSnR0SWpoUTdHbkJ0UkZOMVVhclVsSDhGM3hpY3QrSFkwN3JFem9VR1BsV2NqUkZScjQvZ0NoWmdjM1pMMmQ4b0FBQUFBU1VWT1JLNUNZSUk9Jyk7IGJhY2tncm91bmQtY29sb3I6ICM4YTZkM2I7IGNvbG9yOiAjZmNmOGUzOyBib3JkZXItY29sb3I6ICNmYWViY2M7IH1cbi5qcS1pY29uLWVycm9yIHsgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBSE9TVVJCVkVoTHJaYS9TZ05CRU1aemgwV0tDQ2xTQ0thSVlPRUQrQUFLZVFRTEc4SFd6dExDSW1CcllhZGdJZFkrZ0lLTllrQkZTd3U3Q0FvcUNna2tvR0JJL0UyOFBkYkxabWVETGd6WnpjeDgzL3paMlNTWEMxajlmcitJMUhxOTNnMnl4SDRpd00xdmtvQldBZHhDbXB6VHhma04yUmN5Wk5hSEZJa1NvMTArOGtneGtYSVVSVjVIR3hUbUZ1Yzc1QjJSZlFrcHhIRzhhQWdhQUZhMHRBSHFZRmZRN0l3ZTJ5aE9EazgrSjRDN3lBb1JUV0kzdy80a2xHUmdSNGxPN1JwbjkrZ3ZNeVdwK3V4Rmg4K0grQVJsZ04xbkp1SnVRQVl2TmtFbndHRmNrMThFcjRxM2VnRWMvb08rbWhMZEtnUnloZE5GaWFjQzBybE9DYmhOVno0SDlGbkFZZ0RCdlUzUUlpb1psSkZMSnRzb0hZUkRmaVpvVXlJeHFDdFJwVmxBTnEwRVU0ZEFwanJ0Z2V6UEZhZDVTMTlXZ2prYzBoTlZudUY0SGpWQTZDN1FyU0lieWxCK29aZTNhSGdCc3FsTnFLWUg0OGpYeUpLTXVBYml5Vko4S3phQjNlUmMwcGc5VndRNG5pRnJ5STY4cWlPaTNBYmp3ZHNmbkF0azBiQ2pUTEpLcjZtckQ5ZzhpcS9TL0I4MWhndU9NbFFUblZ5RzQwd0Fjam5tZ3NDTkVTRHJqbWU3d2ZmdFA0UDdTUDROM0NKWmR2em9OeUdxMmMvSFdPWEpHc3ZWZytSQS9rMk1DL3dONkkyWUEyUHQ4R2tBQUFBQVNVVk9SSzVDWUlJPScpOyBiYWNrZ3JvdW5kLWNvbG9yOiAjYTk0NDQyOyBjb2xvcjogI2YyZGVkZTsgYm9yZGVyLWNvbG9yOiAjZWJjY2QxOyB9XG4uanEtaWNvbi1zdWNjZXNzIHsgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBRHNTVVJCVkVoTFkyQVlCZlFNZ2YvLy8zUDgrL2V2QUlndkEvRnNJRitCYXZZRERXTUJHcm9hU01NQmlFOFZDN0FaRHJJRmFNRm5paTNBWlRqVWdzVVVXVURBOE9kQUg2aVFiUUVodzRIeUdzUEVjS0JYQklDNEFSaGV4NEc0QnNqbXdlVTFzb0lGYUdnL1d0b0ZaUklaZEV2SU1oeGtDQ2pYSVZzQVRWNmdGR0FDczRSc3cwRUdnSUlIM1FKWUpnSFNBUlFaRHJXQUIramF3emdzK1EyVU80OUQ3am5SU1JHb0VGUklMY2RtRU1XR0kwY20wSkoyUXBZQTFSRHZjbXpKRVdoQUJoRC9wcXJMMFMwQ1d1QUJLZ25Sa2k5bExzZVM3ZzJBbHF3SFdRU0tING9LTHJJTHBSR2hFUUN3MkxpUlVJYTRsd0FBQUFCSlJVNUVya0pnZ2c9PScpOyBjb2xvcjogI2RmZjBkODsgYmFja2dyb3VuZC1jb2xvcjogIzNjNzYzZDsgYm9yZGVyLWNvbG9yOiAjZDZlOWM2OyB9Il0sInNvdXJjZVJvb3QiOiIifQ==*/