@charset "UTF-8";
/* ($base-font-size * 1) + 0px; */
/*!
 *  Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
 */
/* FONT PATH
 * -------------------------- */
@font-face {
  font-family: 'FontAwesome';
  src: url("/static/fonts/fontawesome-webfont.eot?v=4.6.3");
  src: url("/static/fonts/fontawesome-webfont.eot?#iefix&v=4.6.3") format("embedded-opentype"), url("/static/fonts/fontawesome-webfont.woff2?v=4.6.3") format("woff2"), url("/static/fonts/fontawesome-webfont.woff?v=4.6.3") format("woff"), url("/static/fonts/fontawesome-webfont.ttf?v=4.6.3") format("truetype"), url("/static/fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular") format("svg");
  font-weight: normal;
  font-style: normal;
}

.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* makes the font 33% larger relative to the icon container */
.fa-lg {
  font-size: 1.33333em;
  line-height: 0.75em;
  vertical-align: -15%;
}

.fa-2x {
  font-size: 2em;
}

.fa-3x {
  font-size: 3em;
}

.fa-4x {
  font-size: 4em;
}

.fa-5x {
  font-size: 5em;
}

.fa-fw {
  width: 1.28571em;
  text-align: center;
}

.fa-ul {
  padding-left: 0;
  margin-left: 2.14286em;
  list-style-type: none;
}

.fa-ul > li {
  position: relative;
}

.fa-li {
  position: absolute;
  left: -2.14286em;
  width: 2.14286em;
  top: 0.14286em;
  text-align: center;
}

.fa-li.fa-lg {
  left: -1.85714em;
}

.fa-border {
  padding: .2em .25em .15em;
  border: solid 0.08em #eee;
  border-radius: .1em;
}

.fa-pull-left {
  float: left;
}

.fa-pull-right {
  float: right;
}

.fa.fa-pull-left {
  margin-right: .3em;
}

.fa.fa-pull-right {
  margin-left: .3em;
}

/* Deprecated as of 4.4.0 */
.pull-right {
  float: right;
}

.pull-left {
  float: left;
}

.fa.pull-left {
  margin-right: .3em;
}

.fa.pull-right {
  margin-left: .3em;
}

.fa-spin {
  -webkit-animation: fa-spin 2s infinite linear;
  animation: fa-spin 2s infinite linear;
}

.fa-pulse {
  -webkit-animation: fa-spin 1s infinite steps(8);
  animation: fa-spin 1s infinite steps(8);
}

@-webkit-keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}

@keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}

.fa-rotate-90 {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}

.fa-rotate-180 {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}

.fa-rotate-270 {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
  -webkit-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  transform: rotate(270deg);
}

.fa-flip-horizontal {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
  -webkit-transform: scale(-1, 1);
  -ms-transform: scale(-1, 1);
  transform: scale(-1, 1);
}

.fa-flip-vertical {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
  -webkit-transform: scale(1, -1);
  -ms-transform: scale(1, -1);
  transform: scale(1, -1);
}

:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
  -webkit-filter: none;
  filter: none;
}

.fa-stack {
  position: relative;
  display: inline-block;
  width: 2em;
  height: 2em;
  line-height: 2em;
  vertical-align: middle;
}

.fa-stack-1x, .fa-stack-2x {
  position: absolute;
  left: 0;
  width: 100%;
  text-align: center;
}

.fa-stack-1x {
  line-height: inherit;
}

.fa-stack-2x {
  font-size: 2em;
}

.fa-inverse {
  color: #fff;
}

/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
   readers do not read off random characters that represent icons */
.fa-glass:before {
  content: "";
}

.fa-music:before {
  content: "";
}

.fa-search:before {
  content: "";
}

.fa-envelope-o:before {
  content: "";
}

.fa-heart:before {
  content: "";
}

.fa-star:before {
  content: "";
}

.fa-star-o:before {
  content: "";
}

.fa-user:before {
  content: "";
}

.fa-film:before {
  content: "";
}

.fa-th-large:before {
  content: "";
}

.fa-th:before {
  content: "";
}

.fa-th-list:before {
  content: "";
}

.fa-check:before {
  content: "";
}

.fa-remove:before,
.fa-close:before,
.fa-times:before {
  content: "";
}

.fa-search-plus:before {
  content: "";
}

.fa-search-minus:before {
  content: "";
}

.fa-power-off:before {
  content: "";
}

.fa-signal:before {
  content: "";
}

.fa-gear:before,
.fa-cog:before {
  content: "";
}

.fa-trash-o:before {
  content: "";
}

.fa-home:before {
  content: "";
}

.fa-file-o:before {
  content: "";
}

.fa-clock-o:before {
  content: "";
}

.fa-road:before {
  content: "";
}

.fa-download:before {
  content: "";
}

.fa-arrow-circle-o-down:before {
  content: "";
}

.fa-arrow-circle-o-up:before {
  content: "";
}

.fa-inbox:before {
  content: "";
}

.fa-play-circle-o:before {
  content: "";
}

.fa-rotate-right:before,
.fa-repeat:before {
  content: "";
}

.fa-refresh:before {
  content: "";
}

.fa-list-alt:before {
  content: "";
}

.fa-lock:before {
  content: "";
}

.fa-flag:before {
  content: "";
}

.fa-headphones:before {
  content: "";
}

.fa-volume-off:before {
  content: "";
}

.fa-volume-down:before {
  content: "";
}

.fa-volume-up:before {
  content: "";
}

.fa-qrcode:before {
  content: "";
}

.fa-barcode:before {
  content: "";
}

.fa-tag:before {
  content: "";
}

.fa-tags:before {
  content: "";
}

.fa-book:before {
  content: "";
}

.fa-bookmark:before {
  content: "";
}

.fa-print:before {
  content: "";
}

.fa-camera:before {
  content: "";
}

.fa-font:before {
  content: "";
}

.fa-bold:before {
  content: "";
}

.fa-italic:before {
  content: "";
}

.fa-text-height:before {
  content: "";
}

.fa-text-width:before {
  content: "";
}

.fa-align-left:before {
  content: "";
}

.fa-align-center:before {
  content: "";
}

.fa-align-right:before {
  content: "";
}

.fa-align-justify:before {
  content: "";
}

.fa-list:before {
  content: "";
}

.fa-dedent:before,
.fa-outdent:before {
  content: "";
}

.fa-indent:before {
  content: "";
}

.fa-video-camera:before {
  content: "";
}

.fa-photo:before,
.fa-image:before,
.fa-picture-o:before {
  content: "";
}

.fa-pencil:before {
  content: "";
}

.fa-map-marker:before {
  content: "";
}

.fa-adjust:before {
  content: "";
}

.fa-tint:before {
  content: "";
}

.fa-edit:before,
.fa-pencil-square-o:before {
  content: "";
}

.fa-share-square-o:before {
  content: "";
}

.fa-check-square-o:before {
  content: "";
}

.fa-arrows:before {
  content: "";
}

.fa-step-backward:before {
  content: "";
}

.fa-fast-backward:before {
  content: "";
}

.fa-backward:before {
  content: "";
}

.fa-play:before {
  content: "";
}

.fa-pause:before {
  content: "";
}

.fa-stop:before {
  content: "";
}

.fa-forward:before {
  content: "";
}

.fa-fast-forward:before {
  content: "";
}

.fa-step-forward:before {
  content: "";
}

.fa-eject:before {
  content: "";
}

.fa-chevron-left:before {
  content: "";
}

.fa-chevron-right:before {
  content: "";
}

.fa-plus-circle:before {
  content: "";
}

.fa-minus-circle:before {
  content: "";
}

.fa-times-circle:before {
  content: "";
}

.fa-check-circle:before {
  content: "";
}

.fa-question-circle:before {
  content: "";
}

.fa-info-circle:before {
  content: "";
}

.fa-crosshairs:before {
  content: "";
}

.fa-times-circle-o:before {
  content: "";
}

.fa-check-circle-o:before {
  content: "";
}

.fa-ban:before {
  content: "";
}

.fa-arrow-left:before {
  content: "";
}

.fa-arrow-right:before {
  content: "";
}

.fa-arrow-up:before {
  content: "";
}

.fa-arrow-down:before {
  content: "";
}

.fa-mail-forward:before,
.fa-share:before {
  content: "";
}

.fa-expand:before {
  content: "";
}

.fa-compress:before {
  content: "";
}

.fa-plus:before {
  content: "";
}

.fa-minus:before {
  content: "";
}

.fa-asterisk:before {
  content: "";
}

.fa-exclamation-circle:before {
  content: "";
}

.fa-gift:before {
  content: "";
}

.fa-leaf:before {
  content: "";
}

.fa-fire:before {
  content: "";
}

.fa-eye:before {
  content: "";
}

.fa-eye-slash:before {
  content: "";
}

.fa-warning:before,
.fa-exclamation-triangle:before {
  content: "";
}

.fa-plane:before {
  content: "";
}

.fa-calendar:before {
  content: "";
}

.fa-random:before {
  content: "";
}

.fa-comment:before {
  content: "";
}

.fa-magnet:before {
  content: "";
}

.fa-chevron-up:before {
  content: "";
}

.fa-chevron-down:before {
  content: "";
}

.fa-retweet:before {
  content: "";
}

.fa-shopping-cart:before {
  content: "";
}

.fa-folder:before {
  content: "";
}

.fa-folder-open:before {
  content: "";
}

.fa-arrows-v:before {
  content: "";
}

.fa-arrows-h:before {
  content: "";
}

.fa-bar-chart-o:before,
.fa-bar-chart:before {
  content: "";
}

.fa-twitter-square:before {
  content: "";
}

.fa-facebook-square:before {
  content: "";
}

.fa-camera-retro:before {
  content: "";
}

.fa-key:before {
  content: "";
}

.fa-gears:before,
.fa-cogs:before {
  content: "";
}

.fa-comments:before {
  content: "";
}

.fa-thumbs-o-up:before {
  content: "";
}

.fa-thumbs-o-down:before {
  content: "";
}

.fa-star-half:before {
  content: "";
}

.fa-heart-o:before {
  content: "";
}

.fa-sign-out:before {
  content: "";
}

.fa-linkedin-square:before {
  content: "";
}

.fa-thumb-tack:before {
  content: "";
}

.fa-external-link:before {
  content: "";
}

.fa-sign-in:before {
  content: "";
}

.fa-trophy:before {
  content: "";
}

.fa-github-square:before {
  content: "";
}

.fa-upload:before {
  content: "";
}

.fa-lemon-o:before {
  content: "";
}

.fa-phone:before {
  content: "";
}

.fa-square-o:before {
  content: "";
}

.fa-bookmark-o:before {
  content: "";
}

.fa-phone-square:before {
  content: "";
}

.fa-twitter:before {
  content: "";
}

.fa-facebook-f:before,
.fa-facebook:before {
  content: "";
}

.fa-github:before {
  content: "";
}

.fa-unlock:before {
  content: "";
}

.fa-credit-card:before {
  content: "";
}

.fa-feed:before,
.fa-rss:before {
  content: "";
}

.fa-hdd-o:before {
  content: "";
}

.fa-bullhorn:before {
  content: "";
}

.fa-bell:before {
  content: "";
}

.fa-certificate:before {
  content: "";
}

.fa-hand-o-right:before {
  content: "";
}

.fa-hand-o-left:before {
  content: "";
}

.fa-hand-o-up:before {
  content: "";
}

.fa-hand-o-down:before {
  content: "";
}

.fa-arrow-circle-left:before {
  content: "";
}

.fa-arrow-circle-right:before {
  content: "";
}

.fa-arrow-circle-up:before {
  content: "";
}

.fa-arrow-circle-down:before {
  content: "";
}

.fa-globe:before {
  content: "";
}

.fa-wrench:before {
  content: "";
}

.fa-tasks:before {
  content: "";
}

.fa-filter:before {
  content: "";
}

.fa-briefcase:before {
  content: "";
}

.fa-arrows-alt:before {
  content: "";
}

.fa-group:before,
.fa-users:before {
  content: "";
}

.fa-chain:before,
.fa-link:before {
  content: "";
}

.fa-cloud:before {
  content: "";
}

.fa-flask:before {
  content: "";
}

.fa-cut:before,
.fa-scissors:before {
  content: "";
}

.fa-copy:before,
.fa-files-o:before {
  content: "";
}

.fa-paperclip:before {
  content: "";
}

.fa-save:before,
.fa-floppy-o:before {
  content: "";
}

.fa-square:before {
  content: "";
}

.fa-navicon:before,
.fa-reorder:before,
.fa-bars:before {
  content: "";
}

.fa-list-ul:before {
  content: "";
}

.fa-list-ol:before {
  content: "";
}

.fa-strikethrough:before {
  content: "";
}

.fa-underline:before {
  content: "";
}

.fa-table:before {
  content: "";
}

.fa-magic:before {
  content: "";
}

.fa-truck:before {
  content: "";
}

.fa-pinterest:before {
  content: "";
}

.fa-pinterest-square:before {
  content: "";
}

.fa-google-plus-square:before {
  content: "";
}

.fa-google-plus:before {
  content: "";
}

.fa-money:before {
  content: "";
}

.fa-caret-down:before {
  content: "";
}

.fa-caret-up:before {
  content: "";
}

.fa-caret-left:before {
  content: "";
}

.fa-caret-right:before {
  content: "";
}

.fa-columns:before {
  content: "";
}

.fa-unsorted:before,
.fa-sort:before {
  content: "";
}

.fa-sort-down:before,
.fa-sort-desc:before {
  content: "";
}

.fa-sort-up:before,
.fa-sort-asc:before {
  content: "";
}

.fa-envelope:before {
  content: "";
}

.fa-linkedin:before {
  content: "";
}

.fa-rotate-left:before,
.fa-undo:before {
  content: "";
}

.fa-legal:before,
.fa-gavel:before {
  content: "";
}

.fa-dashboard:before,
.fa-tachometer:before {
  content: "";
}

.fa-comment-o:before {
  content: "";
}

.fa-comments-o:before {
  content: "";
}

.fa-flash:before,
.fa-bolt:before {
  content: "";
}

.fa-sitemap:before {
  content: "";
}

.fa-umbrella:before {
  content: "";
}

.fa-paste:before,
.fa-clipboard:before {
  content: "";
}

.fa-lightbulb-o:before {
  content: "";
}

.fa-exchange:before {
  content: "";
}

.fa-cloud-download:before {
  content: "";
}

.fa-cloud-upload:before {
  content: "";
}

.fa-user-md:before {
  content: "";
}

.fa-stethoscope:before {
  content: "";
}

.fa-suitcase:before {
  content: "";
}

.fa-bell-o:before {
  content: "";
}

.fa-coffee:before {
  content: "";
}

.fa-cutlery:before {
  content: "";
}

.fa-file-text-o:before {
  content: "";
}

.fa-building-o:before {
  content: "";
}

.fa-hospital-o:before {
  content: "";
}

.fa-ambulance:before {
  content: "";
}

.fa-medkit:before {
  content: "";
}

.fa-fighter-jet:before {
  content: "";
}

.fa-beer:before {
  content: "";
}

.fa-h-square:before {
  content: "";
}

.fa-plus-square:before {
  content: "";
}

.fa-angle-double-left:before {
  content: "";
}

.fa-angle-double-right:before {
  content: "";
}

.fa-angle-double-up:before {
  content: "";
}

.fa-angle-double-down:before {
  content: "";
}

.fa-angle-left:before {
  content: "";
}

.fa-angle-right:before {
  content: "";
}

.fa-angle-up:before {
  content: "";
}

.fa-angle-down:before {
  content: "";
}

.fa-desktop:before {
  content: "";
}

.fa-laptop:before {
  content: "";
}

.fa-tablet:before {
  content: "";
}

.fa-mobile-phone:before,
.fa-mobile:before {
  content: "";
}

.fa-circle-o:before {
  content: "";
}

.fa-quote-left:before {
  content: "";
}

.fa-quote-right:before {
  content: "";
}

.fa-spinner:before {
  content: "";
}

.fa-circle:before {
  content: "";
}

.fa-mail-reply:before,
.fa-reply:before {
  content: "";
}

.fa-github-alt:before {
  content: "";
}

.fa-folder-o:before {
  content: "";
}

.fa-folder-open-o:before {
  content: "";
}

.fa-smile-o:before {
  content: "";
}

.fa-frown-o:before {
  content: "";
}

.fa-meh-o:before {
  content: "";
}

.fa-gamepad:before {
  content: "";
}

.fa-keyboard-o:before {
  content: "";
}

.fa-flag-o:before {
  content: "";
}

.fa-flag-checkered:before {
  content: "";
}

.fa-terminal:before {
  content: "";
}

.fa-code:before {
  content: "";
}

.fa-mail-reply-all:before,
.fa-reply-all:before {
  content: "";
}

.fa-star-half-empty:before,
.fa-star-half-full:before,
.fa-star-half-o:before {
  content: "";
}

.fa-location-arrow:before {
  content: "";
}

.fa-crop:before {
  content: "";
}

.fa-code-fork:before {
  content: "";
}

.fa-unlink:before,
.fa-chain-broken:before {
  content: "";
}

.fa-question:before {
  content: "";
}

.fa-info:before {
  content: "";
}

.fa-exclamation:before {
  content: "";
}

.fa-superscript:before {
  content: "";
}

.fa-subscript:before {
  content: "";
}

.fa-eraser:before {
  content: "";
}

.fa-puzzle-piece:before {
  content: "";
}

.fa-microphone:before {
  content: "";
}

.fa-microphone-slash:before {
  content: "";
}

.fa-shield:before {
  content: "";
}

.fa-calendar-o:before {
  content: "";
}

.fa-fire-extinguisher:before {
  content: "";
}

.fa-rocket:before {
  content: "";
}

.fa-maxcdn:before {
  content: "";
}

.fa-chevron-circle-left:before {
  content: "";
}

.fa-chevron-circle-right:before {
  content: "";
}

.fa-chevron-circle-up:before {
  content: "";
}

.fa-chevron-circle-down:before {
  content: "";
}

.fa-html5:before {
  content: "";
}

.fa-css3:before {
  content: "";
}

.fa-anchor:before {
  content: "";
}

.fa-unlock-alt:before {
  content: "";
}

.fa-bullseye:before {
  content: "";
}

.fa-ellipsis-h:before {
  content: "";
}

.fa-ellipsis-v:before {
  content: "";
}

.fa-rss-square:before {
  content: "";
}

.fa-play-circle:before {
  content: "";
}

.fa-ticket:before {
  content: "";
}

.fa-minus-square:before {
  content: "";
}

.fa-minus-square-o:before {
  content: "";
}

.fa-level-up:before {
  content: "";
}

.fa-level-down:before {
  content: "";
}

.fa-check-square:before {
  content: "";
}

.fa-pencil-square:before {
  content: "";
}

.fa-external-link-square:before {
  content: "";
}

.fa-share-square:before {
  content: "";
}

.fa-compass:before {
  content: "";
}

.fa-toggle-down:before,
.fa-caret-square-o-down:before {
  content: "";
}

.fa-toggle-up:before,
.fa-caret-square-o-up:before {
  content: "";
}

.fa-toggle-right:before,
.fa-caret-square-o-right:before {
  content: "";
}

.fa-euro:before,
.fa-eur:before {
  content: "";
}

.fa-gbp:before {
  content: "";
}

.fa-dollar:before,
.fa-usd:before {
  content: "";
}

.fa-rupee:before,
.fa-inr:before {
  content: "";
}

.fa-cny:before,
.fa-rmb:before,
.fa-yen:before,
.fa-jpy:before {
  content: "";
}

.fa-ruble:before,
.fa-rouble:before,
.fa-rub:before {
  content: "";
}

.fa-won:before,
.fa-krw:before {
  content: "";
}

.fa-bitcoin:before,
.fa-btc:before {
  content: "";
}

.fa-file:before {
  content: "";
}

.fa-file-text:before {
  content: "";
}

.fa-sort-alpha-asc:before {
  content: "";
}

.fa-sort-alpha-desc:before {
  content: "";
}

.fa-sort-amount-asc:before {
  content: "";
}

.fa-sort-amount-desc:before {
  content: "";
}

.fa-sort-numeric-asc:before {
  content: "";
}

.fa-sort-numeric-desc:before {
  content: "";
}

.fa-thumbs-up:before {
  content: "";
}

.fa-thumbs-down:before {
  content: "";
}

.fa-youtube-square:before {
  content: "";
}

.fa-youtube:before {
  content: "";
}

.fa-xing:before {
  content: "";
}

.fa-xing-square:before {
  content: "";
}

.fa-youtube-play:before {
  content: "";
}

.fa-dropbox:before {
  content: "";
}

.fa-stack-overflow:before {
  content: "";
}

.fa-instagram:before {
  content: "";
}

.fa-flickr:before {
  content: "";
}

.fa-adn:before {
  content: "";
}

.fa-bitbucket:before {
  content: "";
}

.fa-bitbucket-square:before {
  content: "";
}

.fa-tumblr:before {
  content: "";
}

.fa-tumblr-square:before {
  content: "";
}

.fa-long-arrow-down:before {
  content: "";
}

.fa-long-arrow-up:before {
  content: "";
}

.fa-long-arrow-left:before {
  content: "";
}

.fa-long-arrow-right:before {
  content: "";
}

.fa-apple:before {
  content: "";
}

.fa-windows:before {
  content: "";
}

.fa-android:before {
  content: "";
}

.fa-linux:before {
  content: "";
}

.fa-dribbble:before {
  content: "";
}

.fa-skype:before {
  content: "";
}

.fa-foursquare:before {
  content: "";
}

.fa-trello:before {
  content: "";
}

.fa-female:before {
  content: "";
}

.fa-male:before {
  content: "";
}

.fa-gittip:before,
.fa-gratipay:before {
  content: "";
}

.fa-sun-o:before {
  content: "";
}

.fa-moon-o:before {
  content: "";
}

.fa-archive:before {
  content: "";
}

.fa-bug:before {
  content: "";
}

.fa-vk:before {
  content: "";
}

.fa-weibo:before {
  content: "";
}

.fa-renren:before {
  content: "";
}

.fa-pagelines:before {
  content: "";
}

.fa-stack-exchange:before {
  content: "";
}

.fa-arrow-circle-o-right:before {
  content: "";
}

.fa-arrow-circle-o-left:before {
  content: "";
}

.fa-toggle-left:before,
.fa-caret-square-o-left:before {
  content: "";
}

.fa-dot-circle-o:before {
  content: "";
}

.fa-wheelchair:before {
  content: "";
}

.fa-vimeo-square:before {
  content: "";
}

.fa-turkish-lira:before,
.fa-try:before {
  content: "";
}

.fa-plus-square-o:before {
  content: "";
}

.fa-space-shuttle:before {
  content: "";
}

.fa-slack:before {
  content: "";
}

.fa-envelope-square:before {
  content: "";
}

.fa-wordpress:before {
  content: "";
}

.fa-openid:before {
  content: "";
}

.fa-institution:before,
.fa-bank:before,
.fa-university:before {
  content: "";
}

.fa-mortar-board:before,
.fa-graduation-cap:before {
  content: "";
}

.fa-yahoo:before {
  content: "";
}

.fa-google:before {
  content: "";
}

.fa-reddit:before {
  content: "";
}

.fa-reddit-square:before {
  content: "";
}

.fa-stumbleupon-circle:before {
  content: "";
}

.fa-stumbleupon:before {
  content: "";
}

.fa-delicious:before {
  content: "";
}

.fa-digg:before {
  content: "";
}

.fa-pied-piper-pp:before {
  content: "";
}

.fa-pied-piper-alt:before {
  content: "";
}

.fa-drupal:before {
  content: "";
}

.fa-joomla:before {
  content: "";
}

.fa-language:before {
  content: "";
}

.fa-fax:before {
  content: "";
}

.fa-building:before {
  content: "";
}

.fa-child:before {
  content: "";
}

.fa-paw:before {
  content: "";
}

.fa-spoon:before {
  content: "";
}

.fa-cube:before {
  content: "";
}

.fa-cubes:before {
  content: "";
}

.fa-behance:before {
  content: "";
}

.fa-behance-square:before {
  content: "";
}

.fa-steam:before {
  content: "";
}

.fa-steam-square:before {
  content: "";
}

.fa-recycle:before {
  content: "";
}

.fa-automobile:before,
.fa-car:before {
  content: "";
}

.fa-cab:before,
.fa-taxi:before {
  content: "";
}

.fa-tree:before {
  content: "";
}

.fa-spotify:before {
  content: "";
}

.fa-deviantart:before {
  content: "";
}

.fa-soundcloud:before {
  content: "";
}

.fa-database:before {
  content: "";
}

.fa-file-pdf-o:before {
  content: "";
}

.fa-file-word-o:before {
  content: "";
}

.fa-file-excel-o:before {
  content: "";
}

.fa-file-powerpoint-o:before {
  content: "";
}

.fa-file-photo-o:before,
.fa-file-picture-o:before,
.fa-file-image-o:before {
  content: "";
}

.fa-file-zip-o:before,
.fa-file-archive-o:before {
  content: "";
}

.fa-file-sound-o:before,
.fa-file-audio-o:before {
  content: "";
}

.fa-file-movie-o:before,
.fa-file-video-o:before {
  content: "";
}

.fa-file-code-o:before {
  content: "";
}

.fa-vine:before {
  content: "";
}

.fa-codepen:before {
  content: "";
}

.fa-jsfiddle:before {
  content: "";
}

.fa-life-bouy:before,
.fa-life-buoy:before,
.fa-life-saver:before,
.fa-support:before,
.fa-life-ring:before {
  content: "";
}

.fa-circle-o-notch:before {
  content: "";
}

.fa-ra:before,
.fa-resistance:before,
.fa-rebel:before {
  content: "";
}

.fa-ge:before,
.fa-empire:before {
  content: "";
}

.fa-git-square:before {
  content: "";
}

.fa-git:before {
  content: "";
}

.fa-y-combinator-square:before,
.fa-yc-square:before,
.fa-hacker-news:before {
  content: "";
}

.fa-tencent-weibo:before {
  content: "";
}

.fa-qq:before {
  content: "";
}

.fa-wechat:before,
.fa-weixin:before {
  content: "";
}

.fa-send:before,
.fa-paper-plane:before {
  content: "";
}

.fa-send-o:before,
.fa-paper-plane-o:before {
  content: "";
}

.fa-history:before {
  content: "";
}

.fa-circle-thin:before {
  content: "";
}

.fa-header:before {
  content: "";
}

.fa-paragraph:before {
  content: "";
}

.fa-sliders:before {
  content: "";
}

.fa-share-alt:before {
  content: "";
}

.fa-share-alt-square:before {
  content: "";
}

.fa-bomb:before {
  content: "";
}

.fa-soccer-ball-o:before,
.fa-futbol-o:before {
  content: "";
}

.fa-tty:before {
  content: "";
}

.fa-binoculars:before {
  content: "";
}

.fa-plug:before {
  content: "";
}

.fa-slideshare:before {
  content: "";
}

.fa-twitch:before {
  content: "";
}

.fa-yelp:before {
  content: "";
}

.fa-newspaper-o:before {
  content: "";
}

.fa-wifi:before {
  content: "";
}

.fa-calculator:before {
  content: "";
}

.fa-paypal:before {
  content: "";
}

.fa-google-wallet:before {
  content: "";
}

.fa-cc-visa:before {
  content: "";
}

.fa-cc-mastercard:before {
  content: "";
}

.fa-cc-discover:before {
  content: "";
}

.fa-cc-amex:before {
  content: "";
}

.fa-cc-paypal:before {
  content: "";
}

.fa-cc-stripe:before {
  content: "";
}

.fa-bell-slash:before {
  content: "";
}

.fa-bell-slash-o:before {
  content: "";
}

.fa-trash:before {
  content: "";
}

.fa-copyright:before {
  content: "";
}

.fa-at:before {
  content: "";
}

.fa-eyedropper:before {
  content: "";
}

.fa-paint-brush:before {
  content: "";
}

.fa-birthday-cake:before {
  content: "";
}

.fa-area-chart:before {
  content: "";
}

.fa-pie-chart:before {
  content: "";
}

.fa-line-chart:before {
  content: "";
}

.fa-lastfm:before {
  content: "";
}

.fa-lastfm-square:before {
  content: "";
}

.fa-toggle-off:before {
  content: "";
}

.fa-toggle-on:before {
  content: "";
}

.fa-bicycle:before {
  content: "";
}

.fa-bus:before {
  content: "";
}

.fa-ioxhost:before {
  content: "";
}

.fa-angellist:before {
  content: "";
}

.fa-cc:before {
  content: "";
}

.fa-shekel:before,
.fa-sheqel:before,
.fa-ils:before {
  content: "";
}

.fa-meanpath:before {
  content: "";
}

.fa-buysellads:before {
  content: "";
}

.fa-connectdevelop:before {
  content: "";
}

.fa-dashcube:before {
  content: "";
}

.fa-forumbee:before {
  content: "";
}

.fa-leanpub:before {
  content: "";
}

.fa-sellsy:before {
  content: "";
}

.fa-shirtsinbulk:before {
  content: "";
}

.fa-simplybuilt:before {
  content: "";
}

.fa-skyatlas:before {
  content: "";
}

.fa-cart-plus:before {
  content: "";
}

.fa-cart-arrow-down:before {
  content: "";
}

.fa-diamond:before {
  content: "";
}

.fa-ship:before {
  content: "";
}

.fa-user-secret:before {
  content: "";
}

.fa-motorcycle:before {
  content: "";
}

.fa-street-view:before {
  content: "";
}

.fa-heartbeat:before {
  content: "";
}

.fa-venus:before {
  content: "";
}

.fa-mars:before {
  content: "";
}

.fa-mercury:before {
  content: "";
}

.fa-intersex:before,
.fa-transgender:before {
  content: "";
}

.fa-transgender-alt:before {
  content: "";
}

.fa-venus-double:before {
  content: "";
}

.fa-mars-double:before {
  content: "";
}

.fa-venus-mars:before {
  content: "";
}

.fa-mars-stroke:before {
  content: "";
}

.fa-mars-stroke-v:before {
  content: "";
}

.fa-mars-stroke-h:before {
  content: "";
}

.fa-neuter:before {
  content: "";
}

.fa-genderless:before {
  content: "";
}

.fa-facebook-official:before {
  content: "";
}

.fa-pinterest-p:before {
  content: "";
}

.fa-whatsapp:before {
  content: "";
}

.fa-server:before {
  content: "";
}

.fa-user-plus:before {
  content: "";
}

.fa-user-times:before {
  content: "";
}

.fa-hotel:before,
.fa-bed:before {
  content: "";
}

.fa-viacoin:before {
  content: "";
}

.fa-train:before {
  content: "";
}

.fa-subway:before {
  content: "";
}

.fa-medium:before {
  content: "";
}

.fa-yc:before,
.fa-y-combinator:before {
  content: "";
}

.fa-optin-monster:before {
  content: "";
}

.fa-opencart:before {
  content: "";
}

.fa-expeditedssl:before {
  content: "";
}

.fa-battery-4:before,
.fa-battery-full:before {
  content: "";
}

.fa-battery-3:before,
.fa-battery-three-quarters:before {
  content: "";
}

.fa-battery-2:before,
.fa-battery-half:before {
  content: "";
}

.fa-battery-1:before,
.fa-battery-quarter:before {
  content: "";
}

.fa-battery-0:before,
.fa-battery-empty:before {
  content: "";
}

.fa-mouse-pointer:before {
  content: "";
}

.fa-i-cursor:before {
  content: "";
}

.fa-object-group:before {
  content: "";
}

.fa-object-ungroup:before {
  content: "";
}

.fa-sticky-note:before {
  content: "";
}

.fa-sticky-note-o:before {
  content: "";
}

.fa-cc-jcb:before {
  content: "";
}

.fa-cc-diners-club:before {
  content: "";
}

.fa-clone:before {
  content: "";
}

.fa-balance-scale:before {
  content: "";
}

.fa-hourglass-o:before {
  content: "";
}

.fa-hourglass-1:before,
.fa-hourglass-start:before {
  content: "";
}

.fa-hourglass-2:before,
.fa-hourglass-half:before {
  content: "";
}

.fa-hourglass-3:before,
.fa-hourglass-end:before {
  content: "";
}

.fa-hourglass:before {
  content: "";
}

.fa-hand-grab-o:before,
.fa-hand-rock-o:before {
  content: "";
}

.fa-hand-stop-o:before,
.fa-hand-paper-o:before {
  content: "";
}

.fa-hand-scissors-o:before {
  content: "";
}

.fa-hand-lizard-o:before {
  content: "";
}

.fa-hand-spock-o:before {
  content: "";
}

.fa-hand-pointer-o:before {
  content: "";
}

.fa-hand-peace-o:before {
  content: "";
}

.fa-trademark:before {
  content: "";
}

.fa-registered:before {
  content: "";
}

.fa-creative-commons:before {
  content: "";
}

.fa-gg:before {
  content: "";
}

.fa-gg-circle:before {
  content: "";
}

.fa-tripadvisor:before {
  content: "";
}

.fa-odnoklassniki:before {
  content: "";
}

.fa-odnoklassniki-square:before {
  content: "";
}

.fa-get-pocket:before {
  content: "";
}

.fa-wikipedia-w:before {
  content: "";
}

.fa-safari:before {
  content: "";
}

.fa-chrome:before {
  content: "";
}

.fa-firefox:before {
  content: "";
}

.fa-opera:before {
  content: "";
}

.fa-internet-explorer:before {
  content: "";
}

.fa-tv:before,
.fa-television:before {
  content: "";
}

.fa-contao:before {
  content: "";
}

.fa-500px:before {
  content: "";
}

.fa-amazon:before {
  content: "";
}

.fa-calendar-plus-o:before {
  content: "";
}

.fa-calendar-minus-o:before {
  content: "";
}

.fa-calendar-times-o:before {
  content: "";
}

.fa-calendar-check-o:before {
  content: "";
}

.fa-industry:before {
  content: "";
}

.fa-map-pin:before {
  content: "";
}

.fa-map-signs:before {
  content: "";
}

.fa-map-o:before {
  content: "";
}

.fa-map:before {
  content: "";
}

.fa-commenting:before {
  content: "";
}

.fa-commenting-o:before {
  content: "";
}

.fa-houzz:before {
  content: "";
}

.fa-vimeo:before {
  content: "";
}

.fa-black-tie:before {
  content: "";
}

.fa-fonticons:before {
  content: "";
}

.fa-reddit-alien:before {
  content: "";
}

.fa-edge:before {
  content: "";
}

.fa-credit-card-alt:before {
  content: "";
}

.fa-codiepie:before {
  content: "";
}

.fa-modx:before {
  content: "";
}

.fa-fort-awesome:before {
  content: "";
}

.fa-usb:before {
  content: "";
}

.fa-product-hunt:before {
  content: "";
}

.fa-mixcloud:before {
  content: "";
}

.fa-scribd:before {
  content: "";
}

.fa-pause-circle:before {
  content: "";
}

.fa-pause-circle-o:before {
  content: "";
}

.fa-stop-circle:before {
  content: "";
}

.fa-stop-circle-o:before {
  content: "";
}

.fa-shopping-bag:before {
  content: "";
}

.fa-shopping-basket:before {
  content: "";
}

.fa-hashtag:before {
  content: "";
}

.fa-bluetooth:before {
  content: "";
}

.fa-bluetooth-b:before {
  content: "";
}

.fa-percent:before {
  content: "";
}

.fa-gitlab:before {
  content: "";
}

.fa-wpbeginner:before {
  content: "";
}

.fa-wpforms:before {
  content: "";
}

.fa-envira:before {
  content: "";
}

.fa-universal-access:before {
  content: "";
}

.fa-wheelchair-alt:before {
  content: "";
}

.fa-question-circle-o:before {
  content: "";
}

.fa-blind:before {
  content: "";
}

.fa-audio-description:before {
  content: "";
}

.fa-volume-control-phone:before {
  content: "";
}

.fa-braille:before {
  content: "";
}

.fa-assistive-listening-systems:before {
  content: "";
}

.fa-asl-interpreting:before,
.fa-american-sign-language-interpreting:before {
  content: "";
}

.fa-deafness:before,
.fa-hard-of-hearing:before,
.fa-deaf:before {
  content: "";
}

.fa-glide:before {
  content: "";
}

.fa-glide-g:before {
  content: "";
}

.fa-signing:before,
.fa-sign-language:before {
  content: "";
}

.fa-low-vision:before {
  content: "";
}

.fa-viadeo:before {
  content: "";
}

.fa-viadeo-square:before {
  content: "";
}

.fa-snapchat:before {
  content: "";
}

.fa-snapchat-ghost:before {
  content: "";
}

.fa-snapchat-square:before {
  content: "";
}

.fa-pied-piper:before {
  content: "";
}

.fa-first-order:before {
  content: "";
}

.fa-yoast:before {
  content: "";
}

.fa-themeisle:before {
  content: "";
}

.fa-google-plus-circle:before,
.fa-google-plus-official:before {
  content: "";
}

.fa-fa:before,
.fa-font-awesome:before {
  content: "";
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}

.sr-only-focusable:active, .sr-only-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
}

/*!
 Material Components for the web
 Copyright (c) 2017 Google Inc.
 License: Apache-2.0
*/
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
.mdc-animation-linear-out-slow-in {
  -webkit-animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
  animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
}

.mdc-animation-fast-out-slow-in {
  -webkit-animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

.mdc-animation-fast-out-linear-in {
  -webkit-animation-timing-function: cubic-bezier(0.4, 0, 1, 1);
  animation-timing-function: cubic-bezier(0.4, 0, 1, 1);
}

/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * The css property used for elevation. In most cases this should not be changed. It is exposed
 * as a variable for abstraction / easy use when needing to reference the property directly, for
 * example in a `will-change` rule.
 */
/**
 * The default duration value for elevation transitions.
 */
/**
 * The default easing value for elevation transitions.
 */
/**
 * Applies the correct css rules to an element to give it the elevation specified by $z-value.
 * The $z-value must be between 0 and 24.
 */
/**
 * Returns a string that can be used as the value for a `transition` property for elevation.
 * Calling this function directly is useful in situations where a component needs to transition
 * more than one property.
 *
 * ```scss
 * .foo {
 *   transition: mdc-elevation-transition-rule(), opacity 100ms ease;
 *   will-change: $mdc-elevation-property, opacity;
 * }
 * ```
 */
/**
 * Applies the correct css rules needed to have an element transition between elevations.
 * This mixin should be applied to elements whose elevation values will change depending on their
 * context (e.g. when active or disabled).
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Applies the correct theme color style to the specified property.
 * $property is typically color or background-color, but can be any CSS property that accepts color values.
 * $style should be one of the map keys in $mdc-theme-property-values (_variables.scss).
 */
/**
 * Creates a rule to be used in MDC-Web components for dark theming, and applies the provided contents.
 * Should provide the $root-selector option if applied to anything other than the root selector.
 * When used with a modifier class, provide a second argument of `true` for the $compound parameter
 * to specify that this should be attached as a compound class.
 *
 * Usage example:
 *
 * ```scss
 * .mdc-foo {
 *   color: black;
 *
 *   @include mdc-theme-dark {
 *     color: white;
 *   }
 *
 *   &__bar {
 *     background: black;
 *
 *     @include mdc-theme-dark(".mdc-foo") {
 *       background: white;
 *     }
 *   }
 * }
 *
 * .mdc-foo--disabled {
 *   opacity: .38;
 *
 *   @include mdc-theme-dark(".mdc-foo", true) {
 *     opacity: .5;
 *   }
 * }
 * ```
 */
/* stylelint-enable scss/dollar-variable-pattern */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* TODO(sgomes): Figure out what to do about desktop font sizes. */
/* TODO(sgomes): Figure out what to do about i18n and i18n font sizes. */
/* postcss-bem-linter: define button */
/* stylelint-disable declaration-property-unit-whitelist */
.mdc-button {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 0.875rem;
  font-weight: 500;
  letter-spacing: 0.04em;
  line-height: 1.5rem;
  color: rgba(0, 0, 0, 0.87);
  color: var(--mdc-theme-text-primary-on-light, rgba(0, 0, 0, 0.87));
  display: inline-block;
  position: relative;
  min-width: 64px;
  height: 36px;
  padding: 0 16px;
  border: none;
  border-radius: 2px;
  outline: none;
  background: transparent;
  font-size: 14px;
  /* Override font to specifically be px as spec defined pt */
  font-weight: 500;
  line-height: 36px;
  /* Override line-height so text aligns centered */
  text-align: center;
  text-transform: uppercase;
  vertical-align: middle;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  -webkit-appearance: none;
  -webkit-tap-highlight-color: transparent;
  /* postcss-bem-linter: ignore */
  /* stylelint-disable selector-no-type */
}

.mdc-button--theme-dark,
.mdc-theme--dark .mdc-button {
  color: white;
  color: var(--mdc-theme-text-primary-on-dark, white);
}

.mdc-button::before {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  -webkit-transition: opacity 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  border-radius: inherit;
  background: currentColor;
  content: "";
  opacity: 0;
}

.mdc-button:focus::before {
  -webkit-transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  opacity: .12;
}

.mdc-button:active::before {
  -webkit-transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  /*
      Slightly darker value for visual distinction.
      This allows a full base that has distinct modes.
      Progressive enhancement with ripples will provide complete button spec alignment.
    */
  opacity: .18;
}

.mdc-button:focus:active::before {
  -webkit-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

.mdc-button:active {
  outline: none;
}

.mdc-button:hover {
  cursor: pointer;
}

.mdc-button::-moz-focus-inner {
  padding: 0;
  border: 0;
}

.mdc-button--dense {
  height: 32px;
  font-size: .8125rem;
  /* 13sp */
  line-height: 32px;
}

.mdc-button--raised {
  -webkit-box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
  -webkit-transition: -webkit-box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
  will-change: box-shadow;
  min-width: 88px;
}

.mdc-button--raised:active {
  -webkit-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
}

.mdc-button--theme-dark .mdc-button--raised,
.mdc-theme--dark .mdc-button--raised {
  background-color: #3f51b5;
  background-color: var(--mdc-theme-primary, #3f51b5);
  /* postcss-bem-linter: ignore */
}

.mdc-button--theme-dark .mdc-button--raised::before,
.mdc-theme--dark .mdc-button--raised::before {
  /*
          We are explicitly not fully adhering to Material Design here.
          This should be the 700-shade when active instead of a black shade.
          Due to the complexity involved in adhering fully it is being ignored.
          Instead re-using the existing architecture for shading works just fine.
          - With <3 from Garbee
        */
  color: black;
}

.mdc-button--primary {
  color: #3f51b5;
  color: var(--mdc-theme-primary, #3f51b5);
  /* postcss-bem-linter: ignore */
}

.mdc-button--theme-dark .mdc-button--primary,
.mdc-theme--dark .mdc-button--primary {
  color: #3f51b5;
  color: var(--mdc-theme-primary, #3f51b5);
}

.mdc-button--primary.mdc-button--raised {
  background-color: #3f51b5;
  background-color: var(--mdc-theme-primary, #3f51b5);
  color: white;
  color: var(--mdc-theme-text-primary-on-primary, white);
  /* postcss-bem-linter: ignore */
}

.mdc-button--primary.mdc-button--raised::before {
  color: black;
}

.mdc-button--accent {
  color: #ff4081;
  color: var(--mdc-theme-accent, #ff4081);
  /* postcss-bem-linter: ignore */
}

.mdc-button--theme-dark .mdc-button--accent,
.mdc-theme--dark .mdc-button--accent {
  color: #ff4081;
  color: var(--mdc-theme-accent, #ff4081);
}

.mdc-button--accent.mdc-button--raised {
  background-color: #ff4081;
  background-color: var(--mdc-theme-accent, #ff4081);
  color: white;
  color: var(--mdc-theme-text-primary-on-accent, white);
  /* postcss-bem-linter: ignore */
}

.mdc-button--accent.mdc-button--raised::before {
  color: black;
}

.mdc-button--compact {
  padding: 0 8px;
}

fieldset:disabled .mdc-button, .mdc-button:disabled {
  color: rgba(0, 0, 0, 0.26);
  cursor: default;
  pointer-events: none;
}

.mdc-button--theme-dark fieldset:disabled .mdc-button,
.mdc-theme--dark fieldset:disabled .mdc-button, .mdc-button--theme-dark .mdc-button:disabled,
.mdc-theme--dark .mdc-button:disabled {
  color: rgba(255, 255, 255, 0.3);
}

fieldset:disabled .mdc-button--raised, .mdc-button--raised:disabled {
  -webkit-box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
  background-color: rgba(0, 0, 0, 0.12);
  pointer-events: none;
}

.mdc-button--theme-dark fieldset:disabled .mdc-button--raised,
.mdc-theme--dark fieldset:disabled .mdc-button--raised, .mdc-button--theme-dark .mdc-button--raised:disabled,
.mdc-theme--dark .mdc-button--raised:disabled {
  background-color: rgba(255, 255, 255, 0.12);
}

/* postcss-bem-linter: end */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * The css property used for elevation. In most cases this should not be changed. It is exposed
 * as a variable for abstraction / easy use when needing to reference the property directly, for
 * example in a `will-change` rule.
 */
/**
 * The default duration value for elevation transitions.
 */
/**
 * The default easing value for elevation transitions.
 */
/**
 * Applies the correct css rules to an element to give it the elevation specified by $z-value.
 * The $z-value must be between 0 and 24.
 */
/**
 * Returns a string that can be used as the value for a `transition` property for elevation.
 * Calling this function directly is useful in situations where a component needs to transition
 * more than one property.
 *
 * ```scss
 * .foo {
 *   transition: mdc-elevation-transition-rule(), opacity 100ms ease;
 *   will-change: $mdc-elevation-property, opacity;
 * }
 * ```
 */
/**
 * Applies the correct css rules needed to have an element transition between elevations.
 * This mixin should be applied to elements whose elevation values will change depending on their
 * context (e.g. when active or disabled).
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Applies the correct theme color style to the specified property.
 * $property is typically color or background-color, but can be any CSS property that accepts color values.
 * $style should be one of the map keys in $mdc-theme-property-values (_variables.scss).
 */
/**
 * Creates a rule to be used in MDC-Web components for dark theming, and applies the provided contents.
 * Should provide the $root-selector option if applied to anything other than the root selector.
 * When used with a modifier class, provide a second argument of `true` for the $compound parameter
 * to specify that this should be attached as a compound class.
 *
 * Usage example:
 *
 * ```scss
 * .mdc-foo {
 *   color: black;
 *
 *   @include mdc-theme-dark {
 *     color: white;
 *   }
 *
 *   &__bar {
 *     background: black;
 *
 *     @include mdc-theme-dark(".mdc-foo") {
 *       background: white;
 *     }
 *   }
 * }
 *
 * .mdc-foo--disabled {
 *   opacity: .38;
 *
 *   @include mdc-theme-dark(".mdc-foo", true) {
 *     opacity: .5;
 *   }
 * }
 * ```
 */
/* stylelint-enable scss/dollar-variable-pattern */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* TODO(sgomes): Figure out what to do about desktop font sizes. */
/* TODO(sgomes): Figure out what to do about i18n and i18n font sizes. */
/* postcss-bem-linter: define card */
.mdc-card {
  -webkit-box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  -webkit-flex-direction: column;
  flex-direction: column;
  -webkit-box-pack: end;
  -ms-flex-pack: end;
  -webkit-justify-content: flex-end;
  justify-content: flex-end;
  padding: 0;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.mdc-card__primary {
  padding: 16px;
  /* Add extra space before large title. */
  /* Add extra padding if this is the last block. */
}

.mdc-card__primary .mdc-card__title--large {
  padding-top: 8px;
}

.mdc-card__primary:last-child {
  padding-bottom: 24px;
}

.mdc-card__supporting-text {
  padding: 8px 16px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 0.875rem;
  font-weight: 400;
  letter-spacing: 0.04em;
  line-height: 1.25rem;
  color: rgba(0, 0, 0, 0.87);
  color: var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87));
  /* Remove top padding if immediately preceded by a primary block. */
  /* Add extra padding if this is the last block. */
}

.mdc-card--theme-dark .mdc-card__supporting-text,
.mdc-theme--dark .mdc-card__supporting-text {
  color: white;
  color: var(--mdc-theme-text-primary-on-dark, white);
}

.mdc-card__primary + .mdc-card__supporting-text {
  margin-top: -8px;
  padding-top: 0;
}

.mdc-card__supporting-text:last-child {
  padding-bottom: 24px;
}

.mdc-card__actions {
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  padding: 8px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  /* Adjust text color for dark theme. */
  /* Tweak button paddings and margins when they're used as actions */
  /* Vertical actions (one per line) */
}

.mdc-card--theme-dark .mdc-card__actions,
.mdc-theme--dark .mdc-card__actions {
  color: white;
  color: var(--mdc-theme-text-primary-on-dark, white);
}

.mdc-card__actions .mdc-card__action {
  margin: 0 8px 0 0;
}

.mdc-card__actions .mdc-card__action:last-child {
  margin-right: 0;
}

.mdc-card__actions--vertical {
  -ms-flex-flow: column;
  -webkit-flex-flow: column;
  flex-flow: column;
  -webkit-box-align: start;
  -ms-flex-align: start;
  -webkit-align-items: flex-start;
  align-items: flex-start;
}

.mdc-card__actions--vertical .mdc-card__action {
  margin: 0 0 4px;
}

.mdc-card__actions--vertical .mdc-card__action:last-child {
  margin-bottom: 0;
}

.mdc-card__media {
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  -webkit-flex-direction: column;
  flex-direction: column;
  -webkit-box-pack: end;
  -ms-flex-pack: end;
  -webkit-justify-content: flex-end;
  justify-content: flex-end;
  padding: 16px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.mdc-card__media-item {
  display: inline-block;
  width: auto;
  height: 80px;
  margin: 16px 0 0;
  padding: 0;
}

.mdc-card__media-item--1dot5x {
  width: auto;
  height: 120px;
}

.mdc-card__media-item--2x {
  width: auto;
  height: 160px;
}

.mdc-card__media-item--3x {
  width: auto;
  height: 240px;
}

.mdc-card__title {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 0.875rem;
  font-weight: 500;
  letter-spacing: 0.04em;
  line-height: 1.5rem;
  color: rgba(0, 0, 0, 0.87);
  color: var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87));
  /* Adjust text color for dark theme. */
  margin: -.063rem 0;
  /* -1sp 0 */
}

.mdc-card--theme-dark .mdc-card__title,
.mdc-theme--dark .mdc-card__title {
  color: white;
  color: var(--mdc-theme-text-primary-on-dark, white);
}

.mdc-card__title--large {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 1.5rem;
  font-weight: 400;
  letter-spacing: normal;
  line-height: 2rem;
  margin: 0;
}

.mdc-card__subtitle {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 0.875rem;
  font-weight: 400;
  letter-spacing: 0.04em;
  line-height: 1.25rem;
  color: rgba(0, 0, 0, 0.87);
  color: var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87));
  /* Adjust text color for dark theme. */
  margin: -.063rem 0;
  /* -1sp 0 */
}

.mdc-card--theme-dark .mdc-card__subtitle,
.mdc-theme--dark .mdc-card__subtitle {
  color: white;
  color: var(--mdc-theme-text-primary-on-dark, white);
}

.mdc-card__horizontal-block {
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -ms-flex-direction: row;
  -webkit-flex-direction: row;
  flex-direction: row;
  -webkit-box-align: start;
  -ms-flex-align: start;
  -webkit-align-items: flex-start;
  align-items: flex-start;
  -webkit-box-pack: justify;
  -ms-flex-pack: justify;
  -webkit-justify-content: space-between;
  justify-content: space-between;
  padding: 0 16px 0 0;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.mdc-card__horizontal-block .mdc-card__actions--vertical {
  margin: 16px;
}

.mdc-card__horizontal-block .mdc-card__media-item {
  margin-left: 16px;
}

.mdc-card__horizontal-block:last-child .mdc-card__media-item {
  margin-bottom: 16px;
}

/* postcss-bem-linter: end */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* Manual calculation done on SVG */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Applies the correct theme color style to the specified property.
 * $property is typically color or background-color, but can be any CSS property that accepts color values.
 * $style should be one of the map keys in $mdc-theme-property-values (_variables.scss).
 */
/**
 * Creates a rule to be used in MDC-Web components for dark theming, and applies the provided contents.
 * Should provide the $root-selector option if applied to anything other than the root selector.
 * When used with a modifier class, provide a second argument of `true` for the $compound parameter
 * to specify that this should be attached as a compound class.
 *
 * Usage example:
 *
 * ```scss
 * .mdc-foo {
 *   color: black;
 *
 *   @include mdc-theme-dark {
 *     color: white;
 *   }
 *
 *   &__bar {
 *     background: black;
 *
 *     @include mdc-theme-dark(".mdc-foo") {
 *       background: white;
 *     }
 *   }
 * }
 *
 * .mdc-foo--disabled {
 *   opacity: .38;
 *
 *   @include mdc-theme-dark(".mdc-foo", true) {
 *     opacity: .5;
 *   }
 * }
 * ```
 */
/* stylelint-enable scss/dollar-variable-pattern */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* Manual calculation done on SVG */
@-webkit-keyframes mdc-checkbox-fade-in-background {
  0% {
    border-color: rgba(0, 0, 0, 0.54);
    background-color: transparent;
  }
  50% {
    border-color: #3f51b5;
    border-color: var(--mdc-theme-primary, #3f51b5);
    background-color: #3f51b5;
    background-color: var(--mdc-theme-primary, #3f51b5);
  }
}

@keyframes mdc-checkbox-fade-in-background {
  0% {
    border-color: rgba(0, 0, 0, 0.54);
    background-color: transparent;
  }
  50% {
    border-color: #3f51b5;
    border-color: var(--mdc-theme-primary, #3f51b5);
    background-color: #3f51b5;
    background-color: var(--mdc-theme-primary, #3f51b5);
  }
}

@-webkit-keyframes mdc-checkbox-fade-out-background {
  0%,
  80% {
    border-color: #3f51b5;
    border-color: var(--mdc-theme-primary, #3f51b5);
    background-color: #3f51b5;
    background-color: var(--mdc-theme-primary, #3f51b5);
  }
  100% {
    border-color: rgba(0, 0, 0, 0.54);
    background-color: transparent;
  }
}

@keyframes mdc-checkbox-fade-out-background {
  0%,
  80% {
    border-color: #3f51b5;
    border-color: var(--mdc-theme-primary, #3f51b5);
    background-color: #3f51b5;
    background-color: var(--mdc-theme-primary, #3f51b5);
  }
  100% {
    border-color: rgba(0, 0, 0, 0.54);
    background-color: transparent;
  }
}

@-webkit-keyframes mdc-checkbox-fade-in-background-dark {
  0% {
    border-color: white;
    background-color: transparent;
  }
  50% {
    border-color: #3f51b5;
    border-color: var(--mdc-theme-primary, #3f51b5);
    background-color: #3f51b5;
    background-color: var(--mdc-theme-primary, #3f51b5);
  }
}

@keyframes mdc-checkbox-fade-in-background-dark {
  0% {
    border-color: white;
    background-color: transparent;
  }
  50% {
    border-color: #3f51b5;
    border-color: var(--mdc-theme-primary, #3f51b5);
    background-color: #3f51b5;
    background-color: var(--mdc-theme-primary, #3f51b5);
  }
}

@-webkit-keyframes mdc-checkbox-fade-out-background-dark {
  0%,
  80% {
    border-color: #3f51b5;
    border-color: var(--mdc-theme-primary, #3f51b5);
    background-color: #3f51b5;
    background-color: var(--mdc-theme-primary, #3f51b5);
  }
  100% {
    border-color: white;
    background-color: transparent;
  }
}

@keyframes mdc-checkbox-fade-out-background-dark {
  0%,
  80% {
    border-color: #3f51b5;
    border-color: var(--mdc-theme-primary, #3f51b5);
    background-color: #3f51b5;
    background-color: var(--mdc-theme-primary, #3f51b5);
  }
  100% {
    border-color: white;
    background-color: transparent;
  }
}

@-webkit-keyframes mdc-checkbox-unchecked-checked-checkmark-path {
  0%,
  50% {
    stroke-dashoffset: 29.78334;
  }
  50% {
    -webkit-animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
    animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
  }
  100% {
    stroke-dashoffset: 0;
  }
}

@keyframes mdc-checkbox-unchecked-checked-checkmark-path {
  0%,
  50% {
    stroke-dashoffset: 29.78334;
  }
  50% {
    -webkit-animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
    animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
  }
  100% {
    stroke-dashoffset: 0;
  }
}

@-webkit-keyframes mdc-checkbox-unchecked-indeterminate-mixedmark {
  0%,
  68.2% {
    -webkit-transform: scaleX(0);
    transform: scaleX(0);
  }
  68.2% {
    -webkit-animation-timing-function: cubic-bezier(0, 0, 0, 1);
    animation-timing-function: cubic-bezier(0, 0, 0, 1);
  }
  100% {
    -webkit-transform: scaleX(1);
    transform: scaleX(1);
  }
}

@keyframes mdc-checkbox-unchecked-indeterminate-mixedmark {
  0%,
  68.2% {
    -webkit-transform: scaleX(0);
    transform: scaleX(0);
  }
  68.2% {
    -webkit-animation-timing-function: cubic-bezier(0, 0, 0, 1);
    animation-timing-function: cubic-bezier(0, 0, 0, 1);
  }
  100% {
    -webkit-transform: scaleX(1);
    transform: scaleX(1);
  }
}

@-webkit-keyframes mdc-checkbox-checked-unchecked-checkmark-path {
  from {
    -webkit-animation-timing-function: cubic-bezier(0.4, 0, 1, 1);
    animation-timing-function: cubic-bezier(0.4, 0, 1, 1);
    opacity: 1;
    stroke-dashoffset: 0;
  }
  to {
    opacity: 0;
    stroke-dashoffset: -29.78334;
  }
}

@keyframes mdc-checkbox-checked-unchecked-checkmark-path {
  from {
    -webkit-animation-timing-function: cubic-bezier(0.4, 0, 1, 1);
    animation-timing-function: cubic-bezier(0.4, 0, 1, 1);
    opacity: 1;
    stroke-dashoffset: 0;
  }
  to {
    opacity: 0;
    stroke-dashoffset: -29.78334;
  }
}

@-webkit-keyframes mdc-checkbox-checked-indeterminate-checkmark {
  from {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
    opacity: 1;
    -webkit-animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
    animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
  }
  to {
    -webkit-transform: rotate(45deg);
    transform: rotate(45deg);
    opacity: 0;
  }
}

@keyframes mdc-checkbox-checked-indeterminate-checkmark {
  from {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
    opacity: 1;
    -webkit-animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
    animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
  }
  to {
    -webkit-transform: rotate(45deg);
    transform: rotate(45deg);
    opacity: 0;
  }
}

@-webkit-keyframes mdc-checkbox-indeterminate-checked-checkmark {
  from {
    -webkit-transform: rotate(45deg);
    transform: rotate(45deg);
    opacity: 0;
    -webkit-animation-timing-function: cubic-bezier(0.14, 0, 0, 1);
    animation-timing-function: cubic-bezier(0.14, 0, 0, 1);
  }
  to {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
    opacity: 1;
  }
}

@keyframes mdc-checkbox-indeterminate-checked-checkmark {
  from {
    -webkit-transform: rotate(45deg);
    transform: rotate(45deg);
    opacity: 0;
    -webkit-animation-timing-function: cubic-bezier(0.14, 0, 0, 1);
    animation-timing-function: cubic-bezier(0.14, 0, 0, 1);
  }
  to {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
    opacity: 1;
  }
}

@-webkit-keyframes mdc-checkbox-checked-indeterminate-mixedmark {
  from {
    -webkit-transform: rotate(-45deg);
    transform: rotate(-45deg);
    opacity: 0;
    -webkit-animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
    animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
  }
  to {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
    opacity: 1;
  }
}

@keyframes mdc-checkbox-checked-indeterminate-mixedmark {
  from {
    -webkit-transform: rotate(-45deg);
    transform: rotate(-45deg);
    opacity: 0;
    -webkit-animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
    animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
  }
  to {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
    opacity: 1;
  }
}

@-webkit-keyframes mdc-checkbox-indeterminate-checked-mixedmark {
  from {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
    opacity: 1;
    -webkit-animation-timing-function: cubic-bezier(0.14, 0, 0, 1);
    animation-timing-function: cubic-bezier(0.14, 0, 0, 1);
  }
  to {
    -webkit-transform: rotate(315deg);
    transform: rotate(315deg);
    opacity: 0;
  }
}

@keyframes mdc-checkbox-indeterminate-checked-mixedmark {
  from {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
    opacity: 1;
    -webkit-animation-timing-function: cubic-bezier(0.14, 0, 0, 1);
    animation-timing-function: cubic-bezier(0.14, 0, 0, 1);
  }
  to {
    -webkit-transform: rotate(315deg);
    transform: rotate(315deg);
    opacity: 0;
  }
}

@-webkit-keyframes mdc-checkbox-indeterminate-unchecked-mixedmark {
  0% {
    -webkit-transform: scaleX(1);
    transform: scaleX(1);
    opacity: 1;
    -webkit-animation-timing-function: linear;
    animation-timing-function: linear;
  }
  32.8%,
  100% {
    -webkit-transform: scaleX(0);
    transform: scaleX(0);
    opacity: 0;
  }
}

@keyframes mdc-checkbox-indeterminate-unchecked-mixedmark {
  0% {
    -webkit-transform: scaleX(1);
    transform: scaleX(1);
    opacity: 1;
    -webkit-animation-timing-function: linear;
    animation-timing-function: linear;
  }
  32.8%,
  100% {
    -webkit-transform: scaleX(0);
    transform: scaleX(0);
    opacity: 0;
  }
}

/* postcss-bem-linter: define checkbox */
.mdc-checkbox {
  display: inline-block;
  position: relative;
  width: 18px;
  height: 18px;
  line-height: 0;
  white-space: nowrap;
  cursor: pointer;
  vertical-align: bottom;
}

.mdc-checkbox__background {
  border-radius: 2px;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  pointer-events: none;
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: -webkit-inline-flex;
  display: inline-flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  -webkit-justify-content: center;
  justify-content: center;
  -webkit-transition: background-color 90ms 0ms cubic-bezier(0.4, 0, 1, 1), border-color 90ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: background-color 90ms 0ms cubic-bezier(0.4, 0, 1, 1), border-color 90ms 0ms cubic-bezier(0.4, 0, 1, 1);
  border: 2px solid rgba(0, 0, 0, 0.54);
  background-color: transparent;
  will-change: background-color, border-color;
  /** The frame's ::before element is used as a focus indicator for the checkbox */
}

.mdc-checkbox--theme-dark .mdc-checkbox__background,
.mdc-theme--dark .mdc-checkbox__background {
  border-color: white;
}

.mdc-checkbox__background::before {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  -webkit-transform: scale(0, 0);
  -ms-transform: scale(0, 0);
  transform: scale(0, 0);
  -webkit-transition: opacity 90ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 90ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 90ms 0ms cubic-bezier(0.4, 0, 1, 1), transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1);
  -webkit-transition: opacity 90ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 90ms 0ms cubic-bezier(0.4, 0, 1, 1), transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1);
  border-radius: 50%;
  content: "";
  opacity: 0;
  pointer-events: none;
  will-change: opacity, transform;
  background: #3f51b5;
  background: var(--mdc-theme-primary, #3f51b5);
}

.mdc-checkbox__native-control {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  cursor: inherit;
  opacity: 0;
}

.mdc-checkbox__checkmark {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  width: 100%;
  -webkit-transition: opacity 180ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 180ms 0ms cubic-bezier(0.4, 0, 1, 1);
  opacity: 0;
  fill: white;
}

.mdc-checkbox__checkmark__path {
  -webkit-transition: stroke-dashoffset 180ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: stroke-dashoffset 180ms 0ms cubic-bezier(0.4, 0, 1, 1);
  stroke: white !important;
  stroke-width: 3.12px;
  stroke-dashoffset: 29.78334;
  stroke-dasharray: 29.78334;
}

.mdc-checkbox__mixedmark {
  width: 100%;
  height: 2px;
  -webkit-transform: scaleX(0) rotate(0deg);
  -ms-transform: scaleX(0) rotate(0deg);
  transform: scaleX(0) rotate(0deg);
  -webkit-transition: opacity 90ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 90ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 90ms 0ms cubic-bezier(0.4, 0, 1, 1), transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1);
  -webkit-transition: opacity 90ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 90ms 0ms cubic-bezier(0.4, 0, 1, 1), transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1);
  background-color: white;
  opacity: 0;
}

.mdc-checkbox__native-control:focus ~ .mdc-checkbox__background::before {
  -webkit-transform: scale(2.75, 2.75);
  -ms-transform: scale(2.75, 2.75);
  transform: scale(2.75, 2.75);
  -webkit-transition: opacity 80ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 80ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 80ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 80ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 80ms 0ms cubic-bezier(0, 0, 0.2, 1), transform 80ms 0ms cubic-bezier(0, 0, 0.2, 1);
  -webkit-transition: opacity 80ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 80ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 80ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 80ms 0ms cubic-bezier(0, 0, 0.2, 1), transform 80ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 80ms 0ms cubic-bezier(0, 0, 0.2, 1);
  opacity: .26;
}

.mdc-checkbox__native-control:checked ~ .mdc-checkbox__background {
  -webkit-transition: border-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1), background-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: border-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1), background-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1);
  border-color: #3f51b5;
  border-color: var(--mdc-theme-primary, #3f51b5);
  background-color: #3f51b5;
  background-color: var(--mdc-theme-primary, #3f51b5);
}

.mdc-checkbox__native-control:checked ~ .mdc-checkbox__background .mdc-checkbox__checkmark {
  -webkit-transition: opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 180ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 180ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1), transform 180ms 0ms cubic-bezier(0, 0, 0.2, 1);
  -webkit-transition: opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 180ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 180ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1), transform 180ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 180ms 0ms cubic-bezier(0, 0, 0.2, 1);
  opacity: 1;
}

.mdc-checkbox__native-control:checked ~ .mdc-checkbox__background .mdc-checkbox__checkmark__path {
  stroke-dashoffset: 0;
}

.mdc-checkbox__native-control:checked ~ .mdc-checkbox__background .mdc-checkbox__mixedmark {
  -webkit-transform: scaleX(1) rotate(-45deg);
  -ms-transform: scaleX(1) rotate(-45deg);
  transform: scaleX(1) rotate(-45deg);
}

.mdc-checkbox__native-control:indeterminate ~ .mdc-checkbox__background {
  border-color: #3f51b5;
  border-color: var(--mdc-theme-primary, #3f51b5);
  background-color: #3f51b5;
  background-color: var(--mdc-theme-primary, #3f51b5);
}

.mdc-checkbox__native-control:indeterminate ~ .mdc-checkbox__background .mdc-checkbox__checkmark {
  -webkit-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  transform: rotate(45deg);
  -webkit-transition: opacity 90ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 90ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 90ms 0ms cubic-bezier(0.4, 0, 1, 1), transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1);
  -webkit-transition: opacity 90ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 90ms 0ms cubic-bezier(0.4, 0, 1, 1), transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 90ms 0ms cubic-bezier(0.4, 0, 1, 1);
  opacity: 0;
}

.mdc-checkbox__native-control:indeterminate ~ .mdc-checkbox__background .mdc-checkbox__checkmark__path {
  stroke-dashoffset: 0;
}

.mdc-checkbox__native-control:indeterminate ~ .mdc-checkbox__background .mdc-checkbox__mixedmark {
  -webkit-transform: scaleX(1) rotate(0deg);
  -ms-transform: scaleX(1) rotate(0deg);
  transform: scaleX(1) rotate(0deg);
  opacity: 1;
}

.mdc-checkbox__native-control:disabled,
fieldset:disabled .mdc-checkbox__native-control,
[aria-disabled="true"] .mdc-checkbox__native-control {
  cursor: default;
  /* postcss-bem-linter: ignore */
}

.mdc-checkbox__native-control:disabled ~ .mdc-checkbox__background,
fieldset:disabled .mdc-checkbox__native-control ~ .mdc-checkbox__background,
[aria-disabled="true"] .mdc-checkbox__native-control ~ .mdc-checkbox__background {
  border-color: rgba(0, 0, 0, 0.26);
}

.mdc-checkbox--theme-dark .mdc-checkbox__native-control:disabled ~ .mdc-checkbox__background,
.mdc-theme--dark .mdc-checkbox__native-control:disabled ~ .mdc-checkbox__background, .mdc-checkbox--theme-dark fieldset:disabled .mdc-checkbox__native-control ~ .mdc-checkbox__background,
.mdc-theme--dark fieldset:disabled .mdc-checkbox__native-control ~ .mdc-checkbox__background, .mdc-checkbox--theme-dark [aria-disabled="true"] .mdc-checkbox__native-control ~ .mdc-checkbox__background,
.mdc-theme--dark [aria-disabled="true"] .mdc-checkbox__native-control ~ .mdc-checkbox__background {
  border-color: rgba(255, 255, 255, 0.3);
}

.mdc-checkbox__native-control:disabled:checked ~ .mdc-checkbox__background, .mdc-checkbox__native-control:disabled:indeterminate ~ .mdc-checkbox__background,
fieldset:disabled .mdc-checkbox__native-control:checked ~ .mdc-checkbox__background,
fieldset:disabled .mdc-checkbox__native-control:indeterminate ~ .mdc-checkbox__background,
[aria-disabled="true"] .mdc-checkbox__native-control:checked ~ .mdc-checkbox__background,
[aria-disabled="true"] .mdc-checkbox__native-control:indeterminate ~ .mdc-checkbox__background {
  border-color: transparent;
  background-color: rgba(0, 0, 0, 0.26);
  /* stylelint-disable selector-max-compound-selectors, selector-max-specificity */
  /* stylelint-enable selector-max-compound-selectors, selector-max-specificity */
}

.mdc-checkbox--theme-dark .mdc-checkbox__native-control:disabled:checked ~ .mdc-checkbox__background,
.mdc-theme--dark .mdc-checkbox__native-control:disabled:checked ~ .mdc-checkbox__background, .mdc-checkbox--theme-dark .mdc-checkbox__native-control:disabled:indeterminate ~ .mdc-checkbox__background,
.mdc-theme--dark .mdc-checkbox__native-control:disabled:indeterminate ~ .mdc-checkbox__background, .mdc-checkbox--theme-dark fieldset:disabled .mdc-checkbox__native-control:checked ~ .mdc-checkbox__background,
.mdc-theme--dark fieldset:disabled .mdc-checkbox__native-control:checked ~ .mdc-checkbox__background, .mdc-checkbox--theme-dark fieldset:disabled .mdc-checkbox__native-control:indeterminate ~ .mdc-checkbox__background,
.mdc-theme--dark fieldset:disabled .mdc-checkbox__native-control:indeterminate ~ .mdc-checkbox__background, .mdc-checkbox--theme-dark [aria-disabled="true"] .mdc-checkbox__native-control:checked ~ .mdc-checkbox__background,
.mdc-theme--dark [aria-disabled="true"] .mdc-checkbox__native-control:checked ~ .mdc-checkbox__background, .mdc-checkbox--theme-dark [aria-disabled="true"] .mdc-checkbox__native-control:indeterminate ~ .mdc-checkbox__background,
.mdc-theme--dark [aria-disabled="true"] .mdc-checkbox__native-control:indeterminate ~ .mdc-checkbox__background {
  background-color: rgba(255, 255, 255, 0.3);
}

.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background, .mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background {
  -webkit-animation: mdc-checkbox-fade-in-background 180ms linear;
  animation: mdc-checkbox-fade-in-background 180ms linear;
}

.mdc-checkbox--theme-dark .mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background,
.mdc-theme--dark .mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background, .mdc-checkbox--theme-dark .mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background,
.mdc-theme--dark .mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background {
  -webkit-animation-name: mdc-checkbox-fade-in-background-dark;
  animation-name: mdc-checkbox-fade-in-background-dark;
}

.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background, .mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background {
  -webkit-animation: mdc-checkbox-fade-out-background 180ms linear;
  animation: mdc-checkbox-fade-out-background 180ms linear;
}

.mdc-checkbox--theme-dark .mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background,
.mdc-theme--dark .mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background, .mdc-checkbox--theme-dark .mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background,
.mdc-theme--dark .mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background {
  -webkit-animation-name: mdc-checkbox-fade-out-background-dark;
  animation-name: mdc-checkbox-fade-out-background-dark;
}

.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__checkmark__path {
  -webkit-animation: 180ms linear 0s mdc-checkbox-unchecked-checked-checkmark-path;
  animation: 180ms linear 0s mdc-checkbox-unchecked-checked-checkmark-path;
  -webkit-transition: none;
  transition: none;
}

.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__mixedmark {
  -webkit-animation: 90ms linear 0s mdc-checkbox-unchecked-indeterminate-mixedmark;
  animation: 90ms linear 0s mdc-checkbox-unchecked-indeterminate-mixedmark;
  -webkit-transition: none;
  transition: none;
}

.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__checkmark__path {
  -webkit-animation: 90ms linear 0s mdc-checkbox-checked-unchecked-checkmark-path;
  animation: 90ms linear 0s mdc-checkbox-checked-unchecked-checkmark-path;
  -webkit-transition: none;
  transition: none;
}

.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__checkmark {
  -webkit-animation: 90ms linear 0s mdc-checkbox-checked-indeterminate-checkmark;
  animation: 90ms linear 0s mdc-checkbox-checked-indeterminate-checkmark;
  -webkit-transition: none;
  transition: none;
}

.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__mixedmark {
  -webkit-animation: 90ms linear 0s mdc-checkbox-checked-indeterminate-mixedmark;
  animation: 90ms linear 0s mdc-checkbox-checked-indeterminate-mixedmark;
  -webkit-transition: none;
  transition: none;
}

.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__checkmark {
  -webkit-animation: 500ms linear 0s mdc-checkbox-indeterminate-checked-checkmark;
  animation: 500ms linear 0s mdc-checkbox-indeterminate-checked-checkmark;
  -webkit-transition: none;
  transition: none;
}

.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__mixedmark {
  -webkit-animation: 500ms linear 0s mdc-checkbox-indeterminate-checked-mixedmark;
  animation: 500ms linear 0s mdc-checkbox-indeterminate-checked-mixedmark;
  -webkit-transition: none;
  transition: none;
}

.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__mixedmark {
  -webkit-animation: 300ms linear 0s mdc-checkbox-indeterminate-unchecked-mixedmark;
  animation: 300ms linear 0s mdc-checkbox-indeterminate-unchecked-mixedmark;
  -webkit-transition: none;
  transition: none;
}

/* postcss-bem-linter: end */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Creates a rule that will be applied when an MDC-Web component is within the context of an RTL layout.
 *
 * Usage Example:
 * ```scss
 * .mdc-foo {
 *   position: absolute;
 *   left: 0;
 *
 *   @include mdc-rtl {
 *     left: auto;
 *     right: 0;
 *   }
 *
 *   &__bar {
 *     margin-left: 4px;
 *     @include mdc-rtl(".mdc-foo") {
 *       margin-left: auto;
 *       margin-right: 4px;
 *     }
 *   }
 * }
 *
 * .mdc-foo--mod {
 *   padding-left: 4px;
 *
 *   @include mdc-rtl {
 *     padding-left: auto;
 *     padding-right: 4px;
 *   }
 * }
 * ```
 *
 * Note that this works by checking for [dir="rtl"] on an ancestor element. While this will work
 * in most cases, it will in some cases lead to false negatives, e.g.
 *
 * ```html
 * <html dir="rtl">
 *   <!-- ... -->
 *   <div dir="ltr">
 *     <div class="mdc-foo">Styled incorrectly as RTL!</div>
 *   </div>
 * </html>
 * ```
 *
 * In the future, selectors such as :dir (http://mdn.io/:dir) will help us mitigate this.
 */
/**
 * Takes a base box-model property - e.g. margin / border / padding - along with a default
 * direction and value, and emits rules which apply the value to the
 * "<base-property>-<default-direction>" property by default, but flips the direction
 * when within an RTL context.
 *
 * For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-box(margin, left, 8px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-left: 8px;
 *
 *   @include mdc-rtl {
 *     margin-right: 8px;
 *     margin-left: 0;
 *   }
 * }
 * ```
 * whereas:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-box(margin, right, 8px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-right: 8px;
 *
 *   @include mdc-rtl {
 *     margin-right: 0;
 *     margin-left: 8px;
 *   }
 * }
 * ```
 *
 * You can also pass a 4th optional $root-selector argument which will be forwarded to `mdc-rtl`,
 * e.g. `@include mdc-rtl-reflexive-box-property(margin, left, 8px, ".mdc-component")`.
 *
 * Note that this function will always zero out the original value in an RTL context. If you're
 * trying to flip the values, use mdc-rtl-reflexive-property().
 */
/**
 * Takes a base property and emits rules that assign <base-property>-left to <left-value> and
 * <base-property>-right to <right-value> in a LTR context, and vice versa in a RTL context.
 * For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-property(margin, auto, 12px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-left: auto;
 *   margin-right: 12px;
 *
 *   @include mdc-rtl {
 *     margin-left: 12px;
 *     margin-right: auto;
 *   }
 * }
 * ```
 *
 * A 4th optional $root-selector argument can be given, which will be passed to `mdc-rtl`.
 */
/**
 * Takes an argument specifying a horizontal position property (either "left" or "right") as well
 * as a value, and applies that value to the specified position in a LTR context, and flips it in a
 * RTL context. For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-position(left, 0);
 *   position: absolute;
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 *  .mdc-foo {
 *    position: absolute;
 *    left: 0;
 *    right: initial;
 *
 *    @include mdc-rtl {
 *      right: 0;
 *      left: initial;
 *    }
 *  }
 * ```
 * An optional third $root-selector argument may also be given, which is passed to `mdc-rtl`.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Applies the correct theme color style to the specified property.
 * $property is typically color or background-color, but can be any CSS property that accepts color values.
 * $style should be one of the map keys in $mdc-theme-property-values (_variables.scss).
 */
/**
 * Creates a rule to be used in MDC-Web components for dark theming, and applies the provided contents.
 * Should provide the $root-selector option if applied to anything other than the root selector.
 * When used with a modifier class, provide a second argument of `true` for the $compound parameter
 * to specify that this should be attached as a compound class.
 *
 * Usage example:
 *
 * ```scss
 * .mdc-foo {
 *   color: black;
 *
 *   @include mdc-theme-dark {
 *     color: white;
 *   }
 *
 *   &__bar {
 *     background: black;
 *
 *     @include mdc-theme-dark(".mdc-foo") {
 *       background: white;
 *     }
 *   }
 * }
 *
 * .mdc-foo--disabled {
 *   opacity: .38;
 *
 *   @include mdc-theme-dark(".mdc-foo", true) {
 *     opacity: .5;
 *   }
 * }
 * ```
 */
/* stylelint-enable scss/dollar-variable-pattern */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Applies the correct theme color style to the specified property.
 * $property is typically color or background-color, but can be any CSS property that accepts color values.
 * $style should be one of the map keys in $mdc-theme-property-values (_variables.scss).
 */
/**
 * Creates a rule to be used in MDC-Web components for dark theming, and applies the provided contents.
 * Should provide the $root-selector option if applied to anything other than the root selector.
 * When used with a modifier class, provide a second argument of `true` for the $compound parameter
 * to specify that this should be attached as a compound class.
 *
 * Usage example:
 *
 * ```scss
 * .mdc-foo {
 *   color: black;
 *
 *   @include mdc-theme-dark {
 *     color: white;
 *   }
 *
 *   &__bar {
 *     background: black;
 *
 *     @include mdc-theme-dark(".mdc-foo") {
 *       background: white;
 *     }
 *   }
 * }
 *
 * .mdc-foo--disabled {
 *   opacity: .38;
 *
 *   @include mdc-theme-dark(".mdc-foo", true) {
 *     opacity: .5;
 *   }
 * }
 * ```
 */
/* stylelint-enable scss/dollar-variable-pattern */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* TODO(sgomes): Figure out what to do about desktop font sizes. */
/* TODO(sgomes): Figure out what to do about i18n and i18n font sizes. */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/* stylelint-enable scss/dollar-variable-pattern */
.mdc-permanent-drawer {
  /* Use aspect ratio trick to maintain 16:9 aspect ratio on the header */
  /* stylelint-disable selector-no-qualifying-type */
  /* stylelint-enable selector-no-qualifying-type */
  /* TODO(sgomes): Revisit when we have interactive lists. */
  background: #fff;
  background: var(--mdc-theme-background, #fff);
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  border-left: 0;
  border-right: 1px solid #e4e4e4;
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  left: 0;
  right: initial;
  /* stylelint-enable scss/dollar-variable-pattern */
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: -webkit-inline-flex;
  display: inline-flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  -webkit-flex-direction: column;
  flex-direction: column;
  width: 240px;
  height: 100%;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  overflow: hidden;
}

.mdc-permanent-drawer__toolbar-spacer {
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  position: relative;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -ms-flex-direction: row;
  -webkit-flex-direction: row;
  flex-direction: row;
  -ms-flex-negative: 0;
  -webkit-flex-shrink: 0;
  flex-shrink: 0;
  -webkit-box-align: flex-center;
  -ms-flex-align: flex-center;
  -webkit-align-items: flex-center;
  align-items: flex-center;
  height: 56px;
  padding: 16px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.12);
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  /* TODO(sgomes): replace with global breakpoints when we have them */
}

.mdc-permanent-drawer__toolbar-spacer--theme-dark .mdc-permanent-drawer__toolbar-spacer,
.mdc-theme--dark .mdc-permanent-drawer__toolbar-spacer {
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

@media (min-width: 600px) {
  .mdc-permanent-drawer__toolbar-spacer {
    height: 64px;
  }
}

.mdc-permanent-drawer__header {
  position: relative;
}

.mdc-permanent-drawer__header::before {
  display: block;
  padding-top: 56.25%;
  content: "";
}

.mdc-permanent-drawer__header-content {
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  -webkit-box-align: end;
  -ms-flex-align: end;
  -webkit-align-items: flex-end;
  align-items: flex-end;
  padding: 16px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.mdc-permanent-drawer .mdc-list-group,
.mdc-permanent-drawer .mdc-list {
  padding-right: 0;
  padding-left: 0;
}

.mdc-permanent-drawer .mdc-list-item {
  position: relative;
  padding: 0 16px;
  outline: none;
  color: inherit;
  text-decoration: none;
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 0.875rem;
  font-weight: 500;
  letter-spacing: 0.04em;
  line-height: 1.5rem;
}

.mdc-permanent-drawer .mdc-list-item__start-detail {
  color: rgba(0, 0, 0, 0.54);
}

.mdc-permanent-drawer .mdc-list-item__start-detail--theme-dark .mdc-permanent-drawer .mdc-list-item__start-detail,
.mdc-theme--dark .mdc-permanent-drawer .mdc-list-item__start-detail {
  color: rgba(255, 255, 255, 0.54);
}

.mdc-permanent-drawer--selected.mdc-list-item,
.mdc-permanent-drawer--selected.mdc-list-item .mdc-list-item__start-detail {
  color: #3f51b5;
  color: var(--mdc-theme-primary, #3f51b5);
}

.mdc-permanent-drawer .mdc-list-item::before {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  -webkit-transition: opacity 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  border-radius: inherit;
  background: currentColor;
  content: "";
  opacity: 0;
}

.mdc-permanent-drawer .mdc-list-item:focus::before {
  -webkit-transition: opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1);
  opacity: .12;
}

.mdc-permanent-drawer .mdc-list-item:active::before {
  /*
      Slightly darker value for visual distinction.
      This allows a full base that has distinct modes.
      Progressive enhancement with ripples will provide complete button spec alignment.
    */
  -webkit-transition: opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1);
  opacity: .18;
}

.mdc-permanent-drawer .mdc-list-item:active:focus::before {
  -webkit-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

[dir="rtl"] .mdc-permanent-drawer, .mdc-permanent-drawer[dir="rtl"] {
  border-left: 1px solid #e4e4e4;
  border-right: 0;
}

[dir="rtl"] .mdc-permanent-drawer, .mdc-permanent-drawer[dir="rtl"] {
  left: initial;
  right: 0;
}

.mdc-permanent-drawer--theme-dark,
.mdc-theme--dark .mdc-permanent-drawer {
  background: #212121;
  color: white;
  color: var(--mdc-theme-text-primary-on-dark, white);
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  border-left: 0;
  border-right: 1px solid rgba(255, 255, 255, 0.12);
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
}

[dir="rtl"] .mdc-permanent-drawer--theme-dark, .mdc-permanent-drawer--theme-dark[dir="rtl"], [dir="rtl"] .mdc-theme--dark .mdc-permanent-drawer,
.mdc-theme--dark .mdc-permanent-drawer[dir="rtl"] {
  border-left: 1px solid rgba(255, 255, 255, 0.12);
  border-right: 0;
}

.mdc-permanent-drawer--floating {
  background: none;
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  border-left: 0;
  border-right: none;
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
}

[dir="rtl"] .mdc-permanent-drawer--floating, .mdc-permanent-drawer--floating[dir="rtl"] {
  border-left: none;
  border-right: 0;
}

.mdc-permanent-drawer--floating--theme-dark,
.mdc-theme--dark .mdc-permanent-drawer--floating {
  background: none;
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  border-left: 0;
  border-right: none;
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
}

[dir="rtl"] .mdc-permanent-drawer--floating--theme-dark, .mdc-permanent-drawer--floating--theme-dark[dir="rtl"], [dir="rtl"] .mdc-theme--dark .mdc-permanent-drawer--floating,
.mdc-theme--dark .mdc-permanent-drawer--floating[dir="rtl"] {
  border-left: none;
  border-right: 0;
}

/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * The css property used for elevation. In most cases this should not be changed. It is exposed
 * as a variable for abstraction / easy use when needing to reference the property directly, for
 * example in a `will-change` rule.
 */
/**
 * The default duration value for elevation transitions.
 */
/**
 * The default easing value for elevation transitions.
 */
/**
 * Applies the correct css rules to an element to give it the elevation specified by $z-value.
 * The $z-value must be between 0 and 24.
 */
/**
 * Returns a string that can be used as the value for a `transition` property for elevation.
 * Calling this function directly is useful in situations where a component needs to transition
 * more than one property.
 *
 * ```scss
 * .foo {
 *   transition: mdc-elevation-transition-rule(), opacity 100ms ease;
 *   will-change: $mdc-elevation-property, opacity;
 * }
 * ```
 */
/**
 * Applies the correct css rules needed to have an element transition between elevations.
 * This mixin should be applied to elements whose elevation values will change depending on their
 * context (e.g. when active or disabled).
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Creates a rule that will be applied when an MDC-Web component is within the context of an RTL layout.
 *
 * Usage Example:
 * ```scss
 * .mdc-foo {
 *   position: absolute;
 *   left: 0;
 *
 *   @include mdc-rtl {
 *     left: auto;
 *     right: 0;
 *   }
 *
 *   &__bar {
 *     margin-left: 4px;
 *     @include mdc-rtl(".mdc-foo") {
 *       margin-left: auto;
 *       margin-right: 4px;
 *     }
 *   }
 * }
 *
 * .mdc-foo--mod {
 *   padding-left: 4px;
 *
 *   @include mdc-rtl {
 *     padding-left: auto;
 *     padding-right: 4px;
 *   }
 * }
 * ```
 *
 * Note that this works by checking for [dir="rtl"] on an ancestor element. While this will work
 * in most cases, it will in some cases lead to false negatives, e.g.
 *
 * ```html
 * <html dir="rtl">
 *   <!-- ... -->
 *   <div dir="ltr">
 *     <div class="mdc-foo">Styled incorrectly as RTL!</div>
 *   </div>
 * </html>
 * ```
 *
 * In the future, selectors such as :dir (http://mdn.io/:dir) will help us mitigate this.
 */
/**
 * Takes a base box-model property - e.g. margin / border / padding - along with a default
 * direction and value, and emits rules which apply the value to the
 * "<base-property>-<default-direction>" property by default, but flips the direction
 * when within an RTL context.
 *
 * For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-box(margin, left, 8px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-left: 8px;
 *
 *   @include mdc-rtl {
 *     margin-right: 8px;
 *     margin-left: 0;
 *   }
 * }
 * ```
 * whereas:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-box(margin, right, 8px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-right: 8px;
 *
 *   @include mdc-rtl {
 *     margin-right: 0;
 *     margin-left: 8px;
 *   }
 * }
 * ```
 *
 * You can also pass a 4th optional $root-selector argument which will be forwarded to `mdc-rtl`,
 * e.g. `@include mdc-rtl-reflexive-box-property(margin, left, 8px, ".mdc-component")`.
 *
 * Note that this function will always zero out the original value in an RTL context. If you're
 * trying to flip the values, use mdc-rtl-reflexive-property().
 */
/**
 * Takes a base property and emits rules that assign <base-property>-left to <left-value> and
 * <base-property>-right to <right-value> in a LTR context, and vice versa in a RTL context.
 * For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-property(margin, auto, 12px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-left: auto;
 *   margin-right: 12px;
 *
 *   @include mdc-rtl {
 *     margin-left: 12px;
 *     margin-right: auto;
 *   }
 * }
 * ```
 *
 * A 4th optional $root-selector argument can be given, which will be passed to `mdc-rtl`.
 */
/**
 * Takes an argument specifying a horizontal position property (either "left" or "right") as well
 * as a value, and applies that value to the specified position in a LTR context, and flips it in a
 * RTL context. For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-position(left, 0);
 *   position: absolute;
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 *  .mdc-foo {
 *    position: absolute;
 *    left: 0;
 *    right: initial;
 *
 *    @include mdc-rtl {
 *      right: 0;
 *      left: initial;
 *    }
 *  }
 * ```
 * An optional third $root-selector argument may also be given, which is passed to `mdc-rtl`.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Applies the correct theme color style to the specified property.
 * $property is typically color or background-color, but can be any CSS property that accepts color values.
 * $style should be one of the map keys in $mdc-theme-property-values (_variables.scss).
 */
/**
 * Creates a rule to be used in MDC-Web components for dark theming, and applies the provided contents.
 * Should provide the $root-selector option if applied to anything other than the root selector.
 * When used with a modifier class, provide a second argument of `true` for the $compound parameter
 * to specify that this should be attached as a compound class.
 *
 * Usage example:
 *
 * ```scss
 * .mdc-foo {
 *   color: black;
 *
 *   @include mdc-theme-dark {
 *     color: white;
 *   }
 *
 *   &__bar {
 *     background: black;
 *
 *     @include mdc-theme-dark(".mdc-foo") {
 *       background: white;
 *     }
 *   }
 * }
 *
 * .mdc-foo--disabled {
 *   opacity: .38;
 *
 *   @include mdc-theme-dark(".mdc-foo", true) {
 *     opacity: .5;
 *   }
 * }
 * ```
 */
/* stylelint-enable scss/dollar-variable-pattern */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Applies the correct theme color style to the specified property.
 * $property is typically color or background-color, but can be any CSS property that accepts color values.
 * $style should be one of the map keys in $mdc-theme-property-values (_variables.scss).
 */
/**
 * Creates a rule to be used in MDC-Web components for dark theming, and applies the provided contents.
 * Should provide the $root-selector option if applied to anything other than the root selector.
 * When used with a modifier class, provide a second argument of `true` for the $compound parameter
 * to specify that this should be attached as a compound class.
 *
 * Usage example:
 *
 * ```scss
 * .mdc-foo {
 *   color: black;
 *
 *   @include mdc-theme-dark {
 *     color: white;
 *   }
 *
 *   &__bar {
 *     background: black;
 *
 *     @include mdc-theme-dark(".mdc-foo") {
 *       background: white;
 *     }
 *   }
 * }
 *
 * .mdc-foo--disabled {
 *   opacity: .38;
 *
 *   @include mdc-theme-dark(".mdc-foo", true) {
 *     opacity: .5;
 *   }
 * }
 * ```
 */
/* stylelint-enable scss/dollar-variable-pattern */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* TODO(sgomes): Figure out what to do about desktop font sizes. */
/* TODO(sgomes): Figure out what to do about i18n and i18n font sizes. */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/* stylelint-enable scss/dollar-variable-pattern */
.mdc-temporary-drawer {
  /* Use aspect ratio trick to maintain 16:9 aspect ratio on the header */
  /* stylelint-disable selector-no-qualifying-type */
  /* stylelint-enable selector-no-qualifying-type */
  /* TODO(sgomes): Revisit when we have interactive lists. */
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  pointer-events: none;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  contain: strict;
  /* Shaded background */
}

.mdc-temporary-drawer__toolbar-spacer {
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  position: relative;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -ms-flex-direction: row;
  -webkit-flex-direction: row;
  flex-direction: row;
  -ms-flex-negative: 0;
  -webkit-flex-shrink: 0;
  flex-shrink: 0;
  -webkit-box-align: flex-center;
  -ms-flex-align: flex-center;
  -webkit-align-items: flex-center;
  align-items: flex-center;
  height: 56px;
  padding: 16px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.12);
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  /* TODO(sgomes): replace with global breakpoints when we have them */
}

.mdc-temporary-drawer__toolbar-spacer--theme-dark .mdc-temporary-drawer__toolbar-spacer,
.mdc-theme--dark .mdc-temporary-drawer__toolbar-spacer {
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

@media (min-width: 600px) {
  .mdc-temporary-drawer__toolbar-spacer {
    height: 64px;
  }
}

.mdc-temporary-drawer__header {
  position: relative;
}

.mdc-temporary-drawer__header::before {
  display: block;
  padding-top: 56.25%;
  content: "";
}

.mdc-temporary-drawer__header-content {
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  -webkit-box-align: end;
  -ms-flex-align: end;
  -webkit-align-items: flex-end;
  align-items: flex-end;
  padding: 16px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.mdc-temporary-drawer .mdc-list-group,
.mdc-temporary-drawer .mdc-list {
  padding-right: 0;
  padding-left: 0;
}

.mdc-temporary-drawer .mdc-list-item {
  position: relative;
  padding: 0 16px;
  outline: none;
  color: inherit;
  text-decoration: none;
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 0.875rem;
  font-weight: 500;
  letter-spacing: 0.04em;
  line-height: 1.5rem;
}

.mdc-temporary-drawer .mdc-list-item__start-detail {
  color: rgba(0, 0, 0, 0.54);
}

.mdc-temporary-drawer .mdc-list-item__start-detail--theme-dark .mdc-temporary-drawer .mdc-list-item__start-detail,
.mdc-theme--dark .mdc-temporary-drawer .mdc-list-item__start-detail {
  color: rgba(255, 255, 255, 0.54);
}

.mdc-temporary-drawer--selected.mdc-list-item,
.mdc-temporary-drawer--selected.mdc-list-item .mdc-list-item__start-detail {
  color: #3f51b5;
  color: var(--mdc-theme-primary, #3f51b5);
}

.mdc-temporary-drawer .mdc-list-item::before {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  -webkit-transition: opacity 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  border-radius: inherit;
  background: currentColor;
  content: "";
  opacity: 0;
}

.mdc-temporary-drawer .mdc-list-item:focus::before {
  -webkit-transition: opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1);
  opacity: .12;
}

.mdc-temporary-drawer .mdc-list-item:active::before {
  /*
      Slightly darker value for visual distinction.
      This allows a full base that has distinct modes.
      Progressive enhancement with ripples will provide complete button spec alignment.
    */
  -webkit-transition: opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1);
  opacity: .18;
}

.mdc-temporary-drawer .mdc-list-item:active:focus::before {
  -webkit-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

.mdc-temporary-drawer::before {
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.6);
  content: "";
  opacity: 0;
  opacity: var(--mdc-temporary-drawer-opacity, 0);
  will-change: opacity;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.mdc-temporary-drawer__drawer {
  background: #fff;
  background: var(--mdc-theme-background, #fff);
  -webkit-box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);
  /* stylelint-disable scss/dollar-variable-pattern */
  left: 0;
  right: initial;
  /* stylelint-enable scss/dollar-variable-pattern */
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  position: absolute;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  -webkit-flex-direction: column;
  flex-direction: column;
  width: -webkit-calc(100% - 56px);
  width: calc(100% - 56px);
  max-width: 280px;
  height: 100%;
  -webkit-transform: translateX(-webkit-calc(-100% - 20px));
  -ms-transform: translateX(calc(-100% - 20px));
  transform: translateX(calc(-100% - 20px));
  will-change: transform;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  overflow: hidden;
  -ms-touch-action: none;
  touch-action: none;
  /* TODO(sgomes): replace with global breakpoints when we have them */
}

[dir="rtl"] .mdc-temporary-drawer__drawer, .mdc-temporary-drawer__drawer[dir="rtl"] {
  left: initial;
  right: 0;
}

.mdc-temporary-drawer--theme-dark .mdc-temporary-drawer__drawer,
.mdc-theme--dark .mdc-temporary-drawer__drawer {
  background: #303030;
  color: white;
  color: var(--mdc-theme-text-primary-on-dark, white);
}

[dir="rtl"] .mdc-temporary-drawer .mdc-temporary-drawer__drawer,
.mdc-temporary-drawer[dir="rtl"] .mdc-temporary-drawer__drawer {
  -webkit-transform: translateX(-webkit-calc(100% + 20px));
  -ms-transform: translateX(calc(100% + 20px));
  transform: translateX(calc(100% + 20px));
}

@media (min-width: 600px) {
  .mdc-temporary-drawer__drawer {
    width: -webkit-calc(100% - 64px);
    width: calc(100% - 64px);
    max-width: 320px;
  }
}

.mdc-temporary-drawer__content {
  -webkit-box-flex: 1;
  -ms-flex-positive: 1;
  -webkit-flex-grow: 1;
  flex-grow: 1;
  margin: 0;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  -webkit-overflow-scrolling: touch;
  -ms-touch-action: pan-y;
  touch-action: pan-y;
}

.mdc-temporary-drawer__footer {
  -webkit-box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
  -ms-flex-negative: 0;
  -webkit-flex-shrink: 0;
  flex-shrink: 0;
}

.mdc-temporary-drawer--animating::before {
  -webkit-transition: opacity 0.3s 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 0.3s 0ms cubic-bezier(0, 0, 0.2, 1);
}

.mdc-temporary-drawer--animating.mdc-temporary-drawer--open .mdc-temporary-drawer__drawer {
  -webkit-transition: -webkit-transform 0.33s 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: -webkit-transform 0.33s 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: transform 0.33s 0ms cubic-bezier(0, 0, 0.2, 1);
  -webkit-transition: -webkit-transform 0.33s 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 0.33s 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: transform 0.33s 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 0.33s 0ms cubic-bezier(0, 0, 0.2, 1);
}

.mdc-temporary-drawer--animating .mdc-temporary-drawer__drawer {
  -webkit-transition: -webkit-transform 0.13s 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: -webkit-transform 0.13s 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: transform 0.13s 0ms cubic-bezier(0, 0, 0.2, 1);
  -webkit-transition: -webkit-transform 0.13s 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 0.13s 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: transform 0.13s 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 0.13s 0ms cubic-bezier(0, 0, 0.2, 1);
}

.mdc-temporary-drawer--open {
  pointer-events: auto;
}

.mdc-temporary-drawer--open::before {
  opacity: 1;
  opacity: var(--mdc-temporary-drawer-opacity, 1);
}

.mdc-temporary-drawer--open .mdc-temporary-drawer__drawer {
  -webkit-transform: none;
  -ms-transform: none;
  transform: none;
}

[dir="rtl"] .mdc-temporary-drawer--open .mdc-temporary-drawer__drawer, .mdc-temporary-drawer--open[dir="rtl"] .mdc-temporary-drawer__drawer {
  -webkit-transform: none;
  -ms-transform: none;
  transform: none;
}

/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * The css property used for elevation. In most cases this should not be changed. It is exposed
 * as a variable for abstraction / easy use when needing to reference the property directly, for
 * example in a `will-change` rule.
 */
/**
 * The default duration value for elevation transitions.
 */
/**
 * The default easing value for elevation transitions.
 */
/**
 * Applies the correct css rules to an element to give it the elevation specified by $z-value.
 * The $z-value must be between 0 and 24.
 */
/**
 * Returns a string that can be used as the value for a `transition` property for elevation.
 * Calling this function directly is useful in situations where a component needs to transition
 * more than one property.
 *
 * ```scss
 * .foo {
 *   transition: mdc-elevation-transition-rule(), opacity 100ms ease;
 *   will-change: $mdc-elevation-property, opacity;
 * }
 * ```
 */
/**
 * Applies the correct css rules needed to have an element transition between elevations.
 * This mixin should be applied to elements whose elevation values will change depending on their
 * context (e.g. when active or disabled).
 */
.mdc-elevation--z0 {
  -webkit-box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z1 {
  -webkit-box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z2 {
  -webkit-box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z3 {
  -webkit-box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z4 {
  -webkit-box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z5 {
  -webkit-box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z6 {
  -webkit-box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z7 {
  -webkit-box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z8 {
  -webkit-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z9 {
  -webkit-box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z10 {
  -webkit-box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z11 {
  -webkit-box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z12 {
  -webkit-box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z13 {
  -webkit-box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z14 {
  -webkit-box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z15 {
  -webkit-box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z16 {
  -webkit-box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z17 {
  -webkit-box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z18 {
  -webkit-box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z19 {
  -webkit-box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z20 {
  -webkit-box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z21 {
  -webkit-box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z22 {
  -webkit-box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z23 {
  -webkit-box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12);
}

.mdc-elevation--z24 {
  -webkit-box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
}

.mdc-elevation-transition {
  -webkit-transition: -webkit-box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
  will-change: box-shadow;
}

/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * The css property used for elevation. In most cases this should not be changed. It is exposed
 * as a variable for abstraction / easy use when needing to reference the property directly, for
 * example in a `will-change` rule.
 */
/**
 * The default duration value for elevation transitions.
 */
/**
 * The default easing value for elevation transitions.
 */
/**
 * Applies the correct css rules to an element to give it the elevation specified by $z-value.
 * The $z-value must be between 0 and 24.
 */
/**
 * Returns a string that can be used as the value for a `transition` property for elevation.
 * Calling this function directly is useful in situations where a component needs to transition
 * more than one property.
 *
 * ```scss
 * .foo {
 *   transition: mdc-elevation-transition-rule(), opacity 100ms ease;
 *   will-change: $mdc-elevation-property, opacity;
 * }
 * ```
 */
/**
 * Applies the correct css rules needed to have an element transition between elevations.
 * This mixin should be applied to elements whose elevation values will change depending on their
 * context (e.g. when active or disabled).
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Applies the correct theme color style to the specified property.
 * $property is typically color or background-color, but can be any CSS property that accepts color values.
 * $style should be one of the map keys in $mdc-theme-property-values (_variables.scss).
 */
/**
 * Creates a rule to be used in MDC-Web components for dark theming, and applies the provided contents.
 * Should provide the $root-selector option if applied to anything other than the root selector.
 * When used with a modifier class, provide a second argument of `true` for the $compound parameter
 * to specify that this should be attached as a compound class.
 *
 * Usage example:
 *
 * ```scss
 * .mdc-foo {
 *   color: black;
 *
 *   @include mdc-theme-dark {
 *     color: white;
 *   }
 *
 *   &__bar {
 *     background: black;
 *
 *     @include mdc-theme-dark(".mdc-foo") {
 *       background: white;
 *     }
 *   }
 * }
 *
 * .mdc-foo--disabled {
 *   opacity: .38;
 *
 *   @include mdc-theme-dark(".mdc-foo", true) {
 *     opacity: .5;
 *   }
 * }
 * ```
 */
/* stylelint-enable scss/dollar-variable-pattern */
/* postcss-bem-linter: define fab */
.mdc-fab {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: -webkit-inline-flex;
  display: inline-flex;
  position: relative;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  -webkit-justify-content: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  padding: 0;
  -webkit-transition: -webkit-box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
  border: none;
  border-radius: 50%;
  cursor: pointer;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  fill: currentColor;
  -moz-appearance: none;
  -webkit-appearance: none;
  -webkit-tap-highlight-color: transparent;
  background-color: #ff4081;
  background-color: var(--mdc-theme-accent, #ff4081);
  color: white;
  color: var(--mdc-theme-text-primary-on-accent, white);
  -webkit-box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);
  /*
    This allows for using SVGs within them to align properly in all browsers.
    Can remove once: https://bugzilla.mozilla.org/show_bug.cgi?id=1294515 is resolved.
  */
  /* stylelint-disable selector-no-type */
  /* postcss-bem-linter: ignore */
}

.mdc-fab--mini {
  width: 40px;
  height: 40px;
}

.mdc-fab--plain {
  background-color: white;
  color: rgba(0, 0, 0, 0.87);
  color: var(--mdc-theme-text-primary-on-light, rgba(0, 0, 0, 0.87));
}

.mdc-fab::before {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  -webkit-transition: opacity 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  border-radius: inherit;
  background: black;
  content: "";
  opacity: 0;
}

.mdc-fab:focus::before {
  -webkit-transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  opacity: .12;
}

.mdc-fab:active::before {
  -webkit-transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  opacity: .18;
}

.mdc-fab:active:focus::before {
  -webkit-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

.mdc-fab:active, .mdc-fab:focus {
  outline: none;
}

.mdc-fab:active {
  -webkit-box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);
}

.mdc-fab:hover {
  cursor: pointer;
}

.mdc-fab::-moz-focus-inner {
  padding: 0;
  border: 0;
}

.mdc-fab > svg {
  width: 100%;
}

fieldset:disabled .mdc-fab, .mdc-fab:disabled {
  background-color: rgba(0, 0, 0, 0.12);
  color: rgba(0, 0, 0, 0.26);
  cursor: default;
  pointer-events: none;
}

.mdc-fab__icon {
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  -webkit-justify-content: center;
  justify-content: center;
  width: 100%;
}

/* postcss-bem-linter: end */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Creates a rule that will be applied when an MDC-Web component is within the context of an RTL layout.
 *
 * Usage Example:
 * ```scss
 * .mdc-foo {
 *   position: absolute;
 *   left: 0;
 *
 *   @include mdc-rtl {
 *     left: auto;
 *     right: 0;
 *   }
 *
 *   &__bar {
 *     margin-left: 4px;
 *     @include mdc-rtl(".mdc-foo") {
 *       margin-left: auto;
 *       margin-right: 4px;
 *     }
 *   }
 * }
 *
 * .mdc-foo--mod {
 *   padding-left: 4px;
 *
 *   @include mdc-rtl {
 *     padding-left: auto;
 *     padding-right: 4px;
 *   }
 * }
 * ```
 *
 * Note that this works by checking for [dir="rtl"] on an ancestor element. While this will work
 * in most cases, it will in some cases lead to false negatives, e.g.
 *
 * ```html
 * <html dir="rtl">
 *   <!-- ... -->
 *   <div dir="ltr">
 *     <div class="mdc-foo">Styled incorrectly as RTL!</div>
 *   </div>
 * </html>
 * ```
 *
 * In the future, selectors such as :dir (http://mdn.io/:dir) will help us mitigate this.
 */
/**
 * Takes a base box-model property - e.g. margin / border / padding - along with a default
 * direction and value, and emits rules which apply the value to the
 * "<base-property>-<default-direction>" property by default, but flips the direction
 * when within an RTL context.
 *
 * For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-box(margin, left, 8px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-left: 8px;
 *
 *   @include mdc-rtl {
 *     margin-right: 8px;
 *     margin-left: 0;
 *   }
 * }
 * ```
 * whereas:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-box(margin, right, 8px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-right: 8px;
 *
 *   @include mdc-rtl {
 *     margin-right: 0;
 *     margin-left: 8px;
 *   }
 * }
 * ```
 *
 * You can also pass a 4th optional $root-selector argument which will be forwarded to `mdc-rtl`,
 * e.g. `@include mdc-rtl-reflexive-box-property(margin, left, 8px, ".mdc-component")`.
 *
 * Note that this function will always zero out the original value in an RTL context. If you're
 * trying to flip the values, use mdc-rtl-reflexive-property().
 */
/**
 * Takes a base property and emits rules that assign <base-property>-left to <left-value> and
 * <base-property>-right to <right-value> in a LTR context, and vice versa in a RTL context.
 * For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-property(margin, auto, 12px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-left: auto;
 *   margin-right: 12px;
 *
 *   @include mdc-rtl {
 *     margin-left: 12px;
 *     margin-right: auto;
 *   }
 * }
 * ```
 *
 * A 4th optional $root-selector argument can be given, which will be passed to `mdc-rtl`.
 */
/**
 * Takes an argument specifying a horizontal position property (either "left" or "right") as well
 * as a value, and applies that value to the specified position in a LTR context, and flips it in a
 * RTL context. For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-position(left, 0);
 *   position: absolute;
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 *  .mdc-foo {
 *    position: absolute;
 *    left: 0;
 *    right: initial;
 *
 *    @include mdc-rtl {
 *      right: 0;
 *      left: initial;
 *    }
 *  }
 * ```
 * An optional third $root-selector argument may also be given, which is passed to `mdc-rtl`.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Applies the correct theme color style to the specified property.
 * $property is typically color or background-color, but can be any CSS property that accepts color values.
 * $style should be one of the map keys in $mdc-theme-property-values (_variables.scss).
 */
/**
 * Creates a rule to be used in MDC-Web components for dark theming, and applies the provided contents.
 * Should provide the $root-selector option if applied to anything other than the root selector.
 * When used with a modifier class, provide a second argument of `true` for the $compound parameter
 * to specify that this should be attached as a compound class.
 *
 * Usage example:
 *
 * ```scss
 * .mdc-foo {
 *   color: black;
 *
 *   @include mdc-theme-dark {
 *     color: white;
 *   }
 *
 *   &__bar {
 *     background: black;
 *
 *     @include mdc-theme-dark(".mdc-foo") {
 *       background: white;
 *     }
 *   }
 * }
 *
 * .mdc-foo--disabled {
 *   opacity: .38;
 *
 *   @include mdc-theme-dark(".mdc-foo", true) {
 *     opacity: .5;
 *   }
 * }
 * ```
 */
/* stylelint-enable scss/dollar-variable-pattern */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* TODO(sgomes): Figure out what to do about desktop font sizes. */
/* TODO(sgomes): Figure out what to do about i18n and i18n font sizes. */
/* stylelint-disable selector-no-type */
.mdc-form-field {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 0.875rem;
  font-weight: 400;
  letter-spacing: 0.04em;
  line-height: 1.25rem;
  color: rgba(0, 0, 0, 0.87);
  color: var(--mdc-theme-text-primary-on-light, rgba(0, 0, 0, 0.87));
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: -webkit-inline-flex;
  display: inline-flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  vertical-align: middle;
}

.mdc-form-field--theme-dark,
.mdc-theme--dark .mdc-form-field {
  color: white;
  color: var(--mdc-theme-text-primary-on-dark, white);
}

.mdc-form-field > label {
  -webkit-box-ordinal-group: 1;
  -ms-flex-order: 0;
  -webkit-order: 0;
  order: 0;
  margin-right: auto;
  margin-left: 4px;
}

[dir="rtl"] .mdc-form-field > label, .mdc-form-field[dir="rtl"] > label {
  margin-right: 4px;
  margin-left: auto;
}

.mdc-form-field--align-end > label {
  -webkit-box-ordinal-group: 0;
  -ms-flex-order: -1;
  -webkit-order: -1;
  order: -1;
  margin-right: 4px;
  margin-left: auto;
}

[dir="rtl"] .mdc-form-field--align-end > label, .mdc-form-field--align-end[dir="rtl"] > label {
  margin-right: auto;
  margin-left: 4px;
}

/* stylelint-enable selector-no-type */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/** postcss-bem-linter: define icon-toggle */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/** MDC Ripple keyframes are split into their own file so that _mixins.scss can rely on them. */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
@-webkit-keyframes mdc-ripple-fg-radius-in {
  from {
    -webkit-transform: scale(0);
    transform: scale(0);
    -webkit-animation-timing-function: cubic-bezier(0.157, 0.72, 0.386, 0.987);
    animation-timing-function: cubic-bezier(0.157, 0.72, 0.386, 0.987);
  }
  to {
    -webkit-transform: scale(1.5);
    transform: scale(1.5);
  }
}

@keyframes mdc-ripple-fg-radius-in {
  from {
    -webkit-transform: scale(0);
    transform: scale(0);
    -webkit-animation-timing-function: cubic-bezier(0.157, 0.72, 0.386, 0.987);
    animation-timing-function: cubic-bezier(0.157, 0.72, 0.386, 0.987);
  }
  to {
    -webkit-transform: scale(1.5);
    transform: scale(1.5);
  }
}

@-webkit-keyframes mdc-ripple-fg-opacity-out {
  from {
    opacity: 1;
    -webkit-animation-timing-function: linear;
    animation-timing-function: linear;
  }
  to {
    opacity: 0;
  }
}

@keyframes mdc-ripple-fg-opacity-out {
  from {
    opacity: 1;
    -webkit-animation-timing-function: linear;
    animation-timing-function: linear;
  }
  to {
    opacity: 0;
  }
}

@-webkit-keyframes mdc-ripple-fg-unbounded-opacity-deactivate {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

@keyframes mdc-ripple-fg-unbounded-opacity-deactivate {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

@-webkit-keyframes mdc-ripple-fg-unbounded-transform-deactivate {
  from {
    -webkit-transform: var(--mdc-ripple-fg-approx-xf);
    transform: var(--mdc-ripple-fg-approx-xf);
  }
  to {
    -webkit-transform: scale(1.01);
    transform: scale(1.01);
  }
}

@keyframes mdc-ripple-fg-unbounded-transform-deactivate {
  from {
    -webkit-transform: var(--mdc-ripple-fg-approx-xf);
    transform: var(--mdc-ripple-fg-approx-xf);
  }
  to {
    -webkit-transform: scale(1.01);
    transform: scale(1.01);
  }
}

/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Applies the correct theme color style to the specified property.
 * $property is typically color or background-color, but can be any CSS property that accepts color values.
 * $style should be one of the map keys in $mdc-theme-property-values (_variables.scss).
 */
/**
 * Creates a rule to be used in MDC-Web components for dark theming, and applies the provided contents.
 * Should provide the $root-selector option if applied to anything other than the root selector.
 * When used with a modifier class, provide a second argument of `true` for the $compound parameter
 * to specify that this should be attached as a compound class.
 *
 * Usage example:
 *
 * ```scss
 * .mdc-foo {
 *   color: black;
 *
 *   @include mdc-theme-dark {
 *     color: white;
 *   }
 *
 *   &__bar {
 *     background: black;
 *
 *     @include mdc-theme-dark(".mdc-foo") {
 *       background: white;
 *     }
 *   }
 * }
 *
 * .mdc-foo--disabled {
 *   opacity: .38;
 *
 *   @include mdc-theme-dark(".mdc-foo", true) {
 *     opacity: .5;
 *   }
 * }
 * ```
 */
/* stylelint-enable scss/dollar-variable-pattern */
.mdc-icon-toggle {
  color: rgba(0, 0, 0, 0.54);
  color: var(--mdc-theme-text-secondary-on-light, rgba(0, 0, 0, 0.54));
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  position: relative;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  -webkit-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  -webkit-justify-content: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  padding: 12px;
  outline: none;
  font-size: 1.5rem;
  cursor: pointer;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

.mdc-icon-toggle::after {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  -webkit-transform: scale(0, 0);
  -ms-transform: scale(0, 0);
  transform: scale(0, 0);
  -webkit-transition: opacity 80ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 80ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 80ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 80ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 80ms 0ms cubic-bezier(0.4, 0, 1, 1), transform 80ms 0ms cubic-bezier(0.4, 0, 1, 1);
  -webkit-transition: opacity 80ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 80ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 80ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 80ms 0ms cubic-bezier(0.4, 0, 1, 1), transform 80ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 80ms 0ms cubic-bezier(0.4, 0, 1, 1);
  border-radius: 50%;
  background-color: currentColor;
  content: "";
  opacity: 0;
  pointer-events: none;
}

.mdc-icon-toggle:focus::after {
  -webkit-transform: scale(1.3, 1.3);
  -ms-transform: scale(1.3, 1.3);
  transform: scale(1.3, 1.3);
  -webkit-transition: opacity 80ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 80ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 80ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 80ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 80ms 0ms cubic-bezier(0, 0, 0.2, 1), transform 80ms 0ms cubic-bezier(0, 0, 0.2, 1);
  -webkit-transition: opacity 80ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 80ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 80ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 80ms 0ms cubic-bezier(0, 0, 0.2, 1), transform 80ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 80ms 0ms cubic-bezier(0, 0, 0.2, 1);
  opacity: .12;
}

.mdc-icon-toggle--theme-dark,
.mdc-theme--dark .mdc-icon-toggle {
  color: white;
  color: var(--mdc-theme-text-primary-on-dark, white);
}

.mdc-icon-toggle--theme-dark:focus::after,
.mdc-theme--dark .mdc-icon-toggle:focus::after {
  opacity: .3;
}

.mdc-icon-toggle--primary {
  color: #3f51b5;
  color: var(--mdc-theme-primary, #3f51b5);
}

.mdc-icon-toggle--accent {
  color: #ff4081;
  color: var(--mdc-theme-accent, #ff4081);
}

.mdc-icon-toggle--primary:focus::after,
.mdc-icon-toggle--accent:focus::after {
  opacity: .26;
}

.mdc-icon-toggle--disabled {
  color: rgba(0, 0, 0, 0.38);
  color: var(--mdc-theme-text-disabled-on-light, rgba(0, 0, 0, 0.38));
  pointer-events: none;
}

.mdc-icon-toggle--theme-dark.mdc-icon-toggle--disabled,
.mdc-theme--dark .mdc-icon-toggle--disabled {
  color: rgba(255, 255, 255, 0.5);
  color: var(--mdc-theme-text-disabled-on-dark, rgba(255, 255, 255, 0.5));
}

/** postcss-bem-linter: end */
.mdc-icon-toggle.mdc-ripple-upgraded {
  --mdc-ripple-left: 0;
  --mdc-ripple-top: 0;
  --mdc-ripple-fg-size: 0;
  --mdc-ripple-surface-height: 0;
  --mdc-ripple-surface-width: 0;
  --mdc-ripple-fg-unbounded-transform-duration: 0ms;
  --mdc-ripple-xfo-x: center;
  --mdc-ripple-xfo-y: center;
  --mdc-ripple-fg-unbounded-opacity-duration: 0ms;
  --mdc-ripple-fg-unbounded-transform-duration: 0ms;
  --mdc-ripple-fg-approx-xf: 0;
  will-change: transition, opacity;
  -webkit-tap-highlight-color: transparent;
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  will-change: initial;
}

.mdc-icon-toggle.mdc-ripple-upgraded::before {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  background-color: rgba(0, 0, 0, 0.062);
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  position: absolute;
  top: -webkit-calc(50% - 100%);
  top: calc(50% - 100%);
  left: -webkit-calc(50% - 100%);
  left: calc(50% - 100%);
  width: 200%;
  height: 200%;
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
  -webkit-transition: opacity 200ms linear;
  transition: opacity 200ms linear;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}

.mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--background-active::before {
  opacity: .99999;
}

.mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--background-active:active::before {
  -webkit-transition-duration: 600ms;
  transition-duration: 600ms;
}

.mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--background-bounded-active-fill::before {
  -webkit-transition-duration: 120ms;
  transition-duration: 120ms;
  opacity: 1;
}

.mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded::before {
  top: var(--mdc-ripple-top);
  left: var(--mdc-ripple-left);
  width: var(--mdc-ripple-fg-size);
  height: var(--mdc-ripple-fg-size);
}

.mdc-icon-toggle.mdc-ripple-upgraded::after {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  background-color: rgba(0, 0, 0, 0.062);
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  position: absolute;
  width: var(--mdc-ripple-fg-size);
  height: var(--mdc-ripple-fg-size);
  -webkit-transform: scale(0);
  -ms-transform: scale(0);
  transform: scale(0);
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  transform-origin: center center;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}

.mdc-icon-toggle.mdc-ripple-upgraded:not(.mdc-ripple-upgraded--unbounded)::after {
  top: -webkit-calc(var(--mdc-ripple-top) - var(--mdc-ripple-fg-size) / 2);
  top: calc(var(--mdc-ripple-top) - var(--mdc-ripple-fg-size) / 2);
  left: -webkit-calc(var(--mdc-ripple-left) - var(--mdc-ripple-fg-size) / 2);
  left: calc(var(--mdc-ripple-left) - var(--mdc-ripple-fg-size) / 2);
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  transform-origin: center center;
}

.mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded::after {
  top: var(--mdc-ripple-top);
  left: var(--mdc-ripple-left);
  -webkit-transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
  -ms-transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
  transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
}

.mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--foreground-bounded-active-fill::after {
  -webkit-animation-fill-mode: forwards;
  animation-fill-mode: forwards;
  -webkit-animation: 800ms mdc-ripple-fg-radius-in, 400ms mdc-ripple-fg-opacity-out;
  animation: 800ms mdc-ripple-fg-radius-in, 400ms mdc-ripple-fg-opacity-out;
}

.mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded--foreground-unbounded-activation::after {
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
  -webkit-transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  -webkit-transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  opacity: 1;
}

.mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded--foreground-unbounded-deactivation::after {
  -webkit-animation: mdc-ripple-fg-unbounded-opacity-deactivate var(--mdc-ripple-fg-unbounded-opacity-duration) linear, mdc-ripple-fg-unbounded-transform-deactivate var(--mdc-ripple-fg-unbounded-transform-duration) cubic-bezier(0.157, 0.72, 0.386, 0.987);
  animation: mdc-ripple-fg-unbounded-opacity-deactivate var(--mdc-ripple-fg-unbounded-opacity-duration) linear, mdc-ripple-fg-unbounded-transform-deactivate var(--mdc-ripple-fg-unbounded-transform-duration) cubic-bezier(0.157, 0.72, 0.386, 0.987);
}

.mdc-icon-toggle--theme-dark.mdc-icon-toggle.mdc-ripple-upgraded,
.mdc-theme--dark .mdc-icon-toggle.mdc-ripple-upgraded {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
}

.mdc-icon-toggle--theme-dark.mdc-icon-toggle.mdc-ripple-upgraded::before,
.mdc-theme--dark .mdc-icon-toggle.mdc-ripple-upgraded::before {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  background-color: rgba(255, 255, 255, 0.16);
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  position: absolute;
  top: -webkit-calc(50% - 100%);
  top: calc(50% - 100%);
  left: -webkit-calc(50% - 100%);
  left: calc(50% - 100%);
  width: 200%;
  height: 200%;
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
  -webkit-transition: opacity 200ms linear;
  transition: opacity 200ms linear;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}

.mdc-icon-toggle--theme-dark.mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--background-active::before,
.mdc-theme--dark .mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--background-active::before {
  opacity: .99999;
}

.mdc-icon-toggle--theme-dark.mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--background-active:active::before,
.mdc-theme--dark .mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--background-active:active::before {
  -webkit-transition-duration: 600ms;
  transition-duration: 600ms;
}

.mdc-icon-toggle--theme-dark.mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--background-bounded-active-fill::before,
.mdc-theme--dark .mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--background-bounded-active-fill::before {
  -webkit-transition-duration: 120ms;
  transition-duration: 120ms;
  opacity: 1;
}

.mdc-icon-toggle--theme-dark.mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded::before,
.mdc-theme--dark .mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded::before {
  top: var(--mdc-ripple-top);
  left: var(--mdc-ripple-left);
  width: var(--mdc-ripple-fg-size);
  height: var(--mdc-ripple-fg-size);
}

.mdc-icon-toggle--theme-dark.mdc-icon-toggle.mdc-ripple-upgraded::after,
.mdc-theme--dark .mdc-icon-toggle.mdc-ripple-upgraded::after {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  background-color: rgba(255, 255, 255, 0.16);
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  position: absolute;
  width: var(--mdc-ripple-fg-size);
  height: var(--mdc-ripple-fg-size);
  -webkit-transform: scale(0);
  -ms-transform: scale(0);
  transform: scale(0);
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  transform-origin: center center;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}

.mdc-icon-toggle--theme-dark.mdc-icon-toggle.mdc-ripple-upgraded:not(.mdc-ripple-upgraded--unbounded)::after,
.mdc-theme--dark .mdc-icon-toggle.mdc-ripple-upgraded:not(.mdc-ripple-upgraded--unbounded)::after {
  top: -webkit-calc(var(--mdc-ripple-top) - var(--mdc-ripple-fg-size) / 2);
  top: calc(var(--mdc-ripple-top) - var(--mdc-ripple-fg-size) / 2);
  left: -webkit-calc(var(--mdc-ripple-left) - var(--mdc-ripple-fg-size) / 2);
  left: calc(var(--mdc-ripple-left) - var(--mdc-ripple-fg-size) / 2);
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  transform-origin: center center;
}

.mdc-icon-toggle--theme-dark.mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded::after,
.mdc-theme--dark .mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded::after {
  top: var(--mdc-ripple-top);
  left: var(--mdc-ripple-left);
  -webkit-transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
  -ms-transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
  transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
}

.mdc-icon-toggle--theme-dark.mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--foreground-bounded-active-fill::after,
.mdc-theme--dark .mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--foreground-bounded-active-fill::after {
  -webkit-animation-fill-mode: forwards;
  animation-fill-mode: forwards;
  -webkit-animation: 800ms mdc-ripple-fg-radius-in, 400ms mdc-ripple-fg-opacity-out;
  animation: 800ms mdc-ripple-fg-radius-in, 400ms mdc-ripple-fg-opacity-out;
}

.mdc-icon-toggle--theme-dark.mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded--foreground-unbounded-activation::after,
.mdc-theme--dark .mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded--foreground-unbounded-activation::after {
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
  -webkit-transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  -webkit-transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  opacity: 1;
}

.mdc-icon-toggle--theme-dark.mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded--foreground-unbounded-deactivation::after,
.mdc-theme--dark .mdc-icon-toggle.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded--foreground-unbounded-deactivation::after {
  -webkit-animation: mdc-ripple-fg-unbounded-opacity-deactivate var(--mdc-ripple-fg-unbounded-opacity-duration) linear, mdc-ripple-fg-unbounded-transform-deactivate var(--mdc-ripple-fg-unbounded-transform-duration) cubic-bezier(0.157, 0.72, 0.386, 0.987);
  animation: mdc-ripple-fg-unbounded-opacity-deactivate var(--mdc-ripple-fg-unbounded-opacity-duration) linear, mdc-ripple-fg-unbounded-transform-deactivate var(--mdc-ripple-fg-unbounded-transform-duration) cubic-bezier(0.157, 0.72, 0.386, 0.987);
}

.mdc-icon-toggle--primary.mdc-ripple-upgraded {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
}

.mdc-icon-toggle--primary.mdc-ripple-upgraded::before {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable scss/dollar-variable-pattern */
  background-color: rgba(63, 81, 181, 0.14);
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  position: absolute;
  top: -webkit-calc(50% - 100%);
  top: calc(50% - 100%);
  left: -webkit-calc(50% - 100%);
  left: calc(50% - 100%);
  width: 200%;
  height: 200%;
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
  -webkit-transition: opacity 200ms linear;
  transition: opacity 200ms linear;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}

@supports (background-color: color(green a(10%))) {
  .mdc-icon-toggle--primary.mdc-ripple-upgraded::before {
    background-color: color(var(--mdc-theme-primary, #3f51b5) a(14%));
  }
}

.mdc-icon-toggle--primary.mdc-ripple-upgraded.mdc-ripple-upgraded--background-active::before {
  opacity: .99999;
}

.mdc-icon-toggle--primary.mdc-ripple-upgraded.mdc-ripple-upgraded--background-active:active::before {
  -webkit-transition-duration: 600ms;
  transition-duration: 600ms;
}

.mdc-icon-toggle--primary.mdc-ripple-upgraded.mdc-ripple-upgraded--background-bounded-active-fill::before {
  -webkit-transition-duration: 120ms;
  transition-duration: 120ms;
  opacity: 1;
}

.mdc-icon-toggle--primary.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded::before {
  top: var(--mdc-ripple-top);
  left: var(--mdc-ripple-left);
  width: var(--mdc-ripple-fg-size);
  height: var(--mdc-ripple-fg-size);
}

.mdc-icon-toggle--primary.mdc-ripple-upgraded::after {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable scss/dollar-variable-pattern */
  background-color: rgba(63, 81, 181, 0.14);
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  position: absolute;
  width: var(--mdc-ripple-fg-size);
  height: var(--mdc-ripple-fg-size);
  -webkit-transform: scale(0);
  -ms-transform: scale(0);
  transform: scale(0);
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  transform-origin: center center;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}

@supports (background-color: color(green a(10%))) {
  .mdc-icon-toggle--primary.mdc-ripple-upgraded::after {
    background-color: color(var(--mdc-theme-primary, #3f51b5) a(14%));
  }
}

.mdc-icon-toggle--primary.mdc-ripple-upgraded:not(.mdc-ripple-upgraded--unbounded)::after {
  top: -webkit-calc(var(--mdc-ripple-top) - var(--mdc-ripple-fg-size) / 2);
  top: calc(var(--mdc-ripple-top) - var(--mdc-ripple-fg-size) / 2);
  left: -webkit-calc(var(--mdc-ripple-left) - var(--mdc-ripple-fg-size) / 2);
  left: calc(var(--mdc-ripple-left) - var(--mdc-ripple-fg-size) / 2);
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  transform-origin: center center;
}

.mdc-icon-toggle--primary.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded::after {
  top: var(--mdc-ripple-top);
  left: var(--mdc-ripple-left);
  -webkit-transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
  -ms-transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
  transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
}

.mdc-icon-toggle--primary.mdc-ripple-upgraded.mdc-ripple-upgraded--foreground-bounded-active-fill::after {
  -webkit-animation-fill-mode: forwards;
  animation-fill-mode: forwards;
  -webkit-animation: 800ms mdc-ripple-fg-radius-in, 400ms mdc-ripple-fg-opacity-out;
  animation: 800ms mdc-ripple-fg-radius-in, 400ms mdc-ripple-fg-opacity-out;
}

.mdc-icon-toggle--primary.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded--foreground-unbounded-activation::after {
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
  -webkit-transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  -webkit-transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  opacity: 1;
}

.mdc-icon-toggle--primary.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded--foreground-unbounded-deactivation::after {
  -webkit-animation: mdc-ripple-fg-unbounded-opacity-deactivate var(--mdc-ripple-fg-unbounded-opacity-duration) linear, mdc-ripple-fg-unbounded-transform-deactivate var(--mdc-ripple-fg-unbounded-transform-duration) cubic-bezier(0.157, 0.72, 0.386, 0.987);
  animation: mdc-ripple-fg-unbounded-opacity-deactivate var(--mdc-ripple-fg-unbounded-opacity-duration) linear, mdc-ripple-fg-unbounded-transform-deactivate var(--mdc-ripple-fg-unbounded-transform-duration) cubic-bezier(0.157, 0.72, 0.386, 0.987);
}

.mdc-icon-toggle--accent.mdc-ripple-upgraded {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
}

.mdc-icon-toggle--accent.mdc-ripple-upgraded::before {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable scss/dollar-variable-pattern */
  background-color: rgba(255, 64, 129, 0.14);
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  position: absolute;
  top: -webkit-calc(50% - 100%);
  top: calc(50% - 100%);
  left: -webkit-calc(50% - 100%);
  left: calc(50% - 100%);
  width: 200%;
  height: 200%;
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
  -webkit-transition: opacity 200ms linear;
  transition: opacity 200ms linear;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}

@supports (background-color: color(green a(10%))) {
  .mdc-icon-toggle--accent.mdc-ripple-upgraded::before {
    background-color: color(var(--mdc-theme-accent, #ff4081) a(14%));
  }
}

.mdc-icon-toggle--accent.mdc-ripple-upgraded.mdc-ripple-upgraded--background-active::before {
  opacity: .99999;
}

.mdc-icon-toggle--accent.mdc-ripple-upgraded.mdc-ripple-upgraded--background-active:active::before {
  -webkit-transition-duration: 600ms;
  transition-duration: 600ms;
}

.mdc-icon-toggle--accent.mdc-ripple-upgraded.mdc-ripple-upgraded--background-bounded-active-fill::before {
  -webkit-transition-duration: 120ms;
  transition-duration: 120ms;
  opacity: 1;
}

.mdc-icon-toggle--accent.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded::before {
  top: var(--mdc-ripple-top);
  left: var(--mdc-ripple-left);
  width: var(--mdc-ripple-fg-size);
  height: var(--mdc-ripple-fg-size);
}

.mdc-icon-toggle--accent.mdc-ripple-upgraded::after {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable scss/dollar-variable-pattern */
  background-color: rgba(255, 64, 129, 0.14);
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  position: absolute;
  width: var(--mdc-ripple-fg-size);
  height: var(--mdc-ripple-fg-size);
  -webkit-transform: scale(0);
  -ms-transform: scale(0);
  transform: scale(0);
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  transform-origin: center center;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}

@supports (background-color: color(green a(10%))) {
  .mdc-icon-toggle--accent.mdc-ripple-upgraded::after {
    background-color: color(var(--mdc-theme-accent, #ff4081) a(14%));
  }
}

.mdc-icon-toggle--accent.mdc-ripple-upgraded:not(.mdc-ripple-upgraded--unbounded)::after {
  top: -webkit-calc(var(--mdc-ripple-top) - var(--mdc-ripple-fg-size) / 2);
  top: calc(var(--mdc-ripple-top) - var(--mdc-ripple-fg-size) / 2);
  left: -webkit-calc(var(--mdc-ripple-left) - var(--mdc-ripple-fg-size) / 2);
  left: calc(var(--mdc-ripple-left) - var(--mdc-ripple-fg-size) / 2);
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  transform-origin: center center;
}

.mdc-icon-toggle--accent.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded::after {
  top: var(--mdc-ripple-top);
  left: var(--mdc-ripple-left);
  -webkit-transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
  -ms-transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
  transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
}

.mdc-icon-toggle--accent.mdc-ripple-upgraded.mdc-ripple-upgraded--foreground-bounded-active-fill::after {
  -webkit-animation-fill-mode: forwards;
  animation-fill-mode: forwards;
  -webkit-animation: 800ms mdc-ripple-fg-radius-in, 400ms mdc-ripple-fg-opacity-out;
  animation: 800ms mdc-ripple-fg-radius-in, 400ms mdc-ripple-fg-opacity-out;
}

.mdc-icon-toggle--accent.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded--foreground-unbounded-activation::after {
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
  -webkit-transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  -webkit-transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  opacity: 1;
}

.mdc-icon-toggle--accent.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded--foreground-unbounded-deactivation::after {
  -webkit-animation: mdc-ripple-fg-unbounded-opacity-deactivate var(--mdc-ripple-fg-unbounded-opacity-duration) linear, mdc-ripple-fg-unbounded-transform-deactivate var(--mdc-ripple-fg-unbounded-transform-duration) cubic-bezier(0.157, 0.72, 0.386, 0.987);
  animation: mdc-ripple-fg-unbounded-opacity-deactivate var(--mdc-ripple-fg-unbounded-opacity-duration) linear, mdc-ripple-fg-unbounded-transform-deactivate var(--mdc-ripple-fg-unbounded-transform-duration) cubic-bezier(0.157, 0.72, 0.386, 0.987);
}

/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Creates a rule that will be applied when an MDC-Web component is within the context of an RTL layout.
 *
 * Usage Example:
 * ```scss
 * .mdc-foo {
 *   position: absolute;
 *   left: 0;
 *
 *   @include mdc-rtl {
 *     left: auto;
 *     right: 0;
 *   }
 *
 *   &__bar {
 *     margin-left: 4px;
 *     @include mdc-rtl(".mdc-foo") {
 *       margin-left: auto;
 *       margin-right: 4px;
 *     }
 *   }
 * }
 *
 * .mdc-foo--mod {
 *   padding-left: 4px;
 *
 *   @include mdc-rtl {
 *     padding-left: auto;
 *     padding-right: 4px;
 *   }
 * }
 * ```
 *
 * Note that this works by checking for [dir="rtl"] on an ancestor element. While this will work
 * in most cases, it will in some cases lead to false negatives, e.g.
 *
 * ```html
 * <html dir="rtl">
 *   <!-- ... -->
 *   <div dir="ltr">
 *     <div class="mdc-foo">Styled incorrectly as RTL!</div>
 *   </div>
 * </html>
 * ```
 *
 * In the future, selectors such as :dir (http://mdn.io/:dir) will help us mitigate this.
 */
/**
 * Takes a base box-model property - e.g. margin / border / padding - along with a default
 * direction and value, and emits rules which apply the value to the
 * "<base-property>-<default-direction>" property by default, but flips the direction
 * when within an RTL context.
 *
 * For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-box(margin, left, 8px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-left: 8px;
 *
 *   @include mdc-rtl {
 *     margin-right: 8px;
 *     margin-left: 0;
 *   }
 * }
 * ```
 * whereas:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-box(margin, right, 8px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-right: 8px;
 *
 *   @include mdc-rtl {
 *     margin-right: 0;
 *     margin-left: 8px;
 *   }
 * }
 * ```
 *
 * You can also pass a 4th optional $root-selector argument which will be forwarded to `mdc-rtl`,
 * e.g. `@include mdc-rtl-reflexive-box-property(margin, left, 8px, ".mdc-component")`.
 *
 * Note that this function will always zero out the original value in an RTL context. If you're
 * trying to flip the values, use mdc-rtl-reflexive-property().
 */
/**
 * Takes a base property and emits rules that assign <base-property>-left to <left-value> and
 * <base-property>-right to <right-value> in a LTR context, and vice versa in a RTL context.
 * For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-property(margin, auto, 12px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-left: auto;
 *   margin-right: 12px;
 *
 *   @include mdc-rtl {
 *     margin-left: 12px;
 *     margin-right: auto;
 *   }
 * }
 * ```
 *
 * A 4th optional $root-selector argument can be given, which will be passed to `mdc-rtl`.
 */
/**
 * Takes an argument specifying a horizontal position property (either "left" or "right") as well
 * as a value, and applies that value to the specified position in a LTR context, and flips it in a
 * RTL context. For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-position(left, 0);
 *   position: absolute;
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 *  .mdc-foo {
 *    position: absolute;
 *    left: 0;
 *    right: initial;
 *
 *    @include mdc-rtl {
 *      right: 0;
 *      left: initial;
 *    }
 *  }
 * ```
 * An optional third $root-selector argument may also be given, which is passed to `mdc-rtl`.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Applies the correct theme color style to the specified property.
 * $property is typically color or background-color, but can be any CSS property that accepts color values.
 * $style should be one of the map keys in $mdc-theme-property-values (_variables.scss).
 */
/**
 * Creates a rule to be used in MDC-Web components for dark theming, and applies the provided contents.
 * Should provide the $root-selector option if applied to anything other than the root selector.
 * When used with a modifier class, provide a second argument of `true` for the $compound parameter
 * to specify that this should be attached as a compound class.
 *
 * Usage example:
 *
 * ```scss
 * .mdc-foo {
 *   color: black;
 *
 *   @include mdc-theme-dark {
 *     color: white;
 *   }
 *
 *   &__bar {
 *     background: black;
 *
 *     @include mdc-theme-dark(".mdc-foo") {
 *       background: white;
 *     }
 *   }
 * }
 *
 * .mdc-foo--disabled {
 *   opacity: .38;
 *
 *   @include mdc-theme-dark(".mdc-foo", true) {
 *     opacity: .5;
 *   }
 * }
 * ```
 */
/* stylelint-enable scss/dollar-variable-pattern */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* TODO(sgomes): Figure out what to do about desktop font sizes. */
/* TODO(sgomes): Figure out what to do about i18n and i18n font sizes. */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* TODO(sgomes): Figure out what to do about desktop font sizes. */
/* TODO(sgomes): Figure out what to do about i18n and i18n font sizes. */
/**
 * Sets the width and height of a detail element to the specified dimension.
 */
/**
 * Sets the width and height of the start detail element, as well as calculates the margins for
 * the start detail element such that the text is always offset by 72px, which is defined within
 * the spec.
 */
/* postcss-bem-linter: define list */
.mdc-list {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 1rem;
  font-weight: 400;
  letter-spacing: 0.04em;
  line-height: 1.75rem;
  color: rgba(0, 0, 0, 0.87);
  color: var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87));
  margin: 0;
  padding: 8px 16px 0;
  /* According to the mocks and stickersheet, the line-height is adjusted to 24px for text content,
   * same as for subheading1. */
  line-height: 1.5rem;
  list-style-type: none;
}

.mdc-list--theme-dark,
.mdc-theme--dark .mdc-list {
  color: white;
  color: var(--mdc-theme-text-primary-on-dark, white);
}

.mdc-list--dense {
  padding-top: 4px;
  font-size: .812rem;
}

/* postcss-bem-linter: end */
/* postcss-bem-linter: define list-item */
.mdc-list-item {
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  -webkit-box-pack: start;
  -ms-flex-pack: start;
  -webkit-justify-content: flex-start;
  justify-content: flex-start;
  height: 48px;
  /* stylelint-disable plugin/selector-bem-pattern */
  /* stylelint-enable plugin/selector-bem-pattern */
}

.mdc-list-item__start-detail {
  /* stylelint-disable scss/dollar-variable-pattern */
  width: 24px;
  height: 24px;
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  margin-left: 0;
  margin-right: 32px;
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
}

[dir="rtl"] .mdc-list-item .mdc-list-item__start-detail,
.mdc-list-item[dir="rtl"] .mdc-list-item__start-detail {
  margin-left: 32px;
  margin-right: 0;
}

.mdc-list-item__end-detail {
  width: 24px;
  height: 24px;
  /* stylelint-disable scss/dollar-variable-pattern */
  margin-left: auto;
  margin-right: 16px;
  /* stylelint-enable scss/dollar-variable-pattern */
}

[dir="rtl"] .mdc-list-item .mdc-list-item__end-detail,
.mdc-list-item[dir="rtl"] .mdc-list-item__end-detail {
  margin-left: 16px;
  margin-right: auto;
}

.mdc-list-item__text {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: -webkit-inline-flex;
  display: inline-flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  -webkit-flex-direction: column;
  flex-direction: column;
}

.mdc-list-item__text__secondary {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 0.875rem;
  font-weight: 400;
  letter-spacing: 0.04em;
  line-height: 1.25rem;
  color: rgba(0, 0, 0, 0.54);
  color: var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, 0.54));
  /* Match the font size to the primary text when dense */
  /* stylelint-disable plugin/selector-bem-pattern */
  /* stylelint-enable plugin/selector-bem-pattern */
}

.mdc-list-item__text__secondary--theme-dark,
.mdc-theme--dark .mdc-list-item__text__secondary {
  color: rgba(255, 255, 255, 0.7);
  color: var(--mdc-theme-text-secondary-on-dark, rgba(255, 255, 255, 0.7));
}

.mdc-list--dense .mdc-list-item__text__secondary {
  font-size: inherit;
}

.mdc-list--dense .mdc-list-item {
  height: 40px;
}

.mdc-list--dense .mdc-list-item__start-detail {
  /* stylelint-disable scss/dollar-variable-pattern */
  width: 20px;
  height: 20px;
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  margin-left: 0;
  margin-right: 36px;
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
}

[dir="rtl"] .mdc-list-item .mdc-list--dense .mdc-list-item__start-detail,
.mdc-list-item[dir="rtl"] .mdc-list--dense .mdc-list-item__start-detail {
  margin-left: 36px;
  margin-right: 0;
}

.mdc-list--dense .mdc-list-item__end-detail {
  width: 20px;
  height: 20px;
}

.mdc-list--avatar-list .mdc-list-item {
  height: 56px;
}

.mdc-list--avatar-list .mdc-list-item__start-detail {
  /* stylelint-disable scss/dollar-variable-pattern */
  width: 40px;
  height: 40px;
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  margin-left: 0;
  margin-right: 16px;
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  border-radius: 50%;
}

[dir="rtl"] .mdc-list-item .mdc-list--avatar-list .mdc-list-item__start-detail,
.mdc-list-item[dir="rtl"] .mdc-list--avatar-list .mdc-list-item__start-detail {
  margin-left: 16px;
  margin-right: 0;
}

.mdc-list-item .mdc-list--avatar-list.mdc-list--dense .mdc-list__item {
  height: 48px;
}

.mdc-list-item .mdc-list--avatar-list.mdc-list--dense .mdc-list__item__start-detail {
  /* stylelint-disable scss/dollar-variable-pattern */
  width: 36px;
  height: 36px;
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  margin-left: 0;
  margin-right: 20px;
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
}

[dir="rtl"] .mdc-list-item .mdc-list-item .mdc-list--avatar-list.mdc-list--dense .mdc-list__item__start-detail,
.mdc-list-item[dir="rtl"] .mdc-list-item .mdc-list--avatar-list.mdc-list--dense .mdc-list__item__start-detail {
  margin-left: 20px;
  margin-right: 0;
}

.mdc-list--two-line .mdc-list-item {
  height: 72px;
}

.mdc-list--two-line.mdc-list--dense .mdc-list-item {
  height: 60px;
}

/* postcss-bem-linter: end */
/* postcss-bem-linter: define list-divider */
.mdc-list-divider {
  height: 0;
  margin: 0;
  border: none;
  border-bottom: 1px solid rgba(0, 0, 0, 0.12);
}

.mdc-list--theme-dark .mdc-list-divider,
.mdc-theme--dark .mdc-list-divider {
  border-bottom-color: rgba(255, 255, 255, 0.2);
}

.mdc-list-divider--inset {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  margin-left: 56px;
  margin-right: 0;
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  width: -webkit-calc(100% - 56px);
  width: calc(100% - 56px);
}

[dir="rtl"] .mdc-list-group .mdc-list-divider--inset,
.mdc-list-group[dir="rtl"] .mdc-list-divider--inset {
  margin-left: 0;
  margin-right: 56px;
}

/* postcss-bem-linter: end */
/* postcss-bem-linter: define list-group */
.mdc-list-group {
  padding: 0 16px;
  /* Reset padding on mdc-list since it's already accounted for by the list group. */
  /* stylelint-disable plugin/selector-bem-pattern */
  /* stylelint-enable plugin/selector-bem-pattern */
}

.mdc-list-group__subheader {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 0.875rem;
  font-weight: 500;
  letter-spacing: 0.04em;
  line-height: 1.5rem;
  color: rgba(0, 0, 0, 0.87);
  color: var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87));
  margin: 0.75rem 0;
}

.mdc-list-group__subheader--theme-dark,
.mdc-theme--dark .mdc-list-group__subheader {
  color: white;
  color: var(--mdc-theme-text-primary-on-dark, white);
}

.mdc-list-group .mdc-list {
  padding: 0;
}

/* postcss-bem-linter: end */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * The css property used for elevation. In most cases this should not be changed. It is exposed
 * as a variable for abstraction / easy use when needing to reference the property directly, for
 * example in a `will-change` rule.
 */
/**
 * The default duration value for elevation transitions.
 */
/**
 * The default easing value for elevation transitions.
 */
/**
 * Applies the correct css rules to an element to give it the elevation specified by $z-value.
 * The $z-value must be between 0 and 24.
 */
/**
 * Returns a string that can be used as the value for a `transition` property for elevation.
 * Calling this function directly is useful in situations where a component needs to transition
 * more than one property.
 *
 * ```scss
 * .foo {
 *   transition: mdc-elevation-transition-rule(), opacity 100ms ease;
 *   will-change: $mdc-elevation-property, opacity;
 * }
 * ```
 */
/**
 * Applies the correct css rules needed to have an element transition between elevations.
 * This mixin should be applied to elements whose elevation values will change depending on their
 * context (e.g. when active or disabled).
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Applies the correct theme color style to the specified property.
 * $property is typically color or background-color, but can be any CSS property that accepts color values.
 * $style should be one of the map keys in $mdc-theme-property-values (_variables.scss).
 */
/**
 * Creates a rule to be used in MDC-Web components for dark theming, and applies the provided contents.
 * Should provide the $root-selector option if applied to anything other than the root selector.
 * When used with a modifier class, provide a second argument of `true` for the $compound parameter
 * to specify that this should be attached as a compound class.
 *
 * Usage example:
 *
 * ```scss
 * .mdc-foo {
 *   color: black;
 *
 *   @include mdc-theme-dark {
 *     color: white;
 *   }
 *
 *   &__bar {
 *     background: black;
 *
 *     @include mdc-theme-dark(".mdc-foo") {
 *       background: white;
 *     }
 *   }
 * }
 *
 * .mdc-foo--disabled {
 *   opacity: .38;
 *
 *   @include mdc-theme-dark(".mdc-foo", true) {
 *     opacity: .5;
 *   }
 * }
 * ```
 */
/* stylelint-enable scss/dollar-variable-pattern */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* TODO(sgomes): Figure out what to do about desktop font sizes. */
/* TODO(sgomes): Figure out what to do about i18n and i18n font sizes. */
/* postcss-bem-linter: define simple-menu */
.mdc-simple-menu {
  display: none;
  position: absolute;
  max-width: -webkit-calc(100vw - 32px);
  max-width: calc(100vw - 32px);
  max-height: -webkit-calc(100vh - 32px);
  max-height: calc(100vh - 32px);
  margin: 0;
  padding: 0;
  -webkit-transform: scale(0);
  -ms-transform: scale(0);
  transform: scale(0);
  -webkit-transform-origin: top left;
  -ms-transform-origin: top left;
  transform-origin: top left;
  border-radius: 2px;
  background-color: white;
  white-space: nowrap;
  opacity: 0;
  overflow: hidden;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  will-change: transform, opacity;
  -webkit-box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
  /* stylelint-disable plugin/selector-bem-pattern */
  /* stylelint-enable plugin/selector-bem-pattern */
  /* stylelint-disable plugin/selector-bem-pattern */
  /* stylelint-disable selector-no-qualifying-type */
  /* stylelint-enable selector-no-qualifying-type */
  /* TODO(sgomes): Revisit when we have interactive lists. */
  /* stylelint-enable plugin/selector-bem-pattern */
}

.mdc-simple-menu--theme-dark,
.mdc-theme--dark .mdc-simple-menu {
  background-color: #424242;
}

.mdc-simple-menu:focus {
  outline: none;
}

.mdc-simple-menu--open {
  display: inline-block;
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
  opacity: 1;
}

.mdc-simple-menu--animating {
  display: inline-block;
  -webkit-transition: opacity 0.2s cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 0.2s cubic-bezier(0, 0, 0.2, 1);
}

.mdc-simple-menu__items {
  display: inline-block;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  will-change: transform;
  /* stylelint-disable plugin/selector-bem-pattern, selector-no-universal */
  /* stylelint-enable plugin/selector-bem-pattern, selector-no-universal */
}

.mdc-simple-menu__items > * {
  opacity: 0;
}

.mdc-simple-menu__items > .mdc-list-item {
  cursor: pointer;
}

.mdc-simple-menu--animating .mdc-simple-menu__items {
  overflow-y: hidden;
}

.mdc-simple-menu--animating .mdc-simple-menu__items > * {
  -webkit-transition-duration: 0.3s;
  transition-duration: 0.3s;
  -webkit-transition-property: opacity;
  transition-property: opacity;
  -webkit-transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
  transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}

.mdc-simple-menu--open .mdc-simple-menu__items > * {
  opacity: 1;
  will-change: opacity;
}

[dir="rtl"] .mdc-simple-menu {
  -webkit-transform-origin: top right;
  -ms-transform-origin: top right;
  transform-origin: top right;
}

.mdc-simple-menu--open-from-top-left {
  -webkit-transform-origin: top left !important;
  -ms-transform-origin: top left !important;
  transform-origin: top left !important;
}

.mdc-simple-menu--open-from-top-right {
  -webkit-transform-origin: top right !important;
  -ms-transform-origin: top right !important;
  transform-origin: top right !important;
}

.mdc-simple-menu--open-from-bottom-left {
  -webkit-transform-origin: bottom left !important;
  -ms-transform-origin: bottom left !important;
  transform-origin: bottom left !important;
}

.mdc-simple-menu--open-from-bottom-right {
  -webkit-transform-origin: bottom right !important;
  -ms-transform-origin: bottom right !important;
  transform-origin: bottom right !important;
}

.mdc-simple-menu .mdc-list-group,
.mdc-simple-menu .mdc-list {
  padding: 0;
}

.mdc-simple-menu .mdc-list-item {
  position: relative;
  padding: 0 16px;
  outline: none;
  color: inherit;
  text-decoration: none;
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 0.875rem;
  font-weight: 500;
  letter-spacing: 0.04em;
  line-height: 1.5rem;
}

.mdc-simple-menu--theme-dark.mdc-simple-menu .mdc-list-item,
.mdc-theme--dark .mdc-simple-menu .mdc-list-item {
  color: white;
}

.mdc-simple-menu--theme-dark.mdc-simple-menu .mdc-list-divider,
.mdc-theme--dark .mdc-simple-menu .mdc-list-divider {
  border-color: rgba(255, 255, 255, 0.12);
}

.mdc-simple-menu .mdc-list-item__start-detail {
  color: rgba(0, 0, 0, 0.54);
}

.mdc-simple-menu--theme-dark.mdc-simple-menu .mdc-list-item__start-detail,
.mdc-theme--dark .mdc-simple-menu .mdc-list-item__start-detail {
  color: rgba(255, 255, 255, 0.54);
}

.mdc-simple-menu--selected.mdc-list-item,
.mdc-simple-menu--selected.mdc-list-item .mdc-list-item__start-detail {
  color: #3f51b5;
  color: var(--mdc-theme-primary, #3f51b5);
}

.mdc-simple-menu .mdc-list-item::before {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  -webkit-transition: opacity 120ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 120ms cubic-bezier(0, 0, 0.2, 1);
  border-radius: inherit;
  background: currentColor;
  content: "";
  opacity: 0;
}

.mdc-simple-menu .mdc-list-item:focus::before {
  opacity: .12;
}

.mdc-simple-menu .mdc-list-item:active::before {
  /*
      Slightly darker value for visual distinction.
      This allows a full base that has distinct modes.
      Progressive enhancement with ripples will provide complete button spec alignment.
    */
  opacity: .18;
}

/* postcss-bem-linter: end */
.mdc-menu-anchor {
  position: relative;
  overflow: visible;
}

/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/** MDC Ripple keyframes are split into their own file so that _mixins.scss can rely on them. */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
@keyframes mdc-ripple-fg-radius-in {
  from {
    -webkit-transform: scale(0);
    transform: scale(0);
    -webkit-animation-timing-function: cubic-bezier(0.157, 0.72, 0.386, 0.987);
    animation-timing-function: cubic-bezier(0.157, 0.72, 0.386, 0.987);
  }
  to {
    -webkit-transform: scale(1.5);
    transform: scale(1.5);
  }
}

@keyframes mdc-ripple-fg-opacity-out {
  from {
    opacity: 1;
    -webkit-animation-timing-function: linear;
    animation-timing-function: linear;
  }
  to {
    opacity: 0;
  }
}

@keyframes mdc-ripple-fg-unbounded-opacity-deactivate {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

@keyframes mdc-ripple-fg-unbounded-transform-deactivate {
  from {
    -webkit-transform: var(--mdc-ripple-fg-approx-xf);
    transform: var(--mdc-ripple-fg-approx-xf);
  }
  to {
    -webkit-transform: scale(1.01);
    transform: scale(1.01);
  }
}

/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Applies the correct theme color style to the specified property.
 * $property is typically color or background-color, but can be any CSS property that accepts color values.
 * $style should be one of the map keys in $mdc-theme-property-values (_variables.scss).
 */
/**
 * Creates a rule to be used in MDC-Web components for dark theming, and applies the provided contents.
 * Should provide the $root-selector option if applied to anything other than the root selector.
 * When used with a modifier class, provide a second argument of `true` for the $compound parameter
 * to specify that this should be attached as a compound class.
 *
 * Usage example:
 *
 * ```scss
 * .mdc-foo {
 *   color: black;
 *
 *   @include mdc-theme-dark {
 *     color: white;
 *   }
 *
 *   &__bar {
 *     background: black;
 *
 *     @include mdc-theme-dark(".mdc-foo") {
 *       background: white;
 *     }
 *   }
 * }
 *
 * .mdc-foo--disabled {
 *   opacity: .38;
 *
 *   @include mdc-theme-dark(".mdc-foo", true) {
 *     opacity: .5;
 *   }
 * }
 * ```
 */
/* stylelint-enable scss/dollar-variable-pattern */
/* postcss-bem-linter: define radio */
.mdc-radio {
  display: inline-block;
  position: relative;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  width: 40px;
  height: 40px;
  padding: 10px;
  cursor: pointer;
  will-change: opacity, transform, border-color, background-color, color;
}

.mdc-radio__background {
  display: inline-block;
  position: absolute;
  width: 50%;
  height: 50%;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.mdc-radio__background::before {
  background-color: #3f51b5;
  background-color: var(--mdc-theme-primary, #3f51b5);
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  -webkit-transform: scale(0, 0);
  -ms-transform: scale(0, 0);
  transform: scale(0, 0);
  -webkit-transition: opacity 120ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 120ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 120ms 0ms cubic-bezier(0.4, 0, 1, 1), transform 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  -webkit-transition: opacity 120ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 120ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 120ms 0ms cubic-bezier(0.4, 0, 1, 1), transform 120ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  border-radius: 50%;
  content: "";
  opacity: 0;
  pointer-events: none;
}

.mdc-radio__outer-circle {
  border-color: rgba(0, 0, 0, 0.54);
  border-color: var(--mdc-theme-text-secondary-on-light, rgba(0, 0, 0, 0.54));
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  -webkit-transition: border-color 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: border-color 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  border-width: 2px;
  border-style: solid;
  border-radius: 50%;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.mdc-radio--theme-dark .mdc-radio__outer-circle,
.mdc-theme--dark .mdc-radio__outer-circle {
  border-color: rgba(255, 255, 255, 0.7);
  border-color: var(--mdc-theme-text-secondary-on-dark, rgba(255, 255, 255, 0.7));
}

.mdc-radio__inner-circle {
  background-color: rgba(0, 0, 0, 0.54);
  background-color: var(--mdc-theme-text-secondary-on-light, rgba(0, 0, 0, 0.54));
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  -webkit-transform: scale(0, 0);
  -ms-transform: scale(0, 0);
  transform: scale(0, 0);
  -webkit-transition: background-color 120ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: background-color 120ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: transform 120ms 0ms cubic-bezier(0.4, 0, 1, 1), background-color 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  -webkit-transition: -webkit-transform 120ms 0ms cubic-bezier(0.4, 0, 1, 1), background-color 120ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: transform 120ms 0ms cubic-bezier(0.4, 0, 1, 1), background-color 120ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  border-radius: 50%;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.mdc-radio--theme-dark .mdc-radio__inner-circle,
.mdc-theme--dark .mdc-radio__inner-circle {
  background-color: rgba(255, 255, 255, 0.7);
  background-color: var(--mdc-theme-text-secondary-on-dark, rgba(255, 255, 255, 0.7));
}

.mdc-radio__native-control {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  cursor: inherit;
  opacity: 0;
  z-index: 1;
}

.mdc-radio__native-control:checked + .mdc-radio__background,
.mdc-radio__native-control:disabled + .mdc-radio__background {
  -webkit-transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1), transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  -webkit-transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1), transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
}

.mdc-radio__native-control:checked + .mdc-radio__background .mdc-radio__outer-circle,
.mdc-radio__native-control:disabled + .mdc-radio__background .mdc-radio__outer-circle {
  -webkit-transition: border-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: border-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
}

.mdc-radio__native-control:checked + .mdc-radio__background .mdc-radio__inner-circle,
.mdc-radio__native-control:disabled + .mdc-radio__background .mdc-radio__inner-circle {
  -webkit-transition: background-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: background-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1), background-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  -webkit-transition: -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1), background-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1), background-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
}

.mdc-radio--disabled {
  cursor: default;
  pointer-events: none;
}

.mdc-radio__native-control:checked + .mdc-radio__background .mdc-radio__outer-circle {
  border-color: #3f51b5;
  border-color: var(--mdc-theme-primary, #3f51b5);
}

.mdc-radio__native-control:checked + .mdc-radio__background .mdc-radio__inner-circle {
  background-color: #3f51b5;
  background-color: var(--mdc-theme-primary, #3f51b5);
  -webkit-transform: scale(0.5);
  -ms-transform: scale(0.5);
  transform: scale(0.5);
  -webkit-transition: background-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: background-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1), background-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  -webkit-transition: -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1), background-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1), background-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
}

.mdc-radio__native-control:disabled + .mdc-radio__background,
fieldset:disabled .mdc-radio__native-control + .mdc-radio__background,
[aria-disabled="true"] .mdc-radio__native-control + .mdc-radio__background {
  cursor: default;
}

.mdc-radio__native-control:disabled + .mdc-radio__background .mdc-radio__outer-circle,
fieldset:disabled .mdc-radio__native-control + .mdc-radio__background .mdc-radio__outer-circle,
[aria-disabled="true"] .mdc-radio__native-control + .mdc-radio__background .mdc-radio__outer-circle {
  border-color: rgba(0, 0, 0, 0.26);
}

.mdc-radio--theme-dark .mdc-radio__native-control:disabled + .mdc-radio__background .mdc-radio__outer-circle,
.mdc-theme--dark .mdc-radio__native-control:disabled + .mdc-radio__background .mdc-radio__outer-circle, .mdc-radio--theme-dark fieldset:disabled .mdc-radio__native-control + .mdc-radio__background .mdc-radio__outer-circle,
.mdc-theme--dark fieldset:disabled .mdc-radio__native-control + .mdc-radio__background .mdc-radio__outer-circle, .mdc-radio--theme-dark [aria-disabled="true"] .mdc-radio__native-control + .mdc-radio__background .mdc-radio__outer-circle,
.mdc-theme--dark [aria-disabled="true"] .mdc-radio__native-control + .mdc-radio__background .mdc-radio__outer-circle {
  border-color: rgba(255, 255, 255, 0.3);
}

.mdc-radio__native-control:disabled + .mdc-radio__background .mdc-radio__inner-circle,
fieldset:disabled .mdc-radio__native-control + .mdc-radio__background .mdc-radio__inner-circle,
[aria-disabled="true"] .mdc-radio__native-control + .mdc-radio__background .mdc-radio__inner-circle {
  background-color: rgba(0, 0, 0, 0.26);
}

.mdc-radio--theme-dark .mdc-radio__native-control:disabled + .mdc-radio__background .mdc-radio__inner-circle,
.mdc-theme--dark .mdc-radio__native-control:disabled + .mdc-radio__background .mdc-radio__inner-circle, .mdc-radio--theme-dark fieldset:disabled .mdc-radio__native-control + .mdc-radio__background .mdc-radio__inner-circle,
.mdc-theme--dark fieldset:disabled .mdc-radio__native-control + .mdc-radio__background .mdc-radio__inner-circle, .mdc-radio--theme-dark [aria-disabled="true"] .mdc-radio__native-control + .mdc-radio__background .mdc-radio__inner-circle,
.mdc-theme--dark [aria-disabled="true"] .mdc-radio__native-control + .mdc-radio__background .mdc-radio__inner-circle {
  background-color: rgba(255, 255, 255, 0.3);
}

.mdc-radio__native-control:focus + .mdc-radio__background::before {
  -webkit-transform: scale(2.8, 2.8);
  -ms-transform: scale(2.8, 2.8);
  transform: scale(2.8, 2.8);
  -webkit-transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1), transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  -webkit-transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1), transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1);
  opacity: .26;
}

/* postcss-bem-linter: end */
.mdc-radio.mdc-ripple-upgraded {
  --mdc-ripple-left: 0;
  --mdc-ripple-top: 0;
  --mdc-ripple-fg-size: 0;
  --mdc-ripple-surface-height: 0;
  --mdc-ripple-surface-width: 0;
  --mdc-ripple-fg-unbounded-transform-duration: 0ms;
  --mdc-ripple-xfo-x: center;
  --mdc-ripple-xfo-y: center;
  --mdc-ripple-fg-unbounded-opacity-duration: 0ms;
  --mdc-ripple-fg-unbounded-transform-duration: 0ms;
  --mdc-ripple-fg-approx-xf: 0;
  will-change: transition, opacity;
  -webkit-tap-highlight-color: transparent;
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
}

.mdc-radio.mdc-ripple-upgraded::before {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable scss/dollar-variable-pattern */
  background-color: rgba(63, 81, 181, 0.14);
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  position: absolute;
  top: -webkit-calc(50% - 100%);
  top: calc(50% - 100%);
  left: -webkit-calc(50% - 100%);
  left: calc(50% - 100%);
  width: 200%;
  height: 200%;
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
  -webkit-transition: opacity 200ms linear;
  transition: opacity 200ms linear;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}

@supports (background-color: color(green a(10%))) {
  .mdc-radio.mdc-ripple-upgraded::before {
    background-color: color(var(--mdc-theme-primary, #3f51b5) a(14%));
  }
}

.mdc-radio.mdc-ripple-upgraded.mdc-ripple-upgraded--background-active::before {
  opacity: .99999;
}

.mdc-radio.mdc-ripple-upgraded.mdc-ripple-upgraded--background-active:active::before {
  -webkit-transition-duration: 600ms;
  transition-duration: 600ms;
}

.mdc-radio.mdc-ripple-upgraded.mdc-ripple-upgraded--background-bounded-active-fill::before {
  -webkit-transition-duration: 120ms;
  transition-duration: 120ms;
  opacity: 1;
}

.mdc-radio.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded::before {
  top: var(--mdc-ripple-top);
  left: var(--mdc-ripple-left);
  width: var(--mdc-ripple-fg-size);
  height: var(--mdc-ripple-fg-size);
}

.mdc-radio.mdc-ripple-upgraded::after {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable scss/dollar-variable-pattern */
  background-color: rgba(63, 81, 181, 0.14);
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  position: absolute;
  width: var(--mdc-ripple-fg-size);
  height: var(--mdc-ripple-fg-size);
  -webkit-transform: scale(0);
  -ms-transform: scale(0);
  transform: scale(0);
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  transform-origin: center center;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}

@supports (background-color: color(green a(10%))) {
  .mdc-radio.mdc-ripple-upgraded::after {
    background-color: color(var(--mdc-theme-primary, #3f51b5) a(14%));
  }
}

.mdc-radio.mdc-ripple-upgraded:not(.mdc-ripple-upgraded--unbounded)::after {
  top: -webkit-calc(var(--mdc-ripple-top) - var(--mdc-ripple-fg-size) / 2);
  top: calc(var(--mdc-ripple-top) - var(--mdc-ripple-fg-size) / 2);
  left: -webkit-calc(var(--mdc-ripple-left) - var(--mdc-ripple-fg-size) / 2);
  left: calc(var(--mdc-ripple-left) - var(--mdc-ripple-fg-size) / 2);
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  transform-origin: center center;
}

.mdc-radio.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded::after {
  top: var(--mdc-ripple-top);
  left: var(--mdc-ripple-left);
  -webkit-transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
  -ms-transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
  transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
}

.mdc-radio.mdc-ripple-upgraded.mdc-ripple-upgraded--foreground-bounded-active-fill::after {
  -webkit-animation-fill-mode: forwards;
  animation-fill-mode: forwards;
  -webkit-animation: 800ms mdc-ripple-fg-radius-in, 400ms mdc-ripple-fg-opacity-out;
  animation: 800ms mdc-ripple-fg-radius-in, 400ms mdc-ripple-fg-opacity-out;
}

.mdc-radio.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded--foreground-unbounded-activation::after {
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
  -webkit-transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  -webkit-transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  opacity: 1;
}

.mdc-radio.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded--foreground-unbounded-deactivation::after {
  -webkit-animation: mdc-ripple-fg-unbounded-opacity-deactivate var(--mdc-ripple-fg-unbounded-opacity-duration) linear, mdc-ripple-fg-unbounded-transform-deactivate var(--mdc-ripple-fg-unbounded-transform-duration) cubic-bezier(0.157, 0.72, 0.386, 0.987);
  animation: mdc-ripple-fg-unbounded-opacity-deactivate var(--mdc-ripple-fg-unbounded-opacity-duration) linear, mdc-ripple-fg-unbounded-transform-deactivate var(--mdc-ripple-fg-unbounded-transform-duration) cubic-bezier(0.157, 0.72, 0.386, 0.987);
}

.mdc-radio.mdc-ripple-upgraded .mdc-radio__background::before {
  content: none;
}

/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Applies the correct theme color style to the specified property.
 * $property is typically color or background-color, but can be any CSS property that accepts color values.
 * $style should be one of the map keys in $mdc-theme-property-values (_variables.scss).
 */
/**
 * Creates a rule to be used in MDC-Web components for dark theming, and applies the provided contents.
 * Should provide the $root-selector option if applied to anything other than the root selector.
 * When used with a modifier class, provide a second argument of `true` for the $compound parameter
 * to specify that this should be attached as a compound class.
 *
 * Usage example:
 *
 * ```scss
 * .mdc-foo {
 *   color: black;
 *
 *   @include mdc-theme-dark {
 *     color: white;
 *   }
 *
 *   &__bar {
 *     background: black;
 *
 *     @include mdc-theme-dark(".mdc-foo") {
 *       background: white;
 *     }
 *   }
 * }
 *
 * .mdc-foo--disabled {
 *   opacity: .38;
 *
 *   @include mdc-theme-dark(".mdc-foo", true) {
 *     opacity: .5;
 *   }
 * }
 * ```
 */
/* stylelint-enable scss/dollar-variable-pattern */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/** MDC Ripple keyframes are split into their own file so that _mixins.scss can rely on them. */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
@keyframes mdc-ripple-fg-radius-in {
  from {
    -webkit-transform: scale(0);
    transform: scale(0);
    -webkit-animation-timing-function: cubic-bezier(0.157, 0.72, 0.386, 0.987);
    animation-timing-function: cubic-bezier(0.157, 0.72, 0.386, 0.987);
  }
  to {
    -webkit-transform: scale(1.5);
    transform: scale(1.5);
  }
}

@keyframes mdc-ripple-fg-opacity-out {
  from {
    opacity: 1;
    -webkit-animation-timing-function: linear;
    animation-timing-function: linear;
  }
  to {
    opacity: 0;
  }
}

@keyframes mdc-ripple-fg-unbounded-opacity-deactivate {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

@keyframes mdc-ripple-fg-unbounded-transform-deactivate {
  from {
    -webkit-transform: var(--mdc-ripple-fg-approx-xf);
    transform: var(--mdc-ripple-fg-approx-xf);
  }
  to {
    -webkit-transform: scale(1.01);
    transform: scale(1.01);
  }
}

/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* postcss-bem-linter: define ripple-surface */
.mdc-ripple-surface {
  position: relative;
  outline: none;
  overflow: hidden;
}

.mdc-ripple-surface[data-mdc-ripple-is-unbounded] {
  overflow: visible;
}

.mdc-ripple-surface::before {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  -webkit-transition: opacity 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 120ms 0ms cubic-bezier(0.4, 0, 1, 1);
  border-radius: inherit;
  background: currentColor;
  content: "";
  opacity: 0;
}

.mdc-ripple-surface:focus::before {
  opacity: .12;
}

.mdc-ripple-surface:active::before {
  opacity: .18;
}

.mdc-ripple-surface.mdc-ripple-upgraded {
  --mdc-ripple-left: 0;
  --mdc-ripple-top: 0;
  --mdc-ripple-fg-size: 0;
  --mdc-ripple-surface-height: 0;
  --mdc-ripple-surface-width: 0;
  --mdc-ripple-fg-unbounded-transform-duration: 0ms;
  --mdc-ripple-xfo-x: center;
  --mdc-ripple-xfo-y: center;
  --mdc-ripple-fg-unbounded-opacity-duration: 0ms;
  --mdc-ripple-fg-unbounded-transform-duration: 0ms;
  --mdc-ripple-fg-approx-xf: 0;
  will-change: transition, opacity;
  -webkit-tap-highlight-color: transparent;
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
}

.mdc-ripple-surface.mdc-ripple-upgraded::before {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  background-color: rgba(0, 0, 0, 0.06);
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  position: absolute;
  top: -webkit-calc(50% - 100%);
  top: calc(50% - 100%);
  left: -webkit-calc(50% - 100%);
  left: calc(50% - 100%);
  width: 200%;
  height: 200%;
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
  -webkit-transition: opacity 200ms linear;
  transition: opacity 200ms linear;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}

.mdc-ripple-surface.mdc-ripple-upgraded.mdc-ripple-upgraded--background-active::before {
  opacity: .99999;
}

.mdc-ripple-surface.mdc-ripple-upgraded.mdc-ripple-upgraded--background-active:active::before {
  -webkit-transition-duration: 600ms;
  transition-duration: 600ms;
}

.mdc-ripple-surface.mdc-ripple-upgraded.mdc-ripple-upgraded--background-bounded-active-fill::before {
  -webkit-transition-duration: 120ms;
  transition-duration: 120ms;
  opacity: 1;
}

.mdc-ripple-surface.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded::before {
  top: var(--mdc-ripple-top);
  left: var(--mdc-ripple-left);
  width: var(--mdc-ripple-fg-size);
  height: var(--mdc-ripple-fg-size);
}

.mdc-ripple-surface.mdc-ripple-upgraded::after {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  background-color: rgba(0, 0, 0, 0.06);
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  position: absolute;
  width: var(--mdc-ripple-fg-size);
  height: var(--mdc-ripple-fg-size);
  -webkit-transform: scale(0);
  -ms-transform: scale(0);
  transform: scale(0);
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  transform-origin: center center;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}

.mdc-ripple-surface.mdc-ripple-upgraded:not(.mdc-ripple-upgraded--unbounded)::after {
  top: -webkit-calc(var(--mdc-ripple-top) - var(--mdc-ripple-fg-size) / 2);
  top: calc(var(--mdc-ripple-top) - var(--mdc-ripple-fg-size) / 2);
  left: -webkit-calc(var(--mdc-ripple-left) - var(--mdc-ripple-fg-size) / 2);
  left: calc(var(--mdc-ripple-left) - var(--mdc-ripple-fg-size) / 2);
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  transform-origin: center center;
}

.mdc-ripple-surface.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded::after {
  top: var(--mdc-ripple-top);
  left: var(--mdc-ripple-left);
  -webkit-transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
  -ms-transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
  transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
}

.mdc-ripple-surface.mdc-ripple-upgraded.mdc-ripple-upgraded--foreground-bounded-active-fill::after {
  -webkit-animation-fill-mode: forwards;
  animation-fill-mode: forwards;
  -webkit-animation: 800ms mdc-ripple-fg-radius-in, 400ms mdc-ripple-fg-opacity-out;
  animation: 800ms mdc-ripple-fg-radius-in, 400ms mdc-ripple-fg-opacity-out;
}

.mdc-ripple-surface.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded--foreground-unbounded-activation::after {
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
  -webkit-transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  -webkit-transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  opacity: 1;
}

.mdc-ripple-surface.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded--foreground-unbounded-deactivation::after {
  -webkit-animation: mdc-ripple-fg-unbounded-opacity-deactivate var(--mdc-ripple-fg-unbounded-opacity-duration) linear, mdc-ripple-fg-unbounded-transform-deactivate var(--mdc-ripple-fg-unbounded-transform-duration) cubic-bezier(0.157, 0.72, 0.386, 0.987);
  animation: mdc-ripple-fg-unbounded-opacity-deactivate var(--mdc-ripple-fg-unbounded-opacity-duration) linear, mdc-ripple-fg-unbounded-transform-deactivate var(--mdc-ripple-fg-unbounded-transform-duration) cubic-bezier(0.157, 0.72, 0.386, 0.987);
}

.mdc-ripple-surface--primary.mdc-ripple-upgraded {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
}

.mdc-ripple-surface--primary.mdc-ripple-upgraded::before, .mdc-ripple-surface--primary.mdc-ripple-upgraded::after {
  background-color: #3f51b5;
  background-color: var(--mdc-theme-primary, #3f51b5);
}

.mdc-ripple-surface--primary.mdc-ripple-upgraded::before {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable scss/dollar-variable-pattern */
  background-color: rgba(63, 81, 181, 0.14);
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  position: absolute;
  top: -webkit-calc(50% - 100%);
  top: calc(50% - 100%);
  left: -webkit-calc(50% - 100%);
  left: calc(50% - 100%);
  width: 200%;
  height: 200%;
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
  -webkit-transition: opacity 200ms linear;
  transition: opacity 200ms linear;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}

@supports (background-color: color(green a(10%))) {
  .mdc-ripple-surface--primary.mdc-ripple-upgraded::before {
    background-color: color(var(--mdc-theme-primary, #3f51b5) a(14%));
  }
}

.mdc-ripple-surface--primary.mdc-ripple-upgraded.mdc-ripple-upgraded--background-active::before {
  opacity: .99999;
}

.mdc-ripple-surface--primary.mdc-ripple-upgraded.mdc-ripple-upgraded--background-active:active::before {
  -webkit-transition-duration: 600ms;
  transition-duration: 600ms;
}

.mdc-ripple-surface--primary.mdc-ripple-upgraded.mdc-ripple-upgraded--background-bounded-active-fill::before {
  -webkit-transition-duration: 120ms;
  transition-duration: 120ms;
  opacity: 1;
}

.mdc-ripple-surface--primary.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded::before {
  top: var(--mdc-ripple-top);
  left: var(--mdc-ripple-left);
  width: var(--mdc-ripple-fg-size);
  height: var(--mdc-ripple-fg-size);
}

.mdc-ripple-surface--primary.mdc-ripple-upgraded::after {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable scss/dollar-variable-pattern */
  background-color: rgba(63, 81, 181, 0.14);
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  position: absolute;
  width: var(--mdc-ripple-fg-size);
  height: var(--mdc-ripple-fg-size);
  -webkit-transform: scale(0);
  -ms-transform: scale(0);
  transform: scale(0);
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  transform-origin: center center;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}

@supports (background-color: color(green a(10%))) {
  .mdc-ripple-surface--primary.mdc-ripple-upgraded::after {
    background-color: color(var(--mdc-theme-primary, #3f51b5) a(14%));
  }
}

.mdc-ripple-surface--primary.mdc-ripple-upgraded:not(.mdc-ripple-upgraded--unbounded)::after {
  top: -webkit-calc(var(--mdc-ripple-top) - var(--mdc-ripple-fg-size) / 2);
  top: calc(var(--mdc-ripple-top) - var(--mdc-ripple-fg-size) / 2);
  left: -webkit-calc(var(--mdc-ripple-left) - var(--mdc-ripple-fg-size) / 2);
  left: calc(var(--mdc-ripple-left) - var(--mdc-ripple-fg-size) / 2);
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  transform-origin: center center;
}

.mdc-ripple-surface--primary.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded::after {
  top: var(--mdc-ripple-top);
  left: var(--mdc-ripple-left);
  -webkit-transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
  -ms-transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
  transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
}

.mdc-ripple-surface--primary.mdc-ripple-upgraded.mdc-ripple-upgraded--foreground-bounded-active-fill::after {
  -webkit-animation-fill-mode: forwards;
  animation-fill-mode: forwards;
  -webkit-animation: 800ms mdc-ripple-fg-radius-in, 400ms mdc-ripple-fg-opacity-out;
  animation: 800ms mdc-ripple-fg-radius-in, 400ms mdc-ripple-fg-opacity-out;
}

.mdc-ripple-surface--primary.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded--foreground-unbounded-activation::after {
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
  -webkit-transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  -webkit-transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  opacity: 1;
}

.mdc-ripple-surface--primary.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded--foreground-unbounded-deactivation::after {
  -webkit-animation: mdc-ripple-fg-unbounded-opacity-deactivate var(--mdc-ripple-fg-unbounded-opacity-duration) linear, mdc-ripple-fg-unbounded-transform-deactivate var(--mdc-ripple-fg-unbounded-transform-duration) cubic-bezier(0.157, 0.72, 0.386, 0.987);
  animation: mdc-ripple-fg-unbounded-opacity-deactivate var(--mdc-ripple-fg-unbounded-opacity-duration) linear, mdc-ripple-fg-unbounded-transform-deactivate var(--mdc-ripple-fg-unbounded-transform-duration) cubic-bezier(0.157, 0.72, 0.386, 0.987);
}

.mdc-ripple-surface--accent.mdc-ripple-upgraded {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
}

.mdc-ripple-surface--accent.mdc-ripple-upgraded::before, .mdc-ripple-surface--accent.mdc-ripple-upgraded::after {
  background-color: #3f51b5;
  background-color: var(--mdc-theme-primary, #3f51b5);
}

.mdc-ripple-surface--accent.mdc-ripple-upgraded::before {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable scss/dollar-variable-pattern */
  background-color: rgba(255, 64, 129, 0.14);
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  position: absolute;
  top: -webkit-calc(50% - 100%);
  top: calc(50% - 100%);
  left: -webkit-calc(50% - 100%);
  left: calc(50% - 100%);
  width: 200%;
  height: 200%;
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
  -webkit-transition: opacity 200ms linear;
  transition: opacity 200ms linear;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}

@supports (background-color: color(green a(10%))) {
  .mdc-ripple-surface--accent.mdc-ripple-upgraded::before {
    background-color: color(var(--mdc-theme-accent, #ff4081) a(14%));
  }
}

.mdc-ripple-surface--accent.mdc-ripple-upgraded.mdc-ripple-upgraded--background-active::before {
  opacity: .99999;
}

.mdc-ripple-surface--accent.mdc-ripple-upgraded.mdc-ripple-upgraded--background-active:active::before {
  -webkit-transition-duration: 600ms;
  transition-duration: 600ms;
}

.mdc-ripple-surface--accent.mdc-ripple-upgraded.mdc-ripple-upgraded--background-bounded-active-fill::before {
  -webkit-transition-duration: 120ms;
  transition-duration: 120ms;
  opacity: 1;
}

.mdc-ripple-surface--accent.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded::before {
  top: var(--mdc-ripple-top);
  left: var(--mdc-ripple-left);
  width: var(--mdc-ripple-fg-size);
  height: var(--mdc-ripple-fg-size);
}

.mdc-ripple-surface--accent.mdc-ripple-upgraded::after {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable at-rule-empty-line-before, block-closing-brace-newline-after */
  /* stylelint-enable scss/dollar-variable-pattern */
  background-color: rgba(255, 64, 129, 0.14);
  /* stylelint-enable at-rule-empty-line-before, block-closing-brace-newline-after */
  position: absolute;
  width: var(--mdc-ripple-fg-size);
  height: var(--mdc-ripple-fg-size);
  -webkit-transform: scale(0);
  -ms-transform: scale(0);
  transform: scale(0);
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  transform-origin: center center;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  content: "";
}

@supports (background-color: color(green a(10%))) {
  .mdc-ripple-surface--accent.mdc-ripple-upgraded::after {
    background-color: color(var(--mdc-theme-accent, #ff4081) a(14%));
  }
}

.mdc-ripple-surface--accent.mdc-ripple-upgraded:not(.mdc-ripple-upgraded--unbounded)::after {
  top: -webkit-calc(var(--mdc-ripple-top) - var(--mdc-ripple-fg-size) / 2);
  top: calc(var(--mdc-ripple-top) - var(--mdc-ripple-fg-size) / 2);
  left: -webkit-calc(var(--mdc-ripple-left) - var(--mdc-ripple-fg-size) / 2);
  left: calc(var(--mdc-ripple-left) - var(--mdc-ripple-fg-size) / 2);
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  transform-origin: center center;
}

.mdc-ripple-surface--accent.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded::after {
  top: var(--mdc-ripple-top);
  left: var(--mdc-ripple-left);
  -webkit-transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
  -ms-transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
  transform-origin: var(--mdc-ripple-xfo-x) var(--mdc-ripple-xfo-y);
}

.mdc-ripple-surface--accent.mdc-ripple-upgraded.mdc-ripple-upgraded--foreground-bounded-active-fill::after {
  -webkit-animation-fill-mode: forwards;
  animation-fill-mode: forwards;
  -webkit-animation: 800ms mdc-ripple-fg-radius-in, 400ms mdc-ripple-fg-opacity-out;
  animation: 800ms mdc-ripple-fg-radius-in, 400ms mdc-ripple-fg-opacity-out;
}

.mdc-ripple-surface--accent.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded--foreground-unbounded-activation::after {
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
  -webkit-transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  -webkit-transition: opacity 110ms linear, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  transition: opacity 110ms linear, transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms, -webkit-transform var(--mdc-ripple-fg-unbounded-transform-duration) linear 80ms;
  opacity: 1;
}

.mdc-ripple-surface--accent.mdc-ripple-upgraded.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded--foreground-unbounded-deactivation::after {
  -webkit-animation: mdc-ripple-fg-unbounded-opacity-deactivate var(--mdc-ripple-fg-unbounded-opacity-duration) linear, mdc-ripple-fg-unbounded-transform-deactivate var(--mdc-ripple-fg-unbounded-transform-duration) cubic-bezier(0.157, 0.72, 0.386, 0.987);
  animation: mdc-ripple-fg-unbounded-opacity-deactivate var(--mdc-ripple-fg-unbounded-opacity-duration) linear, mdc-ripple-fg-unbounded-transform-deactivate var(--mdc-ripple-fg-unbounded-transform-duration) cubic-bezier(0.157, 0.72, 0.386, 0.987);
}

/* postcss-bem-linter: end */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* TODO(sgomes): Figure out what to do about desktop font sizes. */
/* TODO(sgomes): Figure out what to do about i18n and i18n font sizes. */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Applies the correct theme color style to the specified property.
 * $property is typically color or background-color, but can be any CSS property that accepts color values.
 * $style should be one of the map keys in $mdc-theme-property-values (_variables.scss).
 */
/**
 * Creates a rule to be used in MDC-Web components for dark theming, and applies the provided contents.
 * Should provide the $root-selector option if applied to anything other than the root selector.
 * When used with a modifier class, provide a second argument of `true` for the $compound parameter
 * to specify that this should be attached as a compound class.
 *
 * Usage example:
 *
 * ```scss
 * .mdc-foo {
 *   color: black;
 *
 *   @include mdc-theme-dark {
 *     color: white;
 *   }
 *
 *   &__bar {
 *     background: black;
 *
 *     @include mdc-theme-dark(".mdc-foo") {
 *       background: white;
 *     }
 *   }
 * }
 *
 * .mdc-foo--disabled {
 *   opacity: .38;
 *
 *   @include mdc-theme-dark(".mdc-foo", true) {
 *     opacity: .5;
 *   }
 * }
 * ```
 */
/* stylelint-enable scss/dollar-variable-pattern */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Creates a rule that will be applied when an MDC-Web component is within the context of an RTL layout.
 *
 * Usage Example:
 * ```scss
 * .mdc-foo {
 *   position: absolute;
 *   left: 0;
 *
 *   @include mdc-rtl {
 *     left: auto;
 *     right: 0;
 *   }
 *
 *   &__bar {
 *     margin-left: 4px;
 *     @include mdc-rtl(".mdc-foo") {
 *       margin-left: auto;
 *       margin-right: 4px;
 *     }
 *   }
 * }
 *
 * .mdc-foo--mod {
 *   padding-left: 4px;
 *
 *   @include mdc-rtl {
 *     padding-left: auto;
 *     padding-right: 4px;
 *   }
 * }
 * ```
 *
 * Note that this works by checking for [dir="rtl"] on an ancestor element. While this will work
 * in most cases, it will in some cases lead to false negatives, e.g.
 *
 * ```html
 * <html dir="rtl">
 *   <!-- ... -->
 *   <div dir="ltr">
 *     <div class="mdc-foo">Styled incorrectly as RTL!</div>
 *   </div>
 * </html>
 * ```
 *
 * In the future, selectors such as :dir (http://mdn.io/:dir) will help us mitigate this.
 */
/**
 * Takes a base box-model property - e.g. margin / border / padding - along with a default
 * direction and value, and emits rules which apply the value to the
 * "<base-property>-<default-direction>" property by default, but flips the direction
 * when within an RTL context.
 *
 * For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-box(margin, left, 8px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-left: 8px;
 *
 *   @include mdc-rtl {
 *     margin-right: 8px;
 *     margin-left: 0;
 *   }
 * }
 * ```
 * whereas:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-box(margin, right, 8px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-right: 8px;
 *
 *   @include mdc-rtl {
 *     margin-right: 0;
 *     margin-left: 8px;
 *   }
 * }
 * ```
 *
 * You can also pass a 4th optional $root-selector argument which will be forwarded to `mdc-rtl`,
 * e.g. `@include mdc-rtl-reflexive-box-property(margin, left, 8px, ".mdc-component")`.
 *
 * Note that this function will always zero out the original value in an RTL context. If you're
 * trying to flip the values, use mdc-rtl-reflexive-property().
 */
/**
 * Takes a base property and emits rules that assign <base-property>-left to <left-value> and
 * <base-property>-right to <right-value> in a LTR context, and vice versa in a RTL context.
 * For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-property(margin, auto, 12px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-left: auto;
 *   margin-right: 12px;
 *
 *   @include mdc-rtl {
 *     margin-left: 12px;
 *     margin-right: auto;
 *   }
 * }
 * ```
 *
 * A 4th optional $root-selector argument can be given, which will be passed to `mdc-rtl`.
 */
/**
 * Takes an argument specifying a horizontal position property (either "left" or "right") as well
 * as a value, and applies that value to the specified position in a LTR context, and flips it in a
 * RTL context. For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-position(left, 0);
 *   position: absolute;
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 *  .mdc-foo {
 *    position: absolute;
 *    left: 0;
 *    right: initial;
 *
 *    @include mdc-rtl {
 *      right: 0;
 *      left: initial;
 *    }
 *  }
 * ```
 * An optional third $root-selector argument may also be given, which is passed to `mdc-rtl`.
 */
.mdc-select {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 1rem;
  font-weight: 400;
  letter-spacing: 0.04em;
  line-height: 1.75rem;
  color: rgba(0, 0, 0, 0.87);
  color: var(--mdc-theme-text-primary-on-light, rgba(0, 0, 0, 0.87));
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  padding-left: 0;
  padding-right: 24px;
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: -webkit-inline-flex;
  display: inline-flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  -webkit-box-pack: start;
  -ms-flex-pack: start;
  -webkit-justify-content: flex-start;
  justify-content: flex-start;
  max-width: -webkit-calc(100% - 24px);
  max-width: calc(100% - 24px);
  height: 32px;
  -webkit-transition: border-bottom-color 150ms 0ms cubic-bezier(0.4, 0, 1, 1), background-color 150ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: border-bottom-color 150ms 0ms cubic-bezier(0.4, 0, 1, 1), background-color 150ms 0ms cubic-bezier(0.4, 0, 1, 1);
  border: none;
  border-bottom: 1px solid rgba(0, 0, 0, 0.12);
  border-radius: 0;
  background: none;
  background-repeat: no-repeat;
  background-position: right center;
  background-image: url(data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%230%22%20fill-rule%3D%22evenodd%22%20opacity%3D%220.54%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E);
  font-family: Roboto, sans-serif;
  font-size: .936rem;
  cursor: pointer;
}

[dir="rtl"] .mdc-select, .mdc-select[dir="rtl"] {
  padding-left: 24px;
  padding-right: 0;
}

.mdc-select::-ms-expand {
  display: none;
}

.mdc-select:focus {
  border-bottom-color: #3f51b5;
  border-bottom-color: var(--mdc-theme-primary, #3f51b5);
  outline: none;
  background-color: rgba(0, 0, 0, 0.06);
}

[dir="rtl"] .mdc-select, .mdc-select[dir="rtl"] {
  background-position: left center;
}

.mdc-select--theme-dark,
.mdc-theme--dark .mdc-select {
  color: white;
  color: var(--mdc-theme-text-primary-on-dark, white);
  background-image: url(data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%23ffffff%22%20fill-rule%3D%22evenodd%22%20opacity%3D%220.54%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E);
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

.mdc-select--theme-dark:focus,
.mdc-theme--dark .mdc-select:focus {
  border-bottom-color: #3f51b5;
  border-bottom-color: var(--mdc-theme-primary, #3f51b5);
  background-color: rgba(255, 255, 255, 0.09);
}

.mdc-select__menu {
  position: fixed;
  top: 0;
  left: 0;
  max-height: 100%;
  -webkit-transform-origin: center center;
  -ms-transform-origin: center center;
  transform-origin: center center;
  overflow-y: scroll;
}

.mdc-select__selected-text {
  -webkit-transition: opacity 125ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 125ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 125ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 125ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 125ms 0ms cubic-bezier(0.4, 0, 1, 1), transform 125ms 0ms cubic-bezier(0.4, 0, 1, 1);
  -webkit-transition: opacity 125ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 125ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 125ms 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 125ms 0ms cubic-bezier(0.4, 0, 1, 1), transform 125ms 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 125ms 0ms cubic-bezier(0.4, 0, 1, 1);
  white-space: nowrap;
  overflow: hidden;
}

.mdc-select--open .mdc-select__selected-text {
  -webkit-transform: translateY(8px);
  -ms-transform: translateY(8px);
  transform: translateY(8px);
  -webkit-transition: opacity 125ms 125ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 125ms 125ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 125ms 125ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 125ms 125ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 125ms 125ms cubic-bezier(0, 0, 0.2, 1), transform 125ms 125ms cubic-bezier(0, 0, 0.2, 1);
  -webkit-transition: opacity 125ms 125ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 125ms 125ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 125ms 125ms cubic-bezier(0, 0, 0.2, 1);
  transition: opacity 125ms 125ms cubic-bezier(0, 0, 0.2, 1), transform 125ms 125ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 125ms 125ms cubic-bezier(0, 0, 0.2, 1);
  opacity: 0;
}

.mdc-select--disabled,
.mdc-select[disabled] {
  color: rgba(0, 0, 0, 0.38);
  color: var(--mdc-theme-text-disabled-on-light, rgba(0, 0, 0, 0.38));
  background-image: url(data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%230%22%20fill-rule%3D%22evenodd%22%20opacity%3D%220.38%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E);
  border-bottom-style: dotted;
  cursor: default;
  pointer-events: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

.mdc-select--theme-dark.mdc-select--disabled, .mdc-select[disabled],
.mdc-theme--dark .mdc-select--disabled,
.mdc-theme--dark .mdc-select[disabled] {
  color: rgba(255, 255, 255, 0.5);
  color: var(--mdc-theme-text-disabled-on-dark, rgba(255, 255, 255, 0.5));
  background-image: url(data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%23ffffff%22%20fill-rule%3D%22evenodd%22%20opacity%3D%220.38%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E);
  border-bottom: 1px dotted rgba(255, 255, 255, 0.38);
}

.mdc-select__menu .mdc-list-item {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 1rem;
  font-weight: 400;
  letter-spacing: 0.04em;
  line-height: 1.75rem;
  color: rgba(0, 0, 0, 0.54);
  color: var(--mdc-theme-text-secondary-on-light, rgba(0, 0, 0, 0.54));
}

.mdc-select__menu .mdc-list-item[aria-selected="true"] {
  color: rgba(0, 0, 0, 0.87);
  color: var(--mdc-theme-text-primary-on-light, rgba(0, 0, 0, 0.87));
}

.mdc-select--theme-dark .mdc-select__menu .mdc-list-item,
.mdc-theme--dark .mdc-select__menu .mdc-list-item {
  color: rgba(255, 255, 255, 0.7);
  color: var(--mdc-theme-text-secondary-on-dark, rgba(255, 255, 255, 0.7));
}

.mdc-select--theme-dark .mdc-select__menu .mdc-list-item[aria-selected="true"],
.mdc-theme--dark .mdc-select__menu .mdc-list-item[aria-selected="true"] {
  color: white;
  color: var(--mdc-theme-text-primary-on-dark, white);
}

.mdc-select__menu .mdc-list-group,
.mdc-select__menu .mdc-list-group > .mdc-list-item:first-child {
  margin-top: 12px;
}

.mdc-select__menu .mdc-list-group {
  color: rgba(0, 0, 0, 0.38);
  color: var(--mdc-theme-text-hint-on-light, rgba(0, 0, 0, 0.38));
  font-weight: normal;
}

.mdc-select__menu .mdc-list-group .mdc-list-item {
  color: rgba(0, 0, 0, 0.87);
  color: var(--mdc-theme-text-primary-on-light, rgba(0, 0, 0, 0.87));
}

.mdc-select--theme-dark .mdc-select__menu .mdc-list-group,
.mdc-theme--dark .mdc-select__menu .mdc-list-group {
  color: rgba(255, 255, 255, 0.5);
  color: var(--mdc-theme-text-hint-on-dark, rgba(255, 255, 255, 0.5));
}

.mdc-select--theme-dark .mdc-select__menu .mdc-list-group .mdc-list-item,
.mdc-theme--dark .mdc-select__menu .mdc-list-group .mdc-list-item {
  color: white;
  color: var(--mdc-theme-text-primary-on-dark, white);
}

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Creates a rule that will be applied when an MDC-Web component is within the context of an RTL layout.
 *
 * Usage Example:
 * ```scss
 * .mdc-foo {
 *   position: absolute;
 *   left: 0;
 *
 *   @include mdc-rtl {
 *     left: auto;
 *     right: 0;
 *   }
 *
 *   &__bar {
 *     margin-left: 4px;
 *     @include mdc-rtl(".mdc-foo") {
 *       margin-left: auto;
 *       margin-right: 4px;
 *     }
 *   }
 * }
 *
 * .mdc-foo--mod {
 *   padding-left: 4px;
 *
 *   @include mdc-rtl {
 *     padding-left: auto;
 *     padding-right: 4px;
 *   }
 * }
 * ```
 *
 * Note that this works by checking for [dir="rtl"] on an ancestor element. While this will work
 * in most cases, it will in some cases lead to false negatives, e.g.
 *
 * ```html
 * <html dir="rtl">
 *   <!-- ... -->
 *   <div dir="ltr">
 *     <div class="mdc-foo">Styled incorrectly as RTL!</div>
 *   </div>
 * </html>
 * ```
 *
 * In the future, selectors such as :dir (http://mdn.io/:dir) will help us mitigate this.
 */
/**
 * Takes a base box-model property - e.g. margin / border / padding - along with a default
 * direction and value, and emits rules which apply the value to the
 * "<base-property>-<default-direction>" property by default, but flips the direction
 * when within an RTL context.
 *
 * For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-box(margin, left, 8px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-left: 8px;
 *
 *   @include mdc-rtl {
 *     margin-right: 8px;
 *     margin-left: 0;
 *   }
 * }
 * ```
 * whereas:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-box(margin, right, 8px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-right: 8px;
 *
 *   @include mdc-rtl {
 *     margin-right: 0;
 *     margin-left: 8px;
 *   }
 * }
 * ```
 *
 * You can also pass a 4th optional $root-selector argument which will be forwarded to `mdc-rtl`,
 * e.g. `@include mdc-rtl-reflexive-box-property(margin, left, 8px, ".mdc-component")`.
 *
 * Note that this function will always zero out the original value in an RTL context. If you're
 * trying to flip the values, use mdc-rtl-reflexive-property().
 */
/**
 * Takes a base property and emits rules that assign <base-property>-left to <left-value> and
 * <base-property>-right to <right-value> in a LTR context, and vice versa in a RTL context.
 * For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-property(margin, auto, 12px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-left: auto;
 *   margin-right: 12px;
 *
 *   @include mdc-rtl {
 *     margin-left: 12px;
 *     margin-right: auto;
 *   }
 * }
 * ```
 *
 * A 4th optional $root-selector argument can be given, which will be passed to `mdc-rtl`.
 */
/**
 * Takes an argument specifying a horizontal position property (either "left" or "right") as well
 * as a value, and applies that value to the specified position in a LTR context, and flips it in a
 * RTL context. For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-position(left, 0);
 *   position: absolute;
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 *  .mdc-foo {
 *    position: absolute;
 *    left: 0;
 *    right: initial;
 *
 *    @include mdc-rtl {
 *      right: 0;
 *      left: initial;
 *    }
 *  }
 * ```
 * An optional third $root-selector argument may also be given, which is passed to `mdc-rtl`.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Applies the correct theme color style to the specified property.
 * $property is typically color or background-color, but can be any CSS property that accepts color values.
 * $style should be one of the map keys in $mdc-theme-property-values (_variables.scss).
 */
/**
 * Creates a rule to be used in MDC-Web components for dark theming, and applies the provided contents.
 * Should provide the $root-selector option if applied to anything other than the root selector.
 * When used with a modifier class, provide a second argument of `true` for the $compound parameter
 * to specify that this should be attached as a compound class.
 *
 * Usage example:
 *
 * ```scss
 * .mdc-foo {
 *   color: black;
 *
 *   @include mdc-theme-dark {
 *     color: white;
 *   }
 *
 *   &__bar {
 *     background: black;
 *
 *     @include mdc-theme-dark(".mdc-foo") {
 *       background: white;
 *     }
 *   }
 * }
 *
 * .mdc-foo--disabled {
 *   opacity: .38;
 *
 *   @include mdc-theme-dark(".mdc-foo", true) {
 *     opacity: .5;
 *   }
 * }
 * ```
 */
/* stylelint-enable scss/dollar-variable-pattern */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* TODO(sgomes): Figure out what to do about desktop font sizes. */
/* TODO(sgomes): Figure out what to do about i18n and i18n font sizes. */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* postcss-bem-linter: define snackbar */
.mdc-snackbar {
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  position: fixed;
  bottom: 0;
  left: 50%;
  -webkit-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  -webkit-box-pack: start;
  -ms-flex-pack: start;
  -webkit-justify-content: flex-start;
  justify-content: flex-start;
  padding-right: 24px;
  padding-left: 24px;
  -webkit-transform: translate(0, 100%);
  -ms-transform: translate(0, 100%);
  transform: translate(0, 100%);
  -webkit-transition: -webkit-transform 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: -webkit-transform 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: transform 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);
  -webkit-transition: -webkit-transform 0.25s 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: transform 0.25s 0ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);
  background-color: #323232;
  will-change: transform;
  pointer-events: none;
  /* stylelint-disable plugin/selector-bem-pattern */
  /* stylelint-enable plugin/selector-bem-pattern */
}

@media (max-width: 599px) {
  .mdc-snackbar {
    left: 0;
    width: -webkit-calc(100% - 48px);
    width: calc(100% - 48px);
  }
}

@media (min-width: 600px) {
  .mdc-snackbar {
    min-width: 288px;
    max-width: 568px;
    -webkit-transform: translate(-50%, 100%);
    -ms-transform: translate(-50%, 100%);
    transform: translate(-50%, 100%);
    border-radius: 2px;
  }
}

.mdc-snackbar--active {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  transform: translate(0, 0);
  pointer-events: auto;
  -webkit-transition: -webkit-transform 0.25s 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: -webkit-transform 0.25s 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: transform 0.25s 0ms cubic-bezier(0, 0, 0.2, 1);
  -webkit-transition: -webkit-transform 0.25s 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 0.25s 0ms cubic-bezier(0, 0, 0.2, 1);
  transition: transform 0.25s 0ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 0.25s 0ms cubic-bezier(0, 0, 0.2, 1);
}

@media (min-width: 600px) {
  .mdc-snackbar--active {
    -webkit-transform: translate(-50%, 0);
    -ms-transform: translate(-50%, 0);
    transform: translate(-50%, 0);
  }
}

.mdc-snackbar--action-on-bottom {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  -webkit-flex-direction: column;
  flex-direction: column;
}

.mdc-snackbar--action-on-bottom .mdc-snackbar__text {
  margin-right: inherit;
}

.mdc-snackbar--action-on-bottom .mdc-snackbar__action-wrapper {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  -webkit-flex-direction: column;
  flex-direction: column;
  -webkit-box-pack: start;
  -ms-flex-pack: start;
  -webkit-justify-content: flex-start;
  justify-content: flex-start;
  margin-top: -12px;
  margin-bottom: 8px;
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  margin-left: auto;
  margin-right: 0;
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
}

[dir="rtl"] .mdc-snackbar--action-on-bottom .mdc-snackbar__action-wrapper, .mdc-snackbar--action-on-bottom .mdc-snackbar__action-wrapper[dir="rtl"] {
  margin-left: 0;
  margin-right: auto;
}

.mdc-snackbar__text {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 0.875rem;
  font-weight: 400;
  letter-spacing: 0.04em;
  line-height: 1.25rem;
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  margin-left: 0;
  margin-right: auto;
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  height: 48px;
  -webkit-transition: opacity 0.3s 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 0.3s 0ms cubic-bezier(0.4, 0, 1, 1);
  color: white;
  opacity: 0;
}

[dir="rtl"] .mdc-snackbar .mdc-snackbar__text,
.mdc-snackbar[dir="rtl"] .mdc-snackbar__text {
  margin-left: auto;
  margin-right: 0;
}

.mdc-snackbar--multiline .mdc-snackbar__text {
  height: 80px;
}

.mdc-snackbar--multiline.mdc-snackbar--action-on-bottom .mdc-snackbar__text {
  margin: 0;
}

.mdc-snackbar__action-button {
  color: #ff4081;
  color: var(--mdc-theme-accent, #ff4081);
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-disable scss/dollar-variable-pattern */
  margin-left: 0;
  margin-right: -16px;
  /* stylelint-enable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  min-width: auto;
  height: inherit;
  -webkit-transition: opacity 0.3s 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 0.3s 0ms cubic-bezier(0.4, 0, 1, 1);
  opacity: 0;
  visibility: hidden;
}

[dir="rtl"] .mdc-snackbar .mdc-snackbar__action-button,
.mdc-snackbar[dir="rtl"] .mdc-snackbar__action-button {
  margin-left: -16px;
  margin-right: 0;
}

.mdc-snackbar__action-button::-moz-focus-inner {
  border: 0;
}

.mdc-snackbar__action-button:not([aria-hidden]) {
  visibility: inherit;
}

.mdc-snackbar--active .mdc-snackbar__text,
.mdc-snackbar--active .mdc-snackbar__action-button:not([aria-hidden]) {
  -webkit-transition: opacity 0.3s 0ms cubic-bezier(0.4, 0, 1, 1);
  transition: opacity 0.3s 0ms cubic-bezier(0.4, 0, 1, 1);
  opacity: 1;
}

/* postcss-bem-linter: end */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Creates a rule that will be applied when an MDC-Web component is within the context of an RTL layout.
 *
 * Usage Example:
 * ```scss
 * .mdc-foo {
 *   position: absolute;
 *   left: 0;
 *
 *   @include mdc-rtl {
 *     left: auto;
 *     right: 0;
 *   }
 *
 *   &__bar {
 *     margin-left: 4px;
 *     @include mdc-rtl(".mdc-foo") {
 *       margin-left: auto;
 *       margin-right: 4px;
 *     }
 *   }
 * }
 *
 * .mdc-foo--mod {
 *   padding-left: 4px;
 *
 *   @include mdc-rtl {
 *     padding-left: auto;
 *     padding-right: 4px;
 *   }
 * }
 * ```
 *
 * Note that this works by checking for [dir="rtl"] on an ancestor element. While this will work
 * in most cases, it will in some cases lead to false negatives, e.g.
 *
 * ```html
 * <html dir="rtl">
 *   <!-- ... -->
 *   <div dir="ltr">
 *     <div class="mdc-foo">Styled incorrectly as RTL!</div>
 *   </div>
 * </html>
 * ```
 *
 * In the future, selectors such as :dir (http://mdn.io/:dir) will help us mitigate this.
 */
/**
 * Takes a base box-model property - e.g. margin / border / padding - along with a default
 * direction and value, and emits rules which apply the value to the
 * "<base-property>-<default-direction>" property by default, but flips the direction
 * when within an RTL context.
 *
 * For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-box(margin, left, 8px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-left: 8px;
 *
 *   @include mdc-rtl {
 *     margin-right: 8px;
 *     margin-left: 0;
 *   }
 * }
 * ```
 * whereas:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-box(margin, right, 8px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-right: 8px;
 *
 *   @include mdc-rtl {
 *     margin-right: 0;
 *     margin-left: 8px;
 *   }
 * }
 * ```
 *
 * You can also pass a 4th optional $root-selector argument which will be forwarded to `mdc-rtl`,
 * e.g. `@include mdc-rtl-reflexive-box-property(margin, left, 8px, ".mdc-component")`.
 *
 * Note that this function will always zero out the original value in an RTL context. If you're
 * trying to flip the values, use mdc-rtl-reflexive-property().
 */
/**
 * Takes a base property and emits rules that assign <base-property>-left to <left-value> and
 * <base-property>-right to <right-value> in a LTR context, and vice versa in a RTL context.
 * For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-property(margin, auto, 12px);
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 * .mdc-foo {
 *   margin-left: auto;
 *   margin-right: 12px;
 *
 *   @include mdc-rtl {
 *     margin-left: 12px;
 *     margin-right: auto;
 *   }
 * }
 * ```
 *
 * A 4th optional $root-selector argument can be given, which will be passed to `mdc-rtl`.
 */
/**
 * Takes an argument specifying a horizontal position property (either "left" or "right") as well
 * as a value, and applies that value to the specified position in a LTR context, and flips it in a
 * RTL context. For example:
 *
 * ```scss
 * .mdc-foo {
 *   @include mdc-rtl-reflexive-position(left, 0);
 *   position: absolute;
 * }
 * ```
 * is equivalent to:
 *
 * ```scss
 *  .mdc-foo {
 *    position: absolute;
 *    left: 0;
 *    right: initial;
 *
 *    @include mdc-rtl {
 *      right: 0;
 *      left: initial;
 *    }
 *  }
 * ```
 * An optional third $root-selector argument may also be given, which is passed to `mdc-rtl`.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Applies the correct theme color style to the specified property.
 * $property is typically color or background-color, but can be any CSS property that accepts color values.
 * $style should be one of the map keys in $mdc-theme-property-values (_variables.scss).
 */
/**
 * Creates a rule to be used in MDC-Web components for dark theming, and applies the provided contents.
 * Should provide the $root-selector option if applied to anything other than the root selector.
 * When used with a modifier class, provide a second argument of `true` for the $compound parameter
 * to specify that this should be attached as a compound class.
 *
 * Usage example:
 *
 * ```scss
 * .mdc-foo {
 *   color: black;
 *
 *   @include mdc-theme-dark {
 *     color: white;
 *   }
 *
 *   &__bar {
 *     background: black;
 *
 *     @include mdc-theme-dark(".mdc-foo") {
 *       background: white;
 *     }
 *   }
 * }
 *
 * .mdc-foo--disabled {
 *   opacity: .38;
 *
 *   @include mdc-theme-dark(".mdc-foo", true) {
 *     opacity: .5;
 *   }
 * }
 * ```
 */
/* stylelint-enable scss/dollar-variable-pattern */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* TODO(sgomes): Figure out what to do about desktop font sizes. */
/* TODO(sgomes): Figure out what to do about i18n and i18n font sizes. */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* TODO(sgomes): Figure out what to do about desktop font sizes. */
/* TODO(sgomes): Figure out what to do about i18n and i18n font sizes. */
/* postcss-bem-linter: define textfield */
.mdc-textfield {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 1rem;
  letter-spacing: 0.04em;
  display: inline-block;
  margin-bottom: 8px;
  will-change: opacity, transform, color;
}

.mdc-textfield__input {
  color: rgba(0, 0, 0, 0.87);
  color: var(--mdc-theme-text-primary-on-light, rgba(0, 0, 0, 0.87));
  padding: 0 0 8px;
  border: none;
  background: none;
  font-size: inherit;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}

.mdc-textfield__input::-webkit-input-placeholder {
  color: rgba(0, 0, 0, 0.38);
  color: var(--mdc-theme-text-hint-on-light, rgba(0, 0, 0, 0.38));
  -webkit-transition: color 180ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: color 180ms cubic-bezier(0.4, 0, 0.2, 1);
  opacity: 1;
}

.mdc-textfield__input::-moz-placeholder {
  color: rgba(0, 0, 0, 0.38);
  color: var(--mdc-theme-text-hint-on-light, rgba(0, 0, 0, 0.38));
  -webkit-transition: color 180ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: color 180ms cubic-bezier(0.4, 0, 0.2, 1);
  opacity: 1;
}

.mdc-textfield__input:-ms-input-placeholder {
  color: rgba(0, 0, 0, 0.38);
  color: var(--mdc-theme-text-hint-on-light, rgba(0, 0, 0, 0.38));
  -webkit-transition: color 180ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: color 180ms cubic-bezier(0.4, 0, 0.2, 1);
  opacity: 1;
}

.mdc-textfield__input::placeholder {
  color: rgba(0, 0, 0, 0.38);
  color: var(--mdc-theme-text-hint-on-light, rgba(0, 0, 0, 0.38));
  -webkit-transition: color 180ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: color 180ms cubic-bezier(0.4, 0, 0.2, 1);
  opacity: 1;
}

.mdc-textfield__input:focus {
  outline: none;
}

.mdc-textfield__input:focus::-webkit-input-placeholder {
  color: rgba(0, 0, 0, 0.54);
  color: var(--mdc-theme-text-secondary-on-light, rgba(0, 0, 0, 0.54));
}

.mdc-textfield__input:focus::-moz-placeholder {
  color: rgba(0, 0, 0, 0.54);
  color: var(--mdc-theme-text-secondary-on-light, rgba(0, 0, 0, 0.54));
}

.mdc-textfield__input:focus:-ms-input-placeholder {
  color: rgba(0, 0, 0, 0.54);
  color: var(--mdc-theme-text-secondary-on-light, rgba(0, 0, 0, 0.54));
}

.mdc-textfield__input:focus::placeholder {
  color: rgba(0, 0, 0, 0.54);
  color: var(--mdc-theme-text-secondary-on-light, rgba(0, 0, 0, 0.54));
}

.mdc-textfield__input:invalid {
  -webkit-box-shadow: none;
  box-shadow: none;
}

.mdc-textfield__input--theme-dark,
.mdc-theme--dark .mdc-textfield__input {
  color: white;
}

.mdc-textfield__input--theme-dark::-webkit-input-placeholder,
.mdc-theme--dark .mdc-textfield__input::-webkit-input-placeholder {
  color: rgba(255, 255, 255, 0.5);
  color: var(--mdc-theme-text-hint-on-dark, rgba(255, 255, 255, 0.5));
}

.mdc-textfield__input--theme-dark::-moz-placeholder,
.mdc-theme--dark .mdc-textfield__input::-moz-placeholder {
  color: rgba(255, 255, 255, 0.5);
  color: var(--mdc-theme-text-hint-on-dark, rgba(255, 255, 255, 0.5));
}

.mdc-textfield__input--theme-dark:-ms-input-placeholder,
.mdc-theme--dark .mdc-textfield__input:-ms-input-placeholder {
  color: rgba(255, 255, 255, 0.5);
  color: var(--mdc-theme-text-hint-on-dark, rgba(255, 255, 255, 0.5));
}

.mdc-textfield__input--theme-dark::placeholder,
.mdc-theme--dark .mdc-textfield__input::placeholder {
  color: rgba(255, 255, 255, 0.5);
  color: var(--mdc-theme-text-hint-on-dark, rgba(255, 255, 255, 0.5));
}

.mdc-textfield__input--theme-dark:focus::-webkit-input-placeholder,
.mdc-theme--dark .mdc-textfield__input:focus::-webkit-input-placeholder {
  color: rgba(255, 255, 255, 0.7);
  color: var(--mdc-theme-text-secondary-on-dark, rgba(255, 255, 255, 0.7));
}

.mdc-textfield__input--theme-dark:focus::-moz-placeholder,
.mdc-theme--dark .mdc-textfield__input:focus::-moz-placeholder {
  color: rgba(255, 255, 255, 0.7);
  color: var(--mdc-theme-text-secondary-on-dark, rgba(255, 255, 255, 0.7));
}

.mdc-textfield__input--theme-dark:focus:-ms-input-placeholder,
.mdc-theme--dark .mdc-textfield__input:focus:-ms-input-placeholder {
  color: rgba(255, 255, 255, 0.7);
  color: var(--mdc-theme-text-secondary-on-dark, rgba(255, 255, 255, 0.7));
}

.mdc-textfield__input--theme-dark:focus::placeholder,
.mdc-theme--dark .mdc-textfield__input:focus::placeholder {
  color: rgba(255, 255, 255, 0.7);
  color: var(--mdc-theme-text-secondary-on-dark, rgba(255, 255, 255, 0.7));
}

.mdc-textfield__label {
  color: rgba(0, 0, 0, 0.38);
  color: var(--mdc-theme-text-hint-on-light, rgba(0, 0, 0, 0.38));
  position: absolute;
  bottom: 8px;
  left: 0;
  -webkit-transform-origin: left top;
  -ms-transform-origin: left top;
  transform-origin: left top;
  -webkit-transition: color 180ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: color 180ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: transform 180ms cubic-bezier(0.4, 0, 0.2, 1), color 180ms cubic-bezier(0.4, 0, 0.2, 1);
  -webkit-transition: -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1), color 180ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: transform 180ms cubic-bezier(0.4, 0, 0.2, 1), color 180ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
  cursor: text;
  /* stylelint-disable plugin/selector-bem-pattern */
  /* stylelint-enable plugin/selector-bem-pattern */
}

[dir="rtl"] .mdc-textfield .mdc-textfield__label,
.mdc-textfield[dir="rtl"] .mdc-textfield__label {
  right: 0;
  left: auto;
  -webkit-transform-origin: right top;
  -ms-transform-origin: right top;
  transform-origin: right top;
}

.mdc-textfield--theme-dark .mdc-textfield__label,
.mdc-theme--dark .mdc-textfield__label {
  color: rgba(255, 255, 255, 0.5);
  color: var(--mdc-theme-text-hint-on-dark, rgba(255, 255, 255, 0.5));
}

.mdc-textfield__label--float-above {
  -webkit-transform: translateY(-100%) scale(0.75, 0.75);
  -ms-transform: translateY(-100%) scale(0.75, 0.75);
  transform: translateY(-100%) scale(0.75, 0.75);
  cursor: auto;
}

.mdc-textfield--upgraded:not(.mdc-textfield--fullwidth) {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: -webkit-inline-flex;
  display: inline-flex;
  position: relative;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  -webkit-box-align: end;
  -ms-flex-align: end;
  -webkit-align-items: flex-end;
  align-items: flex-end;
  margin-top: 16px;
}

.mdc-textfield--upgraded:not(.mdc-textfield--fullwidth):not(.mdc-textfield--multiline) {
  height: 48px;
}

.mdc-textfield--upgraded:not(.mdc-textfield--fullwidth):not(.mdc-textfield--multiline)::after {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 1px;
  -webkit-transform: translateY(50%) scaleY(1);
  -ms-transform: translateY(50%) scaleY(1);
  transform: translateY(50%) scaleY(1);
  -webkit-transform-origin: center bottom;
  -ms-transform-origin: center bottom;
  transform-origin: center bottom;
  -webkit-transition: background-color 180ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: background-color 180ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: background-color 180ms cubic-bezier(0.4, 0, 0.2, 1), transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
  -webkit-transition: background-color 180ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: background-color 180ms cubic-bezier(0.4, 0, 0.2, 1), transform 180ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
  background-color: rgba(0, 0, 0, 0.12);
  content: "";
}

.mdc-textfield--theme-dark .mdc-textfield--upgraded:not(.mdc-textfield--fullwidth):not(.mdc-textfield--multiline)::after,
.mdc-theme--dark .mdc-textfield--upgraded:not(.mdc-textfield--fullwidth):not(.mdc-textfield--multiline)::after {
  background-color: rgba(255, 255, 255, 0.12);
}

.mdc-textfield--upgraded:not(.mdc-textfield--fullwidth) .mdc-textfield__label {
  pointer-events: none;
}

.mdc-textfield--focused.mdc-textfield--upgraded:not(.mdc-textfield--fullwidth):not(.mdc-textfield--multiline)::after {
  background-color: #3f51b5;
  background-color: var(--mdc-theme-primary, #3f51b5);
  -webkit-transform: translateY(100%) scaleY(2);
  -ms-transform: translateY(100%) scaleY(2);
  transform: translateY(100%) scaleY(2);
  -webkit-transition: -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
  -webkit-transition: -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: transform 180ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
}

.mdc-textfield--theme-dark.mdc-textfield--focused.mdc-textfield--upgraded:not(.mdc-textfield--fullwidth):not(.mdc-textfield--multiline)::after,
.mdc-theme--dark .mdc-textfield--focused.mdc-textfield--upgraded:not(.mdc-textfield--fullwidth):not(.mdc-textfield--multiline)::after {
  background-color: #3f51b5;
  background-color: var(--mdc-theme-primary, #3f51b5);
  -webkit-transform: translateY(100%) scaleY(2);
  -ms-transform: translateY(100%) scaleY(2);
  transform: translateY(100%) scaleY(2);
  -webkit-transition: -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
  -webkit-transition: -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: transform 180ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
}

.mdc-textfield--focused .mdc-textfield__label {
  color: #3f51b5;
  color: var(--mdc-theme-primary, #3f51b5);
}

.mdc-textfield--theme-dark .mdc-textfield--focused .mdc-textfield__label,
.mdc-theme--dark .mdc-textfield--focused .mdc-textfield__label {
  color: #3f51b5;
  color: var(--mdc-theme-primary, #3f51b5);
}

.mdc-textfield--dense {
  margin-top: 12px;
  margin-bottom: 4px;
  font-size: .813rem;
}

.mdc-textfield--dense .mdc-textfield__label--float-above {
  -webkit-transform: translateY(-webkit-calc(-100% - 2px)) scale(0.923, 0.923);
  -ms-transform: translateY(calc(-100% - 2px)) scale(0.923, 0.923);
  transform: translateY(calc(-100% - 2px)) scale(0.923, 0.923);
}

.mdc-textfield--invalid:not(.mdc-textfield--focused)::after {
  background-color: #d50000;
}

.mdc-textfield--invalid:not(.mdc-textfield--focused) .mdc-textfield__label {
  color: #d50000;
}

.mdc-textfield--theme-dark.mdc-textfield--invalid:not(.mdc-textfield--focused)::after,
.mdc-theme--dark .mdc-textfield--invalid:not(.mdc-textfield--focused)::after {
  background-color: #ff6e6e;
}

.mdc-textfield--theme-dark.mdc-textfield--invalid:not(.mdc-textfield--focused) .mdc-textfield__label,
.mdc-theme--dark .mdc-textfield--invalid:not(.mdc-textfield--focused) .mdc-textfield__label {
  color: #ff6e6e;
}

.mdc-textfield--disabled {
  border-bottom: 1px dotted rgba(35, 31, 32, 0.26);
  /* stylelint-disable plugin/selector-bem-pattern */
  /* stylelint-enable plugin/selector-bem-pattern */
}

.mdc-textfield--disabled::after {
  display: none;
}

.mdc-textfield--disabled .mdc-textfield__input {
  padding-bottom: 7px;
}

.mdc-textfield--theme-dark.mdc-textfield--disabled,
.mdc-theme--dark .mdc-textfield--disabled {
  border-bottom: 1px dotted rgba(255, 255, 255, 0.3);
}

.mdc-textfield--disabled .mdc-textfield__input,
.mdc-textfield--disabled .mdc-textfield__label,
.mdc-textfield--disabled + .mdc-textfield-helptext {
  color: rgba(0, 0, 0, 0.38);
  color: var(--mdc-theme-text-disabled-on-light, rgba(0, 0, 0, 0.38));
}

.mdc-textfield--theme-dark .mdc-textfield--disabled .mdc-textfield__input,
.mdc-theme--dark .mdc-textfield--disabled .mdc-textfield__input, .mdc-textfield--theme-dark .mdc-textfield--disabled .mdc-textfield__label,
.mdc-theme--dark .mdc-textfield--disabled .mdc-textfield__label {
  color: rgba(255, 255, 255, 0.5);
  color: var(--mdc-theme-text-disabled-on-dark, rgba(255, 255, 255, 0.5));
}

.mdc-textfield--theme-dark.mdc-textfield--disabled,
.mdc-theme--dark .mdc-textfield--disabled {
  /* stylelint-disable plugin/selector-bem-pattern */
  /* stylelint-enable plugin/selector-bem-pattern */
}

.mdc-textfield--theme-dark.mdc-textfield--disabled + .mdc-textfield-helptext,
.mdc-theme--dark .mdc-textfield--disabled + .mdc-textfield-helptext {
  colr: rgba(255, 255, 255, 0.5);
  colr: var(--mdc-theme-text-disabled-on-dark, rgba(255, 255, 255, 0.5));
}

.mdc-textfield--disabled .mdc-textfield__label {
  bottom: 7px;
  cursor: default;
}

.mdc-textfield__input:required + .mdc-textfield__label::after {
  margin-left: 1px;
  content: "*";
}

.mdc-textfield--focused .mdc-textfield__input:required + .mdc-textfield__label::after {
  color: #d50000;
}

.mdc-textfield--focused .mdc-textfield--theme-dark .mdc-textfield__input:required + .mdc-textfield__label::after, .mdc-textfield--focused .mdc-theme--dark .mdc-textfield__input:required + .mdc-textfield__label::after {
  color: #ff6e6e;
}

.mdc-textfield--multiline {
  /* stylelint-disable scss/dollar-variable-pattern */
  /* stylelint-enable scss/dollar-variable-pattern */
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  height: initial;
  -webkit-transition: none;
  transition: none;
  /* stylelint-disable plugin/selector-bem-pattern */
  /* stylelint-enable plugin/selector-bem-pattern */
}

.mdc-textfield--multiline::after {
  content: initial;
}

.mdc-textfield--multiline .mdc-textfield__input {
  padding: 4px;
  -webkit-transition: border-color 180ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: border-color 180ms cubic-bezier(0.4, 0, 0.2, 1);
  border: 1px solid rgba(0, 0, 0, 0.12);
  border-radius: 2px;
}

.mdc-textfield--theme-dark .mdc-textfield--multiline .mdc-textfield__input,
.mdc-theme--dark .mdc-textfield--multiline .mdc-textfield__input {
  border-color: rgba(255, 255, 255, 0.12);
}

.mdc-textfield--multiline .mdc-textfield__input:focus {
  border-color: #3f51b5;
  border-color: var(--mdc-theme-primary, #3f51b5);
}

.mdc-textfield--multiline .mdc-textfield__input:invalid:not(:focus) {
  border-color: #d50000;
}

.mdc-textfield--theme-dark .mdc-textfield--multiline .mdc-textfield__input:invalid:not(:focus),
.mdc-theme--dark .mdc-textfield--multiline .mdc-textfield__input:invalid:not(:focus) {
  border-color: #ff6e6e;
}

.mdc-textfield--multiline .mdc-textfield__label {
  top: 6px;
  bottom: initial;
  left: 4px;
}

[dir="rtl"] .mdc-textfield--multiline .mdc-textfield--multiline .mdc-textfield__label,
.mdc-textfield--multiline[dir="rtl"] .mdc-textfield--multiline .mdc-textfield__label {
  right: 4px;
  left: auto;
}

.mdc-textfield--multiline .mdc-textfield__label--float-above {
  -webkit-transform: translateY(-webkit-calc(-100% - 6px)) scale(0.923, 0.923);
  -ms-transform: translateY(calc(-100% - 6px)) scale(0.923, 0.923);
  transform: translateY(calc(-100% - 6px)) scale(0.923, 0.923);
}

.mdc-textfield--multiline.mdc-textfield--disabled {
  border-bottom: none;
}

.mdc-textfield--multiline.mdc-textfield--disabled .mdc-textfield__input {
  border: 1px dotted rgba(35, 31, 32, 0.26);
}

.mdc-textfield--theme-dark .mdc-textfield--multiline.mdc-textfield--disabled .mdc-textfield__input,
.mdc-theme--dark .mdc-textfield--multiline.mdc-textfield--disabled .mdc-textfield__input {
  border-color: rgba(255, 255, 255, 0.3);
}

.mdc-textfield--fullwidth {
  display: block;
  width: 100%;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  margin: 0;
  border: none;
  border-bottom: 1px solid rgba(0, 0, 0, 0.12);
  outline: none;
  /* stylelint-disable plugin/selector-bem-pattern */
  /* stylelint-enable plugin/selector-bem-pattern */
}

.mdc-textfield--fullwidth:not(.mdc-textfield--multiline) {
  height: 56px;
}

.mdc-textfield--fullwidth.mdc-textfield--multiline {
  padding: 20px 0 0;
}

.mdc-textfield--fullwidth.mdc-textfield--dense:not(.mdc-textfield--multiline) {
  height: 48px;
}

.mdc-textfield--fullwidth.mdc-textfield--dense.mdc-textfield--multiline {
  padding: 16px 0 0;
}

.mdc-textfield--fullwidth.mdc-textfield--disabled, .mdc-textfield--fullwidth.mdc-textfield--disabled.mdc-textfield--multiline {
  border-bottom: 1px dotted rgba(0, 0, 0, 0.12);
}

.mdc-textfield--fullwidth--theme-dark,
.mdc-theme--dark .mdc-textfield--fullwidth {
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

.mdc-textfield--fullwidth--theme-dark.mdc-textfield--disabled, .mdc-textfield--fullwidth--theme-dark.mdc-textfield--disabled.mdc-textfield--multiline,
.mdc-theme--dark .mdc-textfield--fullwidth.mdc-textfield--disabled,
.mdc-theme--dark .mdc-textfield--fullwidth.mdc-textfield--disabled.mdc-textfield--multiline {
  border-bottom: 1px dotted rgba(255, 255, 255, 0.12);
}

.mdc-textfield--fullwidth .mdc-textfield__input {
  width: 100%;
  height: 100%;
  padding: 0;
  resize: none;
  border: none !important;
}

.mdc-textfield:not(.mdc-textfield--upgraded):not(.mdc-textfield--multiline) .mdc-textfield__input {
  -webkit-transition: border-bottom-color 180ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: border-bottom-color 180ms cubic-bezier(0.4, 0, 0.2, 1);
  border-bottom: 1px solid rgba(0, 0, 0, 0.12);
}

.mdc-textfield:not(.mdc-textfield--upgraded) .mdc-textfield__input:focus {
  border-color: #3f51b5;
  border-color: var(--mdc-theme-primary, #3f51b5);
}

.mdc-textfield:not(.mdc-textfield--upgraded) .mdc-textfield__input:disabled {
  color: rgba(0, 0, 0, 0.38);
  color: var(--mdc-theme-text-disabled-on-light, rgba(0, 0, 0, 0.38));
  border-style: dotted;
  border-color: rgba(35, 31, 32, 0.26);
}

.mdc-textfield:not(.mdc-textfield--upgraded) .mdc-textfield__input:invalid:not(:focus) {
  border-color: #d50000;
}

.mdc-textfield--theme-dark:not(.mdc-textfield--upgraded) .mdc-textfield__input:not(:focus),
.mdc-theme--dark .mdc-textfield:not(.mdc-textfield--upgraded) .mdc-textfield__input:not(:focus) {
  border-color: rgba(255, 255, 255, 0.12);
}

.mdc-textfield--theme-dark:not(.mdc-textfield--upgraded) .mdc-textfield__input:disabled,
.mdc-theme--dark .mdc-textfield:not(.mdc-textfield--upgraded) .mdc-textfield__input:disabled {
  color: rgba(255, 255, 255, 0.5);
  color: var(--mdc-theme-text-disabled-on-dark, rgba(255, 255, 255, 0.5));
  border-color: rgba(255, 255, 255, 0.3);
}

.mdc-textfield--theme-dark:not(.mdc-textfield--upgraded) .mdc-textfield__input:invalid:not(:focus),
.mdc-theme--dark .mdc-textfield:not(.mdc-textfield--upgraded) .mdc-textfield__input:invalid:not(:focus) {
  border-color: #ff6e6e;
}

/* postcss-bem-linter: end */
/* postcss-bem-linter: define textfield-helptext */
.mdc-textfield-helptext {
  color: rgba(0, 0, 0, 0.38);
  color: var(--mdc-theme-text-hint-on-light, rgba(0, 0, 0, 0.38));
  margin: 0;
  -webkit-transition: opacity 180ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: opacity 180ms cubic-bezier(0.4, 0, 0.2, 1);
  font-size: .75rem;
  opacity: 0;
  will-change: opacity;
  /* stylelint-disable plugin/selector-bem-pattern */
  /* stylelint-enable plugin/selector-bem-pattern */
}

.mdc-textfield-helptext--theme-dark,
.mdc-theme--dark .mdc-textfield-helptext {
  color: rgba(255, 255, 255, 0.5);
  color: var(--mdc-theme-text-hint-on-dark, rgba(255, 255, 255, 0.5));
}

.mdc-textfield + .mdc-textfield-helptext {
  margin-bottom: 8px;
}

.mdc-textfield--dense + .mdc-textfield-helptext {
  margin-bottom: 4px;
}

.mdc-textfield--focused + .mdc-textfield-helptext:not(.mdc-textfield-helptext--validation-msg) {
  opacity: 1;
}

.mdc-textfield-helptext--persistent {
  -webkit-transition: none;
  transition: none;
  opacity: 1;
  will-change: initial;
}

/* postcss-bem-linter: end */
.mdc-textfield--invalid + .mdc-textfield-helptext--validation-msg {
  color: #d50000;
  opacity: 1;
}

.mdc-textfield--theme-dark.mdc-textfield--invalid + .mdc-textfield-helptext--validation-msg,
.mdc-theme--dark .mdc-textfield--invalid + .mdc-textfield-helptext--validation-msg {
  color: #ff6e6e;
}

/* stylelint-disable selector-no-type */
.mdc-form-field > .mdc-textfield + label {
  -ms-flex-item-align: start;
  -webkit-align-self: flex-start;
  align-self: flex-start;
}

/* stylelint-enable selector-no-type */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance() with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Precomputed linear color channel values, for use in contrast calculations.
  See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests

  Algorithm, for c in 0 to 255:
  f(c) {
    c = c / 255;
    return c < 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  }

  This lookup table is needed since there is no `pow` in SASS.
*/
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Calculate the luminance for a color.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Calculate the contrast ratio between two colors.
 * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
 */
/**
 * Determine whether to use dark or light text on top of given color.
 * Returns "dark" for dark text and "light" for light text.
 */
/* stylelint-enable scss/dollar-variable-pattern */
/*
  Main theme colors.
  If you're a user customizing your color scheme in SASS, these are probably the only variables you need to change.
*/
/* Indigo 500 */
/* Pink A200 */
/* White */
/* Which set of text colors to use for each main theme color (light or dark) */
/* Text colors according to light vs dark and text type */
/* Primary text colors for each of the theme colors */
/* All variables are local, so disable pattern checking. */
/* stylelint-disable scss/dollar-variable-pattern */
/**
 * Applies the correct theme color style to the specified property.
 * $property is typically color or background-color, but can be any CSS property that accepts color values.
 * $style should be one of the map keys in $mdc-theme-property-values (_variables.scss).
 */
/**
 * Creates a rule to be used in MDC-Web components for dark theming, and applies the provided contents.
 * Should provide the $root-selector option if applied to anything other than the root selector.
 * When used with a modifier class, provide a second argument of `true` for the $compound parameter
 * to specify that this should be attached as a compound class.
 *
 * Usage example:
 *
 * ```scss
 * .mdc-foo {
 *   color: black;
 *
 *   @include mdc-theme-dark {
 *     color: white;
 *   }
 *
 *   &__bar {
 *     background: black;
 *
 *     @include mdc-theme-dark(".mdc-foo") {
 *       background: white;
 *     }
 *   }
 * }
 *
 * .mdc-foo--disabled {
 *   opacity: .38;
 *
 *   @include mdc-theme-dark(".mdc-foo", true) {
 *     opacity: .5;
 *   }
 * }
 * ```
 */
/* stylelint-enable scss/dollar-variable-pattern */
:root {
  --mdc-theme-primary: #3f51b5;
  --mdc-theme-accent: #ff4081;
  --mdc-theme-background: #fff;
  --mdc-theme-text-primary-on-primary: white;
  --mdc-theme-text-secondary-on-primary: rgba(255, 255, 255, 0.7);
  --mdc-theme-text-hint-on-primary: rgba(255, 255, 255, 0.5);
  --mdc-theme-text-disabled-on-primary: rgba(255, 255, 255, 0.5);
  --mdc-theme-text-icon-on-primary: rgba(255, 255, 255, 0.5);
  --mdc-theme-text-primary-on-accent: white;
  --mdc-theme-text-secondary-on-accent: rgba(255, 255, 255, 0.7);
  --mdc-theme-text-hint-on-accent: rgba(255, 255, 255, 0.5);
  --mdc-theme-text-disabled-on-accent: rgba(255, 255, 255, 0.5);
  --mdc-theme-text-icon-on-accent: rgba(255, 255, 255, 0.5);
  --mdc-theme-text-primary-on-background: rgba(0, 0, 0, 0.87);
  --mdc-theme-text-secondary-on-background: rgba(0, 0, 0, 0.54);
  --mdc-theme-text-hint-on-background: rgba(0, 0, 0, 0.38);
  --mdc-theme-text-disabled-on-background: rgba(0, 0, 0, 0.38);
  --mdc-theme-text-icon-on-background: rgba(0, 0, 0, 0.38);
  --mdc-theme-text-primary-on-light: rgba(0, 0, 0, 0.87);
  --mdc-theme-text-secondary-on-light: rgba(0, 0, 0, 0.54);
  --mdc-theme-text-hint-on-light: rgba(0, 0, 0, 0.38);
  --mdc-theme-text-disabled-on-light: rgba(0, 0, 0, 0.38);
  --mdc-theme-text-icon-on-light: rgba(0, 0, 0, 0.38);
  --mdc-theme-text-primary-on-dark: white;
  --mdc-theme-text-secondary-on-dark: rgba(255, 255, 255, 0.7);
  --mdc-theme-text-hint-on-dark: rgba(255, 255, 255, 0.5);
  --mdc-theme-text-disabled-on-dark: rgba(255, 255, 255, 0.5);
  --mdc-theme-text-icon-on-dark: rgba(255, 255, 255, 0.5);
}

/* Special case, so that .mdc-theme--background changes background color, not text color. */
.mdc-theme--background {
  background-color: #fff;
  background-color: var(--mdc-theme-background, #fff);
}

.mdc-theme--primary {
  color: #3f51b5 !important;
  color: var(--mdc-theme-primary, #3f51b5) !important;
}

.mdc-theme--accent {
  color: #ff4081 !important;
  color: var(--mdc-theme-accent, #ff4081) !important;
}

.mdc-theme--text-primary-on-primary {
  color: white !important;
  color: var(--mdc-theme-text-primary-on-primary, white) !important;
}

.mdc-theme--text-secondary-on-primary {
  color: rgba(255, 255, 255, 0.7) !important;
  color: var(--mdc-theme-text-secondary-on-primary, rgba(255, 255, 255, 0.7)) !important;
}

.mdc-theme--text-hint-on-primary {
  color: rgba(255, 255, 255, 0.5) !important;
  color: var(--mdc-theme-text-hint-on-primary, rgba(255, 255, 255, 0.5)) !important;
}

.mdc-theme--text-disabled-on-primary {
  color: rgba(255, 255, 255, 0.5) !important;
  color: var(--mdc-theme-text-disabled-on-primary, rgba(255, 255, 255, 0.5)) !important;
}

.mdc-theme--text-icon-on-primary {
  color: rgba(255, 255, 255, 0.5) !important;
  color: var(--mdc-theme-text-icon-on-primary, rgba(255, 255, 255, 0.5)) !important;
}

.mdc-theme--text-primary-on-accent {
  color: white !important;
  color: var(--mdc-theme-text-primary-on-accent, white) !important;
}

.mdc-theme--text-secondary-on-accent {
  color: rgba(255, 255, 255, 0.7) !important;
  color: var(--mdc-theme-text-secondary-on-accent, rgba(255, 255, 255, 0.7)) !important;
}

.mdc-theme--text-hint-on-accent {
  color: rgba(255, 255, 255, 0.5) !important;
  color: var(--mdc-theme-text-hint-on-accent, rgba(255, 255, 255, 0.5)) !important;
}

.mdc-theme--text-disabled-on-accent {
  color: rgba(255, 255, 255, 0.5) !important;
  color: var(--mdc-theme-text-disabled-on-accent, rgba(255, 255, 255, 0.5)) !important;
}

.mdc-theme--text-icon-on-accent {
  color: rgba(255, 255, 255, 0.5) !important;
  color: var(--mdc-theme-text-icon-on-accent, rgba(255, 255, 255, 0.5)) !important;
}

.mdc-theme--text-primary-on-background {
  color: rgba(0, 0, 0, 0.87) !important;
  color: var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87)) !important;
}

.mdc-theme--text-secondary-on-background {
  color: rgba(0, 0, 0, 0.54) !important;
  color: var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, 0.54)) !important;
}

.mdc-theme--text-hint-on-background {
  color: rgba(0, 0, 0, 0.38) !important;
  color: var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, 0.38)) !important;
}

.mdc-theme--text-disabled-on-background {
  color: rgba(0, 0, 0, 0.38) !important;
  color: var(--mdc-theme-text-disabled-on-background, rgba(0, 0, 0, 0.38)) !important;
}

.mdc-theme--text-icon-on-background {
  color: rgba(0, 0, 0, 0.38) !important;
  color: var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, 0.38)) !important;
}

.mdc-theme--text-primary-on-light {
  color: rgba(0, 0, 0, 0.87) !important;
  color: var(--mdc-theme-text-primary-on-light, rgba(0, 0, 0, 0.87)) !important;
}

.mdc-theme--text-secondary-on-light {
  color: rgba(0, 0, 0, 0.54) !important;
  color: var(--mdc-theme-text-secondary-on-light, rgba(0, 0, 0, 0.54)) !important;
}

.mdc-theme--text-hint-on-light {
  color: rgba(0, 0, 0, 0.38) !important;
  color: var(--mdc-theme-text-hint-on-light, rgba(0, 0, 0, 0.38)) !important;
}

.mdc-theme--text-disabled-on-light {
  color: rgba(0, 0, 0, 0.38) !important;
  color: var(--mdc-theme-text-disabled-on-light, rgba(0, 0, 0, 0.38)) !important;
}

.mdc-theme--text-icon-on-light {
  color: rgba(0, 0, 0, 0.38) !important;
  color: var(--mdc-theme-text-icon-on-light, rgba(0, 0, 0, 0.38)) !important;
}

.mdc-theme--text-primary-on-dark {
  color: white !important;
  color: var(--mdc-theme-text-primary-on-dark, white) !important;
}

.mdc-theme--text-secondary-on-dark {
  color: rgba(255, 255, 255, 0.7) !important;
  color: var(--mdc-theme-text-secondary-on-dark, rgba(255, 255, 255, 0.7)) !important;
}

.mdc-theme--text-hint-on-dark {
  color: rgba(255, 255, 255, 0.5) !important;
  color: var(--mdc-theme-text-hint-on-dark, rgba(255, 255, 255, 0.5)) !important;
}

.mdc-theme--text-disabled-on-dark {
  color: rgba(255, 255, 255, 0.5) !important;
  color: var(--mdc-theme-text-disabled-on-dark, rgba(255, 255, 255, 0.5)) !important;
}

.mdc-theme--text-icon-on-dark {
  color: rgba(255, 255, 255, 0.5) !important;
  color: var(--mdc-theme-text-icon-on-dark, rgba(255, 255, 255, 0.5)) !important;
}

/* CSS rules for using primary and accent as background colors. */
.mdc-theme--primary-bg {
  background-color: #3f51b5 !important;
  background-color: var(--mdc-theme-primary, #3f51b5) !important;
}

.mdc-theme--accent-bg {
  background-color: #ff4081 !important;
  background-color: var(--mdc-theme-accent, #ff4081) !important;
}

/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* TODO(sgomes): Figure out what to do about desktop font sizes. */
/* TODO(sgomes): Figure out what to do about i18n and i18n font sizes. */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* TODO(sgomes): Figure out what to do about desktop font sizes. */
/* TODO(sgomes): Figure out what to do about i18n and i18n font sizes. */
.mdc-typography {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
}

.mdc-typography--display4 {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 7rem;
  font-weight: 300;
  letter-spacing: -0.04em;
  line-height: 7rem;
}

.mdc-typography--adjust-margin.mdc-typography--display4 {
  margin: -1rem 0 3.5rem -0.085em;
}

.mdc-typography--display3 {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 3.5rem;
  font-weight: 400;
  letter-spacing: -0.02em;
  line-height: 3.5rem;
}

.mdc-typography--adjust-margin.mdc-typography--display3 {
  margin: -8px 0 64px -0.07em;
}

.mdc-typography--display2 {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 2.813rem;
  font-weight: 400;
  letter-spacing: normal;
  line-height: 3rem;
}

.mdc-typography--adjust-margin.mdc-typography--display2 {
  margin: -0.5rem 0 4rem -0.07em;
}

.mdc-typography--display1 {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 2.125rem;
  font-weight: 400;
  letter-spacing: normal;
  line-height: 2.5rem;
}

.mdc-typography--adjust-margin.mdc-typography--display1 {
  margin: -0.5rem 0 4rem -0.07em;
}

.mdc-typography--headline {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 1.5rem;
  font-weight: 400;
  letter-spacing: normal;
  line-height: 2rem;
}

.mdc-typography--adjust-margin.mdc-typography--headline {
  margin: -0.5rem 0 1rem -0.06em;
}

.mdc-typography--title {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 1.25rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  line-height: 2rem;
}

.mdc-typography--adjust-margin.mdc-typography--title {
  margin: -0.5rem 0 1rem -0.05em;
}

.mdc-typography--subheading2 {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 1rem;
  font-weight: 400;
  letter-spacing: 0.04em;
  line-height: 1.75rem;
}

.mdc-typography--adjust-margin.mdc-typography--subheading2 {
  margin: -0.5rem 0 1rem -0.06em;
}

.mdc-typography--subheading1 {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 0.938rem;
  font-weight: 400;
  letter-spacing: 0.04em;
  line-height: 1.5rem;
}

.mdc-typography--adjust-margin.mdc-typography--subheading1 {
  margin: -0.313rem 0 0.813rem -0.06em;
}

.mdc-typography--body2 {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 0.875rem;
  font-weight: 500;
  letter-spacing: 0.04em;
  line-height: 1.5rem;
}

.mdc-typography--adjust-margin.mdc-typography--body2 {
  margin: -0.25rem 0 0.75rem 0;
}

.mdc-typography--body1 {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 0.875rem;
  font-weight: 400;
  letter-spacing: 0.04em;
  line-height: 1.25rem;
}

.mdc-typography--adjust-margin.mdc-typography--body1 {
  margin: -0.25rem 0 0.75rem 0;
}

.mdc-typography--caption {
  font-family: Roboto, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 0.75rem;
  font-weight: 400;
  letter-spacing: 0.08em;
  line-height: 1.25rem;
}

.mdc-typography--adjust-margin.mdc-typography--caption {
  margin: -0.5rem 0 1rem -0.04em;
}

.container, .container--padded, .footer__links, .heading, .paragraph, .three-step-menu, .partners, .accordion__container, .services, .team-members, .inline-testimonial, .image.contained, .calculator, .blog, .blog-page, .contact__content_container, .hero__text-wrap, .menu-squares {
  margin-left: auto;
  margin-right: auto;
  padding: 0 15px;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  width: 100%;
}

@media (min-width: 1170px) {
  .container, .container--padded, .footer__links, .heading, .paragraph, .three-step-menu, .partners, .accordion__container, .services, .team-members, .inline-testimonial, .image.contained, .calculator, .blog, .blog-page, .contact__content_container, .hero__text-wrap, .menu-squares {
    width: -webkit-calc(1170px - 30px);
    width: calc(1170px - 30px);
  }
}

@media (min-width: 1570px) {
  .container, .container--padded, .footer__links, .heading, .paragraph, .three-step-menu, .partners, .accordion__container, .services, .team-members, .inline-testimonial, .image.contained, .calculator, .blog, .blog-page, .contact__content_container, .hero__text-wrap, .menu-squares {
    width: -webkit-calc(1170px - 30px);
    width: calc(1170px - 30px);
  }
}

.container--padded, .footer__links, .heading, .paragraph, .three-step-menu, .partners, .accordion__container, .services, .team-members, .inline-testimonial, .image.contained, .calculator, .blog, .blog-page, .contact__content_container {
  padding: 0 35px;
}

@media (min-width: 1170px) {
  .container--padded, .footer__links, .heading, .paragraph, .three-step-menu, .partners, .accordion__container, .services, .team-members, .inline-testimonial, .image.contained, .calculator, .blog, .blog-page, .contact__content_container {
    padding: 0 15px;
  }
}

.row {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-flex-wrap: wrap;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
  -ms-flex-pack: justify;
  justify-content: space-between;
  margin-left: -15px;
  margin-right: -15px;
  width: -webkit-calc(100% + 30px);
  width: calc(100% + 30px);
}

:focus {
  outline: none;
}

::-webkit-input-placeholder {
  /* WebKit, Blink, Edge */
  color: #1B212D;
}

:-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
  color: #1B212D;
  opacity: 1;
}

::-moz-placeholder {
  /* Mozilla Firefox 19+ */
  color: #1B212D;
  opacity: 1;
}

:-ms-input-placeholder {
  /* Internet Explorer 10-11 */
  color: #1B212D;
}

:placeholder-shown {
  /* Standard (https://drafts.csswg.org/selectors-4/#placeholder) */
  color: #1B212D;
}

* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, fieldset, input, textarea, p, blockquote, th, td {
  margin: 0px;
  padding: 0px;
}

article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
  display: block;
}

body {
  background-color: white;
  color: #1B212D;
  font-family: Roboto, Helvetica, Arial, sans-serif;
  font-size: 15px;
  line-height: 1.2;
}

body.modal-open {
  overflow: hidden;
}

h1 {
  font-size: 33.3px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.025rem;
  color: inherit;
}

@media (min-width: 768px) {
  h1 {
    font-size: 49.95px;
    font-weight: 700;
    line-height: 1;
    letter-spacing: 1.5px;
    color: inherit;
  }
}

h2 {
  font-size: 30px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.025rem;
  color: inherit;
}

h3 {
  font-size: 20.7px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.0312rem;
  color: #1B212D;
}

h4 {
  font-size: 13.5px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.0312rem;
  color: #1B212D;
}

h5 {
  font-size: 11.7px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.0444rem;
  color: #1B212D;
}

h6 {
  font-size: 10.05px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.0444rem;
  color: #1B212D;
}

p {
  font-family: #1B212D;
  font-size: 15px;
  line-height: 1.4;
}

a {
  color: #4a90e2;
  text-decoration: none;
  outline: none;
  -webkit-transition: all 0.4s ease;
  transition: all 0.4s ease;
  border: none;
  line-height: 1;
  cursor: pointer;
}

a:hover, a:focus, a:active {
  color: #4a90e2;
  text-decoration: none !important;
  -webkit-transition: all 0.4s ease;
  transition: all 0.4s ease;
  outline: none;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

fieldset, img {
  border: 0;
}

ul {
  padding-left: 20px;
}

caption, th {
  text-align: left;
}

blockquote, q {
  quotes: none;
}

blockquote:before, blockquote:after,
q:before, q:after {
  content: '';
  content: none;
}

.img__full {
  display: block;
  height: auto;
  margin: 0px auto 40px;
  width: 100%;
}

@media (min-width: 1170px) {
  .img__full {
    width: 962px;
  }
}

svg {
  max-width: 100%;
  max-height: 100%;
}

.blog-page .inline-testimonial h1 {
  font-size: 25px;
  width: 100%;
  margin-left: 50px;
}

.blog-page .inline-testimonial {
  padding: 10px 0px 10px 10px !important;
  width: 100% !important;
}

.blog-page img {
  margin-bottom: 30px;
}

.blog-heading {
  font-size: 20.7px;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: 0.75;
  color: #1B212D;
  margin-bottom: 25px;
}

@media (min-width: 768px) {
  .blog-heading {
    margin-bottom: 30px;
  }
}

.blog-paragraph__intro {
  font-size: 20.7px;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: 0.75;
  color: #1B212D;
  margin-bottom: 25px;
}

@media (min-width: 768px) {
  .blog-paragraph__intro {
    font-size: 24.9px;
    font-weight: 500;
    line-height: 1.2;
    letter-spacing: 0.9;
    color: #1B212D;
    margin-bottom: 30px;
  }
}

.blog-paragraph__text p {
  font-size: 16.8px;
  font-weight: 300;
  line-height: 1.33;
  letter-spacing: 0.6px;
  color: #1B212D;
  margin-bottom: 25px;
}

@media (min-width: 768px) {
  .blog-paragraph__text p {
    margin-bottom: 30px;
  }
}

.blog-paragraph ul li {
  font-size: 16.8px;
  font-weight: 300;
  line-height: 1.75;
  letter-spacing: 0.6px;
  color: #1B212D;
}

.blog-paragraph ul {
  margin-bottom: 40px;
}

.button {
  min-width: 280px;
  padding: 17px 50px;
  font-size: 16.8px;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: 2px;
  color: white;
  display: inline-block;
  background-color: #4a90e2;
  text-align: center;
  border: none;
  cursor: pointer;
}

.button:hover {
  color: white;
  background-color: #76abe9;
}

.button--sm {
  min-width: 164px;
  padding-top: 13px;
  padding-bottom: 13px;
  font-size: 13.8px;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: 0.5px;
  color: white;
  border: none;
}

[id='62'] .paragraph .paragraph__intro {
  color: black;
  font-weight: 400;
}

[id='62'] .paragraph p {
  font-size: 15px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.0444rem;
  color: #1B212D;
  margin-bottom: 15px;
}

[id='62'] .paragraph p:last-of-type {
  margin-bottom: 0;
}

@media (min-width: 992px) {
  .pages__side-menu-container {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
    -webkit-justify-content: space-between;
    -ms-flex-pack: justify;
    justify-content: space-between;
  }
}

.pages__side-menu-container.active::before {
  content: "";
  display: block;
  width: 315px;
  height: 1px;
  -webkit-flex-shrink: 0;
  -ms-flex-negative: 0;
  flex-shrink: 0;
}

.pages__side-menu_widgets {
  margin: auto;
}

.pages__side-menu_widgets .heading, .pages__side-menu_widgets .paragraph, .pages__side-menu_widgets .accordion__container {
  width: 100%;
  max-width: 848px;
}

@media (min-width: 1570px) {
  .pages__side-menu_widgets .heading, .pages__side-menu_widgets .paragraph, .pages__side-menu_widgets .accordion__container {
    max-width: 1200px;
  }
}

.footer {
  background-color: #212939;
  position: relative;
}

.footer__links {
  display: none;
}

@media (min-width: 992px) {
  .footer__links {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    padding: 30px 35px;
  }
}

@media (min-width: 992px) {
  .footer__links {
    padding: 50px 35px;
  }
}

@media (min-width: 1170px) {
  .footer__links {
    padding-left: 15px;
    padding-right: 15px;
  }
}

.footer__links_title {
  font-size: 15px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: 0.0444rem;
  color: white;
  margin-bottom: 10px;
  display: block;
}

.footer__links_link {
  font-size: 15px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.0444rem;
  color: white;
  margin-bottom: 10px;
  display: block;
}

.footer__footer {
  background-color: #1B212D;
  padding: 36px 20px;
}

@media (min-width: 992px) {
  .footer__footer {
    padding: 30px 20px 38px;
  }
}

.footer__footer_container {
  max-width: 1260px;
  margin: auto;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
  -ms-flex-pack: justify;
  justify-content: space-between;
  height: 100%;
}

.footer__footer_left {
  height: 100%;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
  -ms-flex-pack: justify;
  justify-content: space-between;
}

.footer__footer_right {
  display: none;
}

@media (min-width: 768px) {
  .footer__footer_right {
    height: 100%;
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -webkit-flex-direction: column;
    -ms-flex-direction: column;
    flex-direction: column;
    -webkit-box-pack: justify;
    -webkit-justify-content: space-between;
    -ms-flex-pack: justify;
    justify-content: space-between;
  }
}

.footer__footer_logo {
  width: 154px;
  margin-left: 2px;
  margin-bottom: 15px;
}

@media (min-width: 768px) {
  .footer__footer_logo {
    margin-top: 1px;
  }
}

@media (min-width: 992px) {
  .footer__footer_logo {
    width: 238px;
    margin-left: 4px;
  }
}

.footer__footer_rights {
  font-size: 12px;
  color: #fff;
  line-height: 1.3;
  position: relative;
  left: 2px;
  margin-bottom: 20px;
}

@media (min-width: 992px) {
  .footer__footer_rights {
    position: relative;
    left: 59px;
  }
}

.footer__footer_rights a {
  color: #9b9b9b;
  position: relative;
  left: 3px;
}

.footer__footer_blurb {
  margin-bottom: 15px;
  max-width: 278px;
  font-size: 10px;
  color: #fff;
  line-height: 1.4;
}

@media (min-width: 992px) {
  .footer__footer_blurb {
    position: relative;
    left: 59px;
  }
}

.footer__footer_more-blurb {
  max-width: 278px;
  font-size: 10px;
  color: #fff;
}

@media (min-width: 992px) {
  .footer__footer_more-blurb {
    position: relative;
    left: 59px;
  }
}

.footer__footer_title {
  font-size: 16.8px;
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: 0.0444rem;
  color: white;
  margin-bottom: 14px;
}

.footer__footer_social-link {
  font-size: 15px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.0444rem;
  color: white;
}

.footer__footer_social-link i {
  font-size: 20px;
  margin-right: 12px;
}

.footer__footer_social-link:first-of-type {
  margin-right: 30px;
}

.header {
  height: 80px;
}

@media (min-width: 992px) {
  .header {
    height: 100px;
  }
}

@media (min-width: 1170px) {
  .header {
    height: 120px;
  }
}

.header__container {
  padding: 20px;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
  -ms-flex-pack: justify;
  justify-content: space-between;
  -webkit-box-align: center;
  -webkit-align-items: center;
  -ms-flex-align: center;
  align-items: center;
  max-width: 1300px;
  height: 100%;
  margin: auto;
}

@media (min-width: 992px) {
  .header__logo {
    width: 230px;
  }
}

@media (min-width: 1170px) {
  .header__logo {
    width: 317px;
  }
}

.header__menu-link {
  color: #1B212D;
  -webkit-transition: all 0.4s ease;
  transition: all 0.4s ease;
  padding: 0 15px;
  font-size: 18px;
}

@media (min-width: 1170px) {
  .header__menu-link {
    padding: 0 20px;
  }
}

.header__menu-link:hover {
  color: #4a90e2;
}

.header__menu-link:last-of-type {
  padding-right: 0;
}

.header__menu-link--dropdown {
  position: relative;
  display: inline-block;
}

.header__menu-link--dropdown:hover {
  color: #1B212D;
}

.header__menu-link--dropdown:hover .header__menu-link__dropdown {
  display: block;
  opacity: 1;
}

.header__menu-link__dropdown {
  -webkit-transition: all 0.4s ease;
  transition: all 0.4s ease;
  opacity: 0;
  background-color: white;
  border-radius: 0px;
  border: solid 0.5px #e6e6e6;
  width: 158px;
  overflow: hidden;
  display: none;
  z-index: 20;
}

.header__menu-link__dropdown_container {
  padding-top: 10px;
  position: absolute;
}

.header__menu-link__dropdown a {
  padding: 10px;
  display: block;
  font-size: 16px;
  color: #1B212D;
  -webkit-transition: all 0.4s ease;
  transition: all 0.4s ease;
}

.header__menu-link__dropdown a:hover {
  background-color: #4a90e2;
  color: white;
}

.header__menu-link__dropdown a:last-of-type {
  border-bottom: none;
}

.header__close-menu {
  display: none;
}

@media (min-width: 992px) {
  .header__menu-icon {
    display: none;
  }
}

.header__menu--desktop {
  display: none;
}

@media (min-width: 992px) {
  .header__menu--desktop {
    display: block;
  }
}

.header.open .header__close-menu {
  display: block;
}

.header.open .header__menu-icon {
  display: none;
}

.header.open .mobile-menu {
  border-bottom: 1px solid #D8D8D8;
}

.header__secondary {
  position: absolute;
  display: none;
  height: 0;
  overflow: hidden;
  width: 100%;
}

@media (min-width: 992px) {
  .header__secondary {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    top: 100px;
    left: 0;
    -webkit-justify-content: space-around;
    -ms-flex-pack: distribute;
    justify-content: space-around;
    -webkit-box-align: center;
    -webkit-align-items: center;
    -ms-flex-align: center;
    align-items: center;
  }
  .header__secondary a {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    background-color: #4a90e2;
    -webkit-transition: all 0.4s ease;
    transition: all 0.4s ease;
    height: 100%;
    width: 100%;
    -webkit-box-align: center;
    -webkit-align-items: center;
    -ms-flex-align: center;
    align-items: center;
    -webkit-box-pack: center;
    -webkit-justify-content: center;
    -ms-flex-pack: center;
    justify-content: center;
    font-size: 16.8px;
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: 0.6px;
    color: white;
  }
  .header__secondary a:hover, .header__secondary a.active {
    background-color: #1B212D;
  }
}

@media (min-width: 1170px) {
  .header__secondary {
    top: 120px;
  }
}

@media (min-width: 992px) {
  .header__secondary.active {
    height: 70px;
  }
}

@media (min-width: 1170px) {
  .header__secondary.active {
    height: 80px;
  }
}

@media (max-width: 991px) {
  .the-real-header-container {
    height: 80px;
    margin-top: 80px;
    position: fixed;
    top: -80px;
    width: 100%;
    background: white;
    z-index: 100;
  }
}

@media (min-width: 992px) {
  .the-real-header-container {
    height: 100px;
  }
}

@media (min-width: 1170px) {
  .the-real-header-container {
    height: 120px;
  }
}

.hero {
  height: 560px;
  color: white;
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center center;
}

@media (min-width: 768px) {
  .hero {
    height: 700px;
  }
}

.hero__overlay {
  background-color: rgba(27, 32, 44, 0.7);
  height: 100%;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
  -ms-flex-pack: center;
  justify-content: center;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
  padding: 0 15px;
  text-align: center;
}

.hero__text-wrap {
  height: 100%;
  -webkit-box-align: center;
  -webkit-align-items: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
  -ms-flex-pack: center;
  justify-content: center;
  margin-bottom: auto;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
}

.hero__heading {
  font-size: 41.55px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0;
  color: inherit;
  margin-bottom: 20px;
  max-width: 800px;
  margin-left: auto;
  margin-right: auto;
  width: 100%;
}

@media (min-width: 768px) {
  .hero__heading {
    font-size: 58.2px;
    font-weight: 700;
    line-height: 1;
    letter-spacing: 0.025rem;
    color: inherit;
    margin-bottom: 30px;
    text-align: center;
  }
}

.hero__sub-heading {
  font-size: 15px;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: 0.0444rem;
  color: white;
  max-width: 800px;
  margin-left: auto;
  margin-right: auto;
}

@media (min-width: 480px) {
  .hero__sub-heading {
    width: 90%;
  }
}

@media (min-width: 768px) {
  .hero__sub-heading {
    font-size: 20.7px;
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: 0.0312rem;
    color: inherit;
    margin-bottom: 60px;
    text-align: left;
  }
}

.hero__scroll-icon {
  display: none;
}

@media (min-width: 768px) {
  .hero__scroll-icon {
    display: inline-block;
  }
}

.hero__banner {
  background-color: rgba(27, 33, 45, 0.8);
  padding: 31px 40px;
  margin: 0 -15px;
  width: -webkit-calc(100% + 30px);
  width: calc(100% + 30px);
}

@media (min-width: 768px) {
  .hero__banner_content-wrap {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
    -webkit-justify-content: space-between;
    -ms-flex-pack: justify;
    justify-content: space-between;
    -webkit-box-align: center;
    -webkit-align-items: center;
    -ms-flex-align: center;
    align-items: center;
    max-width: 952px;
    margin: auto;
  }
}

.hero__banner_text {
  font-size: 16.8px;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: 0.0444rem;
  color: inherit;
  margin-bottom: 15px;
}

@media (min-width: 768px) {
  .hero__banner_text {
    margin-bottom: 0;
    text-align: left;
    font-size: 20.7px;
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: 0.0312rem;
    color: inherit;
  }
}

.hero.hero--menu .hero__menu--desktop {
  display: none;
}

@media (min-width: 992px) {
  .hero.hero--menu .hero__menu--desktop {
    width: 100%;
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-flex-wrap: wrap;
    -ms-flex-wrap: wrap;
    flex-wrap: wrap;
  }
}

.hero.hero--menu .hero__menu-item {
  -webkit-box-align: center;
  -webkit-align-items: center;
  -ms-flex-align: center;
  align-items: center;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
  -ms-flex-pack: center;
  justify-content: center;
  height: 250px;
  -webkit-box-flex: 1;
  -webkit-flex: 1 0 224px;
  -ms-flex: 1 0 224px;
  flex: 1 0 224px;
  background-color: rgba(254, 254, 254, 0.15);
  font-size: 33.3px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 1.2px;
  color: inherit;
  -webkit-transition: all 0.4s ease;
  transition: all 0.4s ease;
  padding: 27px;
}

.hero.hero--menu .hero__menu-item:hover {
  background-color: #fcbf61;
}

@media (min-width: 768px) {
  .hero.hero--menu .hero__heading {
    margin-bottom: 20px;
    margin-top: 20px;
    font-size: 49.95px;
    font-weight: 700;
    line-height: 1;
    letter-spacing: 1.9px;
    color: inherit;
  }
}

@media (min-width: 992px) {
  .hero.hero--menu .hero__heading {
    text-align: left;
    margin-left: 0;
  }
}

@media (min-width: 768px) {
  .hero.hero--menu .hero__sub-heading {
    margin-bottom: 65px;
    font-weight: 300;
    max-width: 983px;
    text-align: center;
  }
}

@media (min-width: 992px) {
  .hero.hero--menu .hero__sub-heading {
    text-align: left;
    margin-left: 0;
  }
}

.hero--small {
  height: 350px;
}

.hero--small .row {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
  -ms-flex-pack: center;
  justify-content: center;
}

@media (min-width: 768px) {
  .hero--small .row .hero__heading {
    margin-left: 0;
    text-align: left;
  }
}

.hero--small .row .hero__sub-heading {
  margin-left: 0;
  margin-bottom: 0;
  letter-spacing: 0.8px;
  font-weight: 300;
}

.hero--banner .row {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
}

.hero--banner .hero__sub-heading {
  text-align: center;
}

@media (min-width: 992px) {
  .hero-menu--mobile .hero__text-wrap {
    text-align: left;
  }
}

.hero-menu--mobile .hero__heading {
  margin-top: auto;
}

.hero-menu--mobile .hero__menu {
  -webkit-transition: all 0.4s ease;
  transition: all 0.4s ease;
  margin-top: auto;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
  background-color: #1B212D;
  height: 70px;
  overflow: hidden;
}

@media (max-width: 991px) {
  .hero-menu--mobile .hero__menu.open .hero__menu-item:first-of-type {
    background-color: #fcbf61 !important;
  }
}

.hero-menu--mobile .hero__menu-item {
  height: 70px;
  width: 100%;
  -webkit-flex-shrink: 0;
  -ms-flex-negative: 0;
  flex-shrink: 0;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
  -ms-flex-pack: justify;
  justify-content: space-between;
  -webkit-box-align: center;
  -webkit-align-items: center;
  -ms-flex-align: center;
  align-items: center;
  padding: 0 15px;
}

.hero-menu--mobile .hero__menu-item:hover {
  background-color: #38445d;
}

.hero-menu--mobile .hero__menu-item img {
  display: none;
}

.hero-menu--mobile .hero__menu-item_text {
  font-size: 16.8px;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: 0.5px;
  color: white;
}

.hero-menu--mobile .hero__menu-item:first-of-type img {
  display: block;
}

@media (min-width: 992px) {
  .hero-menu--mobile .hero__menu-item:first-of-type img {
    display: none;
  }
}

.hero-menu--mobile .hero__menu-item.active {
  background-color: #fcbf61;
}

@media (min-width: 992px) {
  .hero-menu--mobile {
    width: 315px;
    -webkit-flex-shrink: 0;
    -ms-flex-negative: 0;
    flex-shrink: 0;
    display: block;
    position: relative;
  }
  .hero-menu--mobile .hero__menu {
    height: 100% !important;
  }
  .hero-menu--mobile.active {
    position: fixed;
    left: 0;
    top: 0;
    height: 100%;
  }
  .hero-menu--mobile.active .hero__menu {
    height: 100% !important;
  }
}

/* Slider */
.slick-slider {
  position: relative;
  display: block;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  -ms-touch-action: pan-y;
  touch-action: pan-y;
  -webkit-tap-highlight-color: transparent;
}

.slick-list {
  position: relative;
  overflow: hidden;
  display: block;
  margin: 0;
  padding: 0;
}

.slick-list:focus {
  outline: none;
}

.slick-list.dragging {
  cursor: pointer;
  cursor: hand;
}

.slick-slider .slick-track,
.slick-slider .slick-list {
  -webkit-transform: translate3d(0, 0, 0);
  -ms-transform: translate3d(0, 0, 0);
  transform: translate3d(0, 0, 0);
}

.slick-track {
  position: relative;
  left: 0;
  top: 0;
  display: block;
}

.slick-track:before, .slick-track:after {
  content: "";
  display: table;
}

.slick-track:after {
  clear: both;
}

.slick-loading .slick-track {
  visibility: hidden;
}

.slick-slide {
  float: left;
  height: 100%;
  min-height: 1px;
  display: none;
}

[dir="rtl"] .slick-slide {
  float: right;
}

.slick-slide img {
  display: block;
}

.slick-slide.slick-loading img {
  display: none;
}

.slick-slide.dragging img {
  pointer-events: none;
}

.slick-initialized .slick-slide {
  display: block;
}

.slick-loading .slick-slide {
  visibility: hidden;
}

.slick-vertical .slick-slide {
  display: block;
  height: auto;
  border: 1px solid transparent;
}

.slick-arrow.slick-hidden {
  display: none;
}

.slides {
  height: 100%;
}

.slides ul li {
  list-style-type: none !important;
}

.slick-video {
  width: 100%;
  height: 100%;
}

.slick-video__overlay {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
}

.slide {
  padding: 0px;
  position: relative;
  text-align: center;
  vertical-align: middle;
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center center;
  background-size: contain !important;
  image-rendering: -webkit-optimize-contrast;
  height: 400px;
}

.home .slick-track, .home .slick-list {
  height: 100%;
}

a.slick-prev,
a.slick-next {
  background-size: 40px;
  height: 100%;
  margin: 0px;
  opacity: 0.6;
  outline: none;
  display: block;
  cursor: pointer;
  border: none;
  padding: 0px;
  text-indent: -9999px;
  position: absolute;
  top: 0px;
  -webkit-transition: 0.1s;
  transition: 0.1s;
  width: 400px;
  z-index: 100;
}

a.slick-prev:hover,
a.slick-next:hover {
  background-color: transparent;
  opacity: 1;
  outline: none;
}

.slick-dots {
  line-height: 20px;
  position: absolute;
  margin-right: 32px;
  margin-bottom: 0;
  left: 50%;
  bottom: -120px;
  -webkit-transform: rotate(270deg) translateY(-7px);
  -ms-transform: rotate(270deg) translateY(-7px);
  transform: rotate(270deg) translateY(-7px);
  padding-left: 0;
}

@media (min-width: 768px) {
  .slick-dots {
    bottom: 40px;
  }
}

.slick-dots li {
  padding-bottom: 6px;
  padding-top: 6px;
}

.slick-dots li button {
  background-position: center;
  border-radius: 15px;
  color: transparent;
  cursor: pointer;
  width: 15px;
  height: 15px;
  background-color: #bdbdbd;
  border: none;
}

li.slick-active button {
  background-color: #737373;
}

.slick-prev {
  left: -10px;
  cursor: pointer;
  border: none;
  padding: 0px;
  text-indent: -9999px;
  background: url("/media/arrow-previous-black.svg") no-repeat 10% 50%;
  background-size: 16px;
  height: 50px;
  z-index: 100;
  width: 20px;
  position: absolute;
  top: 50%;
  margin-top: -25px;
}

@media (min-width: 768px) {
  .slick-prev {
    margin-left: -20px;
  }
}

.slick-next {
  right: -10px;
  cursor: pointer;
  border: none;
  padding: 0px;
  text-indent: -9999px;
  background: url("/media/arrow-next-black.svg") no-repeat 90% 50%;
  background-size: 16px;
  z-index: 100;
  height: 50px;
  width: 20px;
  position: absolute;
  top: 50%;
  margin-top: -25px;
}

@media (min-width: 768px) {
  .slick-next {
    margin-right: -20px;
  }
}

.heading {
  margin-top: 80px;
  margin-bottom: 40px;
}

.heading .row {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
}

@media (min-width: 768px) {
  .heading {
    margin-top: 100px;
  }
}

.heading h1 {
  line-height: 1.2;
}

.heading h2 {
  font-size: 24.9px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.8px;
  color: #1B212D;
}

@media (min-width: 768px) {
  .heading h2 {
    font-size: 50px;
  }
}

.paragraph {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
}

.paragraph__intro {
  font-size: 20.7px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.8px;
  color: #1B212D;
  margin-bottom: 30px;
}

@media (min-width: 768px) {
  .paragraph__intro {
    font-size: 24.9px;
    font-weight: 300;
    line-height: 1.2;
    letter-spacing: 0.9px;
    color: #1B212D;
  }
}

.paragraph__text p {
  font-size: 16.8px;
  font-weight: 300;
  line-height: 1.33;
  letter-spacing: 0.8px;
  color: #1B212D;
  margin-bottom: 30px;
}

@media (min-width: 768px) {
  .paragraph__text p {
    font-size: 20.7px;
    font-weight: 300;
    line-height: 1.33;
    letter-spacing: 0.9px;
    color: #1B212D;
  }
}

.paragraph ul li {
  font-size: 16.8px;
  font-weight: 300;
  line-height: 1.75;
  letter-spacing: 0.6px;
  color: #1B212D;
}

.paragraph ul {
  margin-bottom: 40px;
}

.paragraph--separator {
  padding-bottom: 80px;
  border-bottom: 1px solid #D8D8D8;
}

@media (min-width: 768px) {
  .paragraph--separator {
    padding-bottom: 100px;
  }
}

.menu-squares {
  padding-bottom: 80px;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
  position: relative;
  border-bottom: 1px solid #D8D8D8;
}

@media (min-width: 768px) {
  .menu-squares {
    padding-bottom: 100px;
    padding-top: 40px;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -webkit-flex-direction: row;
    -ms-flex-direction: row;
    flex-direction: row;
  }
}

.menu-squares__item {
  border-bottom: solid 0.5px #D8D8D8;
  height: 100px;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
  -ms-flex-align: center;
  align-items: center;
  padding: 0 19px;
  font-size: 20.7px;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: 0.0312rem;
  color: #4a90e2;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
  -ms-flex-pack: justify;
  justify-content: space-between;
  position: relative;
  width: 100%;
}

@media (min-width: 768px) {
  .menu-squares__item {
    height: 350px;
    -webkit-box-flex: 1;
    -webkit-flex: 1 0 350px;
    -ms-flex: 1 0 350px;
    flex: 1 0 350px;
    -webkit-box-pack: center;
    -webkit-justify-content: center;
    -ms-flex-pack: center;
    justify-content: center;
    padding: 30px;
  }
}

.menu-squares__item:first-of-type {
  border-top: solid 0.5px #D8D8D8;
}

@media (min-width: 768px) {
  .menu-squares__item:first-of-type {
    border-top: none;
  }
}

@media (min-width: 768px) {
  .menu-squares__item:nth-of-type(n + 5) {
    border-bottom: none;
  }
}

@media (min-width: 1095px) {
  .menu-squares__item:nth-of-type(n + 4) {
    border-bottom: none;
  }
}

@media (min-width: 768px) {
  .menu-squares__item:nth-of-type(odd) {
    border-right: solid 0.5px #D8D8D8;
  }
}

@media (min-width: 1095px) {
  .menu-squares__item:nth-of-type(n + 0) {
    border-right: solid 0.5px #D8D8D8;
  }
}

@media (min-width: 1095px) {
  .menu-squares__item:nth-of-type(3n + 0) {
    border-right: none;
  }
}

.menu-squares__item_text {
  position: relative;
  max-width: 310px;
}

@media (min-width: 768px) {
  .menu-squares__item_text {
    text-align: center;
    font-size: 33.3px;
    font-weight: 400;
    line-height: 1.25;
    letter-spacing: 0.9px;
    color: inherit;
  }
}

.menu-squares__item_icon {
  position: relative;
}

@media (min-width: 768px) {
  .menu-squares__item_icon {
    display: none;
  }
}

.menu-squares__item:hover .menu-squares__hover {
  opacity: 1;
}

.menu-squares__item:hover .menu-squares__item_text {
  color: white;
}

.menu-squares__item:hover .menu-squares__item_icon svg g g {
  stroke: #fff !important;
}

.menu-squares__hover {
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center center;
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  -webkit-transition: all 0.4s ease;
  transition: all 0.4s ease;
}

.menu-squares__hover-overlay {
  width: 100%;
  height: 100%;
}

.three-step-menu {
  padding-top: 35px;
  padding-bottom: 80px;
  border-bottom: 1px solid #D8D8D8;
}

@media (min-width: 768px) {
  .three-step-menu {
    padding-bottom: 100px;
  }
}

.three-step-menu__item {
  width: 100%;
  height: 350px;
  position: relative;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
  padding: 35px 27px 0;
  -webkit-box-pack: end;
  -webkit-justify-content: flex-end;
  -ms-flex-pack: end;
  justify-content: flex-end;
  color: white;
}

@media (min-width: 768px) {
  .three-step-menu__item {
    -webkit-box-flex: 1;
    -webkit-flex: 1 0 350px;
    -ms-flex: 1 0 350px;
    flex: 1 0 350px;
    padding: 35px 30px 0;
  }
}

.three-step-menu__item:hover .three-step-menu__background-overlay {
  opacity: 1;
}

.three-step-menu__background {
  width: 100%;
  height: 100%;
  position: absolute;
  left: 0;
  top: 0;
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center center;
}

.three-step-menu__background-overlay {
  width: 100%;
  height: 100%;
  background-image: -webkit-gradient(linear, left top, left bottom, from(#80c3f3), to(#4990e2));
  background-image: -webkit-linear-gradient(top, #80c3f3, #4990e2);
  background-image: linear-gradient(to bottom, #80c3f3, #4990e2);
  opacity: 0.8;
  -webkit-transition: all 0.4s ease;
  transition: all 0.4s ease;
}

.three-step-menu__number {
  position: relative;
  font-size: 49.95px;
  font-weight: 900;
  line-height: 1;
  letter-spacing: 0.025rem;
  color: inherit;
  margin-bottom: 15px;
  color: white !important;
}

.three-step-menu__heading {
  font-size: 33.3px;
  font-weight: 500;
  line-height: 1.25;
  letter-spacing: 1.2px;
  color: inherit;
  color: white !important;
  margin-bottom: 32px;
  max-width: 310px;
  position: relative;
}

.three-step-menu__footer {
  height: 87px;
  background-color: #4a90e2;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
  -ms-flex-pack: justify;
  justify-content: space-between;
  -webkit-box-align: center;
  -webkit-align-items: center;
  -ms-flex-align: center;
  align-items: center;
  position: relative;
  width: -webkit-calc(100% + 54px);
  width: calc(100% + 54px);
  margin-left: -27px;
  margin-right: -27px;
  padding: 0 27px;
}

@media (min-width: 768px) {
  .three-step-menu__footer {
    width: -webkit-calc(100% + 60px);
    width: calc(100% + 60px);
    margin-left: -30px;
    margin-right: -30px;
    padding: 0 30px;
  }
}

.three-step-menu__footer div {
  font-size: 15px;
  font-weight: 400;
  line-height: 1.25;
  letter-spacing: 0.7px;
  color: #1B212D;
  max-width: 270px;
  color: white !important;
}

.partners {
  padding-top: 40px;
}

@media (min-width: 768px) {
  .partners {
    padding-top: 90px;
  }
}

.partners .row {
  -webkit-box-pack: center;
  -webkit-justify-content: center;
  -ms-flex-pack: center;
  justify-content: center;
}

@media (min-width: 768px) {
  .partners .row {
    -webkit-box-pack: justify;
    -webkit-justify-content: space-between;
    -ms-flex-pack: justify;
    justify-content: space-between;
  }
}

.partners__logo-wrap {
  text-align: center;
  max-width: 230px;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
  -ms-flex-pack: center;
  justify-content: center;
}

@media (min-width: 768px) {
  .partners__logo-wrap {
    width: 230px;
  }
}

.partners__logo-wrap:nth-of-type(n + 5) {
  display: none;
}

.partners__logo {
  margin-bottom: 60px;
  max-width: 100%;
}

@media (min-width: 768px) {
  .partners__logo {
    margin-bottom: 90px;
  }
}

@media (min-width: 992px) {
  .partners__logo {
    margin-bottom: 125px;
  }
}

@media (min-width: 1170px) {
  .partners__logo {
    margin-bottom: 150px;
  }
}

.partners.active-1 .partners__logo-wrap:nth-of-type(n + 5) {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
}

.banner {
  height: 500px;
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center center;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
  -webkit-box-align: center;
  -webkit-align-items: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
  -ms-flex-pack: center;
  justify-content: center;
  text-align: center;
  color: white;
  padding: 0 15px;
  position: relative;
}

.banner__overlay {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  background-color: rgba(27, 32, 44, 0.7);
}

.banner__top-heading {
  font-size: 24.9px;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0.9px;
  color: inherit;
  position: relative;
  margin-bottom: 15px;
  max-width: 200px;
}

@media (min-width: 480px) {
  .banner__top-heading {
    max-width: none;
    font-size: 33.3px;
    font-weight: 400;
    line-height: 1;
    letter-spacing: 1.2px;
    color: inherit;
  }
}

.banner__bottom-heading {
  position: relative;
  font-size: 41.55px;
  font-weight: 300;
  line-height: 1;
  letter-spacing: 1.2px;
  color: inherit;
  margin-bottom: 70px;
}

.banner__button {
  position: relative;
}

.accordion.row {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
  border-bottom: 1px solid #D8D8D8;
}

.accordion__container {
  padding-bottom: 80px;
  padding-top: 20px;
  border-bottom: 1px solid #D8D8D8;
}

@media (min-width: 768px) {
  .accordion__container {
    padding-bottom: 100px;
  }
}

.accordion__title {
  padding: 17px 22px 18px 0;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: 0.0444rem;
  color: #000;
  border-top: 1px solid #D8D8D8;
}

.accordion__title:last-of-type {
  border-bottom: 1px solid #D8D8D8;
}

.accordion__content p {
  font-size: 15px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.0444rem;
  color: #000;
  margin-bottom: 15px;
}

.accordion__content p:last-of-type {
  padding-bottom: 60px;
}

.accordion__icon {
  float: right;
  -webkit-transition: all 0.4s ease;
  transition: all 0.4s ease;
  margin-top: 3px;
}

.accordion .ui-state-active .accordion__icon {
  -webkit-transform: rotate(-180deg);
  -ms-transform: rotate(-180deg);
  transform: rotate(-180deg);
}

.services {
  padding-top: 50px;
  padding-bottom: 40px;
}

.services .service {
  width: 100%;
}

@media (min-width: 768px) {
  .services .service {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-flex: 1;
    -webkit-flex: 1 0 50%;
    -ms-flex: 1 0 50%;
    flex: 1 0 50%;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -webkit-flex-direction: column;
    -ms-flex-direction: column;
    flex-direction: column;
  }
}

@media (min-width: 768px) {
  .services .service:nth-of-type(odd) {
    padding-right: 15px;
  }
}

@media (min-width: 768px) {
  .services .service:nth-of-type(even) {
    padding-left: 15px;
  }
}

.services .service__heading {
  font-size: 29.1px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 1.1;
  color: #2e3542;
  margin-bottom: 30px;
}

.services .service__intro {
  font-size: 15px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.0444rem;
  color: #1B212D;
  margin-bottom: 30px;
}

.services .service__link {
  font-size: 15px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: 0.0444rem;
  color: #4a90e2;
  margin-bottom: 60px;
  display: block;
}

.services .service__link span {
  display: inline-block;
  margin-right: 12px;
}

.services .service__link img {
  position: relative;
  top: 2px;
}

.services .service__button {
  -webkit-box-flex: 0;
  -webkit-flex-grow: 0;
  -ms-flex-positive: 0;
  flex-grow: 0;
  max-width: 280px;
  margin: 0 0 60px;
  padding-right: 0;
  padding-left: 0;
}

.service__modal {
  position: fixed;
  width: 100%;
  height: 100%;
  z-index: 100;
  background-color: rgba(46, 53, 66, 0.8);
  -webkit-box-pack: center;
  -webkit-justify-content: center;
  -ms-flex-pack: center;
  justify-content: center;
  -webkit-box-align: start;
  -webkit-align-items: flex-start;
  -ms-flex-align: start;
  align-items: flex-start;
  overflow-x: hidden;
  overflow-y: auto;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  visibility: hidden;
  display: none;
  -webkit-transition: all 0.4s ease;
  transition: all 0.4s ease;
}

.service__modal_content {
  width: 100%;
  padding: 30px;
  max-width: 765px;
  background-color: white;
  position: relative;
}

@media (min-width: 768px) {
  .service__modal_content {
    padding: 72px;
    border-radius: 6px;
    background-color: #ffffff;
    -webkit-box-shadow: 0 6px 25px 0 rgba(0, 0, 0, 0.27);
    box-shadow: 0 6px 25px 0 rgba(0, 0, 0, 0.27);
    margin-top: 60px;
    text-align: center;
    margin-bottom: 50px;
  }
}

.service__modal_scroll {
  overflow: auto;
  height: 100%;
}

.service__modal.open {
  visibility: visible;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
}

.service__modal .close {
  position: absolute;
  top: 30px;
  right: 30px;
}

.service__modal .desktop-calculator {
  display: none;
}

@media (min-width: 768px) {
  .service__modal .desktop-calculator {
    display: block;
    margin-bottom: 40px;
  }
}

@media (min-width: 768px) {
  .service__modal .mobile-calculator {
    display: none;
    margin-bottom: 30px;
  }
}

.team-members {
  padding-top: 30px;
  padding-bottom: 80px;
}

@media (min-width: 768px) {
  .team-members {
    padding-top: 50px;
    padding-bottom: 100px;
  }
}

.team-members .team-member {
  width: 100%;
  text-align: center;
}

@media (min-width: 768px) {
  .team-members .team-member {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-flex: 1;
    -webkit-flex: 1 0 33.33%;
    -ms-flex: 1 0 33.33%;
    flex: 1 0 33.33%;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -webkit-flex-direction: column;
    -ms-flex-direction: column;
    flex-direction: column;
  }
}

@media (min-width: 768px) {
  .team-members .team-member:not(:nth-of-type(3n)) {
    padding-right: 15px;
  }
}

@media (min-width: 992px) {
  .team-members .team-member:not(:nth-of-type(3n)) {
    padding-right: 30px;
  }
}

.team-members .team-member__image {
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center center;
  height: 360px;
  margin-bottom: 30px;
}

@media (min-width: 480px) {
  .team-members .team-member__image {
    height: 400px;
  }
}

@media (min-width: 768px) {
  .team-members .team-member__image {
    height: 400px;
  }
}

@media (min-width: 992px) {
  .team-members .team-member__image {
    height: 500px;
  }
}

.team-members .team-member__full-name {
  font-size: 29.1px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 1.1px;
  color: #2e3542;
  margin-bottom: 10px;
  padding-left: 20px;
  padding-right: 20px;
}

.team-members .team-member__role {
  font-size: 20.7px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.8px;
  color: #000;
  font-style: italic;
  margin-bottom: 30px;
  padding-left: 20px;
  padding-right: 20px;
}

.team-members .team-member__intro {
  font-size: 16.8px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.0444rem;
  color: #000;
  margin-bottom: 30px;
  padding-left: 20px;
  padding-right: 20px;
}

@media (min-width: 768px) {
  .team-members .team-member__intro {
    margin-bottom: 0;
  }
}

.inline-testimonial {
  color: #fcbf61;
  padding-top: 15px;
  padding-bottom: 15px;
}

@media (min-width: 768px) {
  .inline-testimonial {
    padding-top: 30px;
    padding-bottom: 30px;
  }
}

.inline-testimonial h1 {
  font-size: 29.1px;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: 1.1px;
  color: inherit;
}

@media (min-width: 768px) {
  .inline-testimonial h1 {
    margin-left: 40px;
  }
}

@media (min-width: 992px) {
  .inline-testimonial h1 {
    margin-left: 70px;
  }
}

@media (min-width: 1170px) {
  .inline-testimonial h1 {
    margin-left: 95px;
  }
}

.image {
  padding-top: 15px !important;
}

.image.contained {
  display: block;
}

@media (min-width: 768px) {
  .image {
    padding-top: 30px !important;
    padding-bottom: 30px !important;
  }
}

.image__image {
  width: 100%;
  height: 100%;
}

.testimonial-slider {
  margin-bottom: 100px;
  padding-left: 20px;
  padding-right: 15px;
  max-width: 1140px;
  margin-left: auto;
  margin-right: auto;
  padding-bottom: 160px;
  border-bottom: solid 1px #D8D8D8;
}

@media (min-width: 768px) {
  .testimonial-slider {
    padding-bottom: 0;
  }
}

.testimonial-slider .testimonial {
  width: 100%;
  min-height: 600px;
  height: 100%;
  margin-bottom: 3px;
}

@media (min-width: 768px) {
  .testimonial-slider .testimonial {
    min-height: 630px;
  }
}

.testimonial-slider .testimonial__content {
  max-width: 420px;
  margin-left: auto;
  -webkit-box-shadow: 0 0 5px 0 rgba(128, 128, 128, 0.5);
  box-shadow: 0 0 5px 0 rgba(128, 128, 128, 0.5);
  overflow: hidden;
  margin-right: auto;
  margin-top: 0px;
}

@media (min-width: 768px) {
  .testimonial-slider .testimonial__content {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    max-width: 750px;
    margin-top: 50px;
    height: 400px;
  }
}

.testimonial-slider .testimonial__image {
  height: 250px;
  width: 100%;
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center center;
}

@media (min-width: 768px) {
  .testimonial-slider .testimonial__image {
    height: 100%;
    width: 264px;
    -webkit-flex-shrink: 0;
    -ms-flex-negative: 0;
    flex-shrink: 0;
  }
}

.testimonial-slider .testimonial__text {
  padding: 42px;
}

@media (min-width: 768px) {
  .testimonial-slider .testimonial__text {
    padding: 75px 42px;
    text-align: left;
  }
}

.testimonial-slider .testimonial__testimonial {
  font-size: 20.7px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 1px;
  color: #1B212D;
  margin-bottom: 42px;
}

.testimonial-slider .testimonial__full-name {
  font-size: 20.7px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 1px;
  color: #1B212D;
  margin-bottom: 10px;
}

.testimonial-slider .testimonial__job-title {
  font-size: 16.8px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 1px;
  color: #1B212D;
}

.calculator {
  padding-bottom: 80px;
  border-bottom: 1px solid #D8D8D8;
  padding-top: 80px;
}

@media (min-width: 768px) {
  .calculator {
    padding-bottom: 100px;
    padding-top: 100px;
  }
}

.calculator .row {
  -webkit-box-orient: vertical;
  -webkit-box-direction: reverse;
  -webkit-flex-direction: column-reverse;
  -ms-flex-direction: column-reverse;
  flex-direction: column-reverse;
  text-align: center;
}

@media (min-width: 768px) {
  .calculator .row {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -webkit-flex-direction: row;
    -ms-flex-direction: row;
    flex-direction: row;
    text-align: left;
    -webkit-flex-wrap: nowrap;
    -ms-flex-wrap: nowrap;
    flex-wrap: nowrap;
  }
}

.calculator__heading {
  font-size: 41.55px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 1.1px;
  color: #2e3542;
  margin-bottom: 33px;
  max-width: 850px;
  text-align: center;
}

@media (min-width: 768px) {
  .calculator__heading {
    text-align: left;
  }
}

.calculator__icon {
  margin-bottom: 35px;
}

@media (min-width: 768px) {
  .calculator__icon {
    margin-bottom: 0;
    margin-left: 10px;
  }
}

.calculator .button {
  margin: auto;
}

@media (min-width: 768px) {
  .calculator .button {
    margin-left: 0;
  }
}

.calculator__left {
  text-align: center;
}

@media (min-width: 768px) {
  .calculator__left {
    text-align: left;
  }
}

.calculator__intro {
  text-align: center;
  max-width: 650px;
  margin-bottom: 50px;
  font-size: 20.7px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.9;
  color: #1B212D;
}

@media (min-width: 768px) {
  .calculator__intro {
    text-align: left;
  }
}

.bookingjs {
  margin-top: 30px !important;
  margin-bottom: 40px !important;
}

.mobile-menu {
  z-index: 1;
  position: relative;
  background: white;
  height: 0;
  overflow: hidden;
  -webkit-transition: all 0.4s ease;
  transition: all 0.4s ease;
}

@media (min-width: 992px) {
  .mobile-menu {
    display: none !important;
  }
}

.mobile-menu__link, .mobile-menu__secondary_link {
  padding: 19px 33px 19px 55px;
  display: block;
  height: 64px;
  color: #1B212D;
  -webkit-transition: all 0.4s ease;
  transition: all 0.4s ease;
  background-color: white;
  border-bottom: 1px solid #D8D8D8;
  line-height: 1.2;
}

.mobile-menu__link:hover, .mobile-menu__secondary_link:hover {
  background-color: rgba(216, 216, 216, 0.5);
}

.mobile-menu__link:first-of-type, .mobile-menu__secondary_link:first-of-type {
  border-top: 1px solid #D8D8D8;
}

.mobile-menu__link.dropdown, .dropdown.mobile-menu__secondary_link {
  position: relative;
}

.mobile-menu__link img, .mobile-menu__secondary_link img {
  position: absolute;
  right: 33px;
  bottom: 25px;
  -webkit-transition: all 0.4s ease;
  transition: all 0.4s ease;
}

.mobile-menu__link .mobile-menu__minimize, .mobile-menu__secondary_link .mobile-menu__minimize {
  bottom: 30px;
  opacity: 0;
}

.mobile-menu__link.active .mobile-menu__minimize, .active.mobile-menu__secondary_link .mobile-menu__minimize {
  opacity: 1;
}

.mobile-menu__link.active .mobile-menu__expand, .active.mobile-menu__secondary_link .mobile-menu__expand {
  opacity: 0;
}

.mobile-menu__footer {
  padding: 72px 20px 30px 20px;
}

.mobile-menu__footer_title {
  font-size: 16.8px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: 0.0444rem;
  color: #1B212D;
  margin-bottom: 16px;
}

.mobile-menu__social-link {
  font-size: 15px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.0444rem;
  color: #1B212D;
}

.mobile-menu__social-link i {
  font-size: 20px;
  margin-right: 12px;
}

.mobile-menu__social-link:first-of-type {
  margin-right: 30px;
}

.mobile-menu__secondary {
  height: 0;
  overflow: hidden;
  -webkit-transition: all 0.4s ease;
  transition: all 0.4s ease;
}

.mobile-menu__secondary_link {
  color: white;
  background-color: #4a90e2;
  border-bottom: 1px solid white;
}

.mobile-menu__secondary_link:first-of-type {
  border-top: none;
}

.mobile-menu__secondary_link:last-of-type {
  border-bottom: 1px solid #D8D8D8;
}

.blog .row {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
}

.blog__tags {
  margin-top: 60px;
  margin-bottom: 50px;
}

.blog__tags_title {
  margin-bottom: 33px;
  font-size: 16.8px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: 0.0444rem;
  color: #2e3542;
}

.blog__tag {
  font-size: 16.8px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.0444rem;
  color: #000;
  border: solid 1px #d8d8d8;
  padding: 8px 12px 10px;
  margin-right: 15px;
}

.blog__tag.active {
  background-color: black;
}

.blog__posts {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-flex-wrap: wrap;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
}

.post {
  width: 100%;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
  margin-bottom: 80px;
}

@media (min-width: 768px) {
  .post {
    -webkit-box-flex: 1;
    -webkit-flex: 1 0 350px;
    -ms-flex: 1 0 350px;
    flex: 1 0 350px;
  }
}

.post:nth-of-type(odd) {
  margin-right: 30px;
}

.post__image-wrap {
  margin-bottom: 35px;
  position: relative;
}

.post__image {
  width: 100%;
}

.post__date {
  position: absolute;
  left: 0;
  top: 30px;
  padding: 7px 22px;
  background-color: #4a90e2;
  font-size: 16.8px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: 0.6px;
  color: #fff;
}

.post__title {
  font-size: 29.1px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.9px;
  color: #2e3542;
  margin-bottom: 12px;
}

.post__author {
  font-size: 16.8px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.0444rem;
  color: #000;
  margin-bottom: 30px;
}

.post__opening-paragraph {
  font-size: 20.7px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.8px;
  color: #000;
}

.post__read-more {
  font-size: 20.7px;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: 0.8px;
  color: #4a90e2;
}

.blog-page__image {
  width: 100%;
  margin-bottom: 35px;
}

@media (min-width: 768px) {
  .blog-page__image {
    margin-bottom: 70px;
  }
}

.blog-page__intro {
  margin-left: auto;
  margin-right: auto;
  border-bottom: 1px solid #D8D8D8;
  margin-bottom: 30px;
  width: 100%;
}

@media (min-width: 768px) {
  .blog-page__intro {
    margin-bottom: 60px;
  }
}

.blog-page__title {
  font-size: 29.1px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.025rem;
  color: #2e3542;
  text-align: center;
  max-width: 826px;
  margin-right: auto;
  margin-left: auto;
  margin-bottom: 22px;
}

@media (min-width: 768px) {
  .blog-page__title {
    font-size: 49.95px;
    font-weight: 700;
    line-height: 1;
    letter-spacing: 0.025rem;
    color: #2e3542;
    margin-bottom: 43px;
  }
}

.blog-page__details {
  font-size: 16.8px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.6px;
  color: #1B212D;
  text-align: center;
  max-width: 661px;
  margin: 0 auto 30px;
}

@media (min-width: 768px) {
  .blog-page__details {
    margin-bottom: 60px;
  }
}

.blog-page__opening-paragraph {
  font-size: 20.7px;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: 0.75;
  color: #1B212D;
  margin-bottom: 25px;
}

@media (min-width: 768px) {
  .blog-page__opening-paragraph {
    margin-bottom: 30px;
  }
}

.blog-page__content {
  max-width: 750px;
  margin-left: auto;
  margin-right: auto;
}

.contact__row {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
  -ms-flex-pack: justify;
  justify-content: space-between;
}

.contact__content {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
  -webkit-box-flex: 1;
  -webkit-flex: 1 0 300px;
  -ms-flex: 1 0 300px;
  flex: 1 0 300px;
}

.contact__content_container {
  padding-top: 80px;
  padding-bottom: 80px;
}

@media (min-width: 768px) {
  .contact__content_container {
    padding-top: 120px;
    padding-bottom: 100px;
  }
}

.contact__content_heading {
  font-size: 20.7px;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: 0.8px;
  color: #000;
  margin-bottom: 10px;
  text-align: center;
  margin-left: auto;
  margin-right: auto;
  max-width: 370px;
}

@media (min-width: 768px) {
  .contact__content_heading {
    text-align: left;
    margin-left: 0;
  }
}

.contact__content_sub-heading {
  font-size: 15px;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: 0.8px;
  color: #000;
  margin-bottom: 40px;
  text-align: center;
  margin-left: auto;
  margin-right: auto;
  max-width: 370px;
}

@media (min-width: 768px) {
  .contact__content_sub-heading {
    text-align: left;
    margin-left: 0;
  }
}

.contact__content_info-row {
  font-size: 16.8px;
  font-weight: 400;
  line-height: 2.5;
  letter-spacing: 0.6px;
  color: #000;
  max-width: 274px;
  text-align: center;
  margin-left: auto;
  margin-right: auto;
}

@media (min-width: 768px) {
  .contact__content_info-row {
    text-align: left;
    margin-left: 0;
  }
}

.contact__content_info-row:last-of-type {
  margin-bottom: 40px;
}

@media (min-width: 768px) {
  .contact__content_info-row:last-of-type {
    margin-bottom: 0;
  }
}

.contact__form {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
  width: 100%;
}

@media (min-width: 768px) {
  .contact__form {
    -webkit-box-flex: 1;
    -webkit-flex: 1 0 300px;
    -ms-flex: 1 0 300px;
    flex: 1 0 300px;
    width: auto;
  }
}

.contact__form input, .contact__form textarea {
  width: 100%;
  height: 60px;
  border: solid 0.5px #d3d3d3;
  background-color: #fff;
  margin-bottom: 30px;
  padding: 17px 28px;
  font-size: 16.8px;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 0.0444rem;
  color: #1B212D;
}

.contact__form textarea {
  height: 120px;
}

.contact__form .mdc-checkbox__native-control {
  width: 18px;
  height: 18px;
  padding: 0;
  margin-bottom: 0;
}

.contact__form_submit-wrap {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
  -ms-flex-pack: center;
  justify-content: center;
  -webkit-box-align: center;
  -webkit-align-items: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
}

@media (min-width: 768px) {
  .contact__form_submit-wrap {
    -webkit-box-pack: justify;
    -webkit-justify-content: space-between;
    -ms-flex-pack: justify;
    justify-content: space-between;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -webkit-flex-direction: row;
    -ms-flex-direction: row;
    flex-direction: row;
  }
}

.contact__form_updates-wrap {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  margin-bottom: 25px;
  -webkit-box-align: center;
  -webkit-align-items: center;
  -ms-flex-align: center;
  align-items: center;
}

@media (min-width: 768px) {
  .contact__form_updates-wrap {
    margin-bottom: 0;
  }
}

.contact__form_updates-wrap .mdc-checkbox {
  -webkit-flex-shrink: 0;
  -ms-flex-negative: 0;
  flex-shrink: 0;
  margin-top: -1px;
}

.contact__form span {
  font-size: 12.495px;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: 0.5px;
  color: #000;
  margin-left: 10px;
}

.contact__submit {
  position: relative;
}

.contact__submit svg {
  position: absolute;
  top: 12px;
  left: 0;
  right: 0;
  margin: 0 auto;
  opacity: 0;
  -webkit-transition: all 0.4s ease;
  transition: all 0.4s ease;
}

.contact__submit svg rect {
  fill: white;
}

.contact__submit.active {
  color: transparent !important;
  background-color: #fcbf61;
}

.contact__submit.active svg {
  opacity: 1;
}

.contact__submit.success {
  visibility: hidden;
  opacity: 0;
}

.contact__submit.error {
  background-color: #ff5537;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY3NzIiwic291cmNlcyI6WyJpbmRleC5zY3NzIiwiX3ZhcmlhYmxlcy5zY3NzIiwiYmxvY2tzL19taXhpbnMuc2NzcyIsImxpYi9mb250LWF3ZXNvbWUtNC42LjMvc3R5bGVzaGVldHMvZm9udC1hd2Vzb21lLnNjc3MiLCJsaWIvZm9udC1hd2Vzb21lLTQuNi4zL3N0eWxlc2hlZXRzL192YXJpYWJsZXMuc2NzcyIsImxpYi9mb250LWF3ZXNvbWUtNC42LjMvc3R5bGVzaGVldHMvX21peGlucy5zY3NzIiwibGliL2ZvbnQtYXdlc29tZS00LjYuMy9zdHlsZXNoZWV0cy9fcGF0aC5zY3NzIiwibGliL2ZvbnQtYXdlc29tZS00LjYuMy9zdHlsZXNoZWV0cy9fY29yZS5zY3NzIiwibGliL2ZvbnQtYXdlc29tZS00LjYuMy9zdHlsZXNoZWV0cy9fbGFyZ2VyLnNjc3MiLCJsaWIvZm9udC1hd2Vzb21lLTQuNi4zL3N0eWxlc2hlZXRzL19maXhlZC13aWR0aC5zY3NzIiwibGliL2ZvbnQtYXdlc29tZS00LjYuMy9zdHlsZXNoZWV0cy9fbGlzdC5zY3NzIiwibGliL2ZvbnQtYXdlc29tZS00LjYuMy9zdHlsZXNoZWV0cy9fYm9yZGVyZWQtcHVsbGVkLnNjc3MiLCJsaWIvZm9udC1hd2Vzb21lLTQuNi4zL3N0eWxlc2hlZXRzL19hbmltYXRlZC5zY3NzIiwibGliL2ZvbnQtYXdlc29tZS00LjYuMy9zdHlsZXNoZWV0cy9fcm90YXRlZC1mbGlwcGVkLnNjc3MiLCJsaWIvZm9udC1hd2Vzb21lLTQuNi4zL3N0eWxlc2hlZXRzL19zdGFja2VkLnNjc3MiLCJsaWIvZm9udC1hd2Vzb21lLTQuNi4zL3N0eWxlc2hlZXRzL19pY29ucy5zY3NzIiwibGliL2ZvbnQtYXdlc29tZS00LjYuMy9zdHlsZXNoZWV0cy9fc2NyZWVuLXJlYWRlci5zY3NzIiwibGliL21hdGVyaWFsLWNvbXBvbmVudHMtd2ViLnNjc3MiLCJfbGF5b3V0LnNjc3MiLCJfcmVzZXQuc2NzcyIsImJsb2Nrcy9fYmxvZy13aWRnZXRzLnNjc3MiLCJibG9ja3MvX2J1dHRvbnMuc2NzcyIsImJsb2Nrcy9fY29tbW9uLnNjc3MiLCJibG9ja3MvX2Zvb3Rlci5zY3NzIiwiYmxvY2tzL19mdW5jdGlvbnMuc2NzcyIsImJsb2Nrcy9faGVhZGVyLnNjc3MiLCJibG9ja3MvX2hlcm8uc2NzcyIsImJsb2Nrcy9fc2lkZS1uYXZpZ2F0aW9uLnNjc3MiLCJibG9ja3MvX3NsaWRlci5zY3NzIiwiYmxvY2tzL193aWRnZXRzLnNjc3MiLCJibG9ja3MvX21vYmlsZS1tZW51LnNjc3MiLCJwYWdlcy9fYmxvZy5zY3NzIiwicGFnZXMvX2NvbnRhY3Quc2NzcyIsInBhZ2VzL19wcm9kdWN0LXBhZ2Uuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHbG9iYWwgdmFyaWFibGVzXG5AaW1wb3J0IFwidmFyaWFibGVzXCI7XG5AaW1wb3J0IFwiYmxvY2tzL21peGluc1wiO1xuXG4vLyBMaWJyYXJpZXNcbkBpbXBvcnQgXCJsaWIvZm9udC1hd2Vzb21lLTQuNi4zL3N0eWxlc2hlZXRzL2ZvbnQtYXdlc29tZS5zY3NzXCI7XG5AaW1wb3J0IFwibGliL21hdGVyaWFsLWNvbXBvbmVudHMtd2ViLnNjc3NcIjtcblxuLy8gUmVzZXRzXG5AaW1wb3J0IFwibGF5b3V0XCI7XG5AaW1wb3J0IFwicmVzZXRcIjtcblxuLy8gQmxvY2tzXG5AaW1wb3J0IFwiYmxvY2tzL2Jsb2ctd2lkZ2V0c1wiO1xuQGltcG9ydCBcImJsb2Nrcy9idXR0b25zXCI7XG5AaW1wb3J0IFwiYmxvY2tzL2NvbW1vblwiO1xuQGltcG9ydCBcImJsb2Nrcy9mb290ZXJcIjtcbkBpbXBvcnQgXCJibG9ja3MvZnVuY3Rpb25zXCI7XG5AaW1wb3J0IFwiYmxvY2tzL2hlYWRlclwiO1xuQGltcG9ydCBcImJsb2Nrcy9oZXJvXCI7XG5AaW1wb3J0IFwiYmxvY2tzL21peGluc1wiO1xuQGltcG9ydCBcImJsb2Nrcy9zaWRlLW5hdmlnYXRpb25cIjtcbkBpbXBvcnQgXCJibG9ja3Mvc2xpZGVyXCI7XG5AaW1wb3J0IFwiYmxvY2tzL3dpZGdldHNcIjtcbkBpbXBvcnQgXCJibG9ja3MvbW9iaWxlLW1lbnVcIjtcblxuLy8gUGFnZXNcbkBpbXBvcnQgXCJwYWdlcy9ibG9nXCI7XG5AaW1wb3J0IFwicGFnZXMvY29udGFjdFwiO1xuQGltcG9ydCBcInBhZ2VzL3Byb2R1Y3QtcGFnZVwiO1xuIiwiLy8gQmFzZSBDb2xvcnNcbiRoZWFkZXItdGV4dC1jb2xvcjogIzFCMjEyRDtcbiRoZWFkZXItYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG5cbiRib2R5LXRleHQtY29sb3I6ICMxQjIxMkQ7XG4kYm9keS1iYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcblxuJGZvb3Rlci10ZXh0LWNvbG9yOiB3aGl0ZTtcbiRmb290ZXItYmFja2dyb3VuZC1jb2xvcjogIzIxMjkzOTtcblxuJHBsYWNlaG9sZGVyOiAkYm9keS10ZXh0LWNvbG9yO1xuJGNhbGwtdG8tYWN0aW9uLWhpZ2hsaWdodDogIzRhOTBlMjtcbiRzZWNvbmRhcnktY2FsbC10by1hY3Rpb24taGlnaGxpZ2h0OiAjZmNiZjYxO1xuJGJvcmRlci1jb2xvcjogI0Q4RDhEODtcbiRzZXJ2aWNlcy10ZXh0LWNvbG9yOiAjMmUzNTQyO1xuXG4vLyBEaW1lbnNpb25zXG4kc2NyZWVuLXhzOiAgIDQ4MHB4OyAgLy8gTW9iaWxlXG4kc2NyZWVuLXNtOiAgIDc2OHB4OyAgLy8gVGFibGV0XG4kc2NyZWVuLW1kOiAgIDk5MnB4OyAvLyBUYWJsZXQgbGFyZ2VcbiRzY3JlZW4tbGc6ICAgMTE3MHB4OyAvLyBEZXNrdG9wXG4kc2NyZWVuLXhsZzogIDE1NzBweDsgLy8gTGFyZ2UgZGVza3RvcFxuXG4vLyBMYXlvdXRcbiRjb250YWluZXItbGltaXRlcjogMzBweDtcblxuLy9Gb250XG4kYmFzZS1mb250LWZhbWlseTogUm9ib3RvLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmICFkZWZhdWx0O1xuJGJhc2UtbGluZS1oZWlnaHQ6IDEuMjtcblxuLy8gRm9udCBTaXplXG4kYmFzZS1mb250LXNpemU6IDE1cHg7IC8qICgkYmFzZS1mb250LXNpemUgKiAxKSArIDBweDsgKi9cblxuLy8gU3RhbmRhcmQgdHJhbnNpdGlvbiBzcGVlZFxuJHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7IiwiLy8gUmVzcG9uc2l2ZSBzaXplc1xuQG1peGluIG1vYmlsZSB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiRzY3JlZW4teHMpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gdGFibGV0IHtcbiAgQG1lZGlhIChtaW4td2lkdGg6JHNjcmVlbi1zbSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiB0YWJsZXQtbGcge1xuICBAbWVkaWEgKG1pbi13aWR0aDokc2NyZWVuLW1kKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGRlc2t0b3Age1xuICBAbWVkaWEgKG1pbi13aWR0aDokc2NyZWVuLWxnKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGRlc2t0b3AtbGcge1xuICBAbWVkaWEgKG1pbi13aWR0aDokc2NyZWVuLXhsZykge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIERlZmF1bHQgaW1hZ2Ugc2V0dGluZ3Mgd2hlbiB1c2VkIGFzIGEgY3NzIGJhY2tncm91bmRcbkBtaXhpbiBpbWFnZV9iYWNrZ3JvdW5kIHtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbn1cblxuQG1peGluIHRleHQtc20oJGxldHRlci1zcGFjaW5nOiAwLjA0NDRyZW0sICRjb2xvcjogJGJvZHktdGV4dC1jb2xvciwgJHdlaWdodDogMzAwLCAkbGluZS1oZWlnaHQ6IDEuMiwgJG11bHRpcGxpZXI6IDEpIHtcbiAgZm9udC1zaXplOiAoJGJhc2UtZm9udC1zaXplICogJG11bHRpcGxpZXIpO1xuICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodDtcbiAgbGV0dGVyLXNwYWNpbmc6ICRsZXR0ZXItc3BhY2luZztcbiAgY29sb3I6ICRjb2xvcjtcbn1cblxuLy8gTG92ZWx5IG1peGlucyBmb3IgbWFraW5nIGFsbCB5b3VyIGZvbnQgbmVlZHMgZGVsaWdodGZ1bFxuQG1peGluICB0ZXh0LW1kKCRsZXR0ZXItc3BhY2luZzogMC4wMzEycmVtLCAkY29sb3I6ICRib2R5LXRleHQtY29sb3IsICR3ZWlnaHQ6IDMwMCwgJGxpbmUtaGVpZ2h0OiAxLjIsICRtdWx0aXBsaWVyOiAxLjM4KSB7XG4gIGZvbnQtc2l6ZTogKCRiYXNlLWZvbnQtc2l6ZSAqICRtdWx0aXBsaWVyKTtcbiAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XG4gIGxldHRlci1zcGFjaW5nOiAkbGV0dGVyLXNwYWNpbmc7XG4gIGNvbG9yOiAkY29sb3I7XG59XG5cbkBtaXhpbiB0ZXh0LWxnKCRsZXR0ZXItc3BhY2luZzogMC4wMjVyZW0sICRjb2xvcjogaW5oZXJpdCwgJHdlaWdodDogNzAwLCAkbGluZS1oZWlnaHQ6IDEsICRtdWx0aXBsaWVyOiAyLjIyKSB7XG4gIGZvbnQtc2l6ZTogKCRiYXNlLWZvbnQtc2l6ZSAqICRtdWx0aXBsaWVyKTtcbiAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XG4gIGxldHRlci1zcGFjaW5nOiAkbGV0dGVyLXNwYWNpbmc7XG4gIGNvbG9yOiAkY29sb3I7XG59XG5cbi8vIFNlbGVjdCBib3ggYXBwZWFyYW5jZSBtaXhpblxuQG1peGluIGFwcGVhcmFuY2UoJGJvcmRlci1yYWRpdXM6IDBweCkge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cztcbn1cbiIsIi8qIVxuICogIEZvbnQgQXdlc29tZSA0LjYuMyBieSBAZGF2ZWdhbmR5IC0gaHR0cDovL2ZvbnRhd2Vzb21lLmlvIC0gQGZvbnRhd2Vzb21lXG4gKiAgTGljZW5zZSAtIGh0dHA6Ly9mb250YXdlc29tZS5pby9saWNlbnNlIChGb250OiBTSUwgT0ZMIDEuMSwgQ1NTOiBNSVQgTGljZW5zZSlcbiAqL1xuXG5AaW1wb3J0IFwidmFyaWFibGVzXCI7XG5AaW1wb3J0IFwibWl4aW5zXCI7XG5AaW1wb3J0IFwicGF0aFwiO1xuQGltcG9ydCBcImNvcmVcIjtcbkBpbXBvcnQgXCJsYXJnZXJcIjtcbkBpbXBvcnQgXCJmaXhlZC13aWR0aFwiO1xuQGltcG9ydCBcImxpc3RcIjtcbkBpbXBvcnQgXCJib3JkZXJlZC1wdWxsZWRcIjtcbkBpbXBvcnQgXCJhbmltYXRlZFwiO1xuQGltcG9ydCBcInJvdGF0ZWQtZmxpcHBlZFwiO1xuQGltcG9ydCBcInN0YWNrZWRcIjtcbkBpbXBvcnQgXCJpY29uc1wiO1xuQGltcG9ydCBcInNjcmVlbi1yZWFkZXJcIjtcbiIsIi8vIFZhcmlhYmxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJGZhLWZvbnQtcGF0aDogICAgICAgIFwiL3N0YXRpYy9mb250c1wiICFkZWZhdWx0O1xuJGZhLWZvbnQtc2l6ZS1iYXNlOiAgIDE0cHggIWRlZmF1bHQ7XG4kZmEtbGluZS1oZWlnaHQtYmFzZTogMSAhZGVmYXVsdDtcbi8vJGZhLWZvbnQtcGF0aDogICAgICAgIFwiLy9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS9mb250LWF3ZXNvbWUvNC42LjMvZm9udHNcIiAhZGVmYXVsdDsgLy8gZm9yIHJlZmVyZW5jaW5nIEJvb3RzdHJhcCBDRE4gZm9udCBmaWxlcyBkaXJlY3RseVxuJGZhLWNzcy1wcmVmaXg6ICAgICAgIGZhICFkZWZhdWx0O1xuJGZhLXZlcnNpb246ICAgICAgICAgIFwiNC42LjNcIiAhZGVmYXVsdDtcbiRmYS1ib3JkZXItY29sb3I6ICAgICAjZWVlICFkZWZhdWx0O1xuJGZhLWludmVyc2U6ICAgICAgICAgICNmZmYgIWRlZmF1bHQ7XG4kZmEtbGktd2lkdGg6ICAgICAgICAgKDMwZW0gLyAxNCkgIWRlZmF1bHQ7XG5cbiRmYS12YXItNTAwcHg6IFwiXFxmMjZlXCI7XG4kZmEtdmFyLWFkanVzdDogXCJcXGYwNDJcIjtcbiRmYS12YXItYWRuOiBcIlxcZjE3MFwiO1xuJGZhLXZhci1hbGlnbi1jZW50ZXI6IFwiXFxmMDM3XCI7XG4kZmEtdmFyLWFsaWduLWp1c3RpZnk6IFwiXFxmMDM5XCI7XG4kZmEtdmFyLWFsaWduLWxlZnQ6IFwiXFxmMDM2XCI7XG4kZmEtdmFyLWFsaWduLXJpZ2h0OiBcIlxcZjAzOFwiO1xuJGZhLXZhci1hbWF6b246IFwiXFxmMjcwXCI7XG4kZmEtdmFyLWFtYnVsYW5jZTogXCJcXGYwZjlcIjtcbiRmYS12YXItYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmc6IFwiXFxmMmEzXCI7XG4kZmEtdmFyLWFuY2hvcjogXCJcXGYxM2RcIjtcbiRmYS12YXItYW5kcm9pZDogXCJcXGYxN2JcIjtcbiRmYS12YXItYW5nZWxsaXN0OiBcIlxcZjIwOVwiO1xuJGZhLXZhci1hbmdsZS1kb3VibGUtZG93bjogXCJcXGYxMDNcIjtcbiRmYS12YXItYW5nbGUtZG91YmxlLWxlZnQ6IFwiXFxmMTAwXCI7XG4kZmEtdmFyLWFuZ2xlLWRvdWJsZS1yaWdodDogXCJcXGYxMDFcIjtcbiRmYS12YXItYW5nbGUtZG91YmxlLXVwOiBcIlxcZjEwMlwiO1xuJGZhLXZhci1hbmdsZS1kb3duOiBcIlxcZjEwN1wiO1xuJGZhLXZhci1hbmdsZS1sZWZ0OiBcIlxcZjEwNFwiO1xuJGZhLXZhci1hbmdsZS1yaWdodDogXCJcXGYxMDVcIjtcbiRmYS12YXItYW5nbGUtdXA6IFwiXFxmMTA2XCI7XG4kZmEtdmFyLWFwcGxlOiBcIlxcZjE3OVwiO1xuJGZhLXZhci1hcmNoaXZlOiBcIlxcZjE4N1wiO1xuJGZhLXZhci1hcmVhLWNoYXJ0OiBcIlxcZjFmZVwiO1xuJGZhLXZhci1hcnJvdy1jaXJjbGUtZG93bjogXCJcXGYwYWJcIjtcbiRmYS12YXItYXJyb3ctY2lyY2xlLWxlZnQ6IFwiXFxmMGE4XCI7XG4kZmEtdmFyLWFycm93LWNpcmNsZS1vLWRvd246IFwiXFxmMDFhXCI7XG4kZmEtdmFyLWFycm93LWNpcmNsZS1vLWxlZnQ6IFwiXFxmMTkwXCI7XG4kZmEtdmFyLWFycm93LWNpcmNsZS1vLXJpZ2h0OiBcIlxcZjE4ZVwiO1xuJGZhLXZhci1hcnJvdy1jaXJjbGUtby11cDogXCJcXGYwMWJcIjtcbiRmYS12YXItYXJyb3ctY2lyY2xlLXJpZ2h0OiBcIlxcZjBhOVwiO1xuJGZhLXZhci1hcnJvdy1jaXJjbGUtdXA6IFwiXFxmMGFhXCI7XG4kZmEtdmFyLWFycm93LWRvd246IFwiXFxmMDYzXCI7XG4kZmEtdmFyLWFycm93LWxlZnQ6IFwiXFxmMDYwXCI7XG4kZmEtdmFyLWFycm93LXJpZ2h0OiBcIlxcZjA2MVwiO1xuJGZhLXZhci1hcnJvdy11cDogXCJcXGYwNjJcIjtcbiRmYS12YXItYXJyb3dzOiBcIlxcZjA0N1wiO1xuJGZhLXZhci1hcnJvd3MtYWx0OiBcIlxcZjBiMlwiO1xuJGZhLXZhci1hcnJvd3MtaDogXCJcXGYwN2VcIjtcbiRmYS12YXItYXJyb3dzLXY6IFwiXFxmMDdkXCI7XG4kZmEtdmFyLWFzbC1pbnRlcnByZXRpbmc6IFwiXFxmMmEzXCI7XG4kZmEtdmFyLWFzc2lzdGl2ZS1saXN0ZW5pbmctc3lzdGVtczogXCJcXGYyYTJcIjtcbiRmYS12YXItYXN0ZXJpc2s6IFwiXFxmMDY5XCI7XG4kZmEtdmFyLWF0OiBcIlxcZjFmYVwiO1xuJGZhLXZhci1hdWRpby1kZXNjcmlwdGlvbjogXCJcXGYyOWVcIjtcbiRmYS12YXItYXV0b21vYmlsZTogXCJcXGYxYjlcIjtcbiRmYS12YXItYmFja3dhcmQ6IFwiXFxmMDRhXCI7XG4kZmEtdmFyLWJhbGFuY2Utc2NhbGU6IFwiXFxmMjRlXCI7XG4kZmEtdmFyLWJhbjogXCJcXGYwNWVcIjtcbiRmYS12YXItYmFuazogXCJcXGYxOWNcIjtcbiRmYS12YXItYmFyLWNoYXJ0OiBcIlxcZjA4MFwiO1xuJGZhLXZhci1iYXItY2hhcnQtbzogXCJcXGYwODBcIjtcbiRmYS12YXItYmFyY29kZTogXCJcXGYwMmFcIjtcbiRmYS12YXItYmFyczogXCJcXGYwYzlcIjtcbiRmYS12YXItYmF0dGVyeS0wOiBcIlxcZjI0NFwiO1xuJGZhLXZhci1iYXR0ZXJ5LTE6IFwiXFxmMjQzXCI7XG4kZmEtdmFyLWJhdHRlcnktMjogXCJcXGYyNDJcIjtcbiRmYS12YXItYmF0dGVyeS0zOiBcIlxcZjI0MVwiO1xuJGZhLXZhci1iYXR0ZXJ5LTQ6IFwiXFxmMjQwXCI7XG4kZmEtdmFyLWJhdHRlcnktZW1wdHk6IFwiXFxmMjQ0XCI7XG4kZmEtdmFyLWJhdHRlcnktZnVsbDogXCJcXGYyNDBcIjtcbiRmYS12YXItYmF0dGVyeS1oYWxmOiBcIlxcZjI0MlwiO1xuJGZhLXZhci1iYXR0ZXJ5LXF1YXJ0ZXI6IFwiXFxmMjQzXCI7XG4kZmEtdmFyLWJhdHRlcnktdGhyZWUtcXVhcnRlcnM6IFwiXFxmMjQxXCI7XG4kZmEtdmFyLWJlZDogXCJcXGYyMzZcIjtcbiRmYS12YXItYmVlcjogXCJcXGYwZmNcIjtcbiRmYS12YXItYmVoYW5jZTogXCJcXGYxYjRcIjtcbiRmYS12YXItYmVoYW5jZS1zcXVhcmU6IFwiXFxmMWI1XCI7XG4kZmEtdmFyLWJlbGw6IFwiXFxmMGYzXCI7XG4kZmEtdmFyLWJlbGwtbzogXCJcXGYwYTJcIjtcbiRmYS12YXItYmVsbC1zbGFzaDogXCJcXGYxZjZcIjtcbiRmYS12YXItYmVsbC1zbGFzaC1vOiBcIlxcZjFmN1wiO1xuJGZhLXZhci1iaWN5Y2xlOiBcIlxcZjIwNlwiO1xuJGZhLXZhci1iaW5vY3VsYXJzOiBcIlxcZjFlNVwiO1xuJGZhLXZhci1iaXJ0aGRheS1jYWtlOiBcIlxcZjFmZFwiO1xuJGZhLXZhci1iaXRidWNrZXQ6IFwiXFxmMTcxXCI7XG4kZmEtdmFyLWJpdGJ1Y2tldC1zcXVhcmU6IFwiXFxmMTcyXCI7XG4kZmEtdmFyLWJpdGNvaW46IFwiXFxmMTVhXCI7XG4kZmEtdmFyLWJsYWNrLXRpZTogXCJcXGYyN2VcIjtcbiRmYS12YXItYmxpbmQ6IFwiXFxmMjlkXCI7XG4kZmEtdmFyLWJsdWV0b290aDogXCJcXGYyOTNcIjtcbiRmYS12YXItYmx1ZXRvb3RoLWI6IFwiXFxmMjk0XCI7XG4kZmEtdmFyLWJvbGQ6IFwiXFxmMDMyXCI7XG4kZmEtdmFyLWJvbHQ6IFwiXFxmMGU3XCI7XG4kZmEtdmFyLWJvbWI6IFwiXFxmMWUyXCI7XG4kZmEtdmFyLWJvb2s6IFwiXFxmMDJkXCI7XG4kZmEtdmFyLWJvb2ttYXJrOiBcIlxcZjAyZVwiO1xuJGZhLXZhci1ib29rbWFyay1vOiBcIlxcZjA5N1wiO1xuJGZhLXZhci1icmFpbGxlOiBcIlxcZjJhMVwiO1xuJGZhLXZhci1icmllZmNhc2U6IFwiXFxmMGIxXCI7XG4kZmEtdmFyLWJ0YzogXCJcXGYxNWFcIjtcbiRmYS12YXItYnVnOiBcIlxcZjE4OFwiO1xuJGZhLXZhci1idWlsZGluZzogXCJcXGYxYWRcIjtcbiRmYS12YXItYnVpbGRpbmctbzogXCJcXGYwZjdcIjtcbiRmYS12YXItYnVsbGhvcm46IFwiXFxmMGExXCI7XG4kZmEtdmFyLWJ1bGxzZXllOiBcIlxcZjE0MFwiO1xuJGZhLXZhci1idXM6IFwiXFxmMjA3XCI7XG4kZmEtdmFyLWJ1eXNlbGxhZHM6IFwiXFxmMjBkXCI7XG4kZmEtdmFyLWNhYjogXCJcXGYxYmFcIjtcbiRmYS12YXItY2FsY3VsYXRvcjogXCJcXGYxZWNcIjtcbiRmYS12YXItY2FsZW5kYXI6IFwiXFxmMDczXCI7XG4kZmEtdmFyLWNhbGVuZGFyLWNoZWNrLW86IFwiXFxmMjc0XCI7XG4kZmEtdmFyLWNhbGVuZGFyLW1pbnVzLW86IFwiXFxmMjcyXCI7XG4kZmEtdmFyLWNhbGVuZGFyLW86IFwiXFxmMTMzXCI7XG4kZmEtdmFyLWNhbGVuZGFyLXBsdXMtbzogXCJcXGYyNzFcIjtcbiRmYS12YXItY2FsZW5kYXItdGltZXMtbzogXCJcXGYyNzNcIjtcbiRmYS12YXItY2FtZXJhOiBcIlxcZjAzMFwiO1xuJGZhLXZhci1jYW1lcmEtcmV0cm86IFwiXFxmMDgzXCI7XG4kZmEtdmFyLWNhcjogXCJcXGYxYjlcIjtcbiRmYS12YXItY2FyZXQtZG93bjogXCJcXGYwZDdcIjtcbiRmYS12YXItY2FyZXQtbGVmdDogXCJcXGYwZDlcIjtcbiRmYS12YXItY2FyZXQtcmlnaHQ6IFwiXFxmMGRhXCI7XG4kZmEtdmFyLWNhcmV0LXNxdWFyZS1vLWRvd246IFwiXFxmMTUwXCI7XG4kZmEtdmFyLWNhcmV0LXNxdWFyZS1vLWxlZnQ6IFwiXFxmMTkxXCI7XG4kZmEtdmFyLWNhcmV0LXNxdWFyZS1vLXJpZ2h0OiBcIlxcZjE1MlwiO1xuJGZhLXZhci1jYXJldC1zcXVhcmUtby11cDogXCJcXGYxNTFcIjtcbiRmYS12YXItY2FyZXQtdXA6IFwiXFxmMGQ4XCI7XG4kZmEtdmFyLWNhcnQtYXJyb3ctZG93bjogXCJcXGYyMThcIjtcbiRmYS12YXItY2FydC1wbHVzOiBcIlxcZjIxN1wiO1xuJGZhLXZhci1jYzogXCJcXGYyMGFcIjtcbiRmYS12YXItY2MtYW1leDogXCJcXGYxZjNcIjtcbiRmYS12YXItY2MtZGluZXJzLWNsdWI6IFwiXFxmMjRjXCI7XG4kZmEtdmFyLWNjLWRpc2NvdmVyOiBcIlxcZjFmMlwiO1xuJGZhLXZhci1jYy1qY2I6IFwiXFxmMjRiXCI7XG4kZmEtdmFyLWNjLW1hc3RlcmNhcmQ6IFwiXFxmMWYxXCI7XG4kZmEtdmFyLWNjLXBheXBhbDogXCJcXGYxZjRcIjtcbiRmYS12YXItY2Mtc3RyaXBlOiBcIlxcZjFmNVwiO1xuJGZhLXZhci1jYy12aXNhOiBcIlxcZjFmMFwiO1xuJGZhLXZhci1jZXJ0aWZpY2F0ZTogXCJcXGYwYTNcIjtcbiRmYS12YXItY2hhaW46IFwiXFxmMGMxXCI7XG4kZmEtdmFyLWNoYWluLWJyb2tlbjogXCJcXGYxMjdcIjtcbiRmYS12YXItY2hlY2s6IFwiXFxmMDBjXCI7XG4kZmEtdmFyLWNoZWNrLWNpcmNsZTogXCJcXGYwNThcIjtcbiRmYS12YXItY2hlY2stY2lyY2xlLW86IFwiXFxmMDVkXCI7XG4kZmEtdmFyLWNoZWNrLXNxdWFyZTogXCJcXGYxNGFcIjtcbiRmYS12YXItY2hlY2stc3F1YXJlLW86IFwiXFxmMDQ2XCI7XG4kZmEtdmFyLWNoZXZyb24tY2lyY2xlLWRvd246IFwiXFxmMTNhXCI7XG4kZmEtdmFyLWNoZXZyb24tY2lyY2xlLWxlZnQ6IFwiXFxmMTM3XCI7XG4kZmEtdmFyLWNoZXZyb24tY2lyY2xlLXJpZ2h0OiBcIlxcZjEzOFwiO1xuJGZhLXZhci1jaGV2cm9uLWNpcmNsZS11cDogXCJcXGYxMzlcIjtcbiRmYS12YXItY2hldnJvbi1kb3duOiBcIlxcZjA3OFwiO1xuJGZhLXZhci1jaGV2cm9uLWxlZnQ6IFwiXFxmMDUzXCI7XG4kZmEtdmFyLWNoZXZyb24tcmlnaHQ6IFwiXFxmMDU0XCI7XG4kZmEtdmFyLWNoZXZyb24tdXA6IFwiXFxmMDc3XCI7XG4kZmEtdmFyLWNoaWxkOiBcIlxcZjFhZVwiO1xuJGZhLXZhci1jaHJvbWU6IFwiXFxmMjY4XCI7XG4kZmEtdmFyLWNpcmNsZTogXCJcXGYxMTFcIjtcbiRmYS12YXItY2lyY2xlLW86IFwiXFxmMTBjXCI7XG4kZmEtdmFyLWNpcmNsZS1vLW5vdGNoOiBcIlxcZjFjZVwiO1xuJGZhLXZhci1jaXJjbGUtdGhpbjogXCJcXGYxZGJcIjtcbiRmYS12YXItY2xpcGJvYXJkOiBcIlxcZjBlYVwiO1xuJGZhLXZhci1jbG9jay1vOiBcIlxcZjAxN1wiO1xuJGZhLXZhci1jbG9uZTogXCJcXGYyNGRcIjtcbiRmYS12YXItY2xvc2U6IFwiXFxmMDBkXCI7XG4kZmEtdmFyLWNsb3VkOiBcIlxcZjBjMlwiO1xuJGZhLXZhci1jbG91ZC1kb3dubG9hZDogXCJcXGYwZWRcIjtcbiRmYS12YXItY2xvdWQtdXBsb2FkOiBcIlxcZjBlZVwiO1xuJGZhLXZhci1jbnk6IFwiXFxmMTU3XCI7XG4kZmEtdmFyLWNvZGU6IFwiXFxmMTIxXCI7XG4kZmEtdmFyLWNvZGUtZm9yazogXCJcXGYxMjZcIjtcbiRmYS12YXItY29kZXBlbjogXCJcXGYxY2JcIjtcbiRmYS12YXItY29kaWVwaWU6IFwiXFxmMjg0XCI7XG4kZmEtdmFyLWNvZmZlZTogXCJcXGYwZjRcIjtcbiRmYS12YXItY29nOiBcIlxcZjAxM1wiO1xuJGZhLXZhci1jb2dzOiBcIlxcZjA4NVwiO1xuJGZhLXZhci1jb2x1bW5zOiBcIlxcZjBkYlwiO1xuJGZhLXZhci1jb21tZW50OiBcIlxcZjA3NVwiO1xuJGZhLXZhci1jb21tZW50LW86IFwiXFxmMGU1XCI7XG4kZmEtdmFyLWNvbW1lbnRpbmc6IFwiXFxmMjdhXCI7XG4kZmEtdmFyLWNvbW1lbnRpbmctbzogXCJcXGYyN2JcIjtcbiRmYS12YXItY29tbWVudHM6IFwiXFxmMDg2XCI7XG4kZmEtdmFyLWNvbW1lbnRzLW86IFwiXFxmMGU2XCI7XG4kZmEtdmFyLWNvbXBhc3M6IFwiXFxmMTRlXCI7XG4kZmEtdmFyLWNvbXByZXNzOiBcIlxcZjA2NlwiO1xuJGZhLXZhci1jb25uZWN0ZGV2ZWxvcDogXCJcXGYyMGVcIjtcbiRmYS12YXItY29udGFvOiBcIlxcZjI2ZFwiO1xuJGZhLXZhci1jb3B5OiBcIlxcZjBjNVwiO1xuJGZhLXZhci1jb3B5cmlnaHQ6IFwiXFxmMWY5XCI7XG4kZmEtdmFyLWNyZWF0aXZlLWNvbW1vbnM6IFwiXFxmMjVlXCI7XG4kZmEtdmFyLWNyZWRpdC1jYXJkOiBcIlxcZjA5ZFwiO1xuJGZhLXZhci1jcmVkaXQtY2FyZC1hbHQ6IFwiXFxmMjgzXCI7XG4kZmEtdmFyLWNyb3A6IFwiXFxmMTI1XCI7XG4kZmEtdmFyLWNyb3NzaGFpcnM6IFwiXFxmMDViXCI7XG4kZmEtdmFyLWNzczM6IFwiXFxmMTNjXCI7XG4kZmEtdmFyLWN1YmU6IFwiXFxmMWIyXCI7XG4kZmEtdmFyLWN1YmVzOiBcIlxcZjFiM1wiO1xuJGZhLXZhci1jdXQ6IFwiXFxmMGM0XCI7XG4kZmEtdmFyLWN1dGxlcnk6IFwiXFxmMGY1XCI7XG4kZmEtdmFyLWRhc2hib2FyZDogXCJcXGYwZTRcIjtcbiRmYS12YXItZGFzaGN1YmU6IFwiXFxmMjEwXCI7XG4kZmEtdmFyLWRhdGFiYXNlOiBcIlxcZjFjMFwiO1xuJGZhLXZhci1kZWFmOiBcIlxcZjJhNFwiO1xuJGZhLXZhci1kZWFmbmVzczogXCJcXGYyYTRcIjtcbiRmYS12YXItZGVkZW50OiBcIlxcZjAzYlwiO1xuJGZhLXZhci1kZWxpY2lvdXM6IFwiXFxmMWE1XCI7XG4kZmEtdmFyLWRlc2t0b3A6IFwiXFxmMTA4XCI7XG4kZmEtdmFyLWRldmlhbnRhcnQ6IFwiXFxmMWJkXCI7XG4kZmEtdmFyLWRpYW1vbmQ6IFwiXFxmMjE5XCI7XG4kZmEtdmFyLWRpZ2c6IFwiXFxmMWE2XCI7XG4kZmEtdmFyLWRvbGxhcjogXCJcXGYxNTVcIjtcbiRmYS12YXItZG90LWNpcmNsZS1vOiBcIlxcZjE5MlwiO1xuJGZhLXZhci1kb3dubG9hZDogXCJcXGYwMTlcIjtcbiRmYS12YXItZHJpYmJibGU6IFwiXFxmMTdkXCI7XG4kZmEtdmFyLWRyb3Bib3g6IFwiXFxmMTZiXCI7XG4kZmEtdmFyLWRydXBhbDogXCJcXGYxYTlcIjtcbiRmYS12YXItZWRnZTogXCJcXGYyODJcIjtcbiRmYS12YXItZWRpdDogXCJcXGYwNDRcIjtcbiRmYS12YXItZWplY3Q6IFwiXFxmMDUyXCI7XG4kZmEtdmFyLWVsbGlwc2lzLWg6IFwiXFxmMTQxXCI7XG4kZmEtdmFyLWVsbGlwc2lzLXY6IFwiXFxmMTQyXCI7XG4kZmEtdmFyLWVtcGlyZTogXCJcXGYxZDFcIjtcbiRmYS12YXItZW52ZWxvcGU6IFwiXFxmMGUwXCI7XG4kZmEtdmFyLWVudmVsb3BlLW86IFwiXFxmMDAzXCI7XG4kZmEtdmFyLWVudmVsb3BlLXNxdWFyZTogXCJcXGYxOTlcIjtcbiRmYS12YXItZW52aXJhOiBcIlxcZjI5OVwiO1xuJGZhLXZhci1lcmFzZXI6IFwiXFxmMTJkXCI7XG4kZmEtdmFyLWV1cjogXCJcXGYxNTNcIjtcbiRmYS12YXItZXVybzogXCJcXGYxNTNcIjtcbiRmYS12YXItZXhjaGFuZ2U6IFwiXFxmMGVjXCI7XG4kZmEtdmFyLWV4Y2xhbWF0aW9uOiBcIlxcZjEyYVwiO1xuJGZhLXZhci1leGNsYW1hdGlvbi1jaXJjbGU6IFwiXFxmMDZhXCI7XG4kZmEtdmFyLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlOiBcIlxcZjA3MVwiO1xuJGZhLXZhci1leHBhbmQ6IFwiXFxmMDY1XCI7XG4kZmEtdmFyLWV4cGVkaXRlZHNzbDogXCJcXGYyM2VcIjtcbiRmYS12YXItZXh0ZXJuYWwtbGluazogXCJcXGYwOGVcIjtcbiRmYS12YXItZXh0ZXJuYWwtbGluay1zcXVhcmU6IFwiXFxmMTRjXCI7XG4kZmEtdmFyLWV5ZTogXCJcXGYwNmVcIjtcbiRmYS12YXItZXllLXNsYXNoOiBcIlxcZjA3MFwiO1xuJGZhLXZhci1leWVkcm9wcGVyOiBcIlxcZjFmYlwiO1xuJGZhLXZhci1mYTogXCJcXGYyYjRcIjtcbiRmYS12YXItZmFjZWJvb2s6IFwiXFxmMDlhXCI7XG4kZmEtdmFyLWZhY2Vib29rLWY6IFwiXFxmMDlhXCI7XG4kZmEtdmFyLWZhY2Vib29rLW9mZmljaWFsOiBcIlxcZjIzMFwiO1xuJGZhLXZhci1mYWNlYm9vay1zcXVhcmU6IFwiXFxmMDgyXCI7XG4kZmEtdmFyLWZhc3QtYmFja3dhcmQ6IFwiXFxmMDQ5XCI7XG4kZmEtdmFyLWZhc3QtZm9yd2FyZDogXCJcXGYwNTBcIjtcbiRmYS12YXItZmF4OiBcIlxcZjFhY1wiO1xuJGZhLXZhci1mZWVkOiBcIlxcZjA5ZVwiO1xuJGZhLXZhci1mZW1hbGU6IFwiXFxmMTgyXCI7XG4kZmEtdmFyLWZpZ2h0ZXItamV0OiBcIlxcZjBmYlwiO1xuJGZhLXZhci1maWxlOiBcIlxcZjE1YlwiO1xuJGZhLXZhci1maWxlLWFyY2hpdmUtbzogXCJcXGYxYzZcIjtcbiRmYS12YXItZmlsZS1hdWRpby1vOiBcIlxcZjFjN1wiO1xuJGZhLXZhci1maWxlLWNvZGUtbzogXCJcXGYxYzlcIjtcbiRmYS12YXItZmlsZS1leGNlbC1vOiBcIlxcZjFjM1wiO1xuJGZhLXZhci1maWxlLWltYWdlLW86IFwiXFxmMWM1XCI7XG4kZmEtdmFyLWZpbGUtbW92aWUtbzogXCJcXGYxYzhcIjtcbiRmYS12YXItZmlsZS1vOiBcIlxcZjAxNlwiO1xuJGZhLXZhci1maWxlLXBkZi1vOiBcIlxcZjFjMVwiO1xuJGZhLXZhci1maWxlLXBob3RvLW86IFwiXFxmMWM1XCI7XG4kZmEtdmFyLWZpbGUtcGljdHVyZS1vOiBcIlxcZjFjNVwiO1xuJGZhLXZhci1maWxlLXBvd2VycG9pbnQtbzogXCJcXGYxYzRcIjtcbiRmYS12YXItZmlsZS1zb3VuZC1vOiBcIlxcZjFjN1wiO1xuJGZhLXZhci1maWxlLXRleHQ6IFwiXFxmMTVjXCI7XG4kZmEtdmFyLWZpbGUtdGV4dC1vOiBcIlxcZjBmNlwiO1xuJGZhLXZhci1maWxlLXZpZGVvLW86IFwiXFxmMWM4XCI7XG4kZmEtdmFyLWZpbGUtd29yZC1vOiBcIlxcZjFjMlwiO1xuJGZhLXZhci1maWxlLXppcC1vOiBcIlxcZjFjNlwiO1xuJGZhLXZhci1maWxlcy1vOiBcIlxcZjBjNVwiO1xuJGZhLXZhci1maWxtOiBcIlxcZjAwOFwiO1xuJGZhLXZhci1maWx0ZXI6IFwiXFxmMGIwXCI7XG4kZmEtdmFyLWZpcmU6IFwiXFxmMDZkXCI7XG4kZmEtdmFyLWZpcmUtZXh0aW5ndWlzaGVyOiBcIlxcZjEzNFwiO1xuJGZhLXZhci1maXJlZm94OiBcIlxcZjI2OVwiO1xuJGZhLXZhci1maXJzdC1vcmRlcjogXCJcXGYyYjBcIjtcbiRmYS12YXItZmxhZzogXCJcXGYwMjRcIjtcbiRmYS12YXItZmxhZy1jaGVja2VyZWQ6IFwiXFxmMTFlXCI7XG4kZmEtdmFyLWZsYWctbzogXCJcXGYxMWRcIjtcbiRmYS12YXItZmxhc2g6IFwiXFxmMGU3XCI7XG4kZmEtdmFyLWZsYXNrOiBcIlxcZjBjM1wiO1xuJGZhLXZhci1mbGlja3I6IFwiXFxmMTZlXCI7XG4kZmEtdmFyLWZsb3BweS1vOiBcIlxcZjBjN1wiO1xuJGZhLXZhci1mb2xkZXI6IFwiXFxmMDdiXCI7XG4kZmEtdmFyLWZvbGRlci1vOiBcIlxcZjExNFwiO1xuJGZhLXZhci1mb2xkZXItb3BlbjogXCJcXGYwN2NcIjtcbiRmYS12YXItZm9sZGVyLW9wZW4tbzogXCJcXGYxMTVcIjtcbiRmYS12YXItZm9udDogXCJcXGYwMzFcIjtcbiRmYS12YXItZm9udC1hd2Vzb21lOiBcIlxcZjJiNFwiO1xuJGZhLXZhci1mb250aWNvbnM6IFwiXFxmMjgwXCI7XG4kZmEtdmFyLWZvcnQtYXdlc29tZTogXCJcXGYyODZcIjtcbiRmYS12YXItZm9ydW1iZWU6IFwiXFxmMjExXCI7XG4kZmEtdmFyLWZvcndhcmQ6IFwiXFxmMDRlXCI7XG4kZmEtdmFyLWZvdXJzcXVhcmU6IFwiXFxmMTgwXCI7XG4kZmEtdmFyLWZyb3duLW86IFwiXFxmMTE5XCI7XG4kZmEtdmFyLWZ1dGJvbC1vOiBcIlxcZjFlM1wiO1xuJGZhLXZhci1nYW1lcGFkOiBcIlxcZjExYlwiO1xuJGZhLXZhci1nYXZlbDogXCJcXGYwZTNcIjtcbiRmYS12YXItZ2JwOiBcIlxcZjE1NFwiO1xuJGZhLXZhci1nZTogXCJcXGYxZDFcIjtcbiRmYS12YXItZ2VhcjogXCJcXGYwMTNcIjtcbiRmYS12YXItZ2VhcnM6IFwiXFxmMDg1XCI7XG4kZmEtdmFyLWdlbmRlcmxlc3M6IFwiXFxmMjJkXCI7XG4kZmEtdmFyLWdldC1wb2NrZXQ6IFwiXFxmMjY1XCI7XG4kZmEtdmFyLWdnOiBcIlxcZjI2MFwiO1xuJGZhLXZhci1nZy1jaXJjbGU6IFwiXFxmMjYxXCI7XG4kZmEtdmFyLWdpZnQ6IFwiXFxmMDZiXCI7XG4kZmEtdmFyLWdpdDogXCJcXGYxZDNcIjtcbiRmYS12YXItZ2l0LXNxdWFyZTogXCJcXGYxZDJcIjtcbiRmYS12YXItZ2l0aHViOiBcIlxcZjA5YlwiO1xuJGZhLXZhci1naXRodWItYWx0OiBcIlxcZjExM1wiO1xuJGZhLXZhci1naXRodWItc3F1YXJlOiBcIlxcZjA5MlwiO1xuJGZhLXZhci1naXRsYWI6IFwiXFxmMjk2XCI7XG4kZmEtdmFyLWdpdHRpcDogXCJcXGYxODRcIjtcbiRmYS12YXItZ2xhc3M6IFwiXFxmMDAwXCI7XG4kZmEtdmFyLWdsaWRlOiBcIlxcZjJhNVwiO1xuJGZhLXZhci1nbGlkZS1nOiBcIlxcZjJhNlwiO1xuJGZhLXZhci1nbG9iZTogXCJcXGYwYWNcIjtcbiRmYS12YXItZ29vZ2xlOiBcIlxcZjFhMFwiO1xuJGZhLXZhci1nb29nbGUtcGx1czogXCJcXGYwZDVcIjtcbiRmYS12YXItZ29vZ2xlLXBsdXMtY2lyY2xlOiBcIlxcZjJiM1wiO1xuJGZhLXZhci1nb29nbGUtcGx1cy1vZmZpY2lhbDogXCJcXGYyYjNcIjtcbiRmYS12YXItZ29vZ2xlLXBsdXMtc3F1YXJlOiBcIlxcZjBkNFwiO1xuJGZhLXZhci1nb29nbGUtd2FsbGV0OiBcIlxcZjFlZVwiO1xuJGZhLXZhci1ncmFkdWF0aW9uLWNhcDogXCJcXGYxOWRcIjtcbiRmYS12YXItZ3JhdGlwYXk6IFwiXFxmMTg0XCI7XG4kZmEtdmFyLWdyb3VwOiBcIlxcZjBjMFwiO1xuJGZhLXZhci1oLXNxdWFyZTogXCJcXGYwZmRcIjtcbiRmYS12YXItaGFja2VyLW5ld3M6IFwiXFxmMWQ0XCI7XG4kZmEtdmFyLWhhbmQtZ3JhYi1vOiBcIlxcZjI1NVwiO1xuJGZhLXZhci1oYW5kLWxpemFyZC1vOiBcIlxcZjI1OFwiO1xuJGZhLXZhci1oYW5kLW8tZG93bjogXCJcXGYwYTdcIjtcbiRmYS12YXItaGFuZC1vLWxlZnQ6IFwiXFxmMGE1XCI7XG4kZmEtdmFyLWhhbmQtby1yaWdodDogXCJcXGYwYTRcIjtcbiRmYS12YXItaGFuZC1vLXVwOiBcIlxcZjBhNlwiO1xuJGZhLXZhci1oYW5kLXBhcGVyLW86IFwiXFxmMjU2XCI7XG4kZmEtdmFyLWhhbmQtcGVhY2UtbzogXCJcXGYyNWJcIjtcbiRmYS12YXItaGFuZC1wb2ludGVyLW86IFwiXFxmMjVhXCI7XG4kZmEtdmFyLWhhbmQtcm9jay1vOiBcIlxcZjI1NVwiO1xuJGZhLXZhci1oYW5kLXNjaXNzb3JzLW86IFwiXFxmMjU3XCI7XG4kZmEtdmFyLWhhbmQtc3BvY2stbzogXCJcXGYyNTlcIjtcbiRmYS12YXItaGFuZC1zdG9wLW86IFwiXFxmMjU2XCI7XG4kZmEtdmFyLWhhcmQtb2YtaGVhcmluZzogXCJcXGYyYTRcIjtcbiRmYS12YXItaGFzaHRhZzogXCJcXGYyOTJcIjtcbiRmYS12YXItaGRkLW86IFwiXFxmMGEwXCI7XG4kZmEtdmFyLWhlYWRlcjogXCJcXGYxZGNcIjtcbiRmYS12YXItaGVhZHBob25lczogXCJcXGYwMjVcIjtcbiRmYS12YXItaGVhcnQ6IFwiXFxmMDA0XCI7XG4kZmEtdmFyLWhlYXJ0LW86IFwiXFxmMDhhXCI7XG4kZmEtdmFyLWhlYXJ0YmVhdDogXCJcXGYyMWVcIjtcbiRmYS12YXItaGlzdG9yeTogXCJcXGYxZGFcIjtcbiRmYS12YXItaG9tZTogXCJcXGYwMTVcIjtcbiRmYS12YXItaG9zcGl0YWwtbzogXCJcXGYwZjhcIjtcbiRmYS12YXItaG90ZWw6IFwiXFxmMjM2XCI7XG4kZmEtdmFyLWhvdXJnbGFzczogXCJcXGYyNTRcIjtcbiRmYS12YXItaG91cmdsYXNzLTE6IFwiXFxmMjUxXCI7XG4kZmEtdmFyLWhvdXJnbGFzcy0yOiBcIlxcZjI1MlwiO1xuJGZhLXZhci1ob3VyZ2xhc3MtMzogXCJcXGYyNTNcIjtcbiRmYS12YXItaG91cmdsYXNzLWVuZDogXCJcXGYyNTNcIjtcbiRmYS12YXItaG91cmdsYXNzLWhhbGY6IFwiXFxmMjUyXCI7XG4kZmEtdmFyLWhvdXJnbGFzcy1vOiBcIlxcZjI1MFwiO1xuJGZhLXZhci1ob3VyZ2xhc3Mtc3RhcnQ6IFwiXFxmMjUxXCI7XG4kZmEtdmFyLWhvdXp6OiBcIlxcZjI3Y1wiO1xuJGZhLXZhci1odG1sNTogXCJcXGYxM2JcIjtcbiRmYS12YXItaS1jdXJzb3I6IFwiXFxmMjQ2XCI7XG4kZmEtdmFyLWlsczogXCJcXGYyMGJcIjtcbiRmYS12YXItaW1hZ2U6IFwiXFxmMDNlXCI7XG4kZmEtdmFyLWluYm94OiBcIlxcZjAxY1wiO1xuJGZhLXZhci1pbmRlbnQ6IFwiXFxmMDNjXCI7XG4kZmEtdmFyLWluZHVzdHJ5OiBcIlxcZjI3NVwiO1xuJGZhLXZhci1pbmZvOiBcIlxcZjEyOVwiO1xuJGZhLXZhci1pbmZvLWNpcmNsZTogXCJcXGYwNWFcIjtcbiRmYS12YXItaW5yOiBcIlxcZjE1NlwiO1xuJGZhLXZhci1pbnN0YWdyYW06IFwiXFxmMTZkXCI7XG4kZmEtdmFyLWluc3RpdHV0aW9uOiBcIlxcZjE5Y1wiO1xuJGZhLXZhci1pbnRlcm5ldC1leHBsb3JlcjogXCJcXGYyNmJcIjtcbiRmYS12YXItaW50ZXJzZXg6IFwiXFxmMjI0XCI7XG4kZmEtdmFyLWlveGhvc3Q6IFwiXFxmMjA4XCI7XG4kZmEtdmFyLWl0YWxpYzogXCJcXGYwMzNcIjtcbiRmYS12YXItam9vbWxhOiBcIlxcZjFhYVwiO1xuJGZhLXZhci1qcHk6IFwiXFxmMTU3XCI7XG4kZmEtdmFyLWpzZmlkZGxlOiBcIlxcZjFjY1wiO1xuJGZhLXZhci1rZXk6IFwiXFxmMDg0XCI7XG4kZmEtdmFyLWtleWJvYXJkLW86IFwiXFxmMTFjXCI7XG4kZmEtdmFyLWtydzogXCJcXGYxNTlcIjtcbiRmYS12YXItbGFuZ3VhZ2U6IFwiXFxmMWFiXCI7XG4kZmEtdmFyLWxhcHRvcDogXCJcXGYxMDlcIjtcbiRmYS12YXItbGFzdGZtOiBcIlxcZjIwMlwiO1xuJGZhLXZhci1sYXN0Zm0tc3F1YXJlOiBcIlxcZjIwM1wiO1xuJGZhLXZhci1sZWFmOiBcIlxcZjA2Y1wiO1xuJGZhLXZhci1sZWFucHViOiBcIlxcZjIxMlwiO1xuJGZhLXZhci1sZWdhbDogXCJcXGYwZTNcIjtcbiRmYS12YXItbGVtb24tbzogXCJcXGYwOTRcIjtcbiRmYS12YXItbGV2ZWwtZG93bjogXCJcXGYxNDlcIjtcbiRmYS12YXItbGV2ZWwtdXA6IFwiXFxmMTQ4XCI7XG4kZmEtdmFyLWxpZmUtYm91eTogXCJcXGYxY2RcIjtcbiRmYS12YXItbGlmZS1idW95OiBcIlxcZjFjZFwiO1xuJGZhLXZhci1saWZlLXJpbmc6IFwiXFxmMWNkXCI7XG4kZmEtdmFyLWxpZmUtc2F2ZXI6IFwiXFxmMWNkXCI7XG4kZmEtdmFyLWxpZ2h0YnVsYi1vOiBcIlxcZjBlYlwiO1xuJGZhLXZhci1saW5lLWNoYXJ0OiBcIlxcZjIwMVwiO1xuJGZhLXZhci1saW5rOiBcIlxcZjBjMVwiO1xuJGZhLXZhci1saW5rZWRpbjogXCJcXGYwZTFcIjtcbiRmYS12YXItbGlua2VkaW4tc3F1YXJlOiBcIlxcZjA4Y1wiO1xuJGZhLXZhci1saW51eDogXCJcXGYxN2NcIjtcbiRmYS12YXItbGlzdDogXCJcXGYwM2FcIjtcbiRmYS12YXItbGlzdC1hbHQ6IFwiXFxmMDIyXCI7XG4kZmEtdmFyLWxpc3Qtb2w6IFwiXFxmMGNiXCI7XG4kZmEtdmFyLWxpc3QtdWw6IFwiXFxmMGNhXCI7XG4kZmEtdmFyLWxvY2F0aW9uLWFycm93OiBcIlxcZjEyNFwiO1xuJGZhLXZhci1sb2NrOiBcIlxcZjAyM1wiO1xuJGZhLXZhci1sb25nLWFycm93LWRvd246IFwiXFxmMTc1XCI7XG4kZmEtdmFyLWxvbmctYXJyb3ctbGVmdDogXCJcXGYxNzdcIjtcbiRmYS12YXItbG9uZy1hcnJvdy1yaWdodDogXCJcXGYxNzhcIjtcbiRmYS12YXItbG9uZy1hcnJvdy11cDogXCJcXGYxNzZcIjtcbiRmYS12YXItbG93LXZpc2lvbjogXCJcXGYyYThcIjtcbiRmYS12YXItbWFnaWM6IFwiXFxmMGQwXCI7XG4kZmEtdmFyLW1hZ25ldDogXCJcXGYwNzZcIjtcbiRmYS12YXItbWFpbC1mb3J3YXJkOiBcIlxcZjA2NFwiO1xuJGZhLXZhci1tYWlsLXJlcGx5OiBcIlxcZjExMlwiO1xuJGZhLXZhci1tYWlsLXJlcGx5LWFsbDogXCJcXGYxMjJcIjtcbiRmYS12YXItbWFsZTogXCJcXGYxODNcIjtcbiRmYS12YXItbWFwOiBcIlxcZjI3OVwiO1xuJGZhLXZhci1tYXAtbWFya2VyOiBcIlxcZjA0MVwiO1xuJGZhLXZhci1tYXAtbzogXCJcXGYyNzhcIjtcbiRmYS12YXItbWFwLXBpbjogXCJcXGYyNzZcIjtcbiRmYS12YXItbWFwLXNpZ25zOiBcIlxcZjI3N1wiO1xuJGZhLXZhci1tYXJzOiBcIlxcZjIyMlwiO1xuJGZhLXZhci1tYXJzLWRvdWJsZTogXCJcXGYyMjdcIjtcbiRmYS12YXItbWFycy1zdHJva2U6IFwiXFxmMjI5XCI7XG4kZmEtdmFyLW1hcnMtc3Ryb2tlLWg6IFwiXFxmMjJiXCI7XG4kZmEtdmFyLW1hcnMtc3Ryb2tlLXY6IFwiXFxmMjJhXCI7XG4kZmEtdmFyLW1heGNkbjogXCJcXGYxMzZcIjtcbiRmYS12YXItbWVhbnBhdGg6IFwiXFxmMjBjXCI7XG4kZmEtdmFyLW1lZGl1bTogXCJcXGYyM2FcIjtcbiRmYS12YXItbWVka2l0OiBcIlxcZjBmYVwiO1xuJGZhLXZhci1tZWgtbzogXCJcXGYxMWFcIjtcbiRmYS12YXItbWVyY3VyeTogXCJcXGYyMjNcIjtcbiRmYS12YXItbWljcm9waG9uZTogXCJcXGYxMzBcIjtcbiRmYS12YXItbWljcm9waG9uZS1zbGFzaDogXCJcXGYxMzFcIjtcbiRmYS12YXItbWludXM6IFwiXFxmMDY4XCI7XG4kZmEtdmFyLW1pbnVzLWNpcmNsZTogXCJcXGYwNTZcIjtcbiRmYS12YXItbWludXMtc3F1YXJlOiBcIlxcZjE0NlwiO1xuJGZhLXZhci1taW51cy1zcXVhcmUtbzogXCJcXGYxNDdcIjtcbiRmYS12YXItbWl4Y2xvdWQ6IFwiXFxmMjg5XCI7XG4kZmEtdmFyLW1vYmlsZTogXCJcXGYxMGJcIjtcbiRmYS12YXItbW9iaWxlLXBob25lOiBcIlxcZjEwYlwiO1xuJGZhLXZhci1tb2R4OiBcIlxcZjI4NVwiO1xuJGZhLXZhci1tb25leTogXCJcXGYwZDZcIjtcbiRmYS12YXItbW9vbi1vOiBcIlxcZjE4NlwiO1xuJGZhLXZhci1tb3J0YXItYm9hcmQ6IFwiXFxmMTlkXCI7XG4kZmEtdmFyLW1vdG9yY3ljbGU6IFwiXFxmMjFjXCI7XG4kZmEtdmFyLW1vdXNlLXBvaW50ZXI6IFwiXFxmMjQ1XCI7XG4kZmEtdmFyLW11c2ljOiBcIlxcZjAwMVwiO1xuJGZhLXZhci1uYXZpY29uOiBcIlxcZjBjOVwiO1xuJGZhLXZhci1uZXV0ZXI6IFwiXFxmMjJjXCI7XG4kZmEtdmFyLW5ld3NwYXBlci1vOiBcIlxcZjFlYVwiO1xuJGZhLXZhci1vYmplY3QtZ3JvdXA6IFwiXFxmMjQ3XCI7XG4kZmEtdmFyLW9iamVjdC11bmdyb3VwOiBcIlxcZjI0OFwiO1xuJGZhLXZhci1vZG5va2xhc3NuaWtpOiBcIlxcZjI2M1wiO1xuJGZhLXZhci1vZG5va2xhc3NuaWtpLXNxdWFyZTogXCJcXGYyNjRcIjtcbiRmYS12YXItb3BlbmNhcnQ6IFwiXFxmMjNkXCI7XG4kZmEtdmFyLW9wZW5pZDogXCJcXGYxOWJcIjtcbiRmYS12YXItb3BlcmE6IFwiXFxmMjZhXCI7XG4kZmEtdmFyLW9wdGluLW1vbnN0ZXI6IFwiXFxmMjNjXCI7XG4kZmEtdmFyLW91dGRlbnQ6IFwiXFxmMDNiXCI7XG4kZmEtdmFyLXBhZ2VsaW5lczogXCJcXGYxOGNcIjtcbiRmYS12YXItcGFpbnQtYnJ1c2g6IFwiXFxmMWZjXCI7XG4kZmEtdmFyLXBhcGVyLXBsYW5lOiBcIlxcZjFkOFwiO1xuJGZhLXZhci1wYXBlci1wbGFuZS1vOiBcIlxcZjFkOVwiO1xuJGZhLXZhci1wYXBlcmNsaXA6IFwiXFxmMGM2XCI7XG4kZmEtdmFyLXBhcmFncmFwaDogXCJcXGYxZGRcIjtcbiRmYS12YXItcGFzdGU6IFwiXFxmMGVhXCI7XG4kZmEtdmFyLXBhdXNlOiBcIlxcZjA0Y1wiO1xuJGZhLXZhci1wYXVzZS1jaXJjbGU6IFwiXFxmMjhiXCI7XG4kZmEtdmFyLXBhdXNlLWNpcmNsZS1vOiBcIlxcZjI4Y1wiO1xuJGZhLXZhci1wYXc6IFwiXFxmMWIwXCI7XG4kZmEtdmFyLXBheXBhbDogXCJcXGYxZWRcIjtcbiRmYS12YXItcGVuY2lsOiBcIlxcZjA0MFwiO1xuJGZhLXZhci1wZW5jaWwtc3F1YXJlOiBcIlxcZjE0YlwiO1xuJGZhLXZhci1wZW5jaWwtc3F1YXJlLW86IFwiXFxmMDQ0XCI7XG4kZmEtdmFyLXBlcmNlbnQ6IFwiXFxmMjk1XCI7XG4kZmEtdmFyLXBob25lOiBcIlxcZjA5NVwiO1xuJGZhLXZhci1waG9uZS1zcXVhcmU6IFwiXFxmMDk4XCI7XG4kZmEtdmFyLXBob3RvOiBcIlxcZjAzZVwiO1xuJGZhLXZhci1waWN0dXJlLW86IFwiXFxmMDNlXCI7XG4kZmEtdmFyLXBpZS1jaGFydDogXCJcXGYyMDBcIjtcbiRmYS12YXItcGllZC1waXBlcjogXCJcXGYyYWVcIjtcbiRmYS12YXItcGllZC1waXBlci1hbHQ6IFwiXFxmMWE4XCI7XG4kZmEtdmFyLXBpZWQtcGlwZXItcHA6IFwiXFxmMWE3XCI7XG4kZmEtdmFyLXBpbnRlcmVzdDogXCJcXGYwZDJcIjtcbiRmYS12YXItcGludGVyZXN0LXA6IFwiXFxmMjMxXCI7XG4kZmEtdmFyLXBpbnRlcmVzdC1zcXVhcmU6IFwiXFxmMGQzXCI7XG4kZmEtdmFyLXBsYW5lOiBcIlxcZjA3MlwiO1xuJGZhLXZhci1wbGF5OiBcIlxcZjA0YlwiO1xuJGZhLXZhci1wbGF5LWNpcmNsZTogXCJcXGYxNDRcIjtcbiRmYS12YXItcGxheS1jaXJjbGUtbzogXCJcXGYwMWRcIjtcbiRmYS12YXItcGx1ZzogXCJcXGYxZTZcIjtcbiRmYS12YXItcGx1czogXCJcXGYwNjdcIjtcbiRmYS12YXItcGx1cy1jaXJjbGU6IFwiXFxmMDU1XCI7XG4kZmEtdmFyLXBsdXMtc3F1YXJlOiBcIlxcZjBmZVwiO1xuJGZhLXZhci1wbHVzLXNxdWFyZS1vOiBcIlxcZjE5NlwiO1xuJGZhLXZhci1wb3dlci1vZmY6IFwiXFxmMDExXCI7XG4kZmEtdmFyLXByaW50OiBcIlxcZjAyZlwiO1xuJGZhLXZhci1wcm9kdWN0LWh1bnQ6IFwiXFxmMjg4XCI7XG4kZmEtdmFyLXB1enpsZS1waWVjZTogXCJcXGYxMmVcIjtcbiRmYS12YXItcXE6IFwiXFxmMWQ2XCI7XG4kZmEtdmFyLXFyY29kZTogXCJcXGYwMjlcIjtcbiRmYS12YXItcXVlc3Rpb246IFwiXFxmMTI4XCI7XG4kZmEtdmFyLXF1ZXN0aW9uLWNpcmNsZTogXCJcXGYwNTlcIjtcbiRmYS12YXItcXVlc3Rpb24tY2lyY2xlLW86IFwiXFxmMjljXCI7XG4kZmEtdmFyLXF1b3RlLWxlZnQ6IFwiXFxmMTBkXCI7XG4kZmEtdmFyLXF1b3RlLXJpZ2h0OiBcIlxcZjEwZVwiO1xuJGZhLXZhci1yYTogXCJcXGYxZDBcIjtcbiRmYS12YXItcmFuZG9tOiBcIlxcZjA3NFwiO1xuJGZhLXZhci1yZWJlbDogXCJcXGYxZDBcIjtcbiRmYS12YXItcmVjeWNsZTogXCJcXGYxYjhcIjtcbiRmYS12YXItcmVkZGl0OiBcIlxcZjFhMVwiO1xuJGZhLXZhci1yZWRkaXQtYWxpZW46IFwiXFxmMjgxXCI7XG4kZmEtdmFyLXJlZGRpdC1zcXVhcmU6IFwiXFxmMWEyXCI7XG4kZmEtdmFyLXJlZnJlc2g6IFwiXFxmMDIxXCI7XG4kZmEtdmFyLXJlZ2lzdGVyZWQ6IFwiXFxmMjVkXCI7XG4kZmEtdmFyLXJlbW92ZTogXCJcXGYwMGRcIjtcbiRmYS12YXItcmVucmVuOiBcIlxcZjE4YlwiO1xuJGZhLXZhci1yZW9yZGVyOiBcIlxcZjBjOVwiO1xuJGZhLXZhci1yZXBlYXQ6IFwiXFxmMDFlXCI7XG4kZmEtdmFyLXJlcGx5OiBcIlxcZjExMlwiO1xuJGZhLXZhci1yZXBseS1hbGw6IFwiXFxmMTIyXCI7XG4kZmEtdmFyLXJlc2lzdGFuY2U6IFwiXFxmMWQwXCI7XG4kZmEtdmFyLXJldHdlZXQ6IFwiXFxmMDc5XCI7XG4kZmEtdmFyLXJtYjogXCJcXGYxNTdcIjtcbiRmYS12YXItcm9hZDogXCJcXGYwMThcIjtcbiRmYS12YXItcm9ja2V0OiBcIlxcZjEzNVwiO1xuJGZhLXZhci1yb3RhdGUtbGVmdDogXCJcXGYwZTJcIjtcbiRmYS12YXItcm90YXRlLXJpZ2h0OiBcIlxcZjAxZVwiO1xuJGZhLXZhci1yb3VibGU6IFwiXFxmMTU4XCI7XG4kZmEtdmFyLXJzczogXCJcXGYwOWVcIjtcbiRmYS12YXItcnNzLXNxdWFyZTogXCJcXGYxNDNcIjtcbiRmYS12YXItcnViOiBcIlxcZjE1OFwiO1xuJGZhLXZhci1ydWJsZTogXCJcXGYxNThcIjtcbiRmYS12YXItcnVwZWU6IFwiXFxmMTU2XCI7XG4kZmEtdmFyLXNhZmFyaTogXCJcXGYyNjdcIjtcbiRmYS12YXItc2F2ZTogXCJcXGYwYzdcIjtcbiRmYS12YXItc2Npc3NvcnM6IFwiXFxmMGM0XCI7XG4kZmEtdmFyLXNjcmliZDogXCJcXGYyOGFcIjtcbiRmYS12YXItc2VhcmNoOiBcIlxcZjAwMlwiO1xuJGZhLXZhci1zZWFyY2gtbWludXM6IFwiXFxmMDEwXCI7XG4kZmEtdmFyLXNlYXJjaC1wbHVzOiBcIlxcZjAwZVwiO1xuJGZhLXZhci1zZWxsc3k6IFwiXFxmMjEzXCI7XG4kZmEtdmFyLXNlbmQ6IFwiXFxmMWQ4XCI7XG4kZmEtdmFyLXNlbmQtbzogXCJcXGYxZDlcIjtcbiRmYS12YXItc2VydmVyOiBcIlxcZjIzM1wiO1xuJGZhLXZhci1zaGFyZTogXCJcXGYwNjRcIjtcbiRmYS12YXItc2hhcmUtYWx0OiBcIlxcZjFlMFwiO1xuJGZhLXZhci1zaGFyZS1hbHQtc3F1YXJlOiBcIlxcZjFlMVwiO1xuJGZhLXZhci1zaGFyZS1zcXVhcmU6IFwiXFxmMTRkXCI7XG4kZmEtdmFyLXNoYXJlLXNxdWFyZS1vOiBcIlxcZjA0NVwiO1xuJGZhLXZhci1zaGVrZWw6IFwiXFxmMjBiXCI7XG4kZmEtdmFyLXNoZXFlbDogXCJcXGYyMGJcIjtcbiRmYS12YXItc2hpZWxkOiBcIlxcZjEzMlwiO1xuJGZhLXZhci1zaGlwOiBcIlxcZjIxYVwiO1xuJGZhLXZhci1zaGlydHNpbmJ1bGs6IFwiXFxmMjE0XCI7XG4kZmEtdmFyLXNob3BwaW5nLWJhZzogXCJcXGYyOTBcIjtcbiRmYS12YXItc2hvcHBpbmctYmFza2V0OiBcIlxcZjI5MVwiO1xuJGZhLXZhci1zaG9wcGluZy1jYXJ0OiBcIlxcZjA3YVwiO1xuJGZhLXZhci1zaWduLWluOiBcIlxcZjA5MFwiO1xuJGZhLXZhci1zaWduLWxhbmd1YWdlOiBcIlxcZjJhN1wiO1xuJGZhLXZhci1zaWduLW91dDogXCJcXGYwOGJcIjtcbiRmYS12YXItc2lnbmFsOiBcIlxcZjAxMlwiO1xuJGZhLXZhci1zaWduaW5nOiBcIlxcZjJhN1wiO1xuJGZhLXZhci1zaW1wbHlidWlsdDogXCJcXGYyMTVcIjtcbiRmYS12YXItc2l0ZW1hcDogXCJcXGYwZThcIjtcbiRmYS12YXItc2t5YXRsYXM6IFwiXFxmMjE2XCI7XG4kZmEtdmFyLXNreXBlOiBcIlxcZjE3ZVwiO1xuJGZhLXZhci1zbGFjazogXCJcXGYxOThcIjtcbiRmYS12YXItc2xpZGVyczogXCJcXGYxZGVcIjtcbiRmYS12YXItc2xpZGVzaGFyZTogXCJcXGYxZTdcIjtcbiRmYS12YXItc21pbGUtbzogXCJcXGYxMThcIjtcbiRmYS12YXItc25hcGNoYXQ6IFwiXFxmMmFiXCI7XG4kZmEtdmFyLXNuYXBjaGF0LWdob3N0OiBcIlxcZjJhY1wiO1xuJGZhLXZhci1zbmFwY2hhdC1zcXVhcmU6IFwiXFxmMmFkXCI7XG4kZmEtdmFyLXNvY2Nlci1iYWxsLW86IFwiXFxmMWUzXCI7XG4kZmEtdmFyLXNvcnQ6IFwiXFxmMGRjXCI7XG4kZmEtdmFyLXNvcnQtYWxwaGEtYXNjOiBcIlxcZjE1ZFwiO1xuJGZhLXZhci1zb3J0LWFscGhhLWRlc2M6IFwiXFxmMTVlXCI7XG4kZmEtdmFyLXNvcnQtYW1vdW50LWFzYzogXCJcXGYxNjBcIjtcbiRmYS12YXItc29ydC1hbW91bnQtZGVzYzogXCJcXGYxNjFcIjtcbiRmYS12YXItc29ydC1hc2M6IFwiXFxmMGRlXCI7XG4kZmEtdmFyLXNvcnQtZGVzYzogXCJcXGYwZGRcIjtcbiRmYS12YXItc29ydC1kb3duOiBcIlxcZjBkZFwiO1xuJGZhLXZhci1zb3J0LW51bWVyaWMtYXNjOiBcIlxcZjE2MlwiO1xuJGZhLXZhci1zb3J0LW51bWVyaWMtZGVzYzogXCJcXGYxNjNcIjtcbiRmYS12YXItc29ydC11cDogXCJcXGYwZGVcIjtcbiRmYS12YXItc291bmRjbG91ZDogXCJcXGYxYmVcIjtcbiRmYS12YXItc3BhY2Utc2h1dHRsZTogXCJcXGYxOTdcIjtcbiRmYS12YXItc3Bpbm5lcjogXCJcXGYxMTBcIjtcbiRmYS12YXItc3Bvb246IFwiXFxmMWIxXCI7XG4kZmEtdmFyLXNwb3RpZnk6IFwiXFxmMWJjXCI7XG4kZmEtdmFyLXNxdWFyZTogXCJcXGYwYzhcIjtcbiRmYS12YXItc3F1YXJlLW86IFwiXFxmMDk2XCI7XG4kZmEtdmFyLXN0YWNrLWV4Y2hhbmdlOiBcIlxcZjE4ZFwiO1xuJGZhLXZhci1zdGFjay1vdmVyZmxvdzogXCJcXGYxNmNcIjtcbiRmYS12YXItc3RhcjogXCJcXGYwMDVcIjtcbiRmYS12YXItc3Rhci1oYWxmOiBcIlxcZjA4OVwiO1xuJGZhLXZhci1zdGFyLWhhbGYtZW1wdHk6IFwiXFxmMTIzXCI7XG4kZmEtdmFyLXN0YXItaGFsZi1mdWxsOiBcIlxcZjEyM1wiO1xuJGZhLXZhci1zdGFyLWhhbGYtbzogXCJcXGYxMjNcIjtcbiRmYS12YXItc3Rhci1vOiBcIlxcZjAwNlwiO1xuJGZhLXZhci1zdGVhbTogXCJcXGYxYjZcIjtcbiRmYS12YXItc3RlYW0tc3F1YXJlOiBcIlxcZjFiN1wiO1xuJGZhLXZhci1zdGVwLWJhY2t3YXJkOiBcIlxcZjA0OFwiO1xuJGZhLXZhci1zdGVwLWZvcndhcmQ6IFwiXFxmMDUxXCI7XG4kZmEtdmFyLXN0ZXRob3Njb3BlOiBcIlxcZjBmMVwiO1xuJGZhLXZhci1zdGlja3ktbm90ZTogXCJcXGYyNDlcIjtcbiRmYS12YXItc3RpY2t5LW5vdGUtbzogXCJcXGYyNGFcIjtcbiRmYS12YXItc3RvcDogXCJcXGYwNGRcIjtcbiRmYS12YXItc3RvcC1jaXJjbGU6IFwiXFxmMjhkXCI7XG4kZmEtdmFyLXN0b3AtY2lyY2xlLW86IFwiXFxmMjhlXCI7XG4kZmEtdmFyLXN0cmVldC12aWV3OiBcIlxcZjIxZFwiO1xuJGZhLXZhci1zdHJpa2V0aHJvdWdoOiBcIlxcZjBjY1wiO1xuJGZhLXZhci1zdHVtYmxldXBvbjogXCJcXGYxYTRcIjtcbiRmYS12YXItc3R1bWJsZXVwb24tY2lyY2xlOiBcIlxcZjFhM1wiO1xuJGZhLXZhci1zdWJzY3JpcHQ6IFwiXFxmMTJjXCI7XG4kZmEtdmFyLXN1YndheTogXCJcXGYyMzlcIjtcbiRmYS12YXItc3VpdGNhc2U6IFwiXFxmMGYyXCI7XG4kZmEtdmFyLXN1bi1vOiBcIlxcZjE4NVwiO1xuJGZhLXZhci1zdXBlcnNjcmlwdDogXCJcXGYxMmJcIjtcbiRmYS12YXItc3VwcG9ydDogXCJcXGYxY2RcIjtcbiRmYS12YXItdGFibGU6IFwiXFxmMGNlXCI7XG4kZmEtdmFyLXRhYmxldDogXCJcXGYxMGFcIjtcbiRmYS12YXItdGFjaG9tZXRlcjogXCJcXGYwZTRcIjtcbiRmYS12YXItdGFnOiBcIlxcZjAyYlwiO1xuJGZhLXZhci10YWdzOiBcIlxcZjAyY1wiO1xuJGZhLXZhci10YXNrczogXCJcXGYwYWVcIjtcbiRmYS12YXItdGF4aTogXCJcXGYxYmFcIjtcbiRmYS12YXItdGVsZXZpc2lvbjogXCJcXGYyNmNcIjtcbiRmYS12YXItdGVuY2VudC13ZWlibzogXCJcXGYxZDVcIjtcbiRmYS12YXItdGVybWluYWw6IFwiXFxmMTIwXCI7XG4kZmEtdmFyLXRleHQtaGVpZ2h0OiBcIlxcZjAzNFwiO1xuJGZhLXZhci10ZXh0LXdpZHRoOiBcIlxcZjAzNVwiO1xuJGZhLXZhci10aDogXCJcXGYwMGFcIjtcbiRmYS12YXItdGgtbGFyZ2U6IFwiXFxmMDA5XCI7XG4kZmEtdmFyLXRoLWxpc3Q6IFwiXFxmMDBiXCI7XG4kZmEtdmFyLXRoZW1laXNsZTogXCJcXGYyYjJcIjtcbiRmYS12YXItdGh1bWItdGFjazogXCJcXGYwOGRcIjtcbiRmYS12YXItdGh1bWJzLWRvd246IFwiXFxmMTY1XCI7XG4kZmEtdmFyLXRodW1icy1vLWRvd246IFwiXFxmMDg4XCI7XG4kZmEtdmFyLXRodW1icy1vLXVwOiBcIlxcZjA4N1wiO1xuJGZhLXZhci10aHVtYnMtdXA6IFwiXFxmMTY0XCI7XG4kZmEtdmFyLXRpY2tldDogXCJcXGYxNDVcIjtcbiRmYS12YXItdGltZXM6IFwiXFxmMDBkXCI7XG4kZmEtdmFyLXRpbWVzLWNpcmNsZTogXCJcXGYwNTdcIjtcbiRmYS12YXItdGltZXMtY2lyY2xlLW86IFwiXFxmMDVjXCI7XG4kZmEtdmFyLXRpbnQ6IFwiXFxmMDQzXCI7XG4kZmEtdmFyLXRvZ2dsZS1kb3duOiBcIlxcZjE1MFwiO1xuJGZhLXZhci10b2dnbGUtbGVmdDogXCJcXGYxOTFcIjtcbiRmYS12YXItdG9nZ2xlLW9mZjogXCJcXGYyMDRcIjtcbiRmYS12YXItdG9nZ2xlLW9uOiBcIlxcZjIwNVwiO1xuJGZhLXZhci10b2dnbGUtcmlnaHQ6IFwiXFxmMTUyXCI7XG4kZmEtdmFyLXRvZ2dsZS11cDogXCJcXGYxNTFcIjtcbiRmYS12YXItdHJhZGVtYXJrOiBcIlxcZjI1Y1wiO1xuJGZhLXZhci10cmFpbjogXCJcXGYyMzhcIjtcbiRmYS12YXItdHJhbnNnZW5kZXI6IFwiXFxmMjI0XCI7XG4kZmEtdmFyLXRyYW5zZ2VuZGVyLWFsdDogXCJcXGYyMjVcIjtcbiRmYS12YXItdHJhc2g6IFwiXFxmMWY4XCI7XG4kZmEtdmFyLXRyYXNoLW86IFwiXFxmMDE0XCI7XG4kZmEtdmFyLXRyZWU6IFwiXFxmMWJiXCI7XG4kZmEtdmFyLXRyZWxsbzogXCJcXGYxODFcIjtcbiRmYS12YXItdHJpcGFkdmlzb3I6IFwiXFxmMjYyXCI7XG4kZmEtdmFyLXRyb3BoeTogXCJcXGYwOTFcIjtcbiRmYS12YXItdHJ1Y2s6IFwiXFxmMGQxXCI7XG4kZmEtdmFyLXRyeTogXCJcXGYxOTVcIjtcbiRmYS12YXItdHR5OiBcIlxcZjFlNFwiO1xuJGZhLXZhci10dW1ibHI6IFwiXFxmMTczXCI7XG4kZmEtdmFyLXR1bWJsci1zcXVhcmU6IFwiXFxmMTc0XCI7XG4kZmEtdmFyLXR1cmtpc2gtbGlyYTogXCJcXGYxOTVcIjtcbiRmYS12YXItdHY6IFwiXFxmMjZjXCI7XG4kZmEtdmFyLXR3aXRjaDogXCJcXGYxZThcIjtcbiRmYS12YXItdHdpdHRlcjogXCJcXGYwOTlcIjtcbiRmYS12YXItdHdpdHRlci1zcXVhcmU6IFwiXFxmMDgxXCI7XG4kZmEtdmFyLXVtYnJlbGxhOiBcIlxcZjBlOVwiO1xuJGZhLXZhci11bmRlcmxpbmU6IFwiXFxmMGNkXCI7XG4kZmEtdmFyLXVuZG86IFwiXFxmMGUyXCI7XG4kZmEtdmFyLXVuaXZlcnNhbC1hY2Nlc3M6IFwiXFxmMjlhXCI7XG4kZmEtdmFyLXVuaXZlcnNpdHk6IFwiXFxmMTljXCI7XG4kZmEtdmFyLXVubGluazogXCJcXGYxMjdcIjtcbiRmYS12YXItdW5sb2NrOiBcIlxcZjA5Y1wiO1xuJGZhLXZhci11bmxvY2stYWx0OiBcIlxcZjEzZVwiO1xuJGZhLXZhci11bnNvcnRlZDogXCJcXGYwZGNcIjtcbiRmYS12YXItdXBsb2FkOiBcIlxcZjA5M1wiO1xuJGZhLXZhci11c2I6IFwiXFxmMjg3XCI7XG4kZmEtdmFyLXVzZDogXCJcXGYxNTVcIjtcbiRmYS12YXItdXNlcjogXCJcXGYwMDdcIjtcbiRmYS12YXItdXNlci1tZDogXCJcXGYwZjBcIjtcbiRmYS12YXItdXNlci1wbHVzOiBcIlxcZjIzNFwiO1xuJGZhLXZhci11c2VyLXNlY3JldDogXCJcXGYyMWJcIjtcbiRmYS12YXItdXNlci10aW1lczogXCJcXGYyMzVcIjtcbiRmYS12YXItdXNlcnM6IFwiXFxmMGMwXCI7XG4kZmEtdmFyLXZlbnVzOiBcIlxcZjIyMVwiO1xuJGZhLXZhci12ZW51cy1kb3VibGU6IFwiXFxmMjI2XCI7XG4kZmEtdmFyLXZlbnVzLW1hcnM6IFwiXFxmMjI4XCI7XG4kZmEtdmFyLXZpYWNvaW46IFwiXFxmMjM3XCI7XG4kZmEtdmFyLXZpYWRlbzogXCJcXGYyYTlcIjtcbiRmYS12YXItdmlhZGVvLXNxdWFyZTogXCJcXGYyYWFcIjtcbiRmYS12YXItdmlkZW8tY2FtZXJhOiBcIlxcZjAzZFwiO1xuJGZhLXZhci12aW1lbzogXCJcXGYyN2RcIjtcbiRmYS12YXItdmltZW8tc3F1YXJlOiBcIlxcZjE5NFwiO1xuJGZhLXZhci12aW5lOiBcIlxcZjFjYVwiO1xuJGZhLXZhci12azogXCJcXGYxODlcIjtcbiRmYS12YXItdm9sdW1lLWNvbnRyb2wtcGhvbmU6IFwiXFxmMmEwXCI7XG4kZmEtdmFyLXZvbHVtZS1kb3duOiBcIlxcZjAyN1wiO1xuJGZhLXZhci12b2x1bWUtb2ZmOiBcIlxcZjAyNlwiO1xuJGZhLXZhci12b2x1bWUtdXA6IFwiXFxmMDI4XCI7XG4kZmEtdmFyLXdhcm5pbmc6IFwiXFxmMDcxXCI7XG4kZmEtdmFyLXdlY2hhdDogXCJcXGYxZDdcIjtcbiRmYS12YXItd2VpYm86IFwiXFxmMThhXCI7XG4kZmEtdmFyLXdlaXhpbjogXCJcXGYxZDdcIjtcbiRmYS12YXItd2hhdHNhcHA6IFwiXFxmMjMyXCI7XG4kZmEtdmFyLXdoZWVsY2hhaXI6IFwiXFxmMTkzXCI7XG4kZmEtdmFyLXdoZWVsY2hhaXItYWx0OiBcIlxcZjI5YlwiO1xuJGZhLXZhci13aWZpOiBcIlxcZjFlYlwiO1xuJGZhLXZhci13aWtpcGVkaWEtdzogXCJcXGYyNjZcIjtcbiRmYS12YXItd2luZG93czogXCJcXGYxN2FcIjtcbiRmYS12YXItd29uOiBcIlxcZjE1OVwiO1xuJGZhLXZhci13b3JkcHJlc3M6IFwiXFxmMTlhXCI7XG4kZmEtdmFyLXdwYmVnaW5uZXI6IFwiXFxmMjk3XCI7XG4kZmEtdmFyLXdwZm9ybXM6IFwiXFxmMjk4XCI7XG4kZmEtdmFyLXdyZW5jaDogXCJcXGYwYWRcIjtcbiRmYS12YXIteGluZzogXCJcXGYxNjhcIjtcbiRmYS12YXIteGluZy1zcXVhcmU6IFwiXFxmMTY5XCI7XG4kZmEtdmFyLXktY29tYmluYXRvcjogXCJcXGYyM2JcIjtcbiRmYS12YXIteS1jb21iaW5hdG9yLXNxdWFyZTogXCJcXGYxZDRcIjtcbiRmYS12YXIteWFob286IFwiXFxmMTllXCI7XG4kZmEtdmFyLXljOiBcIlxcZjIzYlwiO1xuJGZhLXZhci15Yy1zcXVhcmU6IFwiXFxmMWQ0XCI7XG4kZmEtdmFyLXllbHA6IFwiXFxmMWU5XCI7XG4kZmEtdmFyLXllbjogXCJcXGYxNTdcIjtcbiRmYS12YXIteW9hc3Q6IFwiXFxmMmIxXCI7XG4kZmEtdmFyLXlvdXR1YmU6IFwiXFxmMTY3XCI7XG4kZmEtdmFyLXlvdXR1YmUtcGxheTogXCJcXGYxNmFcIjtcbiRmYS12YXIteW91dHViZS1zcXVhcmU6IFwiXFxmMTY2XCI7XG5cbiIsIi8vIE1peGluc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQG1peGluIGZhLWljb24oKSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udDogbm9ybWFsIG5vcm1hbCBub3JtYWwgI3skZmEtZm9udC1zaXplLWJhc2V9LyN7JGZhLWxpbmUtaGVpZ2h0LWJhc2V9IEZvbnRBd2Vzb21lOyAvLyBzaG9ydGVuaW5nIGZvbnQgZGVjbGFyYXRpb25cbiAgZm9udC1zaXplOiBpbmhlcml0OyAvLyBjYW4ndCBoYXZlIGZvbnQtc2l6ZSBpbmhlcml0IG9uIGxpbmUgYWJvdmUsIHNvIG5lZWQgdG8gb3ZlcnJpZGVcbiAgdGV4dC1yZW5kZXJpbmc6IGF1dG87IC8vIG9wdGltaXplbGVnaWJpbGl0eSB0aHJvd3MgdGhpbmdzIG9mZiAjMTA5NFxuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcblxufVxuXG5AbWl4aW4gZmEtaWNvbi1yb3RhdGUoJGRlZ3JlZXMsICRyb3RhdGlvbikge1xuICAtbXMtZmlsdGVyOiBcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPSN7JHJvdGF0aW9ufSlcIjtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgkZGVncmVlcyk7XG4gICAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoJGRlZ3JlZXMpO1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKCRkZWdyZWVzKTtcbn1cblxuQG1peGluIGZhLWljb24tZmxpcCgkaG9yaXosICR2ZXJ0LCAkcm90YXRpb24pIHtcbiAgLW1zLWZpbHRlcjogXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0jeyRyb3RhdGlvbn0sIG1pcnJvcj0xKVwiO1xuICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoJGhvcml6LCAkdmVydCk7XG4gICAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgkaG9yaXosICR2ZXJ0KTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKCRob3JpeiwgJHZlcnQpO1xufVxuXG5cbi8vIE9ubHkgZGlzcGxheSBjb250ZW50IHRvIHNjcmVlbiByZWFkZXJzLiBBIGxhIEJvb3RzdHJhcCA0LlxuLy9cbi8vIFNlZTogaHR0cDovL2ExMXlwcm9qZWN0LmNvbS9wb3N0cy9ob3ctdG8taGlkZS1jb250ZW50L1xuXG5AbWl4aW4gc3Itb25seSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY2xpcDogcmVjdCgwLDAsMCwwKTtcbiAgYm9yZGVyOiAwO1xufVxuXG4vLyBVc2UgaW4gY29uanVuY3Rpb24gd2l0aCAuc3Itb25seSB0byBvbmx5IGRpc3BsYXkgY29udGVudCB3aGVuIGl0J3MgZm9jdXNlZC5cbi8vXG4vLyBVc2VmdWwgZm9yIFwiU2tpcCB0byBtYWluIGNvbnRlbnRcIiBsaW5rczsgc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTMvTk9URS1XQ0FHMjAtVEVDSFMtMjAxMzA5MDUvRzFcbi8vXG4vLyBDcmVkaXQ6IEhUTUw1IEJvaWxlcnBsYXRlXG5cbkBtaXhpbiBzci1vbmx5LWZvY3VzYWJsZSB7XG4gICY6YWN0aXZlLFxuICAmOmZvY3VzIHtcbiAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBtYXJnaW46IDA7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgY2xpcDogYXV0bztcbiAgfVxufVxuIiwiLyogRk9OVCBQQVRIXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdGb250QXdlc29tZSc7XG4gIHNyYzogdXJsKCcjeyRmYS1mb250LXBhdGh9L2ZvbnRhd2Vzb21lLXdlYmZvbnQuZW90P3Y9I3skZmEtdmVyc2lvbn0nKTtcbiAgc3JjOiB1cmwoJyN7JGZhLWZvbnQtcGF0aH0vZm9udGF3ZXNvbWUtd2ViZm9udC5lb3Q/I2llZml4JnY9I3skZmEtdmVyc2lvbn0nKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG4gICAgdXJsKCcjeyRmYS1mb250LXBhdGh9L2ZvbnRhd2Vzb21lLXdlYmZvbnQud29mZjI/dj0jeyRmYS12ZXJzaW9ufScpIGZvcm1hdCgnd29mZjInKSxcbiAgICB1cmwoJyN7JGZhLWZvbnQtcGF0aH0vZm9udGF3ZXNvbWUtd2ViZm9udC53b2ZmP3Y9I3skZmEtdmVyc2lvbn0nKSBmb3JtYXQoJ3dvZmYnKSxcbiAgICB1cmwoJyN7JGZhLWZvbnQtcGF0aH0vZm9udGF3ZXNvbWUtd2ViZm9udC50dGY/dj0jeyRmYS12ZXJzaW9ufScpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcbiAgICB1cmwoJyN7JGZhLWZvbnQtcGF0aH0vZm9udGF3ZXNvbWUtd2ViZm9udC5zdmc/dj0jeyRmYS12ZXJzaW9ufSNmb250YXdlc29tZXJlZ3VsYXInKSBmb3JtYXQoJ3N2ZycpO1xuLy8gIHNyYzogdXJsKCcjeyRmYS1mb250LXBhdGh9L0ZvbnRBd2Vzb21lLm90ZicpIGZvcm1hdCgnb3BlbnR5cGUnKTsgLy8gdXNlZCB3aGVuIGRldmVsb3BpbmcgZm9udHNcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuIiwiLy8gQmFzZSBDbGFzcyBEZWZpbml0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi4jeyRmYS1jc3MtcHJlZml4fSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udDogbm9ybWFsIG5vcm1hbCBub3JtYWwgI3skZmEtZm9udC1zaXplLWJhc2V9LyN7JGZhLWxpbmUtaGVpZ2h0LWJhc2V9IEZvbnRBd2Vzb21lOyAvLyBzaG9ydGVuaW5nIGZvbnQgZGVjbGFyYXRpb25cbiAgZm9udC1zaXplOiBpbmhlcml0OyAvLyBjYW4ndCBoYXZlIGZvbnQtc2l6ZSBpbmhlcml0IG9uIGxpbmUgYWJvdmUsIHNvIG5lZWQgdG8gb3ZlcnJpZGVcbiAgdGV4dC1yZW5kZXJpbmc6IGF1dG87IC8vIG9wdGltaXplbGVnaWJpbGl0eSB0aHJvd3MgdGhpbmdzIG9mZiAjMTA5NFxuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcblxufVxuIiwiLy8gSWNvbiBTaXplc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiBtYWtlcyB0aGUgZm9udCAzMyUgbGFyZ2VyIHJlbGF0aXZlIHRvIHRoZSBpY29uIGNvbnRhaW5lciAqL1xuLiN7JGZhLWNzcy1wcmVmaXh9LWxnIHtcbiAgZm9udC1zaXplOiAoNGVtIC8gMyk7XG4gIGxpbmUtaGVpZ2h0OiAoM2VtIC8gNCk7XG4gIHZlcnRpY2FsLWFsaWduOiAtMTUlO1xufVxuLiN7JGZhLWNzcy1wcmVmaXh9LTJ4IHsgZm9udC1zaXplOiAyZW07IH1cbi4jeyRmYS1jc3MtcHJlZml4fS0zeCB7IGZvbnQtc2l6ZTogM2VtOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tNHggeyBmb250LXNpemU6IDRlbTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LTV4IHsgZm9udC1zaXplOiA1ZW07IH1cbiIsIi8vIEZpeGVkIFdpZHRoIEljb25zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4uI3skZmEtY3NzLXByZWZpeH0tZncge1xuICB3aWR0aDogKDE4ZW0gLyAxNCk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbiIsIi8vIExpc3QgSWNvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLiN7JGZhLWNzcy1wcmVmaXh9LXVsIHtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICBtYXJnaW4tbGVmdDogJGZhLWxpLXdpZHRoO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gID4gbGkgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbn1cbi4jeyRmYS1jc3MtcHJlZml4fS1saSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogLSRmYS1saS13aWR0aDtcbiAgd2lkdGg6ICRmYS1saS13aWR0aDtcbiAgdG9wOiAoMmVtIC8gMTQpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICYuI3skZmEtY3NzLXByZWZpeH0tbGcge1xuICAgIGxlZnQ6IC0kZmEtbGktd2lkdGggKyAoNGVtIC8gMTQpO1xuICB9XG59XG4iLCIvLyBCb3JkZXJlZCAmIFB1bGxlZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4uI3skZmEtY3NzLXByZWZpeH0tYm9yZGVyIHtcbiAgcGFkZGluZzogLjJlbSAuMjVlbSAuMTVlbTtcbiAgYm9yZGVyOiBzb2xpZCAuMDhlbSAkZmEtYm9yZGVyLWNvbG9yO1xuICBib3JkZXItcmFkaXVzOiAuMWVtO1xufVxuXG4uI3skZmEtY3NzLXByZWZpeH0tcHVsbC1sZWZ0IHsgZmxvYXQ6IGxlZnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1wdWxsLXJpZ2h0IHsgZmxvYXQ6IHJpZ2h0OyB9XG5cbi4jeyRmYS1jc3MtcHJlZml4fSB7XG4gICYuI3skZmEtY3NzLXByZWZpeH0tcHVsbC1sZWZ0IHsgbWFyZ2luLXJpZ2h0OiAuM2VtOyB9XG4gICYuI3skZmEtY3NzLXByZWZpeH0tcHVsbC1yaWdodCB7IG1hcmdpbi1sZWZ0OiAuM2VtOyB9XG59XG5cbi8qIERlcHJlY2F0ZWQgYXMgb2YgNC40LjAgKi9cbi5wdWxsLXJpZ2h0IHsgZmxvYXQ6IHJpZ2h0OyB9XG4ucHVsbC1sZWZ0IHsgZmxvYXQ6IGxlZnQ7IH1cblxuLiN7JGZhLWNzcy1wcmVmaXh9IHtcbiAgJi5wdWxsLWxlZnQgeyBtYXJnaW4tcmlnaHQ6IC4zZW07IH1cbiAgJi5wdWxsLXJpZ2h0IHsgbWFyZ2luLWxlZnQ6IC4zZW07IH1cbn1cbiIsIi8vIFNwaW5uaW5nIEljb25zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4uI3skZmEtY3NzLXByZWZpeH0tc3BpbiB7XG4gIC13ZWJraXQtYW5pbWF0aW9uOiBmYS1zcGluIDJzIGluZmluaXRlIGxpbmVhcjtcbiAgICAgICAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyO1xufVxuXG4uI3skZmEtY3NzLXByZWZpeH0tcHVsc2Uge1xuICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAxcyBpbmZpbml0ZSBzdGVwcyg4KTtcbiAgICAgICAgICBhbmltYXRpb246IGZhLXNwaW4gMXMgaW5maW5pdGUgc3RlcHMoOCk7XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBmYS1zcGluIHtcbiAgMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuICAxMDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM1OWRlZyk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNTlkZWcpO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgZmEtc3BpbiB7XG4gIDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNTlkZWcpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzU5ZGVnKTtcbiAgfVxufVxuIiwiLy8gUm90YXRlZCAmIEZsaXBwZWQgSWNvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLiN7JGZhLWNzcy1wcmVmaXh9LXJvdGF0ZS05MCAgeyBAaW5jbHVkZSBmYS1pY29uLXJvdGF0ZSg5MGRlZywgMSk7ICB9XG4uI3skZmEtY3NzLXByZWZpeH0tcm90YXRlLTE4MCB7IEBpbmNsdWRlIGZhLWljb24tcm90YXRlKDE4MGRlZywgMik7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1yb3RhdGUtMjcwIHsgQGluY2x1ZGUgZmEtaWNvbi1yb3RhdGUoMjcwZGVnLCAzKTsgfVxuXG4uI3skZmEtY3NzLXByZWZpeH0tZmxpcC1ob3Jpem9udGFsIHsgQGluY2x1ZGUgZmEtaWNvbi1mbGlwKC0xLCAxLCAwKTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZsaXAtdmVydGljYWwgICB7IEBpbmNsdWRlIGZhLWljb24tZmxpcCgxLCAtMSwgMik7IH1cblxuLy8gSG9vayBmb3IgSUU4LTlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuOnJvb3QgLiN7JGZhLWNzcy1wcmVmaXh9LXJvdGF0ZS05MCxcbjpyb290IC4jeyRmYS1jc3MtcHJlZml4fS1yb3RhdGUtMTgwLFxuOnJvb3QgLiN7JGZhLWNzcy1wcmVmaXh9LXJvdGF0ZS0yNzAsXG46cm9vdCAuI3skZmEtY3NzLXByZWZpeH0tZmxpcC1ob3Jpem9udGFsLFxuOnJvb3QgLiN7JGZhLWNzcy1wcmVmaXh9LWZsaXAtdmVydGljYWwge1xuICBmaWx0ZXI6IG5vbmU7XG59XG4iLCIvLyBTdGFja2VkIEljb25zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi4jeyRmYS1jc3MtcHJlZml4fS1zdGFjayB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMmVtO1xuICBoZWlnaHQ6IDJlbTtcbiAgbGluZS1oZWlnaHQ6IDJlbTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdGFjay0xeCwgLiN7JGZhLWNzcy1wcmVmaXh9LXN0YWNrLTJ4IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLiN7JGZhLWNzcy1wcmVmaXh9LXN0YWNrLTF4IHsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdGFjay0yeCB7IGZvbnQtc2l6ZTogMmVtOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taW52ZXJzZSB7IGNvbG9yOiAkZmEtaW52ZXJzZTsgfVxuIiwiLyogRm9udCBBd2Vzb21lIHVzZXMgdGhlIFVuaWNvZGUgUHJpdmF0ZSBVc2UgQXJlYSAoUFVBKSB0byBlbnN1cmUgc2NyZWVuXG4gICByZWFkZXJzIGRvIG5vdCByZWFkIG9mZiByYW5kb20gY2hhcmFjdGVycyB0aGF0IHJlcHJlc2VudCBpY29ucyAqL1xuXG4uI3skZmEtY3NzLXByZWZpeH0tZ2xhc3M6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1nbGFzczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW11c2ljOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbXVzaWM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zZWFyY2g6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zZWFyY2g7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1lbnZlbG9wZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZW52ZWxvcGUtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWhlYXJ0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaGVhcnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdGFyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3RhcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXN0YXItbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXN0YXItbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXVzZXI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci11c2VyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmlsbTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZpbG07IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10aC1sYXJnZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRoLWxhcmdlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdGg6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10aDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRoLWxpc3Q6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10aC1saXN0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2hlY2s6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jaGVjazsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXJlbW92ZTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tY2xvc2U6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXRpbWVzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdGltZXM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zZWFyY2gtcGx1czpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNlYXJjaC1wbHVzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2VhcmNoLW1pbnVzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2VhcmNoLW1pbnVzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcG93ZXItb2ZmOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcG93ZXItb2ZmOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2lnbmFsOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2lnbmFsOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ2VhcjpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tY29nOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY29nOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdHJhc2gtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRyYXNoLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1ob21lOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaG9tZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZpbGUtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZpbGUtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNsb2NrLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jbG9jay1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcm9hZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXJvYWQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1kb3dubG9hZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWRvd25sb2FkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXJyb3ctY2lyY2xlLW8tZG93bjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFycm93LWNpcmNsZS1vLWRvd247IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hcnJvdy1jaXJjbGUtby11cDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFycm93LWNpcmNsZS1vLXVwOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taW5ib3g6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1pbmJveDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBsYXktY2lyY2xlLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wbGF5LWNpcmNsZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcm90YXRlLXJpZ2h0OmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1yZXBlYXQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1yZXBlYXQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1yZWZyZXNoOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcmVmcmVzaDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxpc3QtYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbGlzdC1hbHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1sb2NrOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbG9jazsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZsYWc6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1mbGFnOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taGVhZHBob25lczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhlYWRwaG9uZXM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS12b2x1bWUtb2ZmOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdm9sdW1lLW9mZjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXZvbHVtZS1kb3duOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdm9sdW1lLWRvd247IH1cbi4jeyRmYS1jc3MtcHJlZml4fS12b2x1bWUtdXA6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci12b2x1bWUtdXA7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1xcmNvZGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1xcmNvZGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1iYXJjb2RlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYmFyY29kZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRhZzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRhZzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRhZ3M6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10YWdzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYm9vazpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJvb2s7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1ib29rbWFyazpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJvb2ttYXJrOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcHJpbnQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wcmludDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNhbWVyYTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNhbWVyYTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZvbnQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1mb250OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYm9sZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJvbGQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1pdGFsaWM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1pdGFsaWM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10ZXh0LWhlaWdodDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRleHQtaGVpZ2h0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdGV4dC13aWR0aDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRleHQtd2lkdGg7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hbGlnbi1sZWZ0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYWxpZ24tbGVmdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWFsaWduLWNlbnRlcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFsaWduLWNlbnRlcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWFsaWduLXJpZ2h0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYWxpZ24tcmlnaHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hbGlnbi1qdXN0aWZ5OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYWxpZ24tanVzdGlmeTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxpc3Q6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1saXN0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZGVkZW50OmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1vdXRkZW50OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItb3V0ZGVudDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWluZGVudDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWluZGVudDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXZpZGVvLWNhbWVyYTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXZpZGVvLWNhbWVyYTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBob3RvOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1pbWFnZTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tcGljdHVyZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGljdHVyZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGVuY2lsOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGVuY2lsOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWFwLW1hcmtlcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1hcC1tYXJrZXI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hZGp1c3Q6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hZGp1c3Q7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10aW50OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdGludDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWVkaXQ6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXBlbmNpbC1zcXVhcmUtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBlbmNpbC1zcXVhcmUtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNoYXJlLXNxdWFyZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2hhcmUtc3F1YXJlLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jaGVjay1zcXVhcmUtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNoZWNrLXNxdWFyZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXJyb3dzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYXJyb3dzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3RlcC1iYWNrd2FyZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXN0ZXAtYmFja3dhcmQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1mYXN0LWJhY2t3YXJkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmFzdC1iYWNrd2FyZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJhY2t3YXJkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYmFja3dhcmQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1wbGF5OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGxheTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBhdXNlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGF1c2U7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdG9wOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3RvcDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZvcndhcmQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1mb3J3YXJkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmFzdC1mb3J3YXJkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmFzdC1mb3J3YXJkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3RlcC1mb3J3YXJkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3RlcC1mb3J3YXJkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZWplY3Q6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1lamVjdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNoZXZyb24tbGVmdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNoZXZyb24tbGVmdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNoZXZyb24tcmlnaHQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jaGV2cm9uLXJpZ2h0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGx1cy1jaXJjbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wbHVzLWNpcmNsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1pbnVzLWNpcmNsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1pbnVzLWNpcmNsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRpbWVzLWNpcmNsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRpbWVzLWNpcmNsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNoZWNrLWNpcmNsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNoZWNrLWNpcmNsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXF1ZXN0aW9uLWNpcmNsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXF1ZXN0aW9uLWNpcmNsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWluZm8tY2lyY2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaW5mby1jaXJjbGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jcm9zc2hhaXJzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY3Jvc3NoYWlyczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRpbWVzLWNpcmNsZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdGltZXMtY2lyY2xlLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jaGVjay1jaXJjbGUtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNoZWNrLWNpcmNsZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYmFuOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYmFuOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXJyb3ctbGVmdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFycm93LWxlZnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hcnJvdy1yaWdodDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFycm93LXJpZ2h0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXJyb3ctdXA6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hcnJvdy11cDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWFycm93LWRvd246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hcnJvdy1kb3duOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWFpbC1mb3J3YXJkOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1zaGFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNoYXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZXhwYW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZXhwYW5kOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY29tcHJlc3M6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jb21wcmVzczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBsdXM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wbHVzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWludXM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1taW51czsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWFzdGVyaXNrOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYXN0ZXJpc2s7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1leGNsYW1hdGlvbi1jaXJjbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1leGNsYW1hdGlvbi1jaXJjbGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1naWZ0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZ2lmdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxlYWY6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1sZWFmOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmlyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZpcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1leWU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1leWU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1leWUtc2xhc2g6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1leWUtc2xhc2g7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS13YXJuaW5nOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1leGNsYW1hdGlvbi10cmlhbmdsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGxhbmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wbGFuZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNhbGVuZGFyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2FsZW5kYXI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1yYW5kb206YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1yYW5kb207IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jb21tZW50OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY29tbWVudDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1hZ25ldDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1hZ25ldDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNoZXZyb24tdXA6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jaGV2cm9uLXVwOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2hldnJvbi1kb3duOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2hldnJvbi1kb3duOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcmV0d2VldDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXJldHdlZXQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zaG9wcGluZy1jYXJ0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2hvcHBpbmctY2FydDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZvbGRlcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZvbGRlcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZvbGRlci1vcGVuOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZm9sZGVyLW9wZW47IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hcnJvd3MtdjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFycm93cy12OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXJyb3dzLWg6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hcnJvd3MtaDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJhci1jaGFydC1vOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1iYXItY2hhcnQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1iYXItY2hhcnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10d2l0dGVyLXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXR3aXR0ZXItc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmFjZWJvb2stc3F1YXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmFjZWJvb2stc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2FtZXJhLXJldHJvOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2FtZXJhLXJldHJvOyB9XG4uI3skZmEtY3NzLXByZWZpeH0ta2V5OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXIta2V5OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ2VhcnM6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWNvZ3M6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jb2dzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY29tbWVudHM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jb21tZW50czsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRodW1icy1vLXVwOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdGh1bWJzLW8tdXA7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10aHVtYnMtby1kb3duOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdGh1bWJzLW8tZG93bjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXN0YXItaGFsZjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXN0YXItaGFsZjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWhlYXJ0LW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1oZWFydC1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2lnbi1vdXQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zaWduLW91dDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxpbmtlZGluLXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWxpbmtlZGluLXNxdWFyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRodW1iLXRhY2s6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10aHVtYi10YWNrOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZXh0ZXJuYWwtbGluazpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWV4dGVybmFsLWxpbms7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zaWduLWluOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2lnbi1pbjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRyb3BoeTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRyb3BoeTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWdpdGh1Yi1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1naXRodWItc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdXBsb2FkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdXBsb2FkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbGVtb24tbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWxlbW9uLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1waG9uZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBob25lOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3F1YXJlLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zcXVhcmUtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJvb2ttYXJrLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1ib29rbWFyay1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGhvbmUtc3F1YXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGhvbmUtc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdHdpdHRlcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXR3aXR0ZXI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1mYWNlYm9vay1mOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1mYWNlYm9vazpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZhY2Vib29rOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ2l0aHViOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZ2l0aHViOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdW5sb2NrOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdW5sb2NrOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY3JlZGl0LWNhcmQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jcmVkaXQtY2FyZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZlZWQ6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXJzczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXJzczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWhkZC1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaGRkLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1idWxsaG9ybjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJ1bGxob3JuOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYmVsbDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJlbGw7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jZXJ0aWZpY2F0ZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNlcnRpZmljYXRlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taGFuZC1vLXJpZ2h0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaGFuZC1vLXJpZ2h0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0taGFuZC1vLWxlZnQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1oYW5kLW8tbGVmdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWhhbmQtby11cDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhhbmQtby11cDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWhhbmQtby1kb3duOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaGFuZC1vLWRvd247IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hcnJvdy1jaXJjbGUtbGVmdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFycm93LWNpcmNsZS1sZWZ0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXJyb3ctY2lyY2xlLXJpZ2h0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYXJyb3ctY2lyY2xlLXJpZ2h0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXJyb3ctY2lyY2xlLXVwOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYXJyb3ctY2lyY2xlLXVwOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXJyb3ctY2lyY2xlLWRvd246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hcnJvdy1jaXJjbGUtZG93bjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWdsb2JlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZ2xvYmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS13cmVuY2g6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci13cmVuY2g7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10YXNrczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRhc2tzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmlsdGVyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmlsdGVyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYnJpZWZjYXNlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYnJpZWZjYXNlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXJyb3dzLWFsdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFycm93cy1hbHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1ncm91cDpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tdXNlcnM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci11c2VyczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNoYWluOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1saW5rOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbGluazsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNsb3VkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2xvdWQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1mbGFzazpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZsYXNrOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY3V0OmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1zY2lzc29yczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNjaXNzb3JzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY29weTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tZmlsZXMtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZpbGVzLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1wYXBlcmNsaXA6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wYXBlcmNsaXA7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zYXZlOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1mbG9wcHktbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZsb3BweS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3F1YXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbmF2aWNvbjpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tcmVvcmRlcjpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tYmFyczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJhcnM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1saXN0LXVsOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbGlzdC11bDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxpc3Qtb2w6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1saXN0LW9sOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3RyaWtldGhyb3VnaDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXN0cmlrZXRocm91Z2g7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS11bmRlcmxpbmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci11bmRlcmxpbmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10YWJsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRhYmxlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWFnaWM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1tYWdpYzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRydWNrOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdHJ1Y2s7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1waW50ZXJlc3Q6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1waW50ZXJlc3Q7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1waW50ZXJlc3Qtc3F1YXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGludGVyZXN0LXNxdWFyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWdvb2dsZS1wbHVzLXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWdvb2dsZS1wbHVzLXNxdWFyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWdvb2dsZS1wbHVzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZ29vZ2xlLXBsdXM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tb25leTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1vbmV5OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2FyZXQtZG93bjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNhcmV0LWRvd247IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jYXJldC11cDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNhcmV0LXVwOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2FyZXQtbGVmdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNhcmV0LWxlZnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jYXJldC1yaWdodDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNhcmV0LXJpZ2h0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY29sdW1uczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNvbHVtbnM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS11bnNvcnRlZDpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tc29ydDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNvcnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zb3J0LWRvd246YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXNvcnQtZGVzYzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNvcnQtZGVzYzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNvcnQtdXA6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXNvcnQtYXNjOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc29ydC1hc2M7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1lbnZlbG9wZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWVudmVsb3BlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbGlua2VkaW46YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1saW5rZWRpbjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXJvdGF0ZS1sZWZ0OmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS11bmRvOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdW5kbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxlZ2FsOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1nYXZlbDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWdhdmVsOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZGFzaGJvYXJkOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS10YWNob21ldGVyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdGFjaG9tZXRlcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNvbW1lbnQtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNvbW1lbnQtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNvbW1lbnRzLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jb21tZW50cy1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmxhc2g6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWJvbHQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1ib2x0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2l0ZW1hcDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNpdGVtYXA7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS11bWJyZWxsYTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXVtYnJlbGxhOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGFzdGU6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWNsaXBib2FyZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNsaXBib2FyZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxpZ2h0YnVsYi1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbGlnaHRidWxiLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1leGNoYW5nZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWV4Y2hhbmdlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2xvdWQtZG93bmxvYWQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jbG91ZC1kb3dubG9hZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNsb3VkLXVwbG9hZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNsb3VkLXVwbG9hZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXVzZXItbWQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci11c2VyLW1kOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3RldGhvc2NvcGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zdGV0aG9zY29wZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXN1aXRjYXNlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3VpdGNhc2U7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1iZWxsLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1iZWxsLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jb2ZmZWU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jb2ZmZWU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jdXRsZXJ5OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY3V0bGVyeTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZpbGUtdGV4dC1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmlsZS10ZXh0LW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1idWlsZGluZy1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYnVpbGRpbmctbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWhvc3BpdGFsLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1ob3NwaXRhbC1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYW1idWxhbmNlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYW1idWxhbmNlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWVka2l0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbWVka2l0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmlnaHRlci1qZXQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1maWdodGVyLWpldDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJlZXI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1iZWVyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taC1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1oLXNxdWFyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBsdXMtc3F1YXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGx1cy1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hbmdsZS1kb3VibGUtbGVmdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFuZ2xlLWRvdWJsZS1sZWZ0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYW5nbGUtZG91YmxlLXJpZ2h0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYW5nbGUtZG91YmxlLXJpZ2h0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYW5nbGUtZG91YmxlLXVwOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYW5nbGUtZG91YmxlLXVwOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYW5nbGUtZG91YmxlLWRvd246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hbmdsZS1kb3VibGUtZG93bjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWFuZ2xlLWxlZnQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hbmdsZS1sZWZ0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYW5nbGUtcmlnaHQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hbmdsZS1yaWdodDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWFuZ2xlLXVwOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYW5nbGUtdXA7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hbmdsZS1kb3duOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYW5nbGUtZG93bjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWRlc2t0b3A6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1kZXNrdG9wOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbGFwdG9wOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbGFwdG9wOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdGFibGV0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdGFibGV0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbW9iaWxlLXBob25lOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1tb2JpbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1tb2JpbGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jaXJjbGUtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNpcmNsZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcXVvdGUtbGVmdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXF1b3RlLWxlZnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1xdW90ZS1yaWdodDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXF1b3RlLXJpZ2h0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3Bpbm5lcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNwaW5uZXI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jaXJjbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jaXJjbGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tYWlsLXJlcGx5OmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1yZXBseTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXJlcGx5OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ2l0aHViLWFsdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWdpdGh1Yi1hbHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1mb2xkZXItbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZvbGRlci1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZm9sZGVyLW9wZW4tbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZvbGRlci1vcGVuLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zbWlsZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc21pbGUtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZyb3duLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1mcm93bi1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWVoLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1tZWgtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWdhbWVwYWQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1nYW1lcGFkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0ta2V5Ym9hcmQtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWtleWJvYXJkLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1mbGFnLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1mbGFnLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1mbGFnLWNoZWNrZXJlZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZsYWctY2hlY2tlcmVkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdGVybWluYWw6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10ZXJtaW5hbDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNvZGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jb2RlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWFpbC1yZXBseS1hbGw6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXJlcGx5LWFsbDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXJlcGx5LWFsbDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXN0YXItaGFsZi1lbXB0eTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tc3Rhci1oYWxmLWZ1bGw6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXN0YXItaGFsZi1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3Rhci1oYWxmLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1sb2NhdGlvbi1hcnJvdzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWxvY2F0aW9uLWFycm93OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY3JvcDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNyb3A7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jb2RlLWZvcms6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jb2RlLWZvcms7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS11bmxpbms6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWNoYWluLWJyb2tlbjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNoYWluLWJyb2tlbjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXF1ZXN0aW9uOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcXVlc3Rpb247IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1pbmZvOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaW5mbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWV4Y2xhbWF0aW9uOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZXhjbGFtYXRpb247IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdXBlcnNjcmlwdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXN1cGVyc2NyaXB0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3Vic2NyaXB0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3Vic2NyaXB0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZXJhc2VyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZXJhc2VyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcHV6emxlLXBpZWNlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcHV6emxlLXBpZWNlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWljcm9waG9uZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1pY3JvcGhvbmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1taWNyb3Bob25lLXNsYXNoOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbWljcm9waG9uZS1zbGFzaDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNoaWVsZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNoaWVsZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNhbGVuZGFyLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYWxlbmRhci1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmlyZS1leHRpbmd1aXNoZXI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1maXJlLWV4dGluZ3Vpc2hlcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXJvY2tldDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXJvY2tldDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1heGNkbjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1heGNkbjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNoZXZyb24tY2lyY2xlLWxlZnQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jaGV2cm9uLWNpcmNsZS1sZWZ0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2hldnJvbi1jaXJjbGUtcmlnaHQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jaGV2cm9uLWNpcmNsZS1yaWdodDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNoZXZyb24tY2lyY2xlLXVwOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2hldnJvbi1jaXJjbGUtdXA7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jaGV2cm9uLWNpcmNsZS1kb3duOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2hldnJvbi1jaXJjbGUtZG93bjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWh0bWw1OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaHRtbDU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jc3MzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY3NzMzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWFuY2hvcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFuY2hvcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXVubG9jay1hbHQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci11bmxvY2stYWx0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYnVsbHNleWU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1idWxsc2V5ZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWVsbGlwc2lzLWg6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1lbGxpcHNpcy1oOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZWxsaXBzaXMtdjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWVsbGlwc2lzLXY7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1yc3Mtc3F1YXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcnNzLXNxdWFyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBsYXktY2lyY2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGxheS1jaXJjbGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10aWNrZXQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10aWNrZXQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1taW51cy1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1taW51cy1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1taW51cy1zcXVhcmUtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1pbnVzLXNxdWFyZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbGV2ZWwtdXA6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1sZXZlbC11cDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxldmVsLWRvd246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1sZXZlbC1kb3duOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2hlY2stc3F1YXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2hlY2stc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGVuY2lsLXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBlbmNpbC1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1leHRlcm5hbC1saW5rLXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWV4dGVybmFsLWxpbmstc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2hhcmUtc3F1YXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2hhcmUtc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY29tcGFzczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNvbXBhc3M7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10b2dnbGUtZG93bjpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tY2FyZXQtc3F1YXJlLW8tZG93bjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNhcmV0LXNxdWFyZS1vLWRvd247IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10b2dnbGUtdXA6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWNhcmV0LXNxdWFyZS1vLXVwOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2FyZXQtc3F1YXJlLW8tdXA7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10b2dnbGUtcmlnaHQ6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWNhcmV0LXNxdWFyZS1vLXJpZ2h0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2FyZXQtc3F1YXJlLW8tcmlnaHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1ldXJvOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1ldXI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1ldXI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1nYnA6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1nYnA7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1kb2xsYXI6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXVzZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXVzZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXJ1cGVlOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1pbnI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1pbnI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jbnk6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXJtYjpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0teWVuOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1qcHk6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1qcHk7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1ydWJsZTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tcm91YmxlOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1ydWI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1ydWI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS13b246YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWtydzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWtydzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJpdGNvaW46YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWJ0YzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJ0YzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZpbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1maWxlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmlsZS10ZXh0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmlsZS10ZXh0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc29ydC1hbHBoYS1hc2M6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zb3J0LWFscGhhLWFzYzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNvcnQtYWxwaGEtZGVzYzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNvcnQtYWxwaGEtZGVzYzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNvcnQtYW1vdW50LWFzYzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNvcnQtYW1vdW50LWFzYzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNvcnQtYW1vdW50LWRlc2M6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zb3J0LWFtb3VudC1kZXNjOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc29ydC1udW1lcmljLWFzYzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNvcnQtbnVtZXJpYy1hc2M7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zb3J0LW51bWVyaWMtZGVzYzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNvcnQtbnVtZXJpYy1kZXNjOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdGh1bWJzLXVwOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdGh1bWJzLXVwOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdGh1bWJzLWRvd246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10aHVtYnMtZG93bjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXlvdXR1YmUtc3F1YXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXIteW91dHViZS1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS15b3V0dWJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXIteW91dHViZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXhpbmc6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci14aW5nOyB9XG4uI3skZmEtY3NzLXByZWZpeH0teGluZy1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci14aW5nLXNxdWFyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXlvdXR1YmUtcGxheTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXlvdXR1YmUtcGxheTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWRyb3Bib3g6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1kcm9wYm94OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3RhY2stb3ZlcmZsb3c6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zdGFjay1vdmVyZmxvdzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWluc3RhZ3JhbTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWluc3RhZ3JhbTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZsaWNrcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZsaWNrcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWFkbjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFkbjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJpdGJ1Y2tldDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJpdGJ1Y2tldDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJpdGJ1Y2tldC1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1iaXRidWNrZXQtc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdHVtYmxyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdHVtYmxyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdHVtYmxyLXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXR1bWJsci1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1sb25nLWFycm93LWRvd246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1sb25nLWFycm93LWRvd247IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1sb25nLWFycm93LXVwOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbG9uZy1hcnJvdy11cDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxvbmctYXJyb3ctbGVmdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWxvbmctYXJyb3ctbGVmdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxvbmctYXJyb3ctcmlnaHQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1sb25nLWFycm93LXJpZ2h0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXBwbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hcHBsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXdpbmRvd3M6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci13aW5kb3dzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYW5kcm9pZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFuZHJvaWQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1saW51eDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWxpbnV4OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZHJpYmJibGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1kcmliYmJsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNreXBlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2t5cGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1mb3Vyc3F1YXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZm91cnNxdWFyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRyZWxsbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRyZWxsbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZlbWFsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZlbWFsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1hbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1tYWxlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ2l0dGlwOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1ncmF0aXBheTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWdyYXRpcGF5OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3VuLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zdW4tbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1vb24tbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1vb24tbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWFyY2hpdmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hcmNoaXZlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYnVnOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYnVnOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdms6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci12azsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXdlaWJvOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItd2VpYm87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1yZW5yZW46YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1yZW5yZW47IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1wYWdlbGluZXM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wYWdlbGluZXM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdGFjay1leGNoYW5nZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXN0YWNrLWV4Y2hhbmdlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXJyb3ctY2lyY2xlLW8tcmlnaHQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hcnJvdy1jaXJjbGUtby1yaWdodDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWFycm93LWNpcmNsZS1vLWxlZnQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hcnJvdy1jaXJjbGUtby1sZWZ0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdG9nZ2xlLWxlZnQ6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWNhcmV0LXNxdWFyZS1vLWxlZnQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYXJldC1zcXVhcmUtby1sZWZ0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZG90LWNpcmNsZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZG90LWNpcmNsZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0td2hlZWxjaGFpcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXdoZWVsY2hhaXI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS12aW1lby1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci12aW1lby1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10dXJraXNoLWxpcmE6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXRyeTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRyeTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBsdXMtc3F1YXJlLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wbHVzLXNxdWFyZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3BhY2Utc2h1dHRsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNwYWNlLXNodXR0bGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zbGFjazpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNsYWNrOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZW52ZWxvcGUtc3F1YXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZW52ZWxvcGUtc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0td29yZHByZXNzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItd29yZHByZXNzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tb3BlbmlkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItb3BlbmlkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taW5zdGl0dXRpb246YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWJhbms6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LXVuaXZlcnNpdHk6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci11bml2ZXJzaXR5OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbW9ydGFyLWJvYXJkOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1ncmFkdWF0aW9uLWNhcDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWdyYWR1YXRpb24tY2FwOyB9XG4uI3skZmEtY3NzLXByZWZpeH0teWFob286YmVmb3JlIHsgY29udGVudDogJGZhLXZhci15YWhvbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWdvb2dsZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWdvb2dsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXJlZGRpdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXJlZGRpdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXJlZGRpdC1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1yZWRkaXQtc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3R1bWJsZXVwb24tY2lyY2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3R1bWJsZXVwb24tY2lyY2xlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3R1bWJsZXVwb246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zdHVtYmxldXBvbjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWRlbGljaW91czpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWRlbGljaW91czsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWRpZ2c6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1kaWdnOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGllZC1waXBlci1wcDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBpZWQtcGlwZXItcHA7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1waWVkLXBpcGVyLWFsdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBpZWQtcGlwZXItYWx0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZHJ1cGFsOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZHJ1cGFsOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tam9vbWxhOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItam9vbWxhOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbGFuZ3VhZ2U6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1sYW5ndWFnZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZheDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZheDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJ1aWxkaW5nOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYnVpbGRpbmc7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jaGlsZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNoaWxkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGF3OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGF3OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3Bvb246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zcG9vbjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWN1YmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jdWJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY3ViZXM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jdWJlczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJlaGFuY2U6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1iZWhhbmNlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYmVoYW5jZS1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1iZWhhbmNlLXNxdWFyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXN0ZWFtOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3RlYW07IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdGVhbS1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zdGVhbS1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1yZWN5Y2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcmVjeWNsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWF1dG9tb2JpbGU6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWNhcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNhcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNhYjpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tdGF4aTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRheGk7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10cmVlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdHJlZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNwb3RpZnk6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zcG90aWZ5OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZGV2aWFudGFydDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWRldmlhbnRhcnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zb3VuZGNsb3VkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc291bmRjbG91ZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWRhdGFiYXNlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZGF0YWJhc2U7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1maWxlLXBkZi1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmlsZS1wZGYtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZpbGUtd29yZC1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmlsZS13b3JkLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1maWxlLWV4Y2VsLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1maWxlLWV4Y2VsLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1maWxlLXBvd2VycG9pbnQtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZpbGUtcG93ZXJwb2ludC1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmlsZS1waG90by1vOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1maWxlLXBpY3R1cmUtbzpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tZmlsZS1pbWFnZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmlsZS1pbWFnZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmlsZS16aXAtbzpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tZmlsZS1hcmNoaXZlLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1maWxlLWFyY2hpdmUtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZpbGUtc291bmQtbzpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tZmlsZS1hdWRpby1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmlsZS1hdWRpby1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmlsZS1tb3ZpZS1vOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1maWxlLXZpZGVvLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1maWxlLXZpZGVvLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1maWxlLWNvZGUtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZpbGUtY29kZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdmluZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXZpbmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jb2RlcGVuOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY29kZXBlbjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWpzZmlkZGxlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItanNmaWRkbGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1saWZlLWJvdXk6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWxpZmUtYnVveTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tbGlmZS1zYXZlcjpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tc3VwcG9ydDpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tbGlmZS1yaW5nOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbGlmZS1yaW5nOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2lyY2xlLW8tbm90Y2g6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jaXJjbGUtby1ub3RjaDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXJhOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1yZXNpc3RhbmNlOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1yZWJlbDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXJlYmVsOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ2U6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWVtcGlyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWVtcGlyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWdpdC1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1naXQtc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ2l0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZ2l0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0teS1jb21iaW5hdG9yLXNxdWFyZTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0teWMtc3F1YXJlOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1oYWNrZXItbmV3czpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhhY2tlci1uZXdzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdGVuY2VudC13ZWlibzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRlbmNlbnQtd2VpYm87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1xcTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXFxOyB9XG4uI3skZmEtY3NzLXByZWZpeH0td2VjaGF0OmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS13ZWl4aW46YmVmb3JlIHsgY29udGVudDogJGZhLXZhci13ZWl4aW47IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zZW5kOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1wYXBlci1wbGFuZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBhcGVyLXBsYW5lOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2VuZC1vOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1wYXBlci1wbGFuZS1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGFwZXItcGxhbmUtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWhpc3Rvcnk6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1oaXN0b3J5OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2lyY2xlLXRoaW46YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jaXJjbGUtdGhpbjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWhlYWRlcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhlYWRlcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBhcmFncmFwaDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBhcmFncmFwaDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNsaWRlcnM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zbGlkZXJzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2hhcmUtYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2hhcmUtYWx0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2hhcmUtYWx0LXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNoYXJlLWFsdC1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1ib21iOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYm9tYjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNvY2Nlci1iYWxsLW86YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWZ1dGJvbC1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZnV0Ym9sLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10dHk6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10dHk7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1iaW5vY3VsYXJzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYmlub2N1bGFyczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXBsdWc6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wbHVnOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2xpZGVzaGFyZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNsaWRlc2hhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10d2l0Y2g6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10d2l0Y2g7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS15ZWxwOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXIteWVscDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW5ld3NwYXBlci1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbmV3c3BhcGVyLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS13aWZpOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItd2lmaTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNhbGN1bGF0b3I6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYWxjdWxhdG9yOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGF5cGFsOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGF5cGFsOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ29vZ2xlLXdhbGxldDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWdvb2dsZS13YWxsZXQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jYy12aXNhOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2MtdmlzYTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNjLW1hc3RlcmNhcmQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYy1tYXN0ZXJjYXJkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2MtZGlzY292ZXI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYy1kaXNjb3ZlcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNjLWFtZXg6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYy1hbWV4OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2MtcGF5cGFsOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2MtcGF5cGFsOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2Mtc3RyaXBlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2Mtc3RyaXBlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYmVsbC1zbGFzaDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJlbGwtc2xhc2g7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1iZWxsLXNsYXNoLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1iZWxsLXNsYXNoLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10cmFzaDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRyYXNoOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY29weXJpZ2h0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY29weXJpZ2h0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWV5ZWRyb3BwZXI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1leWVkcm9wcGVyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGFpbnQtYnJ1c2g6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wYWludC1icnVzaDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJpcnRoZGF5LWNha2U6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1iaXJ0aGRheS1jYWtlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXJlYS1jaGFydDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWFyZWEtY2hhcnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1waWUtY2hhcnQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1waWUtY2hhcnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1saW5lLWNoYXJ0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbGluZS1jaGFydDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxhc3RmbTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWxhc3RmbTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWxhc3RmbS1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1sYXN0Zm0tc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdG9nZ2xlLW9mZjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRvZ2dsZS1vZmY7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10b2dnbGUtb246YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10b2dnbGUtb247IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1iaWN5Y2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYmljeWNsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJ1czpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJ1czsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWlveGhvc3Q6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1pb3hob3N0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYW5nZWxsaXN0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYW5nZWxsaXN0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2M6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNoZWtlbDpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tc2hlcWVsOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1pbHM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1pbHM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tZWFucGF0aDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1lYW5wYXRoOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYnV5c2VsbGFkczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJ1eXNlbGxhZHM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jb25uZWN0ZGV2ZWxvcDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNvbm5lY3RkZXZlbG9wOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZGFzaGN1YmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1kYXNoY3ViZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZvcnVtYmVlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZm9ydW1iZWU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1sZWFucHViOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbGVhbnB1YjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNlbGxzeTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNlbGxzeTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNoaXJ0c2luYnVsazpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNoaXJ0c2luYnVsazsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNpbXBseWJ1aWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2ltcGx5YnVpbHQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1za3lhdGxhczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNreWF0bGFzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2FydC1wbHVzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2FydC1wbHVzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2FydC1hcnJvdy1kb3duOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2FydC1hcnJvdy1kb3duOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZGlhbW9uZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWRpYW1vbmQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zaGlwOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2hpcDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXVzZXItc2VjcmV0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdXNlci1zZWNyZXQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tb3RvcmN5Y2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbW90b3JjeWNsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXN0cmVldC12aWV3OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc3RyZWV0LXZpZXc7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1oZWFydGJlYXQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1oZWFydGJlYXQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS12ZW51czpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXZlbnVzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWFyczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1hcnM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tZXJjdXJ5OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbWVyY3VyeTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWludGVyc2V4OmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS10cmFuc2dlbmRlcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRyYW5zZ2VuZGVyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdHJhbnNnZW5kZXItYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdHJhbnNnZW5kZXItYWx0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdmVudXMtZG91YmxlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdmVudXMtZG91YmxlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWFycy1kb3VibGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1tYXJzLWRvdWJsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXZlbnVzLW1hcnM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci12ZW51cy1tYXJzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWFycy1zdHJva2U6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1tYXJzLXN0cm9rZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1hcnMtc3Ryb2tlLXY6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1tYXJzLXN0cm9rZS12OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWFycy1zdHJva2UtaDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1hcnMtc3Ryb2tlLWg7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1uZXV0ZXI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1uZXV0ZXI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1nZW5kZXJsZXNzOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZ2VuZGVybGVzczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZhY2Vib29rLW9mZmljaWFsOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmFjZWJvb2stb2ZmaWNpYWw7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1waW50ZXJlc3QtcDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBpbnRlcmVzdC1wOyB9XG4uI3skZmEtY3NzLXByZWZpeH0td2hhdHNhcHA6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci13aGF0c2FwcDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNlcnZlcjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNlcnZlcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXVzZXItcGx1czpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXVzZXItcGx1czsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXVzZXItdGltZXM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci11c2VyLXRpbWVzOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taG90ZWw6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWJlZDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJlZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXZpYWNvaW46YmVmb3JlIHsgY29udGVudDogJGZhLXZhci12aWFjb2luOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdHJhaW46YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10cmFpbjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXN1YndheTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXN1YndheTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1lZGl1bTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1lZGl1bTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXljOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS15LWNvbWJpbmF0b3I6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci15LWNvbWJpbmF0b3I7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1vcHRpbi1tb25zdGVyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItb3B0aW4tbW9uc3RlcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW9wZW5jYXJ0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItb3BlbmNhcnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1leHBlZGl0ZWRzc2w6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1leHBlZGl0ZWRzc2w7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1iYXR0ZXJ5LTQ6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWJhdHRlcnktZnVsbDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJhdHRlcnktZnVsbDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJhdHRlcnktMzpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tYmF0dGVyeS10aHJlZS1xdWFydGVyczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJhdHRlcnktdGhyZWUtcXVhcnRlcnM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1iYXR0ZXJ5LTI6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWJhdHRlcnktaGFsZjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJhdHRlcnktaGFsZjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJhdHRlcnktMTpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tYmF0dGVyeS1xdWFydGVyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYmF0dGVyeS1xdWFydGVyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYmF0dGVyeS0wOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1iYXR0ZXJ5LWVtcHR5OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYmF0dGVyeS1lbXB0eTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1vdXNlLXBvaW50ZXI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1tb3VzZS1wb2ludGVyOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taS1jdXJzb3I6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1pLWN1cnNvcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW9iamVjdC1ncm91cDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW9iamVjdC1ncm91cDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW9iamVjdC11bmdyb3VwOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItb2JqZWN0LXVuZ3JvdXA7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zdGlja3ktbm90ZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXN0aWNreS1ub3RlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3RpY2t5LW5vdGUtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXN0aWNreS1ub3RlLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jYy1qY2I6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYy1qY2I7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jYy1kaW5lcnMtY2x1YjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNjLWRpbmVycy1jbHViOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2xvbmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jbG9uZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJhbGFuY2Utc2NhbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1iYWxhbmNlLXNjYWxlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taG91cmdsYXNzLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1ob3VyZ2xhc3MtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWhvdXJnbGFzcy0xOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1ob3VyZ2xhc3Mtc3RhcnQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1ob3VyZ2xhc3Mtc3RhcnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1ob3VyZ2xhc3MtMjpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0taG91cmdsYXNzLWhhbGY6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1ob3VyZ2xhc3MtaGFsZjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWhvdXJnbGFzcy0zOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1ob3VyZ2xhc3MtZW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaG91cmdsYXNzLWVuZDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWhvdXJnbGFzczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhvdXJnbGFzczsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWhhbmQtZ3JhYi1vOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1oYW5kLXJvY2stbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhhbmQtcm9jay1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taGFuZC1zdG9wLW86YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWhhbmQtcGFwZXItbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhhbmQtcGFwZXItbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWhhbmQtc2Npc3NvcnMtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhhbmQtc2Npc3NvcnMtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWhhbmQtbGl6YXJkLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1oYW5kLWxpemFyZC1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taGFuZC1zcG9jay1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaGFuZC1zcG9jay1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taGFuZC1wb2ludGVyLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1oYW5kLXBvaW50ZXItbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWhhbmQtcGVhY2UtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhhbmQtcGVhY2UtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXRyYWRlbWFyazpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRyYWRlbWFyazsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXJlZ2lzdGVyZWQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1yZWdpc3RlcmVkOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY3JlYXRpdmUtY29tbW9uczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNyZWF0aXZlLWNvbW1vbnM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1nZzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWdnOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ2ctY2lyY2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZ2ctY2lyY2xlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdHJpcGFkdmlzb3I6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci10cmlwYWR2aXNvcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW9kbm9rbGFzc25pa2k6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1vZG5va2xhc3NuaWtpOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tb2Rub2tsYXNzbmlraS1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1vZG5va2xhc3NuaWtpLXNxdWFyZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWdldC1wb2NrZXQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1nZXQtcG9ja2V0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0td2lraXBlZGlhLXc6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci13aWtpcGVkaWEtdzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNhZmFyaTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNhZmFyaTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNocm9tZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNocm9tZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZpcmVmb3g6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1maXJlZm94OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tb3BlcmE6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1vcGVyYTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWludGVybmV0LWV4cGxvcmVyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItaW50ZXJuZXQtZXhwbG9yZXI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS10djpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tdGVsZXZpc2lvbjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXRlbGV2aXNpb247IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jb250YW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jb250YW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS01MDBweDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLTUwMHB4OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYW1hem9uOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYW1hem9uOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2FsZW5kYXItcGx1cy1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2FsZW5kYXItcGx1cy1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY2FsZW5kYXItbWludXMtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNhbGVuZGFyLW1pbnVzLW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1jYWxlbmRhci10aW1lcy1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY2FsZW5kYXItdGltZXMtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNhbGVuZGFyLWNoZWNrLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jYWxlbmRhci1jaGVjay1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taW5kdXN0cnk6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1pbmR1c3RyeTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1hcC1waW46YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1tYXAtcGluOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWFwLXNpZ25zOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbWFwLXNpZ25zOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tbWFwLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1tYXAtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1hcDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLW1hcDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNvbW1lbnRpbmc6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1jb21tZW50aW5nOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tY29tbWVudGluZy1vOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY29tbWVudGluZy1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0taG91eno6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1ob3V6ejsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXZpbWVvOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdmltZW87IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1ibGFjay10aWU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1ibGFjay10aWU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1mb250aWNvbnM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1mb250aWNvbnM7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1yZWRkaXQtYWxpZW46YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1yZWRkaXQtYWxpZW47IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1lZGdlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZWRnZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNyZWRpdC1jYXJkLWFsdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWNyZWRpdC1jYXJkLWFsdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWNvZGllcGllOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItY29kaWVwaWU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1tb2R4OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbW9keDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZvcnQtYXdlc29tZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZvcnQtYXdlc29tZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXVzYjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXVzYjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXByb2R1Y3QtaHVudDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXByb2R1Y3QtaHVudDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LW1peGNsb3VkOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbWl4Y2xvdWQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zY3JpYmQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zY3JpYmQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1wYXVzZS1jaXJjbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1wYXVzZS1jaXJjbGU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1wYXVzZS1jaXJjbGUtbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBhdXNlLWNpcmNsZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc3RvcC1jaXJjbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zdG9wLWNpcmNsZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXN0b3AtY2lyY2xlLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zdG9wLWNpcmNsZS1vOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2hvcHBpbmctYmFnOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2hvcHBpbmctYmFnOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2hvcHBpbmctYmFza2V0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc2hvcHBpbmctYmFza2V0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0taGFzaHRhZzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWhhc2h0YWc7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1ibHVldG9vdGg6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1ibHVldG9vdGg7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1ibHVldG9vdGgtYjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWJsdWV0b290aC1iOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcGVyY2VudDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXBlcmNlbnQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1naXRsYWI6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1naXRsYWI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS13cGJlZ2lubmVyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItd3BiZWdpbm5lcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXdwZm9ybXM6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci13cGZvcm1zOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZW52aXJhOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZW52aXJhOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdW5pdmVyc2FsLWFjY2VzczpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXVuaXZlcnNhbC1hY2Nlc3M7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS13aGVlbGNoYWlyLWFsdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXdoZWVsY2hhaXItYWx0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tcXVlc3Rpb24tY2lyY2xlLW86YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1xdWVzdGlvbi1jaXJjbGUtbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJsaW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYmxpbmQ7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1hdWRpby1kZXNjcmlwdGlvbjpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWF1ZGlvLWRlc2NyaXB0aW9uOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdm9sdW1lLWNvbnRyb2wtcGhvbmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci12b2x1bWUtY29udHJvbC1waG9uZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWJyYWlsbGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1icmFpbGxlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXNzaXN0aXZlLWxpc3RlbmluZy1zeXN0ZW1zOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItYXNzaXN0aXZlLWxpc3RlbmluZy1zeXN0ZW1zOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tYXNsLWludGVycHJldGluZzpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmc6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1hbWVyaWNhbi1zaWduLWxhbmd1YWdlLWludGVycHJldGluZzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWRlYWZuZXNzOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1oYXJkLW9mLWhlYXJpbmc6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWRlYWY6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1kZWFmOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ2xpZGU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1nbGlkZTsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWdsaWRlLWc6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1nbGlkZS1nOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc2lnbmluZzpiZWZvcmUsXG4uI3skZmEtY3NzLXByZWZpeH0tc2lnbi1sYW5ndWFnZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXNpZ24tbGFuZ3VhZ2U7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1sb3ctdmlzaW9uOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItbG93LXZpc2lvbjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXZpYWRlbzpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXZpYWRlbzsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXZpYWRlby1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci12aWFkZW8tc3F1YXJlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tc25hcGNoYXQ6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zbmFwY2hhdDsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LXNuYXBjaGF0LWdob3N0OmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItc25hcGNoYXQtZ2hvc3Q7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1zbmFwY2hhdC1zcXVhcmU6YmVmb3JlIHsgY29udGVudDogJGZhLXZhci1zbmFwY2hhdC1zcXVhcmU7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS1waWVkLXBpcGVyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItcGllZC1waXBlcjsgfVxuLiN7JGZhLWNzcy1wcmVmaXh9LWZpcnN0LW9yZGVyOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItZmlyc3Qtb3JkZXI7IH1cbi4jeyRmYS1jc3MtcHJlZml4fS15b2FzdDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLXlvYXN0OyB9XG4uI3skZmEtY3NzLXByZWZpeH0tdGhlbWVpc2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICRmYS12YXItdGhlbWVpc2xlOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZ29vZ2xlLXBsdXMtY2lyY2xlOmJlZm9yZSxcbi4jeyRmYS1jc3MtcHJlZml4fS1nb29nbGUtcGx1cy1vZmZpY2lhbDpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWdvb2dsZS1wbHVzLW9mZmljaWFsOyB9XG4uI3skZmEtY3NzLXByZWZpeH0tZmE6YmVmb3JlLFxuLiN7JGZhLWNzcy1wcmVmaXh9LWZvbnQtYXdlc29tZTpiZWZvcmUgeyBjb250ZW50OiAkZmEtdmFyLWZvbnQtYXdlc29tZTsgfVxuIiwiLy8gU2NyZWVuIFJlYWRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLnNyLW9ubHkgeyBAaW5jbHVkZSBzci1vbmx5KCk7IH1cbi5zci1vbmx5LWZvY3VzYWJsZSB7IEBpbmNsdWRlIHNyLW9ubHktZm9jdXNhYmxlKCk7IH1cbiIsIi8qIVxuIE1hdGVyaWFsIENvbXBvbmVudHMgZm9yIHRoZSB3ZWJcbiBDb3B5cmlnaHQgKGMpIDIwMTcgR29vZ2xlIEluYy5cbiBMaWNlbnNlOiBBcGFjaGUtMi4wXG4qL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi5tZGMtYW5pbWF0aW9uLWxpbmVhci1vdXQtc2xvdy1pbiB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7IH1cblxuLm1kYy1hbmltYXRpb24tZmFzdC1vdXQtc2xvdy1pbiB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOyB9XG5cbi5tZGMtYW5pbWF0aW9uLWZhc3Qtb3V0LWxpbmVhci1pbiB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7IH1cblxuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogVGhlIGNzcyBwcm9wZXJ0eSB1c2VkIGZvciBlbGV2YXRpb24uIEluIG1vc3QgY2FzZXMgdGhpcyBzaG91bGQgbm90IGJlIGNoYW5nZWQuIEl0IGlzIGV4cG9zZWRcbiAqIGFzIGEgdmFyaWFibGUgZm9yIGFic3RyYWN0aW9uIC8gZWFzeSB1c2Ugd2hlbiBuZWVkaW5nIHRvIHJlZmVyZW5jZSB0aGUgcHJvcGVydHkgZGlyZWN0bHksIGZvclxuICogZXhhbXBsZSBpbiBhIGB3aWxsLWNoYW5nZWAgcnVsZS5cbiAqL1xuLyoqXG4gKiBUaGUgZGVmYXVsdCBkdXJhdGlvbiB2YWx1ZSBmb3IgZWxldmF0aW9uIHRyYW5zaXRpb25zLlxuICovXG4vKipcbiAqIFRoZSBkZWZhdWx0IGVhc2luZyB2YWx1ZSBmb3IgZWxldmF0aW9uIHRyYW5zaXRpb25zLlxuICovXG4vKipcbiAqIEFwcGxpZXMgdGhlIGNvcnJlY3QgY3NzIHJ1bGVzIHRvIGFuIGVsZW1lbnQgdG8gZ2l2ZSBpdCB0aGUgZWxldmF0aW9uIHNwZWNpZmllZCBieSAkei12YWx1ZS5cbiAqIFRoZSAkei12YWx1ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjQuXG4gKi9cbi8qKlxuICogUmV0dXJucyBhIHN0cmluZyB0aGF0IGNhbiBiZSB1c2VkIGFzIHRoZSB2YWx1ZSBmb3IgYSBgdHJhbnNpdGlvbmAgcHJvcGVydHkgZm9yIGVsZXZhdGlvbi5cbiAqIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBkaXJlY3RseSBpcyB1c2VmdWwgaW4gc2l0dWF0aW9ucyB3aGVyZSBhIGNvbXBvbmVudCBuZWVkcyB0byB0cmFuc2l0aW9uXG4gKiBtb3JlIHRoYW4gb25lIHByb3BlcnR5LlxuICpcbiAqIGBgYHNjc3NcbiAqIC5mb28ge1xuICogICB0cmFuc2l0aW9uOiBtZGMtZWxldmF0aW9uLXRyYW5zaXRpb24tcnVsZSgpLCBvcGFjaXR5IDEwMG1zIGVhc2U7XG4gKiAgIHdpbGwtY2hhbmdlOiAkbWRjLWVsZXZhdGlvbi1wcm9wZXJ0eSwgb3BhY2l0eTtcbiAqIH1cbiAqIGBgYFxuICovXG4vKipcbiAqIEFwcGxpZXMgdGhlIGNvcnJlY3QgY3NzIHJ1bGVzIG5lZWRlZCB0byBoYXZlIGFuIGVsZW1lbnQgdHJhbnNpdGlvbiBiZXR3ZWVuIGVsZXZhdGlvbnMuXG4gKiBUaGlzIG1peGluIHNob3VsZCBiZSBhcHBsaWVkIHRvIGVsZW1lbnRzIHdob3NlIGVsZXZhdGlvbiB2YWx1ZXMgd2lsbCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHRoZWlyXG4gKiBjb250ZXh0IChlLmcuIHdoZW4gYWN0aXZlIG9yIGRpc2FibGVkKS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qXG4gIFByZWNvbXB1dGVkIGxpbmVhciBjb2xvciBjaGFubmVsIHZhbHVlcywgZm9yIHVzZSBpbiBjb250cmFzdCBjYWxjdWxhdGlvbnMuXG4gIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuXG4gIEFsZ29yaXRobSwgZm9yIGMgaW4gMCB0byAyNTU6XG4gIGYoYykge1xuICAgIGMgPSBjIC8gMjU1O1xuICAgIHJldHVybiBjIDwgMC4wMzkyOCA/IGMgLyAxMi45MiA6IE1hdGgucG93KChjICsgMC4wNTUpIC8gMS4wNTUsIDIuNCk7XG4gIH1cblxuICBUaGlzIGxvb2t1cCB0YWJsZSBpcyBuZWVkZWQgc2luY2UgdGhlcmUgaXMgbm8gYHBvd2AgaW4gU0FTUy5cbiovXG4vKiBBbGwgdmFyaWFibGVzIGFyZSBsb2NhbCwgc28gZGlzYWJsZSBwYXR0ZXJuIGNoZWNraW5nLiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGx1bWluYW5jZSBmb3IgYSBjb2xvci5cbiAqIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuICovXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgY29udHJhc3QgcmF0aW8gYmV0d2VlbiB0d28gY29sb3JzLlxuICogU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG4gKi9cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gdXNlIGRhcmsgb3IgbGlnaHQgdGV4dCBvbiB0b3Agb2YgZ2l2ZW4gY29sb3IuXG4gKiBSZXR1cm5zIFwiZGFya1wiIGZvciBkYXJrIHRleHQgYW5kIFwibGlnaHRcIiBmb3IgbGlnaHQgdGV4dC5cbiAqL1xuLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKlxuICBNYWluIHRoZW1lIGNvbG9ycy5cbiAgSWYgeW91J3JlIGEgdXNlciBjdXN0b21pemluZyB5b3VyIGNvbG9yIHNjaGVtZSBpbiBTQVNTLCB0aGVzZSBhcmUgcHJvYmFibHkgdGhlIG9ubHkgdmFyaWFibGVzIHlvdSBuZWVkIHRvIGNoYW5nZS5cbiovXG4vKiBJbmRpZ28gNTAwICovXG4vKiBQaW5rIEEyMDAgKi9cbi8qIFdoaXRlICovXG4vKiBXaGljaCBzZXQgb2YgdGV4dCBjb2xvcnMgdG8gdXNlIGZvciBlYWNoIG1haW4gdGhlbWUgY29sb3IgKGxpZ2h0IG9yIGRhcmspICovXG4vKiBUZXh0IGNvbG9ycyBhY2NvcmRpbmcgdG8gbGlnaHQgdnMgZGFyayBhbmQgdGV4dCB0eXBlICovXG4vKiBQcmltYXJ5IHRleHQgY29sb3JzIGZvciBlYWNoIG9mIHRoZSB0aGVtZSBjb2xvcnMgKi9cbi8qIEFsbCB2YXJpYWJsZXMgYXJlIGxvY2FsLCBzbyBkaXNhYmxlIHBhdHRlcm4gY2hlY2tpbmcuICovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKipcbiAqIEFwcGxpZXMgdGhlIGNvcnJlY3QgdGhlbWUgY29sb3Igc3R5bGUgdG8gdGhlIHNwZWNpZmllZCBwcm9wZXJ0eS5cbiAqICRwcm9wZXJ0eSBpcyB0eXBpY2FsbHkgY29sb3Igb3IgYmFja2dyb3VuZC1jb2xvciwgYnV0IGNhbiBiZSBhbnkgQ1NTIHByb3BlcnR5IHRoYXQgYWNjZXB0cyBjb2xvciB2YWx1ZXMuXG4gKiAkc3R5bGUgc2hvdWxkIGJlIG9uZSBvZiB0aGUgbWFwIGtleXMgaW4gJG1kYy10aGVtZS1wcm9wZXJ0eS12YWx1ZXMgKF92YXJpYWJsZXMuc2NzcykuXG4gKi9cbi8qKlxuICogQ3JlYXRlcyBhIHJ1bGUgdG8gYmUgdXNlZCBpbiBNREMtV2ViIGNvbXBvbmVudHMgZm9yIGRhcmsgdGhlbWluZywgYW5kIGFwcGxpZXMgdGhlIHByb3ZpZGVkIGNvbnRlbnRzLlxuICogU2hvdWxkIHByb3ZpZGUgdGhlICRyb290LXNlbGVjdG9yIG9wdGlvbiBpZiBhcHBsaWVkIHRvIGFueXRoaW5nIG90aGVyIHRoYW4gdGhlIHJvb3Qgc2VsZWN0b3IuXG4gKiBXaGVuIHVzZWQgd2l0aCBhIG1vZGlmaWVyIGNsYXNzLCBwcm92aWRlIGEgc2Vjb25kIGFyZ3VtZW50IG9mIGB0cnVlYCBmb3IgdGhlICRjb21wb3VuZCBwYXJhbWV0ZXJcbiAqIHRvIHNwZWNpZnkgdGhhdCB0aGlzIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBhIGNvbXBvdW5kIGNsYXNzLlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBjb2xvcjogYmxhY2s7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtdGhlbWUtZGFyayB7XG4gKiAgICAgY29sb3I6IHdoaXRlO1xuICogICB9XG4gKlxuICogICAmX19iYXIge1xuICogICAgIGJhY2tncm91bmQ6IGJsYWNrO1xuICpcbiAqICAgICBAaW5jbHVkZSBtZGMtdGhlbWUtZGFyayhcIi5tZGMtZm9vXCIpIHtcbiAqICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICogICAgIH1cbiAqICAgfVxuICogfVxuICpcbiAqIC5tZGMtZm9vLS1kaXNhYmxlZCB7XG4gKiAgIG9wYWNpdHk6IC4zODtcbiAqXG4gKiAgIEBpbmNsdWRlIG1kYy10aGVtZS1kYXJrKFwiLm1kYy1mb29cIiwgdHJ1ZSkge1xuICogICAgIG9wYWNpdHk6IC41O1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qIFRPRE8oc2dvbWVzKTogRmlndXJlIG91dCB3aGF0IHRvIGRvIGFib3V0IGRlc2t0b3AgZm9udCBzaXplcy4gKi9cbi8qIFRPRE8oc2dvbWVzKTogRmlndXJlIG91dCB3aGF0IHRvIGRvIGFib3V0IGkxOG4gYW5kIGkxOG4gZm9udCBzaXplcy4gKi9cbi8qIHBvc3Rjc3MtYmVtLWxpbnRlcjogZGVmaW5lIGJ1dHRvbiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgZGVjbGFyYXRpb24tcHJvcGVydHktdW5pdC13aGl0ZWxpc3QgKi9cbi5tZGMtYnV0dG9uIHtcbiAgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjVyZW07XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xuICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjg3KSk7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtaW4td2lkdGg6IDY0cHg7XG4gIGhlaWdodDogMzZweDtcbiAgcGFkZGluZzogMCAxNnB4O1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgLyogT3ZlcnJpZGUgZm9udCB0byBzcGVjaWZpY2FsbHkgYmUgcHggYXMgc3BlYyBkZWZpbmVkIHB0ICovXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICAvKiBPdmVycmlkZSBsaW5lLWhlaWdodCBzbyB0ZXh0IGFsaWducyBjZW50ZXJlZCAqL1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgLyogcG9zdGNzcy1iZW0tbGludGVyOiBpZ25vcmUgKi9cbiAgLyogc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3Itbm8tdHlwZSAqLyB9XG4gIC5tZGMtYnV0dG9uLS10aGVtZS1kYXJrLFxuICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtYnV0dG9uIHtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LXByaW1hcnktb24tZGFyaywgd2hpdGUpOyB9XG4gIC5tZGMtYnV0dG9uOjpiZWZvcmUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICAgIGJhY2tncm91bmQ6IGN1cnJlbnRDb2xvcjtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgLm1kYy1idXR0b246Zm9jdXM6OmJlZm9yZSB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICBvcGFjaXR5OiAuMTI7IH1cbiAgLm1kYy1idXR0b246YWN0aXZlOjpiZWZvcmUge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgLypcbiAgICAgIFNsaWdodGx5IGRhcmtlciB2YWx1ZSBmb3IgdmlzdWFsIGRpc3RpbmN0aW9uLlxuICAgICAgVGhpcyBhbGxvd3MgYSBmdWxsIGJhc2UgdGhhdCBoYXMgZGlzdGluY3QgbW9kZXMuXG4gICAgICBQcm9ncmVzc2l2ZSBlbmhhbmNlbWVudCB3aXRoIHJpcHBsZXMgd2lsbCBwcm92aWRlIGNvbXBsZXRlIGJ1dHRvbiBzcGVjIGFsaWdubWVudC5cbiAgICAqL1xuICAgIG9wYWNpdHk6IC4xODsgfVxuICAubWRjLWJ1dHRvbjpmb2N1czphY3RpdmU6OmJlZm9yZSB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICAgICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOyB9XG4gIC5tZGMtYnV0dG9uOmFjdGl2ZSB7XG4gICAgb3V0bGluZTogbm9uZTsgfVxuICAubWRjLWJ1dHRvbjpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyOyB9XG4gIC5tZGMtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlcjogMDsgfVxuICAubWRjLWJ1dHRvbi0tZGVuc2Uge1xuICAgIGhlaWdodDogMzJweDtcbiAgICBmb250LXNpemU6IC44MTI1cmVtO1xuICAgIC8qIDEzc3AgKi9cbiAgICBsaW5lLWhlaWdodDogMzJweDsgfVxuICAubWRjLWJ1dHRvbi0tcmFpc2VkIHtcbiAgICBib3gtc2hhZG93OiAwcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICB3aWxsLWNoYW5nZTogYm94LXNoYWRvdztcbiAgICBtaW4td2lkdGg6IDg4cHg7IH1cbiAgICAubWRjLWJ1dHRvbi0tcmFpc2VkOmFjdGl2ZSB7XG4gICAgICBib3gtc2hhZG93OiAwcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMik7IH1cbiAgICAubWRjLWJ1dHRvbi0tdGhlbWUtZGFyayAubWRjLWJ1dHRvbi0tcmFpc2VkLFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1idXR0b24tLXJhaXNlZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Y1MWI1O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpO1xuICAgICAgLyogcG9zdGNzcy1iZW0tbGludGVyOiBpZ25vcmUgKi8gfVxuICAgICAgLm1kYy1idXR0b24tLXRoZW1lLWRhcmsgLm1kYy1idXR0b24tLXJhaXNlZDo6YmVmb3JlLFxuICAgICAgLm1kYy10aGVtZS0tZGFyayAubWRjLWJ1dHRvbi0tcmFpc2VkOjpiZWZvcmUge1xuICAgICAgICAvKlxuICAgICAgICAgIFdlIGFyZSBleHBsaWNpdGx5IG5vdCBmdWxseSBhZGhlcmluZyB0byBNYXRlcmlhbCBEZXNpZ24gaGVyZS5cbiAgICAgICAgICBUaGlzIHNob3VsZCBiZSB0aGUgNzAwLXNoYWRlIHdoZW4gYWN0aXZlIGluc3RlYWQgb2YgYSBibGFjayBzaGFkZS5cbiAgICAgICAgICBEdWUgdG8gdGhlIGNvbXBsZXhpdHkgaW52b2x2ZWQgaW4gYWRoZXJpbmcgZnVsbHkgaXQgaXMgYmVpbmcgaWdub3JlZC5cbiAgICAgICAgICBJbnN0ZWFkIHJlLXVzaW5nIHRoZSBleGlzdGluZyBhcmNoaXRlY3R1cmUgZm9yIHNoYWRpbmcgd29ya3MganVzdCBmaW5lLlxuICAgICAgICAgIC0gV2l0aCA8MyBmcm9tIEdhcmJlZVxuICAgICAgICAqL1xuICAgICAgICBjb2xvcjogYmxhY2s7IH1cbiAgLm1kYy1idXR0b24tLXByaW1hcnkge1xuICAgIGNvbG9yOiAjM2Y1MWI1O1xuICAgIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtcHJpbWFyeSwgIzNmNTFiNSk7XG4gICAgLyogcG9zdGNzcy1iZW0tbGludGVyOiBpZ25vcmUgKi8gfVxuICAgIC5tZGMtYnV0dG9uLS10aGVtZS1kYXJrIC5tZGMtYnV0dG9uLS1wcmltYXJ5LFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1idXR0b24tLXByaW1hcnkge1xuICAgICAgY29sb3I6ICMzZjUxYjU7XG4gICAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpOyB9XG4gICAgLm1kYy1idXR0b24tLXByaW1hcnkubWRjLWJ1dHRvbi0tcmFpc2VkIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzZjUxYjU7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtcHJpbWFyeSwgIzNmNTFiNSk7XG4gICAgICBjb2xvcjogd2hpdGU7XG4gICAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1wcmltYXJ5LCB3aGl0ZSk7XG4gICAgICAvKiBwb3N0Y3NzLWJlbS1saW50ZXI6IGlnbm9yZSAqLyB9XG4gICAgICAubWRjLWJ1dHRvbi0tcHJpbWFyeS5tZGMtYnV0dG9uLS1yYWlzZWQ6OmJlZm9yZSB7XG4gICAgICAgIGNvbG9yOiBibGFjazsgfVxuICAubWRjLWJ1dHRvbi0tYWNjZW50IHtcbiAgICBjb2xvcjogI2ZmNDA4MTtcbiAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLWFjY2VudCwgI2ZmNDA4MSk7XG4gICAgLyogcG9zdGNzcy1iZW0tbGludGVyOiBpZ25vcmUgKi8gfVxuICAgIC5tZGMtYnV0dG9uLS10aGVtZS1kYXJrIC5tZGMtYnV0dG9uLS1hY2NlbnQsXG4gICAgLm1kYy10aGVtZS0tZGFyayAubWRjLWJ1dHRvbi0tYWNjZW50IHtcbiAgICAgIGNvbG9yOiAjZmY0MDgxO1xuICAgICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS1hY2NlbnQsICNmZjQwODEpOyB9XG4gICAgLm1kYy1idXR0b24tLWFjY2VudC5tZGMtYnV0dG9uLS1yYWlzZWQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNDA4MTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kYy10aGVtZS1hY2NlbnQsICNmZjQwODEpO1xuICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LXByaW1hcnktb24tYWNjZW50LCB3aGl0ZSk7XG4gICAgICAvKiBwb3N0Y3NzLWJlbS1saW50ZXI6IGlnbm9yZSAqLyB9XG4gICAgICAubWRjLWJ1dHRvbi0tYWNjZW50Lm1kYy1idXR0b24tLXJhaXNlZDo6YmVmb3JlIHtcbiAgICAgICAgY29sb3I6IGJsYWNrOyB9XG4gIC5tZGMtYnV0dG9uLS1jb21wYWN0IHtcbiAgICBwYWRkaW5nOiAwIDhweDsgfVxuICBmaWVsZHNldDpkaXNhYmxlZCAubWRjLWJ1dHRvbiwgLm1kYy1idXR0b246ZGlzYWJsZWQge1xuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjYpO1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxuICAgIC5tZGMtYnV0dG9uLS10aGVtZS1kYXJrIGZpZWxkc2V0OmRpc2FibGVkIC5tZGMtYnV0dG9uLFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgZmllbGRzZXQ6ZGlzYWJsZWQgLm1kYy1idXR0b24sIC5tZGMtYnV0dG9uLS10aGVtZS1kYXJrIC5tZGMtYnV0dG9uOmRpc2FibGVkLFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1idXR0b246ZGlzYWJsZWQge1xuICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsgfVxuICBmaWVsZHNldDpkaXNhYmxlZCAubWRjLWJ1dHRvbi0tcmFpc2VkLCAubWRjLWJ1dHRvbi0tcmFpc2VkOmRpc2FibGVkIHtcbiAgICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxuICAgIC5tZGMtYnV0dG9uLS10aGVtZS1kYXJrIGZpZWxkc2V0OmRpc2FibGVkIC5tZGMtYnV0dG9uLS1yYWlzZWQsXG4gICAgLm1kYy10aGVtZS0tZGFyayBmaWVsZHNldDpkaXNhYmxlZCAubWRjLWJ1dHRvbi0tcmFpc2VkLCAubWRjLWJ1dHRvbi0tdGhlbWUtZGFyayAubWRjLWJ1dHRvbi0tcmFpc2VkOmRpc2FibGVkLFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1idXR0b24tLXJhaXNlZDpkaXNhYmxlZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpOyB9XG5cbi8qIHBvc3Rjc3MtYmVtLWxpbnRlcjogZW5kICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBUaGUgY3NzIHByb3BlcnR5IHVzZWQgZm9yIGVsZXZhdGlvbi4gSW4gbW9zdCBjYXNlcyB0aGlzIHNob3VsZCBub3QgYmUgY2hhbmdlZC4gSXQgaXMgZXhwb3NlZFxuICogYXMgYSB2YXJpYWJsZSBmb3IgYWJzdHJhY3Rpb24gLyBlYXN5IHVzZSB3aGVuIG5lZWRpbmcgdG8gcmVmZXJlbmNlIHRoZSBwcm9wZXJ0eSBkaXJlY3RseSwgZm9yXG4gKiBleGFtcGxlIGluIGEgYHdpbGwtY2hhbmdlYCBydWxlLlxuICovXG4vKipcbiAqIFRoZSBkZWZhdWx0IGR1cmF0aW9uIHZhbHVlIGZvciBlbGV2YXRpb24gdHJhbnNpdGlvbnMuXG4gKi9cbi8qKlxuICogVGhlIGRlZmF1bHQgZWFzaW5nIHZhbHVlIGZvciBlbGV2YXRpb24gdHJhbnNpdGlvbnMuXG4gKi9cbi8qKlxuICogQXBwbGllcyB0aGUgY29ycmVjdCBjc3MgcnVsZXMgdG8gYW4gZWxlbWVudCB0byBnaXZlIGl0IHRoZSBlbGV2YXRpb24gc3BlY2lmaWVkIGJ5ICR6LXZhbHVlLlxuICogVGhlICR6LXZhbHVlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyNC5cbiAqL1xuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgY2FuIGJlIHVzZWQgYXMgdGhlIHZhbHVlIGZvciBhIGB0cmFuc2l0aW9uYCBwcm9wZXJ0eSBmb3IgZWxldmF0aW9uLlxuICogQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGlzIHVzZWZ1bCBpbiBzaXR1YXRpb25zIHdoZXJlIGEgY29tcG9uZW50IG5lZWRzIHRvIHRyYW5zaXRpb25cbiAqIG1vcmUgdGhhbiBvbmUgcHJvcGVydHkuXG4gKlxuICogYGBgc2Nzc1xuICogLmZvbyB7XG4gKiAgIHRyYW5zaXRpb246IG1kYy1lbGV2YXRpb24tdHJhbnNpdGlvbi1ydWxlKCksIG9wYWNpdHkgMTAwbXMgZWFzZTtcbiAqICAgd2lsbC1jaGFuZ2U6ICRtZGMtZWxldmF0aW9uLXByb3BlcnR5LCBvcGFjaXR5O1xuICogfVxuICogYGBgXG4gKi9cbi8qKlxuICogQXBwbGllcyB0aGUgY29ycmVjdCBjc3MgcnVsZXMgbmVlZGVkIHRvIGhhdmUgYW4gZWxlbWVudCB0cmFuc2l0aW9uIGJldHdlZW4gZWxldmF0aW9ucy5cbiAqIFRoaXMgbWl4aW4gc2hvdWxkIGJlIGFwcGxpZWQgdG8gZWxlbWVudHMgd2hvc2UgZWxldmF0aW9uIHZhbHVlcyB3aWxsIGNoYW5nZSBkZXBlbmRpbmcgb24gdGhlaXJcbiAqIGNvbnRleHQgKGUuZy4gd2hlbiBhY3RpdmUgb3IgZGlzYWJsZWQpLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLypcbiAgUHJlY29tcHV0ZWQgbGluZWFyIGNvbG9yIGNoYW5uZWwgdmFsdWVzLCBmb3IgdXNlIGluIGNvbnRyYXN0IGNhbGN1bGF0aW9ucy5cbiAgU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG5cbiAgQWxnb3JpdGhtLCBmb3IgYyBpbiAwIHRvIDI1NTpcbiAgZihjKSB7XG4gICAgYyA9IGMgLyAyNTU7XG4gICAgcmV0dXJuIGMgPCAwLjAzOTI4ID8gYyAvIDEyLjkyIDogTWF0aC5wb3coKGMgKyAwLjA1NSkgLyAxLjA1NSwgMi40KTtcbiAgfVxuXG4gIFRoaXMgbG9va3VwIHRhYmxlIGlzIG5lZWRlZCBzaW5jZSB0aGVyZSBpcyBubyBgcG93YCBpbiBTQVNTLlxuKi9cbi8qIEFsbCB2YXJpYWJsZXMgYXJlIGxvY2FsLCBzbyBkaXNhYmxlIHBhdHRlcm4gY2hlY2tpbmcuICovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgbHVtaW5hbmNlIGZvciBhIGNvbG9yLlxuICogU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG4gKi9cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBjb250cmFzdCByYXRpbyBiZXR3ZWVuIHR3byBjb2xvcnMuXG4gKiBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcbiAqL1xuLyoqXG4gKiBEZXRlcm1pbmUgd2hldGhlciB0byB1c2UgZGFyayBvciBsaWdodCB0ZXh0IG9uIHRvcCBvZiBnaXZlbiBjb2xvci5cbiAqIFJldHVybnMgXCJkYXJrXCIgZm9yIGRhcmsgdGV4dCBhbmQgXCJsaWdodFwiIGZvciBsaWdodCB0ZXh0LlxuICovXG4vKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qXG4gIE1haW4gdGhlbWUgY29sb3JzLlxuICBJZiB5b3UncmUgYSB1c2VyIGN1c3RvbWl6aW5nIHlvdXIgY29sb3Igc2NoZW1lIGluIFNBU1MsIHRoZXNlIGFyZSBwcm9iYWJseSB0aGUgb25seSB2YXJpYWJsZXMgeW91IG5lZWQgdG8gY2hhbmdlLlxuKi9cbi8qIEluZGlnbyA1MDAgKi9cbi8qIFBpbmsgQTIwMCAqL1xuLyogV2hpdGUgKi9cbi8qIFdoaWNoIHNldCBvZiB0ZXh0IGNvbG9ycyB0byB1c2UgZm9yIGVhY2ggbWFpbiB0aGVtZSBjb2xvciAobGlnaHQgb3IgZGFyaykgKi9cbi8qIFRleHQgY29sb3JzIGFjY29yZGluZyB0byBsaWdodCB2cyBkYXJrIGFuZCB0ZXh0IHR5cGUgKi9cbi8qIFByaW1hcnkgdGV4dCBjb2xvcnMgZm9yIGVhY2ggb2YgdGhlIHRoZW1lIGNvbG9ycyAqL1xuLyogQWxsIHZhcmlhYmxlcyBhcmUgbG9jYWwsIHNvIGRpc2FibGUgcGF0dGVybiBjaGVja2luZy4gKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qKlxuICogQXBwbGllcyB0aGUgY29ycmVjdCB0aGVtZSBjb2xvciBzdHlsZSB0byB0aGUgc3BlY2lmaWVkIHByb3BlcnR5LlxuICogJHByb3BlcnR5IGlzIHR5cGljYWxseSBjb2xvciBvciBiYWNrZ3JvdW5kLWNvbG9yLCBidXQgY2FuIGJlIGFueSBDU1MgcHJvcGVydHkgdGhhdCBhY2NlcHRzIGNvbG9yIHZhbHVlcy5cbiAqICRzdHlsZSBzaG91bGQgYmUgb25lIG9mIHRoZSBtYXAga2V5cyBpbiAkbWRjLXRoZW1lLXByb3BlcnR5LXZhbHVlcyAoX3ZhcmlhYmxlcy5zY3NzKS5cbiAqL1xuLyoqXG4gKiBDcmVhdGVzIGEgcnVsZSB0byBiZSB1c2VkIGluIE1EQy1XZWIgY29tcG9uZW50cyBmb3IgZGFyayB0aGVtaW5nLCBhbmQgYXBwbGllcyB0aGUgcHJvdmlkZWQgY29udGVudHMuXG4gKiBTaG91bGQgcHJvdmlkZSB0aGUgJHJvb3Qtc2VsZWN0b3Igb3B0aW9uIGlmIGFwcGxpZWQgdG8gYW55dGhpbmcgb3RoZXIgdGhhbiB0aGUgcm9vdCBzZWxlY3Rvci5cbiAqIFdoZW4gdXNlZCB3aXRoIGEgbW9kaWZpZXIgY2xhc3MsIHByb3ZpZGUgYSBzZWNvbmQgYXJndW1lbnQgb2YgYHRydWVgIGZvciB0aGUgJGNvbXBvdW5kIHBhcmFtZXRlclxuICogdG8gc3BlY2lmeSB0aGF0IHRoaXMgc2hvdWxkIGJlIGF0dGFjaGVkIGFzIGEgY29tcG91bmQgY2xhc3MuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIGNvbG9yOiBibGFjaztcbiAqXG4gKiAgIEBpbmNsdWRlIG1kYy10aGVtZS1kYXJrIHtcbiAqICAgICBjb2xvcjogd2hpdGU7XG4gKiAgIH1cbiAqXG4gKiAgICZfX2JhciB7XG4gKiAgICAgYmFja2dyb3VuZDogYmxhY2s7XG4gKlxuICogICAgIEBpbmNsdWRlIG1kYy10aGVtZS1kYXJrKFwiLm1kYy1mb29cIikge1xuICogICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKlxuICogLm1kYy1mb28tLWRpc2FibGVkIHtcbiAqICAgb3BhY2l0eTogLjM4O1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsoXCIubWRjLWZvb1wiLCB0cnVlKSB7XG4gKiAgICAgb3BhY2l0eTogLjU7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG4vKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogVE9ETyhzZ29tZXMpOiBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gYWJvdXQgZGVza3RvcCBmb250IHNpemVzLiAqL1xuLyogVE9ETyhzZ29tZXMpOiBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gYWJvdXQgaTE4biBhbmQgaTE4biBmb250IHNpemVzLiAqL1xuLyogcG9zdGNzcy1iZW0tbGludGVyOiBkZWZpbmUgY2FyZCAqL1xuLm1kYy1jYXJkIHtcbiAgYm94LXNoYWRvdzogMHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcbiAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIC13ZWJraXQtYm94LXBhY2s6IGVuZDtcbiAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBwYWRkaW5nOiAwO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG4gIC5tZGMtY2FyZF9fcHJpbWFyeSB7XG4gICAgcGFkZGluZzogMTZweDtcbiAgICAvKiBBZGQgZXh0cmEgc3BhY2UgYmVmb3JlIGxhcmdlIHRpdGxlLiAqL1xuICAgIC8qIEFkZCBleHRyYSBwYWRkaW5nIGlmIHRoaXMgaXMgdGhlIGxhc3QgYmxvY2suICovIH1cbiAgICAubWRjLWNhcmRfX3ByaW1hcnkgLm1kYy1jYXJkX190aXRsZS0tbGFyZ2Uge1xuICAgICAgcGFkZGluZy10b3A6IDhweDsgfVxuICAgIC5tZGMtY2FyZF9fcHJpbWFyeTpsYXN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAyNHB4OyB9XG4gIC5tZGMtY2FyZF9fc3VwcG9ydGluZy10ZXh0IHtcbiAgICBwYWRkaW5nOiA4cHggMTZweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICBsaW5lLWhlaWdodDogMS4yNXJlbTtcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbiAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1iYWNrZ3JvdW5kLCByZ2JhKDAsIDAsIDAsIDAuODcpKTtcbiAgICAvKiBSZW1vdmUgdG9wIHBhZGRpbmcgaWYgaW1tZWRpYXRlbHkgcHJlY2VkZWQgYnkgYSBwcmltYXJ5IGJsb2NrLiAqL1xuICAgIC8qIEFkZCBleHRyYSBwYWRkaW5nIGlmIHRoaXMgaXMgdGhlIGxhc3QgYmxvY2suICovIH1cbiAgICAubWRjLWNhcmQtLXRoZW1lLWRhcmsgLm1kYy1jYXJkX19zdXBwb3J0aW5nLXRleHQsXG4gICAgLm1kYy10aGVtZS0tZGFyayAubWRjLWNhcmRfX3N1cHBvcnRpbmctdGV4dCB7XG4gICAgICBjb2xvcjogd2hpdGU7XG4gICAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1kYXJrLCB3aGl0ZSk7IH1cbiAgICAubWRjLWNhcmRfX3ByaW1hcnkgKyAubWRjLWNhcmRfX3N1cHBvcnRpbmctdGV4dCB7XG4gICAgICBtYXJnaW4tdG9wOiAtOHB4O1xuICAgICAgcGFkZGluZy10b3A6IDA7IH1cbiAgICAubWRjLWNhcmRfX3N1cHBvcnRpbmctdGV4dDpsYXN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAyNHB4OyB9XG4gIC5tZGMtY2FyZF9fYWN0aW9ucyB7XG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAvKiBBZGp1c3QgdGV4dCBjb2xvciBmb3IgZGFyayB0aGVtZS4gKi9cbiAgICAvKiBUd2VhayBidXR0b24gcGFkZGluZ3MgYW5kIG1hcmdpbnMgd2hlbiB0aGV5J3JlIHVzZWQgYXMgYWN0aW9ucyAqL1xuICAgIC8qIFZlcnRpY2FsIGFjdGlvbnMgKG9uZSBwZXIgbGluZSkgKi8gfVxuICAgIC5tZGMtY2FyZC0tdGhlbWUtZGFyayAubWRjLWNhcmRfX2FjdGlvbnMsXG4gICAgLm1kYy10aGVtZS0tZGFyayAubWRjLWNhcmRfX2FjdGlvbnMge1xuICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LXByaW1hcnktb24tZGFyaywgd2hpdGUpOyB9XG4gICAgLm1kYy1jYXJkX19hY3Rpb25zIC5tZGMtY2FyZF9fYWN0aW9uIHtcbiAgICAgIG1hcmdpbjogMCA4cHggMCAwOyB9XG4gICAgLm1kYy1jYXJkX19hY3Rpb25zIC5tZGMtY2FyZF9fYWN0aW9uOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwOyB9XG4gICAgLm1kYy1jYXJkX19hY3Rpb25zLS12ZXJ0aWNhbCB7XG4gICAgICAtbXMtZmxleC1mbG93OiBjb2x1bW47XG4gICAgICAgICAgZmxleC1mbG93OiBjb2x1bW47XG4gICAgICAtd2Via2l0LWJveC1hbGlnbjogc3RhcnQ7XG4gICAgICAgICAgLW1zLWZsZXgtYWxpZ246IHN0YXJ0O1xuICAgICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgfVxuICAgICAgLm1kYy1jYXJkX19hY3Rpb25zLS12ZXJ0aWNhbCAubWRjLWNhcmRfX2FjdGlvbiB7XG4gICAgICAgIG1hcmdpbjogMCAwIDRweDsgfVxuICAgICAgLm1kYy1jYXJkX19hY3Rpb25zLS12ZXJ0aWNhbCAubWRjLWNhcmRfX2FjdGlvbjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsgfVxuICAubWRjLWNhcmRfX21lZGlhIHtcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XG4gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7XG4gICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgcGFkZGluZzogMTZweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG4gIC5tZGMtY2FyZF9fbWVkaWEtaXRlbSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogODBweDtcbiAgICBtYXJnaW46IDE2cHggMCAwO1xuICAgIHBhZGRpbmc6IDA7IH1cbiAgICAubWRjLWNhcmRfX21lZGlhLWl0ZW0tLTFkb3Q1eCB7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIGhlaWdodDogMTIwcHg7IH1cbiAgICAubWRjLWNhcmRfX21lZGlhLWl0ZW0tLTJ4IHtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgaGVpZ2h0OiAxNjBweDsgfVxuICAgIC5tZGMtY2FyZF9fbWVkaWEtaXRlbS0tM3gge1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgICBoZWlnaHQ6IDI0MHB4OyB9XG4gIC5tZGMtY2FyZF9fdGl0bGUge1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xuICAgIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1wcmltYXJ5LW9uLWJhY2tncm91bmQsIHJnYmEoMCwgMCwgMCwgMC44NykpO1xuICAgIC8qIEFkanVzdCB0ZXh0IGNvbG9yIGZvciBkYXJrIHRoZW1lLiAqL1xuICAgIG1hcmdpbjogLS4wNjNyZW0gMDtcbiAgICAvKiAtMXNwIDAgKi8gfVxuICAgIC5tZGMtY2FyZC0tdGhlbWUtZGFyayAubWRjLWNhcmRfX3RpdGxlLFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1jYXJkX190aXRsZSB7XG4gICAgICBjb2xvcjogd2hpdGU7XG4gICAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1kYXJrLCB3aGl0ZSk7IH1cbiAgLm1kYy1jYXJkX190aXRsZS0tbGFyZ2Uge1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XG4gICAgbGluZS1oZWlnaHQ6IDJyZW07XG4gICAgbWFyZ2luOiAwOyB9XG4gIC5tZGMtY2FyZF9fc3VidGl0bGUge1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICBsaW5lLWhlaWdodDogMS4yNXJlbTtcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbiAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1iYWNrZ3JvdW5kLCByZ2JhKDAsIDAsIDAsIDAuODcpKTtcbiAgICAvKiBBZGp1c3QgdGV4dCBjb2xvciBmb3IgZGFyayB0aGVtZS4gKi9cbiAgICBtYXJnaW46IC0uMDYzcmVtIDA7XG4gICAgLyogLTFzcCAwICovIH1cbiAgICAubWRjLWNhcmQtLXRoZW1lLWRhcmsgLm1kYy1jYXJkX19zdWJ0aXRsZSxcbiAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtY2FyZF9fc3VidGl0bGUge1xuICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LXByaW1hcnktb24tZGFyaywgd2hpdGUpOyB9XG4gIC5tZGMtY2FyZF9faG9yaXpvbnRhbC1ibG9jayB7XG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7XG4gICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XG4gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAtd2Via2l0LWJveC1hbGlnbjogc3RhcnQ7XG4gICAgICAgIC1tcy1mbGV4LWFsaWduOiBzdGFydDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIC13ZWJraXQtYm94LXBhY2s6IGp1c3RpZnk7XG4gICAgICAgIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgcGFkZGluZzogMCAxNnB4IDAgMDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG4gICAgLm1kYy1jYXJkX19ob3Jpem9udGFsLWJsb2NrIC5tZGMtY2FyZF9fYWN0aW9ucy0tdmVydGljYWwge1xuICAgICAgbWFyZ2luOiAxNnB4OyB9XG4gICAgLm1kYy1jYXJkX19ob3Jpem9udGFsLWJsb2NrIC5tZGMtY2FyZF9fbWVkaWEtaXRlbSB7XG4gICAgICBtYXJnaW4tbGVmdDogMTZweDsgfVxuICAgIC5tZGMtY2FyZF9faG9yaXpvbnRhbC1ibG9jazpsYXN0LWNoaWxkIC5tZGMtY2FyZF9fbWVkaWEtaXRlbSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OyB9XG5cbi8qIHBvc3Rjc3MtYmVtLWxpbnRlcjogZW5kICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiBNYW51YWwgY2FsY3VsYXRpb24gZG9uZSBvbiBTVkcgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLypcbiAgUHJlY29tcHV0ZWQgbGluZWFyIGNvbG9yIGNoYW5uZWwgdmFsdWVzLCBmb3IgdXNlIGluIGNvbnRyYXN0IGNhbGN1bGF0aW9ucy5cbiAgU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG5cbiAgQWxnb3JpdGhtLCBmb3IgYyBpbiAwIHRvIDI1NTpcbiAgZihjKSB7XG4gICAgYyA9IGMgLyAyNTU7XG4gICAgcmV0dXJuIGMgPCAwLjAzOTI4ID8gYyAvIDEyLjkyIDogTWF0aC5wb3coKGMgKyAwLjA1NSkgLyAxLjA1NSwgMi40KTtcbiAgfVxuXG4gIFRoaXMgbG9va3VwIHRhYmxlIGlzIG5lZWRlZCBzaW5jZSB0aGVyZSBpcyBubyBgcG93YCBpbiBTQVNTLlxuKi9cbi8qIEFsbCB2YXJpYWJsZXMgYXJlIGxvY2FsLCBzbyBkaXNhYmxlIHBhdHRlcm4gY2hlY2tpbmcuICovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgbHVtaW5hbmNlIGZvciBhIGNvbG9yLlxuICogU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG4gKi9cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBjb250cmFzdCByYXRpbyBiZXR3ZWVuIHR3byBjb2xvcnMuXG4gKiBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcbiAqL1xuLyoqXG4gKiBEZXRlcm1pbmUgd2hldGhlciB0byB1c2UgZGFyayBvciBsaWdodCB0ZXh0IG9uIHRvcCBvZiBnaXZlbiBjb2xvci5cbiAqIFJldHVybnMgXCJkYXJrXCIgZm9yIGRhcmsgdGV4dCBhbmQgXCJsaWdodFwiIGZvciBsaWdodCB0ZXh0LlxuICovXG4vKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qXG4gIE1haW4gdGhlbWUgY29sb3JzLlxuICBJZiB5b3UncmUgYSB1c2VyIGN1c3RvbWl6aW5nIHlvdXIgY29sb3Igc2NoZW1lIGluIFNBU1MsIHRoZXNlIGFyZSBwcm9iYWJseSB0aGUgb25seSB2YXJpYWJsZXMgeW91IG5lZWQgdG8gY2hhbmdlLlxuKi9cbi8qIEluZGlnbyA1MDAgKi9cbi8qIFBpbmsgQTIwMCAqL1xuLyogV2hpdGUgKi9cbi8qIFdoaWNoIHNldCBvZiB0ZXh0IGNvbG9ycyB0byB1c2UgZm9yIGVhY2ggbWFpbiB0aGVtZSBjb2xvciAobGlnaHQgb3IgZGFyaykgKi9cbi8qIFRleHQgY29sb3JzIGFjY29yZGluZyB0byBsaWdodCB2cyBkYXJrIGFuZCB0ZXh0IHR5cGUgKi9cbi8qIFByaW1hcnkgdGV4dCBjb2xvcnMgZm9yIGVhY2ggb2YgdGhlIHRoZW1lIGNvbG9ycyAqL1xuLyogQWxsIHZhcmlhYmxlcyBhcmUgbG9jYWwsIHNvIGRpc2FibGUgcGF0dGVybiBjaGVja2luZy4gKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qKlxuICogQXBwbGllcyB0aGUgY29ycmVjdCB0aGVtZSBjb2xvciBzdHlsZSB0byB0aGUgc3BlY2lmaWVkIHByb3BlcnR5LlxuICogJHByb3BlcnR5IGlzIHR5cGljYWxseSBjb2xvciBvciBiYWNrZ3JvdW5kLWNvbG9yLCBidXQgY2FuIGJlIGFueSBDU1MgcHJvcGVydHkgdGhhdCBhY2NlcHRzIGNvbG9yIHZhbHVlcy5cbiAqICRzdHlsZSBzaG91bGQgYmUgb25lIG9mIHRoZSBtYXAga2V5cyBpbiAkbWRjLXRoZW1lLXByb3BlcnR5LXZhbHVlcyAoX3ZhcmlhYmxlcy5zY3NzKS5cbiAqL1xuLyoqXG4gKiBDcmVhdGVzIGEgcnVsZSB0byBiZSB1c2VkIGluIE1EQy1XZWIgY29tcG9uZW50cyBmb3IgZGFyayB0aGVtaW5nLCBhbmQgYXBwbGllcyB0aGUgcHJvdmlkZWQgY29udGVudHMuXG4gKiBTaG91bGQgcHJvdmlkZSB0aGUgJHJvb3Qtc2VsZWN0b3Igb3B0aW9uIGlmIGFwcGxpZWQgdG8gYW55dGhpbmcgb3RoZXIgdGhhbiB0aGUgcm9vdCBzZWxlY3Rvci5cbiAqIFdoZW4gdXNlZCB3aXRoIGEgbW9kaWZpZXIgY2xhc3MsIHByb3ZpZGUgYSBzZWNvbmQgYXJndW1lbnQgb2YgYHRydWVgIGZvciB0aGUgJGNvbXBvdW5kIHBhcmFtZXRlclxuICogdG8gc3BlY2lmeSB0aGF0IHRoaXMgc2hvdWxkIGJlIGF0dGFjaGVkIGFzIGEgY29tcG91bmQgY2xhc3MuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIGNvbG9yOiBibGFjaztcbiAqXG4gKiAgIEBpbmNsdWRlIG1kYy10aGVtZS1kYXJrIHtcbiAqICAgICBjb2xvcjogd2hpdGU7XG4gKiAgIH1cbiAqXG4gKiAgICZfX2JhciB7XG4gKiAgICAgYmFja2dyb3VuZDogYmxhY2s7XG4gKlxuICogICAgIEBpbmNsdWRlIG1kYy10aGVtZS1kYXJrKFwiLm1kYy1mb29cIikge1xuICogICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKlxuICogLm1kYy1mb28tLWRpc2FibGVkIHtcbiAqICAgb3BhY2l0eTogLjM4O1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsoXCIubWRjLWZvb1wiLCB0cnVlKSB7XG4gKiAgICAgb3BhY2l0eTogLjU7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG4vKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiBNYW51YWwgY2FsY3VsYXRpb24gZG9uZSBvbiBTVkcgKi9cbkAtd2Via2l0LWtleWZyYW1lcyBtZGMtY2hlY2tib3gtZmFkZS1pbi1iYWNrZ3JvdW5kIHtcbiAgMCUge1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICA1MCUge1xuICAgIGJvcmRlci1jb2xvcjogIzNmNTFiNTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLW1kYy10aGVtZS1wcmltYXJ5LCAjM2Y1MWI1KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Y1MWI1O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kYy10aGVtZS1wcmltYXJ5LCAjM2Y1MWI1KTsgfSB9XG5Aa2V5ZnJhbWVzIG1kYy1jaGVja2JveC1mYWRlLWluLWJhY2tncm91bmQge1xuICAwJSB7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG4gIDUwJSB7XG4gICAgYm9yZGVyLWNvbG9yOiAjM2Y1MWI1O1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzZjUxYjU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpOyB9IH1cblxuQC13ZWJraXQta2V5ZnJhbWVzIG1kYy1jaGVja2JveC1mYWRlLW91dC1iYWNrZ3JvdW5kIHtcbiAgMCUsXG4gIDgwJSB7XG4gICAgYm9yZGVyLWNvbG9yOiAjM2Y1MWI1O1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzZjUxYjU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpOyB9XG4gIDEwMCUge1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfSB9XG5cbkBrZXlmcmFtZXMgbWRjLWNoZWNrYm94LWZhZGUtb3V0LWJhY2tncm91bmQge1xuICAwJSxcbiAgODAlIHtcbiAgICBib3JkZXItY29sb3I6ICMzZjUxYjU7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtcHJpbWFyeSwgIzNmNTFiNSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzNmNTFiNTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtcHJpbWFyeSwgIzNmNTFiNSk7IH1cbiAgMTAwJSB7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9IH1cblxuQC13ZWJraXQta2V5ZnJhbWVzIG1kYy1jaGVja2JveC1mYWRlLWluLWJhY2tncm91bmQtZGFyayB7XG4gIDAlIHtcbiAgICBib3JkZXItY29sb3I6IHdoaXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG4gIDUwJSB7XG4gICAgYm9yZGVyLWNvbG9yOiAjM2Y1MWI1O1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzZjUxYjU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpOyB9IH1cblxuQGtleWZyYW1lcyBtZGMtY2hlY2tib3gtZmFkZS1pbi1iYWNrZ3JvdW5kLWRhcmsge1xuICAwJSB7XG4gICAgYm9yZGVyLWNvbG9yOiB3aGl0ZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICA1MCUge1xuICAgIGJvcmRlci1jb2xvcjogIzNmNTFiNTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLW1kYy10aGVtZS1wcmltYXJ5LCAjM2Y1MWI1KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Y1MWI1O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kYy10aGVtZS1wcmltYXJ5LCAjM2Y1MWI1KTsgfSB9XG5cbkAtd2Via2l0LWtleWZyYW1lcyBtZGMtY2hlY2tib3gtZmFkZS1vdXQtYmFja2dyb3VuZC1kYXJrIHtcbiAgMCUsXG4gIDgwJSB7XG4gICAgYm9yZGVyLWNvbG9yOiAjM2Y1MWI1O1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzZjUxYjU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpOyB9XG4gIDEwMCUge1xuICAgIGJvcmRlci1jb2xvcjogd2hpdGU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH0gfVxuXG5Aa2V5ZnJhbWVzIG1kYy1jaGVja2JveC1mYWRlLW91dC1iYWNrZ3JvdW5kLWRhcmsge1xuICAwJSxcbiAgODAlIHtcbiAgICBib3JkZXItY29sb3I6ICMzZjUxYjU7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtcHJpbWFyeSwgIzNmNTFiNSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzNmNTFiNTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtcHJpbWFyeSwgIzNmNTFiNSk7IH1cbiAgMTAwJSB7XG4gICAgYm9yZGVyLWNvbG9yOiB3aGl0ZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfSB9XG5cbkAtd2Via2l0LWtleWZyYW1lcyBtZGMtY2hlY2tib3gtdW5jaGVja2VkLWNoZWNrZWQtY2hlY2ttYXJrLXBhdGgge1xuICAwJSxcbiAgNTAlIHtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogMjkuNzgzMzQ7IH1cbiAgNTAlIHtcbiAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7IH1cbiAgMTAwJSB7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7IH0gfVxuXG5Aa2V5ZnJhbWVzIG1kYy1jaGVja2JveC11bmNoZWNrZWQtY2hlY2tlZC1jaGVja21hcmstcGF0aCB7XG4gIDAlLFxuICA1MCUge1xuICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAyOS43ODMzNDsgfVxuICA1MCUge1xuICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsgfVxuICAxMDAlIHtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogMDsgfSB9XG5cbkAtd2Via2l0LWtleWZyYW1lcyBtZGMtY2hlY2tib3gtdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJrIHtcbiAgMCUsXG4gIDY4LjIlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDApO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7IH1cbiAgNjguMiUge1xuICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAsIDEpO1xuICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAsIDEpOyB9XG4gIDEwMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoMSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTsgfSB9XG5cbkBrZXlmcmFtZXMgbWRjLWNoZWNrYm94LXVuY2hlY2tlZC1pbmRldGVybWluYXRlLW1peGVkbWFyayB7XG4gIDAlLFxuICA2OC4yJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgwKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDApOyB9XG4gIDY4LjIlIHtcbiAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLCAxKTtcbiAgICAgICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLCAxKTsgfVxuICAxMDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDEpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMSk7IH0gfVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgbWRjLWNoZWNrYm94LWNoZWNrZWQtdW5jaGVja2VkLWNoZWNrbWFyay1wYXRoIHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICAgICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7IH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IC0yOS43ODMzNDsgfSB9XG5cbkBrZXlmcmFtZXMgbWRjLWNoZWNrYm94LWNoZWNrZWQtdW5jaGVja2VkLWNoZWNrbWFyay1wYXRoIHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICAgICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7IH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IC0yOS43ODMzNDsgfSB9XG5cbkAtd2Via2l0LWtleWZyYW1lcyBtZGMtY2hlY2tib3gtY2hlY2tlZC1pbmRldGVybWluYXRlLWNoZWNrbWFyayB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICBvcGFjaXR5OiAxO1xuICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsgfVxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgb3BhY2l0eTogMDsgfSB9XG5cbkBrZXlmcmFtZXMgbWRjLWNoZWNrYm94LWNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1jaGVja21hcmsge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgb3BhY2l0eTogMTtcbiAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7IH1cbiAgdG8ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgbWRjLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1jaGVja21hcmsge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTQsIDAsIDAsIDEpO1xuICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTQsIDAsIDAsIDEpOyB9XG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICAgIG9wYWNpdHk6IDE7IH0gfVxuXG5Aa2V5ZnJhbWVzIG1kYy1jaGVja2JveC1pbmRldGVybWluYXRlLWNoZWNrZWQtY2hlY2ttYXJrIHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgb3BhY2l0eTogMDtcbiAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE0LCAwLCAwLCAxKTtcbiAgICAgICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE0LCAwLCAwLCAxKTsgfVxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICBvcGFjaXR5OiAxOyB9IH1cblxuQC13ZWJraXQta2V5ZnJhbWVzIG1kYy1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJrIHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsgfVxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAgIG9wYWNpdHk6IDE7IH0gfVxuXG5Aa2V5ZnJhbWVzIG1kYy1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJrIHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsgfVxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAgIG9wYWNpdHk6IDE7IH0gfVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgbWRjLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1taXhlZG1hcmsge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgb3BhY2l0eTogMTtcbiAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE0LCAwLCAwLCAxKTtcbiAgICAgICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE0LCAwLCAwLCAxKTsgfVxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzMTVkZWcpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzE1ZGVnKTtcbiAgICBvcGFjaXR5OiAwOyB9IH1cblxuQGtleWZyYW1lcyBtZGMtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLW1peGVkbWFyayB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICBvcGFjaXR5OiAxO1xuICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTQsIDAsIDAsIDEpO1xuICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTQsIDAsIDAsIDEpOyB9XG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDMxNWRlZyk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzMTVkZWcpO1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgbWRjLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkLW1peGVkbWFyayB7XG4gIDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDEpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMSk7XG4gICAgb3BhY2l0eTogMTtcbiAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcbiAgICAgICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsgfVxuICAzMi44JSxcbiAgMTAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgwKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDApO1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG5Aa2V5ZnJhbWVzIG1kYy1jaGVja2JveC1pbmRldGVybWluYXRlLXVuY2hlY2tlZC1taXhlZG1hcmsge1xuICAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgxKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG4gICAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7IH1cbiAgMzIuOCUsXG4gIDEwMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoMCk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcbiAgICBvcGFjaXR5OiAwOyB9IH1cblxuLyogcG9zdGNzcy1iZW0tbGludGVyOiBkZWZpbmUgY2hlY2tib3ggKi9cbi5tZGMtY2hlY2tib3gge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDE4cHg7XG4gIGhlaWdodDogMThweDtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsgfVxuICAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kIHtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDtcbiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xuICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgOTBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSksIGJvcmRlci1jb2xvciA5MG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDkwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpLCBib3JkZXItY29sb3IgOTBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjU0KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB3aWxsLWNoYW5nZTogYmFja2dyb3VuZC1jb2xvciwgYm9yZGVyLWNvbG9yO1xuICAgIC8qKiBUaGUgZnJhbWUncyA6OmJlZm9yZSBlbGVtZW50IGlzIHVzZWQgYXMgYSBmb2N1cyBpbmRpY2F0b3IgZm9yIHRoZSBjaGVja2JveCAqLyB9XG4gICAgLm1kYy1jaGVja2JveC0tdGhlbWUtZGFyayAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kLFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCB7XG4gICAgICBib3JkZXItY29sb3I6IHdoaXRlOyB9XG4gICAgLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZDo6YmVmb3JlIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLCAwKTtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLCAwKTtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSA5MG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gOTBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDkwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpLCAtd2Via2l0LXRyYW5zZm9ybSA5MG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgOTBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSksIHRyYW5zZm9ybSA5MG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgOTBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSksIHRyYW5zZm9ybSA5MG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gOTBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgd2lsbC1jaGFuZ2U6IG9wYWNpdHksIHRyYW5zZm9ybTtcbiAgICAgIGJhY2tncm91bmQ6ICMzZjUxYjU7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZGMtdGhlbWUtcHJpbWFyeSwgIzNmNTFiNSk7IH1cbiAgLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2wge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY3Vyc29yOiBpbmhlcml0O1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgLm1kYy1jaGVja2JveF9fY2hlY2ttYXJrIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAxODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgb3BhY2l0eTogMDtcbiAgICBmaWxsOiB3aGl0ZTsgfVxuICAgIC5tZGMtY2hlY2tib3hfX2NoZWNrbWFya19fcGF0aCB7XG4gICAgICAtd2Via2l0LXRyYW5zaXRpb246IHN0cm9rZS1kYXNob2Zmc2V0IDE4MG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICAgIHRyYW5zaXRpb246IHN0cm9rZS1kYXNob2Zmc2V0IDE4MG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICAgIHN0cm9rZTogd2hpdGUgIWltcG9ydGFudDtcbiAgICAgIHN0cm9rZS13aWR0aDogMy4xMnB4O1xuICAgICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDI5Ljc4MzM0O1xuICAgICAgc3Ryb2tlLWRhc2hhcnJheTogMjkuNzgzMzQ7IH1cbiAgLm1kYy1jaGVja2JveF9fbWl4ZWRtYXJrIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDJweDtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDApIHJvdGF0ZSgwZGVnKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDApIHJvdGF0ZSgwZGVnKTtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgOTBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDkwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgOTBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDkwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgOTBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSksIHRyYW5zZm9ybSA5MG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDkwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpLCB0cmFuc2Zvcm0gOTBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDkwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIG9wYWNpdHk6IDA7IH1cblxuLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2w6Zm9jdXMgfiAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kOjpiZWZvcmUge1xuICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMi43NSwgMi43NSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgyLjc1LCAyLjc1KTtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDgwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpLCAtd2Via2l0LXRyYW5zZm9ybSA4MG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSA4MG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIHRyYW5zZm9ybSA4MG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSA4MG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSwgdHJhbnNmb3JtIDgwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpLCAtd2Via2l0LXRyYW5zZm9ybSA4MG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgb3BhY2l0eTogLjI2OyB9XG5cbi5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sOmNoZWNrZWQgfiAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kIHtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBib3JkZXItY29sb3IgOTBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIGJhY2tncm91bmQtY29sb3IgOTBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciA5MG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSwgYmFja2dyb3VuZC1jb2xvciA5MG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgYm9yZGVyLWNvbG9yOiAjM2Y1MWI1O1xuICBib3JkZXItY29sb3I6IHZhcigtLW1kYy10aGVtZS1wcmltYXJ5LCAjM2Y1MWI1KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNmNTFiNTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpOyB9XG4gIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sOmNoZWNrZWQgfiAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kIC5tZGMtY2hlY2tib3hfX2NoZWNrbWFyayB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDE4MG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gMTgwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMTgwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpLCAtd2Via2l0LXRyYW5zZm9ybSAxODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIHRyYW5zZm9ybSAxODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIHRyYW5zZm9ybSAxODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDE4MG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICBvcGFjaXR5OiAxOyB9XG4gICAgLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2w6Y2hlY2tlZCB+IC5tZGMtY2hlY2tib3hfX2JhY2tncm91bmQgLm1kYy1jaGVja2JveF9fY2hlY2ttYXJrX19wYXRoIHtcbiAgICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAwOyB9XG4gIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sOmNoZWNrZWQgfiAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kIC5tZGMtY2hlY2tib3hfX21peGVkbWFyayB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgxKSByb3RhdGUoLTQ1ZGVnKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpIHJvdGF0ZSgtNDVkZWcpOyB9XG5cbi5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sOmluZGV0ZXJtaW5hdGUgfiAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kIHtcbiAgYm9yZGVyLWNvbG9yOiAjM2Y1MWI1O1xuICBib3JkZXItY29sb3I6IHZhcigtLW1kYy10aGVtZS1wcmltYXJ5LCAjM2Y1MWI1KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNmNTFiNTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpOyB9XG4gIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sOmluZGV0ZXJtaW5hdGUgfiAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kIC5tZGMtY2hlY2tib3hfX2NoZWNrbWFyayB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDkwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpLCAtd2Via2l0LXRyYW5zZm9ybSA5MG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDkwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpLCAtd2Via2l0LXRyYW5zZm9ybSA5MG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDkwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpLCB0cmFuc2Zvcm0gOTBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSA5MG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKSwgdHJhbnNmb3JtIDkwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpLCAtd2Via2l0LXRyYW5zZm9ybSA5MG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICBvcGFjaXR5OiAwOyB9XG4gICAgLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2w6aW5kZXRlcm1pbmF0ZSB+IC5tZGMtY2hlY2tib3hfX2JhY2tncm91bmQgLm1kYy1jaGVja2JveF9fY2hlY2ttYXJrX19wYXRoIHtcbiAgICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAwOyB9XG4gIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sOmluZGV0ZXJtaW5hdGUgfiAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kIC5tZGMtY2hlY2tib3hfX21peGVkbWFyayB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgxKSByb3RhdGUoMGRlZyk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKSByb3RhdGUoMGRlZyk7XG4gICAgb3BhY2l0eTogMTsgfVxuXG4ubWRjLWNoZWNrYm94X19uYXRpdmUtY29udHJvbDpkaXNhYmxlZCxcbmZpZWxkc2V0OmRpc2FibGVkIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sLFxuW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sIHtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuICAvKiBwb3N0Y3NzLWJlbS1saW50ZXI6IGlnbm9yZSAqLyB9XG4gIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sOmRpc2FibGVkIH4gLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCxcbiAgZmllbGRzZXQ6ZGlzYWJsZWQgLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2wgfiAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kLFxuICBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl0gLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2wgfiAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kIHtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNik7IH1cbiAgICAubWRjLWNoZWNrYm94LS10aGVtZS1kYXJrIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sOmRpc2FibGVkIH4gLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCxcbiAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sOmRpc2FibGVkIH4gLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCwgLm1kYy1jaGVja2JveC0tdGhlbWUtZGFya1xuICAgIGZpZWxkc2V0OmRpc2FibGVkIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sIH4gLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCxcbiAgICAubWRjLXRoZW1lLS1kYXJrXG4gICAgZmllbGRzZXQ6ZGlzYWJsZWQgLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2wgfiAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kLCAubWRjLWNoZWNrYm94LS10aGVtZS1kYXJrXG4gICAgW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sIH4gLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCxcbiAgICAubWRjLXRoZW1lLS1kYXJrXG4gICAgW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sIH4gLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCB7XG4gICAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsgfVxuICAubWRjLWNoZWNrYm94X19uYXRpdmUtY29udHJvbDpkaXNhYmxlZDpjaGVja2VkIH4gLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCwgLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2w6ZGlzYWJsZWQ6aW5kZXRlcm1pbmF0ZSB+IC5tZGMtY2hlY2tib3hfX2JhY2tncm91bmQsXG4gIGZpZWxkc2V0OmRpc2FibGVkIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sOmNoZWNrZWQgfiAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kLFxuICBmaWVsZHNldDpkaXNhYmxlZCAubWRjLWNoZWNrYm94X19uYXRpdmUtY29udHJvbDppbmRldGVybWluYXRlIH4gLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCxcbiAgW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sOmNoZWNrZWQgfiAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kLFxuICBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl0gLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2w6aW5kZXRlcm1pbmF0ZSB+IC5tZGMtY2hlY2tib3hfX2JhY2tncm91bmQge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI2KTtcbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1tYXgtY29tcG91bmQtc2VsZWN0b3JzLCBzZWxlY3Rvci1tYXgtc3BlY2lmaWNpdHkgKi9cbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNlbGVjdG9yLW1heC1jb21wb3VuZC1zZWxlY3RvcnMsIHNlbGVjdG9yLW1heC1zcGVjaWZpY2l0eSAqLyB9XG4gICAgLm1kYy1jaGVja2JveC0tdGhlbWUtZGFyayAubWRjLWNoZWNrYm94X19uYXRpdmUtY29udHJvbDpkaXNhYmxlZDpjaGVja2VkIH4gLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCxcbiAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sOmRpc2FibGVkOmNoZWNrZWQgfiAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kLCAubWRjLWNoZWNrYm94LS10aGVtZS1kYXJrIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sOmRpc2FibGVkOmluZGV0ZXJtaW5hdGUgfiAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kLFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2w6ZGlzYWJsZWQ6aW5kZXRlcm1pbmF0ZSB+IC5tZGMtY2hlY2tib3hfX2JhY2tncm91bmQsIC5tZGMtY2hlY2tib3gtLXRoZW1lLWRhcmtcbiAgICBmaWVsZHNldDpkaXNhYmxlZCAubWRjLWNoZWNrYm94X19uYXRpdmUtY29udHJvbDpjaGVja2VkIH4gLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCxcbiAgICAubWRjLXRoZW1lLS1kYXJrXG4gICAgZmllbGRzZXQ6ZGlzYWJsZWQgLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2w6Y2hlY2tlZCB+IC5tZGMtY2hlY2tib3hfX2JhY2tncm91bmQsIC5tZGMtY2hlY2tib3gtLXRoZW1lLWRhcmtcbiAgICBmaWVsZHNldDpkaXNhYmxlZCAubWRjLWNoZWNrYm94X19uYXRpdmUtY29udHJvbDppbmRldGVybWluYXRlIH4gLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCxcbiAgICAubWRjLXRoZW1lLS1kYXJrXG4gICAgZmllbGRzZXQ6ZGlzYWJsZWQgLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2w6aW5kZXRlcm1pbmF0ZSB+IC5tZGMtY2hlY2tib3hfX2JhY2tncm91bmQsIC5tZGMtY2hlY2tib3gtLXRoZW1lLWRhcmtcbiAgICBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl0gLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2w6Y2hlY2tlZCB+IC5tZGMtY2hlY2tib3hfX2JhY2tncm91bmQsXG4gICAgLm1kYy10aGVtZS0tZGFya1xuICAgIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSAubWRjLWNoZWNrYm94X19uYXRpdmUtY29udHJvbDpjaGVja2VkIH4gLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCwgLm1kYy1jaGVja2JveC0tdGhlbWUtZGFya1xuICAgIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSAubWRjLWNoZWNrYm94X19uYXRpdmUtY29udHJvbDppbmRldGVybWluYXRlIH4gLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCxcbiAgICAubWRjLXRoZW1lLS1kYXJrXG4gICAgW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIC5tZGMtY2hlY2tib3hfX25hdGl2ZS1jb250cm9sOmluZGV0ZXJtaW5hdGUgfiAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsgfVxuXG4ubWRjLWNoZWNrYm94LS1hbmltLXVuY2hlY2tlZC1jaGVja2VkIC5tZGMtY2hlY2tib3hfX2JhY2tncm91bmQsIC5tZGMtY2hlY2tib3gtLWFuaW0tdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUgLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCB7XG4gIC13ZWJraXQtYW5pbWF0aW9uOiBtZGMtY2hlY2tib3gtZmFkZS1pbi1iYWNrZ3JvdW5kIDE4MG1zIGxpbmVhcjtcbiAgICAgICAgICBhbmltYXRpb246IG1kYy1jaGVja2JveC1mYWRlLWluLWJhY2tncm91bmQgMTgwbXMgbGluZWFyOyB9XG4gIC5tZGMtY2hlY2tib3gtLXRoZW1lLWRhcmsgLm1kYy1jaGVja2JveC0tYW5pbS11bmNoZWNrZWQtY2hlY2tlZCAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kLFxuICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtY2hlY2tib3gtLWFuaW0tdW5jaGVja2VkLWNoZWNrZWQgLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCwgLm1kYy1jaGVja2JveC0tdGhlbWUtZGFyayAubWRjLWNoZWNrYm94LS1hbmltLXVuY2hlY2tlZC1pbmRldGVybWluYXRlIC5tZGMtY2hlY2tib3hfX2JhY2tncm91bmQsXG4gIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1jaGVja2JveC0tYW5pbS11bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZSAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kIHtcbiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBtZGMtY2hlY2tib3gtZmFkZS1pbi1iYWNrZ3JvdW5kLWRhcms7XG4gICAgICAgICAgICBhbmltYXRpb24tbmFtZTogbWRjLWNoZWNrYm94LWZhZGUtaW4tYmFja2dyb3VuZC1kYXJrOyB9XG5cbi5tZGMtY2hlY2tib3gtLWFuaW0tY2hlY2tlZC11bmNoZWNrZWQgLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCwgLm1kYy1jaGVja2JveC0tYW5pbS1pbmRldGVybWluYXRlLXVuY2hlY2tlZCAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kIHtcbiAgLXdlYmtpdC1hbmltYXRpb246IG1kYy1jaGVja2JveC1mYWRlLW91dC1iYWNrZ3JvdW5kIDE4MG1zIGxpbmVhcjtcbiAgICAgICAgICBhbmltYXRpb246IG1kYy1jaGVja2JveC1mYWRlLW91dC1iYWNrZ3JvdW5kIDE4MG1zIGxpbmVhcjsgfVxuICAubWRjLWNoZWNrYm94LS10aGVtZS1kYXJrIC5tZGMtY2hlY2tib3gtLWFuaW0tY2hlY2tlZC11bmNoZWNrZWQgLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCxcbiAgLm1kYy10aGVtZS0tZGFyayAubWRjLWNoZWNrYm94LS1hbmltLWNoZWNrZWQtdW5jaGVja2VkIC5tZGMtY2hlY2tib3hfX2JhY2tncm91bmQsIC5tZGMtY2hlY2tib3gtLXRoZW1lLWRhcmsgLm1kYy1jaGVja2JveC0tYW5pbS1pbmRldGVybWluYXRlLXVuY2hlY2tlZCAubWRjLWNoZWNrYm94X19iYWNrZ3JvdW5kLFxuICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtY2hlY2tib3gtLWFuaW0taW5kZXRlcm1pbmF0ZS11bmNoZWNrZWQgLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCB7XG4gICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogbWRjLWNoZWNrYm94LWZhZGUtb3V0LWJhY2tncm91bmQtZGFyaztcbiAgICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiBtZGMtY2hlY2tib3gtZmFkZS1vdXQtYmFja2dyb3VuZC1kYXJrOyB9XG5cbi5tZGMtY2hlY2tib3gtLWFuaW0tdW5jaGVja2VkLWNoZWNrZWQgLm1kYy1jaGVja2JveF9fY2hlY2ttYXJrX19wYXRoIHtcbiAgLXdlYmtpdC1hbmltYXRpb246IDE4MG1zIGxpbmVhciAwcyBtZGMtY2hlY2tib3gtdW5jaGVja2VkLWNoZWNrZWQtY2hlY2ttYXJrLXBhdGg7XG4gICAgICAgICAgYW5pbWF0aW9uOiAxODBtcyBsaW5lYXIgMHMgbWRjLWNoZWNrYm94LXVuY2hlY2tlZC1jaGVja2VkLWNoZWNrbWFyay1wYXRoO1xuICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IG5vbmU7IH1cblxuLm1kYy1jaGVja2JveC0tYW5pbS11bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZSAubWRjLWNoZWNrYm94X19taXhlZG1hcmsge1xuICAtd2Via2l0LWFuaW1hdGlvbjogOTBtcyBsaW5lYXIgMHMgbWRjLWNoZWNrYm94LXVuY2hlY2tlZC1pbmRldGVybWluYXRlLW1peGVkbWFyaztcbiAgICAgICAgICBhbmltYXRpb246IDkwbXMgbGluZWFyIDBzIG1kYy1jaGVja2JveC11bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1taXhlZG1hcms7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTtcbiAgdHJhbnNpdGlvbjogbm9uZTsgfVxuXG4ubWRjLWNoZWNrYm94LS1hbmltLWNoZWNrZWQtdW5jaGVja2VkIC5tZGMtY2hlY2tib3hfX2NoZWNrbWFya19fcGF0aCB7XG4gIC13ZWJraXQtYW5pbWF0aW9uOiA5MG1zIGxpbmVhciAwcyBtZGMtY2hlY2tib3gtY2hlY2tlZC11bmNoZWNrZWQtY2hlY2ttYXJrLXBhdGg7XG4gICAgICAgICAgYW5pbWF0aW9uOiA5MG1zIGxpbmVhciAwcyBtZGMtY2hlY2tib3gtY2hlY2tlZC11bmNoZWNrZWQtY2hlY2ttYXJrLXBhdGg7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTtcbiAgdHJhbnNpdGlvbjogbm9uZTsgfVxuXG4ubWRjLWNoZWNrYm94LS1hbmltLWNoZWNrZWQtaW5kZXRlcm1pbmF0ZSAubWRjLWNoZWNrYm94X19jaGVja21hcmsge1xuICAtd2Via2l0LWFuaW1hdGlvbjogOTBtcyBsaW5lYXIgMHMgbWRjLWNoZWNrYm94LWNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1jaGVja21hcms7XG4gICAgICAgICAgYW5pbWF0aW9uOiA5MG1zIGxpbmVhciAwcyBtZGMtY2hlY2tib3gtY2hlY2tlZC1pbmRldGVybWluYXRlLWNoZWNrbWFyaztcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBub25lO1xuICB0cmFuc2l0aW9uOiBub25lOyB9XG5cbi5tZGMtY2hlY2tib3gtLWFuaW0tY2hlY2tlZC1pbmRldGVybWluYXRlIC5tZGMtY2hlY2tib3hfX21peGVkbWFyayB7XG4gIC13ZWJraXQtYW5pbWF0aW9uOiA5MG1zIGxpbmVhciAwcyBtZGMtY2hlY2tib3gtY2hlY2tlZC1pbmRldGVybWluYXRlLW1peGVkbWFyaztcbiAgICAgICAgICBhbmltYXRpb246IDkwbXMgbGluZWFyIDBzIG1kYy1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJrO1xuICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IG5vbmU7IH1cblxuLm1kYy1jaGVja2JveC0tYW5pbS1pbmRldGVybWluYXRlLWNoZWNrZWQgLm1kYy1jaGVja2JveF9fY2hlY2ttYXJrIHtcbiAgLXdlYmtpdC1hbmltYXRpb246IDUwMG1zIGxpbmVhciAwcyBtZGMtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLWNoZWNrbWFyaztcbiAgICAgICAgICBhbmltYXRpb246IDUwMG1zIGxpbmVhciAwcyBtZGMtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLWNoZWNrbWFyaztcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBub25lO1xuICB0cmFuc2l0aW9uOiBub25lOyB9XG5cbi5tZGMtY2hlY2tib3gtLWFuaW0taW5kZXRlcm1pbmF0ZS1jaGVja2VkIC5tZGMtY2hlY2tib3hfX21peGVkbWFyayB7XG4gIC13ZWJraXQtYW5pbWF0aW9uOiA1MDBtcyBsaW5lYXIgMHMgbWRjLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1taXhlZG1hcms7XG4gICAgICAgICAgYW5pbWF0aW9uOiA1MDBtcyBsaW5lYXIgMHMgbWRjLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1taXhlZG1hcms7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTtcbiAgdHJhbnNpdGlvbjogbm9uZTsgfVxuXG4ubWRjLWNoZWNrYm94LS1hbmltLWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkIC5tZGMtY2hlY2tib3hfX21peGVkbWFyayB7XG4gIC13ZWJraXQtYW5pbWF0aW9uOiAzMDBtcyBsaW5lYXIgMHMgbWRjLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkLW1peGVkbWFyaztcbiAgICAgICAgICBhbmltYXRpb246IDMwMG1zIGxpbmVhciAwcyBtZGMtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS11bmNoZWNrZWQtbWl4ZWRtYXJrO1xuICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IG5vbmU7IH1cblxuLyogcG9zdGNzcy1iZW0tbGludGVyOiBlbmQgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ3JlYXRlcyBhIHJ1bGUgdGhhdCB3aWxsIGJlIGFwcGxpZWQgd2hlbiBhbiBNREMtV2ViIGNvbXBvbmVudCBpcyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYW4gUlRMIGxheW91dC5cbiAqXG4gKiBVc2FnZSBFeGFtcGxlOlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gKiAgIGxlZnQ6IDA7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtcnRsIHtcbiAqICAgICBsZWZ0OiBhdXRvO1xuICogICAgIHJpZ2h0OiAwO1xuICogICB9XG4gKlxuICogICAmX19iYXIge1xuICogICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gKiAgICAgQGluY2x1ZGUgbWRjLXJ0bChcIi5tZGMtZm9vXCIpIHtcbiAqICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICogICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKlxuICogLm1kYy1mb28tLW1vZCB7XG4gKiAgIHBhZGRpbmctbGVmdDogNHB4O1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bCB7XG4gKiAgICAgcGFkZGluZy1sZWZ0OiBhdXRvO1xuICogICAgIHBhZGRpbmctcmlnaHQ6IDRweDtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogTm90ZSB0aGF0IHRoaXMgd29ya3MgYnkgY2hlY2tpbmcgZm9yIFtkaXI9XCJydGxcIl0gb24gYW4gYW5jZXN0b3IgZWxlbWVudC4gV2hpbGUgdGhpcyB3aWxsIHdvcmtcbiAqIGluIG1vc3QgY2FzZXMsIGl0IHdpbGwgaW4gc29tZSBjYXNlcyBsZWFkIHRvIGZhbHNlIG5lZ2F0aXZlcywgZS5nLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxodG1sIGRpcj1cInJ0bFwiPlxuICogICA8IS0tIC4uLiAtLT5cbiAqICAgPGRpdiBkaXI9XCJsdHJcIj5cbiAqICAgICA8ZGl2IGNsYXNzPVwibWRjLWZvb1wiPlN0eWxlZCBpbmNvcnJlY3RseSBhcyBSVEwhPC9kaXY+XG4gKiAgIDwvZGl2PlxuICogPC9odG1sPlxuICogYGBgXG4gKlxuICogSW4gdGhlIGZ1dHVyZSwgc2VsZWN0b3JzIHN1Y2ggYXMgOmRpciAoaHR0cDovL21kbi5pby86ZGlyKSB3aWxsIGhlbHAgdXMgbWl0aWdhdGUgdGhpcy5cbiAqL1xuLyoqXG4gKiBUYWtlcyBhIGJhc2UgYm94LW1vZGVsIHByb3BlcnR5IC0gZS5nLiBtYXJnaW4gLyBib3JkZXIgLyBwYWRkaW5nIC0gYWxvbmcgd2l0aCBhIGRlZmF1bHRcbiAqIGRpcmVjdGlvbiBhbmQgdmFsdWUsIGFuZCBlbWl0cyBydWxlcyB3aGljaCBhcHBseSB0aGUgdmFsdWUgdG8gdGhlXG4gKiBcIjxiYXNlLXByb3BlcnR5Pi08ZGVmYXVsdC1kaXJlY3Rpb24+XCIgcHJvcGVydHkgYnkgZGVmYXVsdCwgYnV0IGZsaXBzIHRoZSBkaXJlY3Rpb25cbiAqIHdoZW4gd2l0aGluIGFuIFJUTCBjb250ZXh0LlxuICpcbiAqIEZvciBleGFtcGxlOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bC1yZWZsZXhpdmUtYm94KG1hcmdpbiwgbGVmdCwgOHB4KTtcbiAqIH1cbiAqIGBgYFxuICogaXMgZXF1aXZhbGVudCB0bzpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtcnRsIHtcbiAqICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAqICAgICBtYXJnaW4tbGVmdDogMDtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKiB3aGVyZWFzOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bC1yZWZsZXhpdmUtYm94KG1hcmdpbiwgcmlnaHQsIDhweCk7XG4gKiB9XG4gKiBgYGBcbiAqIGlzIGVxdWl2YWxlbnQgdG86XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAqXG4gKiAgIEBpbmNsdWRlIG1kYy1ydGwge1xuICogICAgIG1hcmdpbi1yaWdodDogMDtcbiAqICAgICBtYXJnaW4tbGVmdDogOHB4O1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBZb3UgY2FuIGFsc28gcGFzcyBhIDR0aCBvcHRpb25hbCAkcm9vdC1zZWxlY3RvciBhcmd1bWVudCB3aGljaCB3aWxsIGJlIGZvcndhcmRlZCB0byBgbWRjLXJ0bGAsXG4gKiBlLmcuIGBAaW5jbHVkZSBtZGMtcnRsLXJlZmxleGl2ZS1ib3gtcHJvcGVydHkobWFyZ2luLCBsZWZ0LCA4cHgsIFwiLm1kYy1jb21wb25lbnRcIilgLlxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHplcm8gb3V0IHRoZSBvcmlnaW5hbCB2YWx1ZSBpbiBhbiBSVEwgY29udGV4dC4gSWYgeW91J3JlXG4gKiB0cnlpbmcgdG8gZmxpcCB0aGUgdmFsdWVzLCB1c2UgbWRjLXJ0bC1yZWZsZXhpdmUtcHJvcGVydHkoKS5cbiAqL1xuLyoqXG4gKiBUYWtlcyBhIGJhc2UgcHJvcGVydHkgYW5kIGVtaXRzIHJ1bGVzIHRoYXQgYXNzaWduIDxiYXNlLXByb3BlcnR5Pi1sZWZ0IHRvIDxsZWZ0LXZhbHVlPiBhbmRcbiAqIDxiYXNlLXByb3BlcnR5Pi1yaWdodCB0byA8cmlnaHQtdmFsdWU+IGluIGEgTFRSIGNvbnRleHQsIGFuZCB2aWNlIHZlcnNhIGluIGEgUlRMIGNvbnRleHQuXG4gKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIEBpbmNsdWRlIG1kYy1ydGwtcmVmbGV4aXZlLXByb3BlcnR5KG1hcmdpbiwgYXV0bywgMTJweCk7XG4gKiB9XG4gKiBgYGBcbiAqIGlzIGVxdWl2YWxlbnQgdG86XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBtYXJnaW4tbGVmdDogYXV0bztcbiAqICAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bCB7XG4gKiAgICAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gKiAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBBIDR0aCBvcHRpb25hbCAkcm9vdC1zZWxlY3RvciBhcmd1bWVudCBjYW4gYmUgZ2l2ZW4sIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIGBtZGMtcnRsYC5cbiAqL1xuLyoqXG4gKiBUYWtlcyBhbiBhcmd1bWVudCBzcGVjaWZ5aW5nIGEgaG9yaXpvbnRhbCBwb3NpdGlvbiBwcm9wZXJ0eSAoZWl0aGVyIFwibGVmdFwiIG9yIFwicmlnaHRcIikgYXMgd2VsbFxuICogYXMgYSB2YWx1ZSwgYW5kIGFwcGxpZXMgdGhhdCB2YWx1ZSB0byB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIGluIGEgTFRSIGNvbnRleHQsIGFuZCBmbGlwcyBpdCBpbiBhXG4gKiBSVEwgY29udGV4dC4gRm9yIGV4YW1wbGU6XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBAaW5jbHVkZSBtZGMtcnRsLXJlZmxleGl2ZS1wb3NpdGlvbihsZWZ0LCAwKTtcbiAqICAgcG9zaXRpb246IGFic29sdXRlO1xuICogfVxuICogYGBgXG4gKiBpcyBlcXVpdmFsZW50IHRvOlxuICpcbiAqIGBgYHNjc3NcbiAqICAubWRjLWZvbyB7XG4gKiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gKiAgICBsZWZ0OiAwO1xuICogICAgcmlnaHQ6IGluaXRpYWw7XG4gKlxuICogICAgQGluY2x1ZGUgbWRjLXJ0bCB7XG4gKiAgICAgIHJpZ2h0OiAwO1xuICogICAgICBsZWZ0OiBpbml0aWFsO1xuICogICAgfVxuICogIH1cbiAqIGBgYFxuICogQW4gb3B0aW9uYWwgdGhpcmQgJHJvb3Qtc2VsZWN0b3IgYXJndW1lbnQgbWF5IGFsc28gYmUgZ2l2ZW4sIHdoaWNoIGlzIHBhc3NlZCB0byBgbWRjLXJ0bGAuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKlxuICBQcmVjb21wdXRlZCBsaW5lYXIgY29sb3IgY2hhbm5lbCB2YWx1ZXMsIGZvciB1c2UgaW4gY29udHJhc3QgY2FsY3VsYXRpb25zLlxuICBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcblxuICBBbGdvcml0aG0sIGZvciBjIGluIDAgdG8gMjU1OlxuICBmKGMpIHtcbiAgICBjID0gYyAvIDI1NTtcbiAgICByZXR1cm4gYyA8IDAuMDM5MjggPyBjIC8gMTIuOTIgOiBNYXRoLnBvdygoYyArIDAuMDU1KSAvIDEuMDU1LCAyLjQpO1xuICB9XG5cbiAgVGhpcyBsb29rdXAgdGFibGUgaXMgbmVlZGVkIHNpbmNlIHRoZXJlIGlzIG5vIGBwb3dgIGluIFNBU1MuXG4qL1xuLyogQWxsIHZhcmlhYmxlcyBhcmUgbG9jYWwsIHNvIGRpc2FibGUgcGF0dGVybiBjaGVja2luZy4gKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBsdW1pbmFuY2UgZm9yIGEgY29sb3IuXG4gKiBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcbiAqL1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGNvbnRyYXN0IHJhdGlvIGJldHdlZW4gdHdvIGNvbG9ycy5cbiAqIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuICovXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIHRvIHVzZSBkYXJrIG9yIGxpZ2h0IHRleHQgb24gdG9wIG9mIGdpdmVuIGNvbG9yLlxuICogUmV0dXJucyBcImRhcmtcIiBmb3IgZGFyayB0ZXh0IGFuZCBcImxpZ2h0XCIgZm9yIGxpZ2h0IHRleHQuXG4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLypcbiAgTWFpbiB0aGVtZSBjb2xvcnMuXG4gIElmIHlvdSdyZSBhIHVzZXIgY3VzdG9taXppbmcgeW91ciBjb2xvciBzY2hlbWUgaW4gU0FTUywgdGhlc2UgYXJlIHByb2JhYmx5IHRoZSBvbmx5IHZhcmlhYmxlcyB5b3UgbmVlZCB0byBjaGFuZ2UuXG4qL1xuLyogSW5kaWdvIDUwMCAqL1xuLyogUGluayBBMjAwICovXG4vKiBXaGl0ZSAqL1xuLyogV2hpY2ggc2V0IG9mIHRleHQgY29sb3JzIHRvIHVzZSBmb3IgZWFjaCBtYWluIHRoZW1lIGNvbG9yIChsaWdodCBvciBkYXJrKSAqL1xuLyogVGV4dCBjb2xvcnMgYWNjb3JkaW5nIHRvIGxpZ2h0IHZzIGRhcmsgYW5kIHRleHQgdHlwZSAqL1xuLyogUHJpbWFyeSB0ZXh0IGNvbG9ycyBmb3IgZWFjaCBvZiB0aGUgdGhlbWUgY29sb3JzICovXG4vKiBBbGwgdmFyaWFibGVzIGFyZSBsb2NhbCwgc28gZGlzYWJsZSBwYXR0ZXJuIGNoZWNraW5nLiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBBcHBsaWVzIHRoZSBjb3JyZWN0IHRoZW1lIGNvbG9yIHN0eWxlIHRvIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkuXG4gKiAkcHJvcGVydHkgaXMgdHlwaWNhbGx5IGNvbG9yIG9yIGJhY2tncm91bmQtY29sb3IsIGJ1dCBjYW4gYmUgYW55IENTUyBwcm9wZXJ0eSB0aGF0IGFjY2VwdHMgY29sb3IgdmFsdWVzLlxuICogJHN0eWxlIHNob3VsZCBiZSBvbmUgb2YgdGhlIG1hcCBrZXlzIGluICRtZGMtdGhlbWUtcHJvcGVydHktdmFsdWVzIChfdmFyaWFibGVzLnNjc3MpLlxuICovXG4vKipcbiAqIENyZWF0ZXMgYSBydWxlIHRvIGJlIHVzZWQgaW4gTURDLVdlYiBjb21wb25lbnRzIGZvciBkYXJrIHRoZW1pbmcsIGFuZCBhcHBsaWVzIHRoZSBwcm92aWRlZCBjb250ZW50cy5cbiAqIFNob3VsZCBwcm92aWRlIHRoZSAkcm9vdC1zZWxlY3RvciBvcHRpb24gaWYgYXBwbGllZCB0byBhbnl0aGluZyBvdGhlciB0aGFuIHRoZSByb290IHNlbGVjdG9yLlxuICogV2hlbiB1c2VkIHdpdGggYSBtb2RpZmllciBjbGFzcywgcHJvdmlkZSBhIHNlY29uZCBhcmd1bWVudCBvZiBgdHJ1ZWAgZm9yIHRoZSAkY29tcG91bmQgcGFyYW1ldGVyXG4gKiB0byBzcGVjaWZ5IHRoYXQgdGhpcyBzaG91bGQgYmUgYXR0YWNoZWQgYXMgYSBjb21wb3VuZCBjbGFzcy5cbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgY29sb3I6IGJsYWNrO1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsge1xuICogICAgIGNvbG9yOiB3aGl0ZTtcbiAqICAgfVxuICpcbiAqICAgJl9fYmFyIHtcbiAqICAgICBiYWNrZ3JvdW5kOiBibGFjaztcbiAqXG4gKiAgICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsoXCIubWRjLWZvb1wiKSB7XG4gKiAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAqICAgICB9XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAubWRjLWZvby0tZGlzYWJsZWQge1xuICogICBvcGFjaXR5OiAuMzg7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtdGhlbWUtZGFyayhcIi5tZGMtZm9vXCIsIHRydWUpIHtcbiAqICAgICBvcGFjaXR5OiAuNTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKlxuICBQcmVjb21wdXRlZCBsaW5lYXIgY29sb3IgY2hhbm5lbCB2YWx1ZXMsIGZvciB1c2UgaW4gY29udHJhc3QgY2FsY3VsYXRpb25zLlxuICBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcblxuICBBbGdvcml0aG0sIGZvciBjIGluIDAgdG8gMjU1OlxuICBmKGMpIHtcbiAgICBjID0gYyAvIDI1NTtcbiAgICByZXR1cm4gYyA8IDAuMDM5MjggPyBjIC8gMTIuOTIgOiBNYXRoLnBvdygoYyArIDAuMDU1KSAvIDEuMDU1LCAyLjQpO1xuICB9XG5cbiAgVGhpcyBsb29rdXAgdGFibGUgaXMgbmVlZGVkIHNpbmNlIHRoZXJlIGlzIG5vIGBwb3dgIGluIFNBU1MuXG4qL1xuLyogQWxsIHZhcmlhYmxlcyBhcmUgbG9jYWwsIHNvIGRpc2FibGUgcGF0dGVybiBjaGVja2luZy4gKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBsdW1pbmFuY2UgZm9yIGEgY29sb3IuXG4gKiBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcbiAqL1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGNvbnRyYXN0IHJhdGlvIGJldHdlZW4gdHdvIGNvbG9ycy5cbiAqIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuICovXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIHRvIHVzZSBkYXJrIG9yIGxpZ2h0IHRleHQgb24gdG9wIG9mIGdpdmVuIGNvbG9yLlxuICogUmV0dXJucyBcImRhcmtcIiBmb3IgZGFyayB0ZXh0IGFuZCBcImxpZ2h0XCIgZm9yIGxpZ2h0IHRleHQuXG4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLypcbiAgTWFpbiB0aGVtZSBjb2xvcnMuXG4gIElmIHlvdSdyZSBhIHVzZXIgY3VzdG9taXppbmcgeW91ciBjb2xvciBzY2hlbWUgaW4gU0FTUywgdGhlc2UgYXJlIHByb2JhYmx5IHRoZSBvbmx5IHZhcmlhYmxlcyB5b3UgbmVlZCB0byBjaGFuZ2UuXG4qL1xuLyogSW5kaWdvIDUwMCAqL1xuLyogUGluayBBMjAwICovXG4vKiBXaGl0ZSAqL1xuLyogV2hpY2ggc2V0IG9mIHRleHQgY29sb3JzIHRvIHVzZSBmb3IgZWFjaCBtYWluIHRoZW1lIGNvbG9yIChsaWdodCBvciBkYXJrKSAqL1xuLyogVGV4dCBjb2xvcnMgYWNjb3JkaW5nIHRvIGxpZ2h0IHZzIGRhcmsgYW5kIHRleHQgdHlwZSAqL1xuLyogUHJpbWFyeSB0ZXh0IGNvbG9ycyBmb3IgZWFjaCBvZiB0aGUgdGhlbWUgY29sb3JzICovXG4vKiBBbGwgdmFyaWFibGVzIGFyZSBsb2NhbCwgc28gZGlzYWJsZSBwYXR0ZXJuIGNoZWNraW5nLiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBBcHBsaWVzIHRoZSBjb3JyZWN0IHRoZW1lIGNvbG9yIHN0eWxlIHRvIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkuXG4gKiAkcHJvcGVydHkgaXMgdHlwaWNhbGx5IGNvbG9yIG9yIGJhY2tncm91bmQtY29sb3IsIGJ1dCBjYW4gYmUgYW55IENTUyBwcm9wZXJ0eSB0aGF0IGFjY2VwdHMgY29sb3IgdmFsdWVzLlxuICogJHN0eWxlIHNob3VsZCBiZSBvbmUgb2YgdGhlIG1hcCBrZXlzIGluICRtZGMtdGhlbWUtcHJvcGVydHktdmFsdWVzIChfdmFyaWFibGVzLnNjc3MpLlxuICovXG4vKipcbiAqIENyZWF0ZXMgYSBydWxlIHRvIGJlIHVzZWQgaW4gTURDLVdlYiBjb21wb25lbnRzIGZvciBkYXJrIHRoZW1pbmcsIGFuZCBhcHBsaWVzIHRoZSBwcm92aWRlZCBjb250ZW50cy5cbiAqIFNob3VsZCBwcm92aWRlIHRoZSAkcm9vdC1zZWxlY3RvciBvcHRpb24gaWYgYXBwbGllZCB0byBhbnl0aGluZyBvdGhlciB0aGFuIHRoZSByb290IHNlbGVjdG9yLlxuICogV2hlbiB1c2VkIHdpdGggYSBtb2RpZmllciBjbGFzcywgcHJvdmlkZSBhIHNlY29uZCBhcmd1bWVudCBvZiBgdHJ1ZWAgZm9yIHRoZSAkY29tcG91bmQgcGFyYW1ldGVyXG4gKiB0byBzcGVjaWZ5IHRoYXQgdGhpcyBzaG91bGQgYmUgYXR0YWNoZWQgYXMgYSBjb21wb3VuZCBjbGFzcy5cbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgY29sb3I6IGJsYWNrO1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsge1xuICogICAgIGNvbG9yOiB3aGl0ZTtcbiAqICAgfVxuICpcbiAqICAgJl9fYmFyIHtcbiAqICAgICBiYWNrZ3JvdW5kOiBibGFjaztcbiAqXG4gKiAgICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsoXCIubWRjLWZvb1wiKSB7XG4gKiAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAqICAgICB9XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAubWRjLWZvby0tZGlzYWJsZWQge1xuICogICBvcGFjaXR5OiAuMzg7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtdGhlbWUtZGFyayhcIi5tZGMtZm9vXCIsIHRydWUpIHtcbiAqICAgICBvcGFjaXR5OiAuNTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiBUT0RPKHNnb21lcyk6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyBhYm91dCBkZXNrdG9wIGZvbnQgc2l6ZXMuICovXG4vKiBUT0RPKHNnb21lcyk6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyBhYm91dCBpMThuIGFuZCBpMThuIGZvbnQgc2l6ZXMuICovXG4vKiBBbGwgdmFyaWFibGVzIGFyZSBsb2NhbCwgc28gZGlzYWJsZSBwYXR0ZXJuIGNoZWNraW5nLiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4ubWRjLXBlcm1hbmVudC1kcmF3ZXIge1xuICAvKiBVc2UgYXNwZWN0IHJhdGlvIHRyaWNrIHRvIG1haW50YWluIDE2OjkgYXNwZWN0IHJhdGlvIG9uIHRoZSBoZWFkZXIgKi9cbiAgLyogc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlICovXG4gIC8qIHN0eWxlbGludC1lbmFibGUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlICovXG4gIC8qIFRPRE8oc2dvbWVzKTogUmV2aXNpdCB3aGVuIHdlIGhhdmUgaW50ZXJhY3RpdmUgbGlzdHMuICovXG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIGJhY2tncm91bmQ6IHZhcigtLW1kYy10aGVtZS1iYWNrZ3JvdW5kLCAjZmZmKTtcbiAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gIGJvcmRlci1sZWZ0OiAwO1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZTRlNGU0O1xuICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gIC8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgbGVmdDogMDtcbiAgcmlnaHQ6IGluaXRpYWw7XG4gIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7XG4gIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xuICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6IDI0MHB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgLm1kYy1wZXJtYW5lbnQtZHJhd2VyX190b29sYmFyLXNwYWNlciB7XG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xuICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xuICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgLW1zLWZsZXgtbmVnYXRpdmU6IDA7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIC13ZWJraXQtYm94LWFsaWduOiBmbGV4LWNlbnRlcjtcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGZsZXgtY2VudGVyO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtY2VudGVyO1xuICAgIGhlaWdodDogNTZweDtcbiAgICBwYWRkaW5nOiAxNnB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLyogVE9ETyhzZ29tZXMpOiByZXBsYWNlIHdpdGggZ2xvYmFsIGJyZWFrcG9pbnRzIHdoZW4gd2UgaGF2ZSB0aGVtICovIH1cbiAgICAubWRjLXBlcm1hbmVudC1kcmF3ZXJfX3Rvb2xiYXItc3BhY2VyLS10aGVtZS1kYXJrIC5tZGMtcGVybWFuZW50LWRyYXdlcl9fdG9vbGJhci1zcGFjZXIsXG4gICAgLm1kYy10aGVtZS0tZGFyayAubWRjLXBlcm1hbmVudC1kcmF3ZXJfX3Rvb2xiYXItc3BhY2VyIHtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpOyB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSB7XG4gICAgICAubWRjLXBlcm1hbmVudC1kcmF3ZXJfX3Rvb2xiYXItc3BhY2VyIHtcbiAgICAgICAgaGVpZ2h0OiA2NHB4OyB9IH1cbiAgLm1kYy1wZXJtYW5lbnQtZHJhd2VyX19oZWFkZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuICAubWRjLXBlcm1hbmVudC1kcmF3ZXJfX2hlYWRlcjo6YmVmb3JlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nLXRvcDogNTYuMjUlO1xuICAgIGNvbnRlbnQ6IFwiXCI7IH1cbiAgLm1kYy1wZXJtYW5lbnQtZHJhd2VyX19oZWFkZXItY29udGVudCB7XG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIC13ZWJraXQtYm94LWFsaWduOiBlbmQ7XG4gICAgICAgIC1tcy1mbGV4LWFsaWduOiBlbmQ7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgcGFkZGluZzogMTZweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG4gIC5tZGMtcGVybWFuZW50LWRyYXdlciAubWRjLWxpc3QtZ3JvdXAsXG4gIC5tZGMtcGVybWFuZW50LWRyYXdlciAubWRjLWxpc3Qge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwOyB9XG4gIC5tZGMtcGVybWFuZW50LWRyYXdlciAubWRjLWxpc3QtaXRlbSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6IDAgMTZweDtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNXJlbTsgfVxuICAubWRjLXBlcm1hbmVudC1kcmF3ZXIgLm1kYy1saXN0LWl0ZW1fX3N0YXJ0LWRldGFpbCB7XG4gICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7IH1cbiAgICAubWRjLXBlcm1hbmVudC1kcmF3ZXIgLm1kYy1saXN0LWl0ZW1fX3N0YXJ0LWRldGFpbC0tdGhlbWUtZGFyayAubWRjLXBlcm1hbmVudC1kcmF3ZXIgLm1kYy1saXN0LWl0ZW1fX3N0YXJ0LWRldGFpbCxcbiAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtcGVybWFuZW50LWRyYXdlciAubWRjLWxpc3QtaXRlbV9fc3RhcnQtZGV0YWlsIHtcbiAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTQpOyB9XG4gIC5tZGMtcGVybWFuZW50LWRyYXdlci0tc2VsZWN0ZWQubWRjLWxpc3QtaXRlbSxcbiAgLm1kYy1wZXJtYW5lbnQtZHJhd2VyLS1zZWxlY3RlZC5tZGMtbGlzdC1pdGVtIC5tZGMtbGlzdC1pdGVtX19zdGFydC1kZXRhaWwge1xuICAgIGNvbG9yOiAjM2Y1MWI1O1xuICAgIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtcHJpbWFyeSwgIzNmNTFiNSk7IH1cbiAgLm1kYy1wZXJtYW5lbnQtZHJhd2VyIC5tZGMtbGlzdC1pdGVtOjpiZWZvcmUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICAgIGJhY2tncm91bmQ6IGN1cnJlbnRDb2xvcjtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgLm1kYy1wZXJtYW5lbnQtZHJhd2VyIC5tZGMtbGlzdC1pdGVtOmZvY3VzOjpiZWZvcmUge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAxODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgb3BhY2l0eTogLjEyOyB9XG4gIC5tZGMtcGVybWFuZW50LWRyYXdlciAubWRjLWxpc3QtaXRlbTphY3RpdmU6OmJlZm9yZSB7XG4gICAgLypcbiAgICAgIFNsaWdodGx5IGRhcmtlciB2YWx1ZSBmb3IgdmlzdWFsIGRpc3RpbmN0aW9uLlxuICAgICAgVGhpcyBhbGxvd3MgYSBmdWxsIGJhc2UgdGhhdCBoYXMgZGlzdGluY3QgbW9kZXMuXG4gICAgICBQcm9ncmVzc2l2ZSBlbmhhbmNlbWVudCB3aXRoIHJpcHBsZXMgd2lsbCBwcm92aWRlIGNvbXBsZXRlIGJ1dHRvbiBzcGVjIGFsaWdubWVudC5cbiAgICAqL1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAxODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgb3BhY2l0eTogLjE4OyB9XG4gIC5tZGMtcGVybWFuZW50LWRyYXdlciAubWRjLWxpc3QtaXRlbTphY3RpdmU6Zm9jdXM6OmJlZm9yZSB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICAgICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOyB9XG4gIFtkaXI9XCJydGxcIl0gLm1kYy1wZXJtYW5lbnQtZHJhd2VyLCAubWRjLXBlcm1hbmVudC1kcmF3ZXJbZGlyPVwicnRsXCJdIHtcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNlNGU0ZTQ7XG4gICAgYm9yZGVyLXJpZ2h0OiAwOyB9XG4gIFtkaXI9XCJydGxcIl0gLm1kYy1wZXJtYW5lbnQtZHJhd2VyLCAubWRjLXBlcm1hbmVudC1kcmF3ZXJbZGlyPVwicnRsXCJdIHtcbiAgICBsZWZ0OiBpbml0aWFsO1xuICAgIHJpZ2h0OiAwOyB9XG4gIC5tZGMtcGVybWFuZW50LWRyYXdlci0tdGhlbWUtZGFyayxcbiAgLm1kYy10aGVtZS0tZGFyayAubWRjLXBlcm1hbmVudC1kcmF3ZXIge1xuICAgIGJhY2tncm91bmQ6ICMyMTIxMjE7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1wcmltYXJ5LW9uLWRhcmssIHdoaXRlKTtcbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgIGJvcmRlci1sZWZ0OiAwO1xuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7XG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovIH1cbiAgICBbZGlyPVwicnRsXCJdIC5tZGMtcGVybWFuZW50LWRyYXdlci0tdGhlbWUtZGFyaywgLm1kYy1wZXJtYW5lbnQtZHJhd2VyLS10aGVtZS1kYXJrW2Rpcj1cInJ0bFwiXSwgW2Rpcj1cInJ0bFwiXVxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1wZXJtYW5lbnQtZHJhd2VyLFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1wZXJtYW5lbnQtZHJhd2VyW2Rpcj1cInJ0bFwiXSB7XG4gICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7XG4gICAgICBib3JkZXItcmlnaHQ6IDA7IH1cbiAgLm1kYy1wZXJtYW5lbnQtZHJhd2VyLS1mbG9hdGluZyB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgIGJvcmRlci1sZWZ0OiAwO1xuICAgIGJvcmRlci1yaWdodDogbm9uZTtcbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi8gfVxuICAgIFtkaXI9XCJydGxcIl0gLm1kYy1wZXJtYW5lbnQtZHJhd2VyLS1mbG9hdGluZywgLm1kYy1wZXJtYW5lbnQtZHJhd2VyLS1mbG9hdGluZ1tkaXI9XCJydGxcIl0ge1xuICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgICBib3JkZXItcmlnaHQ6IDA7IH1cbiAgICAubWRjLXBlcm1hbmVudC1kcmF3ZXItLWZsb2F0aW5nLS10aGVtZS1kYXJrLFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1wZXJtYW5lbnQtZHJhd2VyLS1mbG9hdGluZyB7XG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAgIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqLyB9XG4gICAgICBbZGlyPVwicnRsXCJdIC5tZGMtcGVybWFuZW50LWRyYXdlci0tZmxvYXRpbmctLXRoZW1lLWRhcmssIC5tZGMtcGVybWFuZW50LWRyYXdlci0tZmxvYXRpbmctLXRoZW1lLWRhcmtbZGlyPVwicnRsXCJdLCBbZGlyPVwicnRsXCJdXG4gICAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtcGVybWFuZW50LWRyYXdlci0tZmxvYXRpbmcsXG4gICAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtcGVybWFuZW50LWRyYXdlci0tZmxvYXRpbmdbZGlyPVwicnRsXCJdIHtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yaWdodDogMDsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIFRoZSBjc3MgcHJvcGVydHkgdXNlZCBmb3IgZWxldmF0aW9uLiBJbiBtb3N0IGNhc2VzIHRoaXMgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkLiBJdCBpcyBleHBvc2VkXG4gKiBhcyBhIHZhcmlhYmxlIGZvciBhYnN0cmFjdGlvbiAvIGVhc3kgdXNlIHdoZW4gbmVlZGluZyB0byByZWZlcmVuY2UgdGhlIHByb3BlcnR5IGRpcmVjdGx5LCBmb3JcbiAqIGV4YW1wbGUgaW4gYSBgd2lsbC1jaGFuZ2VgIHJ1bGUuXG4gKi9cbi8qKlxuICogVGhlIGRlZmF1bHQgZHVyYXRpb24gdmFsdWUgZm9yIGVsZXZhdGlvbiB0cmFuc2l0aW9ucy5cbiAqL1xuLyoqXG4gKiBUaGUgZGVmYXVsdCBlYXNpbmcgdmFsdWUgZm9yIGVsZXZhdGlvbiB0cmFuc2l0aW9ucy5cbiAqL1xuLyoqXG4gKiBBcHBsaWVzIHRoZSBjb3JyZWN0IGNzcyBydWxlcyB0byBhbiBlbGVtZW50IHRvIGdpdmUgaXQgdGhlIGVsZXZhdGlvbiBzcGVjaWZpZWQgYnkgJHotdmFsdWUuXG4gKiBUaGUgJHotdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI0LlxuICovXG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgdGhhdCBjYW4gYmUgdXNlZCBhcyB0aGUgdmFsdWUgZm9yIGEgYHRyYW5zaXRpb25gIHByb3BlcnR5IGZvciBlbGV2YXRpb24uXG4gKiBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgaXMgdXNlZnVsIGluIHNpdHVhdGlvbnMgd2hlcmUgYSBjb21wb25lbnQgbmVlZHMgdG8gdHJhbnNpdGlvblxuICogbW9yZSB0aGFuIG9uZSBwcm9wZXJ0eS5cbiAqXG4gKiBgYGBzY3NzXG4gKiAuZm9vIHtcbiAqICAgdHJhbnNpdGlvbjogbWRjLWVsZXZhdGlvbi10cmFuc2l0aW9uLXJ1bGUoKSwgb3BhY2l0eSAxMDBtcyBlYXNlO1xuICogICB3aWxsLWNoYW5nZTogJG1kYy1lbGV2YXRpb24tcHJvcGVydHksIG9wYWNpdHk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuLyoqXG4gKiBBcHBsaWVzIHRoZSBjb3JyZWN0IGNzcyBydWxlcyBuZWVkZWQgdG8gaGF2ZSBhbiBlbGVtZW50IHRyYW5zaXRpb24gYmV0d2VlbiBlbGV2YXRpb25zLlxuICogVGhpcyBtaXhpbiBzaG91bGQgYmUgYXBwbGllZCB0byBlbGVtZW50cyB3aG9zZSBlbGV2YXRpb24gdmFsdWVzIHdpbGwgY2hhbmdlIGRlcGVuZGluZyBvbiB0aGVpclxuICogY29udGV4dCAoZS5nLiB3aGVuIGFjdGl2ZSBvciBkaXNhYmxlZCkuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENyZWF0ZXMgYSBydWxlIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHdoZW4gYW4gTURDLVdlYiBjb21wb25lbnQgaXMgd2l0aGluIHRoZSBjb250ZXh0IG9mIGFuIFJUTCBsYXlvdXQuXG4gKlxuICogVXNhZ2UgRXhhbXBsZTpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgcG9zaXRpb246IGFic29sdXRlO1xuICogICBsZWZ0OiAwO1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bCB7XG4gKiAgICAgbGVmdDogYXV0bztcbiAqICAgICByaWdodDogMDtcbiAqICAgfVxuICpcbiAqICAgJl9fYmFyIHtcbiAqICAgICBtYXJnaW4tbGVmdDogNHB4O1xuICogICAgIEBpbmNsdWRlIG1kYy1ydGwoXCIubWRjLWZvb1wiKSB7XG4gKiAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAqICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xuICogICAgIH1cbiAqICAgfVxuICogfVxuICpcbiAqIC5tZGMtZm9vLS1tb2Qge1xuICogICBwYWRkaW5nLWxlZnQ6IDRweDtcbiAqXG4gKiAgIEBpbmNsdWRlIG1kYy1ydGwge1xuICogICAgIHBhZGRpbmctbGVmdDogYXV0bztcbiAqICAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIHdvcmtzIGJ5IGNoZWNraW5nIGZvciBbZGlyPVwicnRsXCJdIG9uIGFuIGFuY2VzdG9yIGVsZW1lbnQuIFdoaWxlIHRoaXMgd2lsbCB3b3JrXG4gKiBpbiBtb3N0IGNhc2VzLCBpdCB3aWxsIGluIHNvbWUgY2FzZXMgbGVhZCB0byBmYWxzZSBuZWdhdGl2ZXMsIGUuZy5cbiAqXG4gKiBgYGBodG1sXG4gKiA8aHRtbCBkaXI9XCJydGxcIj5cbiAqICAgPCEtLSAuLi4gLS0+XG4gKiAgIDxkaXYgZGlyPVwibHRyXCI+XG4gKiAgICAgPGRpdiBjbGFzcz1cIm1kYy1mb29cIj5TdHlsZWQgaW5jb3JyZWN0bHkgYXMgUlRMITwvZGl2PlxuICogICA8L2Rpdj5cbiAqIDwvaHRtbD5cbiAqIGBgYFxuICpcbiAqIEluIHRoZSBmdXR1cmUsIHNlbGVjdG9ycyBzdWNoIGFzIDpkaXIgKGh0dHA6Ly9tZG4uaW8vOmRpcikgd2lsbCBoZWxwIHVzIG1pdGlnYXRlIHRoaXMuXG4gKi9cbi8qKlxuICogVGFrZXMgYSBiYXNlIGJveC1tb2RlbCBwcm9wZXJ0eSAtIGUuZy4gbWFyZ2luIC8gYm9yZGVyIC8gcGFkZGluZyAtIGFsb25nIHdpdGggYSBkZWZhdWx0XG4gKiBkaXJlY3Rpb24gYW5kIHZhbHVlLCBhbmQgZW1pdHMgcnVsZXMgd2hpY2ggYXBwbHkgdGhlIHZhbHVlIHRvIHRoZVxuICogXCI8YmFzZS1wcm9wZXJ0eT4tPGRlZmF1bHQtZGlyZWN0aW9uPlwiIHByb3BlcnR5IGJ5IGRlZmF1bHQsIGJ1dCBmbGlwcyB0aGUgZGlyZWN0aW9uXG4gKiB3aGVuIHdpdGhpbiBhbiBSVEwgY29udGV4dC5cbiAqXG4gKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIEBpbmNsdWRlIG1kYy1ydGwtcmVmbGV4aXZlLWJveChtYXJnaW4sIGxlZnQsIDhweCk7XG4gKiB9XG4gKiBgYGBcbiAqIGlzIGVxdWl2YWxlbnQgdG86XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBtYXJnaW4tbGVmdDogOHB4O1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bCB7XG4gKiAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gKiAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICogd2hlcmVhczpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIEBpbmNsdWRlIG1kYy1ydGwtcmVmbGV4aXZlLWJveChtYXJnaW4sIHJpZ2h0LCA4cHgpO1xuICogfVxuICogYGBgXG4gKiBpcyBlcXVpdmFsZW50IHRvOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtcnRsIHtcbiAqICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gKiAgICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogWW91IGNhbiBhbHNvIHBhc3MgYSA0dGggb3B0aW9uYWwgJHJvb3Qtc2VsZWN0b3IgYXJndW1lbnQgd2hpY2ggd2lsbCBiZSBmb3J3YXJkZWQgdG8gYG1kYy1ydGxgLFxuICogZS5nLiBgQGluY2x1ZGUgbWRjLXJ0bC1yZWZsZXhpdmUtYm94LXByb3BlcnR5KG1hcmdpbiwgbGVmdCwgOHB4LCBcIi5tZGMtY29tcG9uZW50XCIpYC5cbiAqXG4gKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIGFsd2F5cyB6ZXJvIG91dCB0aGUgb3JpZ2luYWwgdmFsdWUgaW4gYW4gUlRMIGNvbnRleHQuIElmIHlvdSdyZVxuICogdHJ5aW5nIHRvIGZsaXAgdGhlIHZhbHVlcywgdXNlIG1kYy1ydGwtcmVmbGV4aXZlLXByb3BlcnR5KCkuXG4gKi9cbi8qKlxuICogVGFrZXMgYSBiYXNlIHByb3BlcnR5IGFuZCBlbWl0cyBydWxlcyB0aGF0IGFzc2lnbiA8YmFzZS1wcm9wZXJ0eT4tbGVmdCB0byA8bGVmdC12YWx1ZT4gYW5kXG4gKiA8YmFzZS1wcm9wZXJ0eT4tcmlnaHQgdG8gPHJpZ2h0LXZhbHVlPiBpbiBhIExUUiBjb250ZXh0LCBhbmQgdmljZSB2ZXJzYSBpbiBhIFJUTCBjb250ZXh0LlxuICogRm9yIGV4YW1wbGU6XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBAaW5jbHVkZSBtZGMtcnRsLXJlZmxleGl2ZS1wcm9wZXJ0eShtYXJnaW4sIGF1dG8sIDEycHgpO1xuICogfVxuICogYGBgXG4gKiBpcyBlcXVpdmFsZW50IHRvOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gKiAgIG1hcmdpbi1yaWdodDogMTJweDtcbiAqXG4gKiAgIEBpbmNsdWRlIG1kYy1ydGwge1xuICogICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICogICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogQSA0dGggb3B0aW9uYWwgJHJvb3Qtc2VsZWN0b3IgYXJndW1lbnQgY2FuIGJlIGdpdmVuLCB3aGljaCB3aWxsIGJlIHBhc3NlZCB0byBgbWRjLXJ0bGAuXG4gKi9cbi8qKlxuICogVGFrZXMgYW4gYXJndW1lbnQgc3BlY2lmeWluZyBhIGhvcml6b250YWwgcG9zaXRpb24gcHJvcGVydHkgKGVpdGhlciBcImxlZnRcIiBvciBcInJpZ2h0XCIpIGFzIHdlbGxcbiAqIGFzIGEgdmFsdWUsIGFuZCBhcHBsaWVzIHRoYXQgdmFsdWUgdG8gdGhlIHNwZWNpZmllZCBwb3NpdGlvbiBpbiBhIExUUiBjb250ZXh0LCBhbmQgZmxpcHMgaXQgaW4gYVxuICogUlRMIGNvbnRleHQuIEZvciBleGFtcGxlOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bC1yZWZsZXhpdmUtcG9zaXRpb24obGVmdCwgMCk7XG4gKiAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAqIH1cbiAqIGBgYFxuICogaXMgZXF1aXZhbGVudCB0bzpcbiAqXG4gKiBgYGBzY3NzXG4gKiAgLm1kYy1mb28ge1xuICogICAgcG9zaXRpb246IGFic29sdXRlO1xuICogICAgbGVmdDogMDtcbiAqICAgIHJpZ2h0OiBpbml0aWFsO1xuICpcbiAqICAgIEBpbmNsdWRlIG1kYy1ydGwge1xuICogICAgICByaWdodDogMDtcbiAqICAgICAgbGVmdDogaW5pdGlhbDtcbiAqICAgIH1cbiAqICB9XG4gKiBgYGBcbiAqIEFuIG9wdGlvbmFsIHRoaXJkICRyb290LXNlbGVjdG9yIGFyZ3VtZW50IG1heSBhbHNvIGJlIGdpdmVuLCB3aGljaCBpcyBwYXNzZWQgdG8gYG1kYy1ydGxgLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLypcbiAgUHJlY29tcHV0ZWQgbGluZWFyIGNvbG9yIGNoYW5uZWwgdmFsdWVzLCBmb3IgdXNlIGluIGNvbnRyYXN0IGNhbGN1bGF0aW9ucy5cbiAgU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG5cbiAgQWxnb3JpdGhtLCBmb3IgYyBpbiAwIHRvIDI1NTpcbiAgZihjKSB7XG4gICAgYyA9IGMgLyAyNTU7XG4gICAgcmV0dXJuIGMgPCAwLjAzOTI4ID8gYyAvIDEyLjkyIDogTWF0aC5wb3coKGMgKyAwLjA1NSkgLyAxLjA1NSwgMi40KTtcbiAgfVxuXG4gIFRoaXMgbG9va3VwIHRhYmxlIGlzIG5lZWRlZCBzaW5jZSB0aGVyZSBpcyBubyBgcG93YCBpbiBTQVNTLlxuKi9cbi8qIEFsbCB2YXJpYWJsZXMgYXJlIGxvY2FsLCBzbyBkaXNhYmxlIHBhdHRlcm4gY2hlY2tpbmcuICovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgbHVtaW5hbmNlIGZvciBhIGNvbG9yLlxuICogU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG4gKi9cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBjb250cmFzdCByYXRpbyBiZXR3ZWVuIHR3byBjb2xvcnMuXG4gKiBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcbiAqL1xuLyoqXG4gKiBEZXRlcm1pbmUgd2hldGhlciB0byB1c2UgZGFyayBvciBsaWdodCB0ZXh0IG9uIHRvcCBvZiBnaXZlbiBjb2xvci5cbiAqIFJldHVybnMgXCJkYXJrXCIgZm9yIGRhcmsgdGV4dCBhbmQgXCJsaWdodFwiIGZvciBsaWdodCB0ZXh0LlxuICovXG4vKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qXG4gIE1haW4gdGhlbWUgY29sb3JzLlxuICBJZiB5b3UncmUgYSB1c2VyIGN1c3RvbWl6aW5nIHlvdXIgY29sb3Igc2NoZW1lIGluIFNBU1MsIHRoZXNlIGFyZSBwcm9iYWJseSB0aGUgb25seSB2YXJpYWJsZXMgeW91IG5lZWQgdG8gY2hhbmdlLlxuKi9cbi8qIEluZGlnbyA1MDAgKi9cbi8qIFBpbmsgQTIwMCAqL1xuLyogV2hpdGUgKi9cbi8qIFdoaWNoIHNldCBvZiB0ZXh0IGNvbG9ycyB0byB1c2UgZm9yIGVhY2ggbWFpbiB0aGVtZSBjb2xvciAobGlnaHQgb3IgZGFyaykgKi9cbi8qIFRleHQgY29sb3JzIGFjY29yZGluZyB0byBsaWdodCB2cyBkYXJrIGFuZCB0ZXh0IHR5cGUgKi9cbi8qIFByaW1hcnkgdGV4dCBjb2xvcnMgZm9yIGVhY2ggb2YgdGhlIHRoZW1lIGNvbG9ycyAqL1xuLyogQWxsIHZhcmlhYmxlcyBhcmUgbG9jYWwsIHNvIGRpc2FibGUgcGF0dGVybiBjaGVja2luZy4gKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qKlxuICogQXBwbGllcyB0aGUgY29ycmVjdCB0aGVtZSBjb2xvciBzdHlsZSB0byB0aGUgc3BlY2lmaWVkIHByb3BlcnR5LlxuICogJHByb3BlcnR5IGlzIHR5cGljYWxseSBjb2xvciBvciBiYWNrZ3JvdW5kLWNvbG9yLCBidXQgY2FuIGJlIGFueSBDU1MgcHJvcGVydHkgdGhhdCBhY2NlcHRzIGNvbG9yIHZhbHVlcy5cbiAqICRzdHlsZSBzaG91bGQgYmUgb25lIG9mIHRoZSBtYXAga2V5cyBpbiAkbWRjLXRoZW1lLXByb3BlcnR5LXZhbHVlcyAoX3ZhcmlhYmxlcy5zY3NzKS5cbiAqL1xuLyoqXG4gKiBDcmVhdGVzIGEgcnVsZSB0byBiZSB1c2VkIGluIE1EQy1XZWIgY29tcG9uZW50cyBmb3IgZGFyayB0aGVtaW5nLCBhbmQgYXBwbGllcyB0aGUgcHJvdmlkZWQgY29udGVudHMuXG4gKiBTaG91bGQgcHJvdmlkZSB0aGUgJHJvb3Qtc2VsZWN0b3Igb3B0aW9uIGlmIGFwcGxpZWQgdG8gYW55dGhpbmcgb3RoZXIgdGhhbiB0aGUgcm9vdCBzZWxlY3Rvci5cbiAqIFdoZW4gdXNlZCB3aXRoIGEgbW9kaWZpZXIgY2xhc3MsIHByb3ZpZGUgYSBzZWNvbmQgYXJndW1lbnQgb2YgYHRydWVgIGZvciB0aGUgJGNvbXBvdW5kIHBhcmFtZXRlclxuICogdG8gc3BlY2lmeSB0aGF0IHRoaXMgc2hvdWxkIGJlIGF0dGFjaGVkIGFzIGEgY29tcG91bmQgY2xhc3MuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIGNvbG9yOiBibGFjaztcbiAqXG4gKiAgIEBpbmNsdWRlIG1kYy10aGVtZS1kYXJrIHtcbiAqICAgICBjb2xvcjogd2hpdGU7XG4gKiAgIH1cbiAqXG4gKiAgICZfX2JhciB7XG4gKiAgICAgYmFja2dyb3VuZDogYmxhY2s7XG4gKlxuICogICAgIEBpbmNsdWRlIG1kYy10aGVtZS1kYXJrKFwiLm1kYy1mb29cIikge1xuICogICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKlxuICogLm1kYy1mb28tLWRpc2FibGVkIHtcbiAqICAgb3BhY2l0eTogLjM4O1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsoXCIubWRjLWZvb1wiLCB0cnVlKSB7XG4gKiAgICAgb3BhY2l0eTogLjU7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG4vKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLypcbiAgUHJlY29tcHV0ZWQgbGluZWFyIGNvbG9yIGNoYW5uZWwgdmFsdWVzLCBmb3IgdXNlIGluIGNvbnRyYXN0IGNhbGN1bGF0aW9ucy5cbiAgU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG5cbiAgQWxnb3JpdGhtLCBmb3IgYyBpbiAwIHRvIDI1NTpcbiAgZihjKSB7XG4gICAgYyA9IGMgLyAyNTU7XG4gICAgcmV0dXJuIGMgPCAwLjAzOTI4ID8gYyAvIDEyLjkyIDogTWF0aC5wb3coKGMgKyAwLjA1NSkgLyAxLjA1NSwgMi40KTtcbiAgfVxuXG4gIFRoaXMgbG9va3VwIHRhYmxlIGlzIG5lZWRlZCBzaW5jZSB0aGVyZSBpcyBubyBgcG93YCBpbiBTQVNTLlxuKi9cbi8qIEFsbCB2YXJpYWJsZXMgYXJlIGxvY2FsLCBzbyBkaXNhYmxlIHBhdHRlcm4gY2hlY2tpbmcuICovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgbHVtaW5hbmNlIGZvciBhIGNvbG9yLlxuICogU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG4gKi9cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBjb250cmFzdCByYXRpbyBiZXR3ZWVuIHR3byBjb2xvcnMuXG4gKiBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcbiAqL1xuLyoqXG4gKiBEZXRlcm1pbmUgd2hldGhlciB0byB1c2UgZGFyayBvciBsaWdodCB0ZXh0IG9uIHRvcCBvZiBnaXZlbiBjb2xvci5cbiAqIFJldHVybnMgXCJkYXJrXCIgZm9yIGRhcmsgdGV4dCBhbmQgXCJsaWdodFwiIGZvciBsaWdodCB0ZXh0LlxuICovXG4vKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qXG4gIE1haW4gdGhlbWUgY29sb3JzLlxuICBJZiB5b3UncmUgYSB1c2VyIGN1c3RvbWl6aW5nIHlvdXIgY29sb3Igc2NoZW1lIGluIFNBU1MsIHRoZXNlIGFyZSBwcm9iYWJseSB0aGUgb25seSB2YXJpYWJsZXMgeW91IG5lZWQgdG8gY2hhbmdlLlxuKi9cbi8qIEluZGlnbyA1MDAgKi9cbi8qIFBpbmsgQTIwMCAqL1xuLyogV2hpdGUgKi9cbi8qIFdoaWNoIHNldCBvZiB0ZXh0IGNvbG9ycyB0byB1c2UgZm9yIGVhY2ggbWFpbiB0aGVtZSBjb2xvciAobGlnaHQgb3IgZGFyaykgKi9cbi8qIFRleHQgY29sb3JzIGFjY29yZGluZyB0byBsaWdodCB2cyBkYXJrIGFuZCB0ZXh0IHR5cGUgKi9cbi8qIFByaW1hcnkgdGV4dCBjb2xvcnMgZm9yIGVhY2ggb2YgdGhlIHRoZW1lIGNvbG9ycyAqL1xuLyogQWxsIHZhcmlhYmxlcyBhcmUgbG9jYWwsIHNvIGRpc2FibGUgcGF0dGVybiBjaGVja2luZy4gKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qKlxuICogQXBwbGllcyB0aGUgY29ycmVjdCB0aGVtZSBjb2xvciBzdHlsZSB0byB0aGUgc3BlY2lmaWVkIHByb3BlcnR5LlxuICogJHByb3BlcnR5IGlzIHR5cGljYWxseSBjb2xvciBvciBiYWNrZ3JvdW5kLWNvbG9yLCBidXQgY2FuIGJlIGFueSBDU1MgcHJvcGVydHkgdGhhdCBhY2NlcHRzIGNvbG9yIHZhbHVlcy5cbiAqICRzdHlsZSBzaG91bGQgYmUgb25lIG9mIHRoZSBtYXAga2V5cyBpbiAkbWRjLXRoZW1lLXByb3BlcnR5LXZhbHVlcyAoX3ZhcmlhYmxlcy5zY3NzKS5cbiAqL1xuLyoqXG4gKiBDcmVhdGVzIGEgcnVsZSB0byBiZSB1c2VkIGluIE1EQy1XZWIgY29tcG9uZW50cyBmb3IgZGFyayB0aGVtaW5nLCBhbmQgYXBwbGllcyB0aGUgcHJvdmlkZWQgY29udGVudHMuXG4gKiBTaG91bGQgcHJvdmlkZSB0aGUgJHJvb3Qtc2VsZWN0b3Igb3B0aW9uIGlmIGFwcGxpZWQgdG8gYW55dGhpbmcgb3RoZXIgdGhhbiB0aGUgcm9vdCBzZWxlY3Rvci5cbiAqIFdoZW4gdXNlZCB3aXRoIGEgbW9kaWZpZXIgY2xhc3MsIHByb3ZpZGUgYSBzZWNvbmQgYXJndW1lbnQgb2YgYHRydWVgIGZvciB0aGUgJGNvbXBvdW5kIHBhcmFtZXRlclxuICogdG8gc3BlY2lmeSB0aGF0IHRoaXMgc2hvdWxkIGJlIGF0dGFjaGVkIGFzIGEgY29tcG91bmQgY2xhc3MuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIGNvbG9yOiBibGFjaztcbiAqXG4gKiAgIEBpbmNsdWRlIG1kYy10aGVtZS1kYXJrIHtcbiAqICAgICBjb2xvcjogd2hpdGU7XG4gKiAgIH1cbiAqXG4gKiAgICZfX2JhciB7XG4gKiAgICAgYmFja2dyb3VuZDogYmxhY2s7XG4gKlxuICogICAgIEBpbmNsdWRlIG1kYy10aGVtZS1kYXJrKFwiLm1kYy1mb29cIikge1xuICogICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKlxuICogLm1kYy1mb28tLWRpc2FibGVkIHtcbiAqICAgb3BhY2l0eTogLjM4O1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsoXCIubWRjLWZvb1wiLCB0cnVlKSB7XG4gKiAgICAgb3BhY2l0eTogLjU7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG4vKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogVE9ETyhzZ29tZXMpOiBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gYWJvdXQgZGVza3RvcCBmb250IHNpemVzLiAqL1xuLyogVE9ETyhzZ29tZXMpOiBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gYWJvdXQgaTE4biBhbmQgaTE4biBmb250IHNpemVzLiAqL1xuLyogQWxsIHZhcmlhYmxlcyBhcmUgbG9jYWwsIHNvIGRpc2FibGUgcGF0dGVybiBjaGVja2luZy4gKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLm1kYy10ZW1wb3JhcnktZHJhd2VyIHtcbiAgLyogVXNlIGFzcGVjdCByYXRpbyB0cmljayB0byBtYWludGFpbiAxNjo5IGFzcGVjdCByYXRpbyBvbiB0aGUgaGVhZGVyICovXG4gIC8qIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZSAqL1xuICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZSAqL1xuICAvKiBUT0RPKHNnb21lcyk6IFJldmlzaXQgd2hlbiB3ZSBoYXZlIGludGVyYWN0aXZlIGxpc3RzLiAqL1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGNvbnRhaW46IHN0cmljdDtcbiAgLyogU2hhZGVkIGJhY2tncm91bmQgKi8gfVxuICAubWRjLXRlbXBvcmFyeS1kcmF3ZXJfX3Rvb2xiYXItc3BhY2VyIHtcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7XG4gICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XG4gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAtbXMtZmxleC1uZWdhdGl2ZTogMDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGZsZXgtY2VudGVyO1xuICAgICAgICAtbXMtZmxleC1hbGlnbjogZmxleC1jZW50ZXI7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1jZW50ZXI7XG4gICAgaGVpZ2h0OiA1NnB4O1xuICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAvKiBUT0RPKHNnb21lcyk6IHJlcGxhY2Ugd2l0aCBnbG9iYWwgYnJlYWtwb2ludHMgd2hlbiB3ZSBoYXZlIHRoZW0gKi8gfVxuICAgIC5tZGMtdGVtcG9yYXJ5LWRyYXdlcl9fdG9vbGJhci1zcGFjZXItLXRoZW1lLWRhcmsgLm1kYy10ZW1wb3JhcnktZHJhd2VyX190b29sYmFyLXNwYWNlcixcbiAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtdGVtcG9yYXJ5LWRyYXdlcl9fdG9vbGJhci1zcGFjZXIge1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7IH1cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHtcbiAgICAgIC5tZGMtdGVtcG9yYXJ5LWRyYXdlcl9fdG9vbGJhci1zcGFjZXIge1xuICAgICAgICBoZWlnaHQ6IDY0cHg7IH0gfVxuICAubWRjLXRlbXBvcmFyeS1kcmF3ZXJfX2hlYWRlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4gIC5tZGMtdGVtcG9yYXJ5LWRyYXdlcl9faGVhZGVyOjpiZWZvcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmctdG9wOiA1Ni4yNSU7XG4gICAgY29udGVudDogXCJcIjsgfVxuICAubWRjLXRlbXBvcmFyeS1kcmF3ZXJfX2hlYWRlci1jb250ZW50IHtcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGVuZDtcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGVuZDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICBwYWRkaW5nOiAxNnB4O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cbiAgLm1kYy10ZW1wb3JhcnktZHJhd2VyIC5tZGMtbGlzdC1ncm91cCxcbiAgLm1kYy10ZW1wb3JhcnktZHJhd2VyIC5tZGMtbGlzdCB7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7IH1cbiAgLm1kYy10ZW1wb3JhcnktZHJhd2VyIC5tZGMtbGlzdC1pdGVtIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogMCAxNnB4O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICBsaW5lLWhlaWdodDogMS41cmVtOyB9XG4gIC5tZGMtdGVtcG9yYXJ5LWRyYXdlciAubWRjLWxpc3QtaXRlbV9fc3RhcnQtZGV0YWlsIHtcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTsgfVxuICAgIC5tZGMtdGVtcG9yYXJ5LWRyYXdlciAubWRjLWxpc3QtaXRlbV9fc3RhcnQtZGV0YWlsLS10aGVtZS1kYXJrIC5tZGMtdGVtcG9yYXJ5LWRyYXdlciAubWRjLWxpc3QtaXRlbV9fc3RhcnQtZGV0YWlsLFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy10ZW1wb3JhcnktZHJhd2VyIC5tZGMtbGlzdC1pdGVtX19zdGFydC1kZXRhaWwge1xuICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NCk7IH1cbiAgLm1kYy10ZW1wb3JhcnktZHJhd2VyLS1zZWxlY3RlZC5tZGMtbGlzdC1pdGVtLFxuICAubWRjLXRlbXBvcmFyeS1kcmF3ZXItLXNlbGVjdGVkLm1kYy1saXN0LWl0ZW0gLm1kYy1saXN0LWl0ZW1fX3N0YXJ0LWRldGFpbCB7XG4gICAgY29sb3I6ICMzZjUxYjU7XG4gICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS1wcmltYXJ5LCAjM2Y1MWI1KTsgfVxuICAubWRjLXRlbXBvcmFyeS1kcmF3ZXIgLm1kYy1saXN0LWl0ZW06OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMTIwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMTIwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gICAgYmFja2dyb3VuZDogY3VycmVudENvbG9yO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgb3BhY2l0eTogMDsgfVxuICAubWRjLXRlbXBvcmFyeS1kcmF3ZXIgLm1kYy1saXN0LWl0ZW06Zm9jdXM6OmJlZm9yZSB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDE4MG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDE4MG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICBvcGFjaXR5OiAuMTI7IH1cbiAgLm1kYy10ZW1wb3JhcnktZHJhd2VyIC5tZGMtbGlzdC1pdGVtOmFjdGl2ZTo6YmVmb3JlIHtcbiAgICAvKlxuICAgICAgU2xpZ2h0bHkgZGFya2VyIHZhbHVlIGZvciB2aXN1YWwgZGlzdGluY3Rpb24uXG4gICAgICBUaGlzIGFsbG93cyBhIGZ1bGwgYmFzZSB0aGF0IGhhcyBkaXN0aW5jdCBtb2Rlcy5cbiAgICAgIFByb2dyZXNzaXZlIGVuaGFuY2VtZW50IHdpdGggcmlwcGxlcyB3aWxsIHByb3ZpZGUgY29tcGxldGUgYnV0dG9uIHNwZWMgYWxpZ25tZW50LlxuICAgICovXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDE4MG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDE4MG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICBvcGFjaXR5OiAuMTg7IH1cbiAgLm1kYy10ZW1wb3JhcnktZHJhd2VyIC5tZGMtbGlzdC1pdGVtOmFjdGl2ZTpmb2N1czo6YmVmb3JlIHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgICAgICAgICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7IH1cbiAgLm1kYy10ZW1wb3JhcnktZHJhd2VyOjpiZWZvcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjYpO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgb3BhY2l0eTogMDtcbiAgICBvcGFjaXR5OiB2YXIoLS1tZGMtdGVtcG9yYXJ5LWRyYXdlci1vcGFjaXR5LCAwKTtcbiAgICB3aWxsLWNoYW5nZTogb3BhY2l0eTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG4gIC5tZGMtdGVtcG9yYXJ5LWRyYXdlcl9fZHJhd2VyIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLW1kYy10aGVtZS1iYWNrZ3JvdW5kLCAjZmZmKTtcbiAgICBib3gtc2hhZG93OiAwcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgbGVmdDogMDtcbiAgICByaWdodDogaW5pdGlhbDtcbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xuICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDU2cHgpO1xuICAgIG1heC13aWR0aDogMjgwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoLTEwMCUgLSAyMHB4KSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYygtMTAwJSAtIDIwcHgpKTtcbiAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAtbXMtdG91Y2gtYWN0aW9uOiBub25lO1xuICAgICAgICB0b3VjaC1hY3Rpb246IG5vbmU7XG4gICAgLyogVE9ETyhzZ29tZXMpOiByZXBsYWNlIHdpdGggZ2xvYmFsIGJyZWFrcG9pbnRzIHdoZW4gd2UgaGF2ZSB0aGVtICovIH1cbiAgICBbZGlyPVwicnRsXCJdIC5tZGMtdGVtcG9yYXJ5LWRyYXdlcl9fZHJhd2VyLCAubWRjLXRlbXBvcmFyeS1kcmF3ZXJfX2RyYXdlcltkaXI9XCJydGxcIl0ge1xuICAgICAgbGVmdDogaW5pdGlhbDtcbiAgICAgIHJpZ2h0OiAwOyB9XG4gICAgLm1kYy10ZW1wb3JhcnktZHJhd2VyLS10aGVtZS1kYXJrIC5tZGMtdGVtcG9yYXJ5LWRyYXdlcl9fZHJhd2VyLFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy10ZW1wb3JhcnktZHJhd2VyX19kcmF3ZXIge1xuICAgICAgYmFja2dyb3VuZDogIzMwMzAzMDtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1wcmltYXJ5LW9uLWRhcmssIHdoaXRlKTsgfVxuICAgIFtkaXI9XCJydGxcIl0gLm1kYy10ZW1wb3JhcnktZHJhd2VyIC5tZGMtdGVtcG9yYXJ5LWRyYXdlcl9fZHJhd2VyLFxuICAgIC5tZGMtdGVtcG9yYXJ5LWRyYXdlcltkaXI9XCJydGxcIl0gLm1kYy10ZW1wb3JhcnktZHJhd2VyX19kcmF3ZXIge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYygxMDAlICsgMjBweCkpO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYygxMDAlICsgMjBweCkpOyB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSB7XG4gICAgICAubWRjLXRlbXBvcmFyeS1kcmF3ZXJfX2RyYXdlciB7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA2NHB4KTtcbiAgICAgICAgbWF4LXdpZHRoOiAzMjBweDsgfSB9XG4gIC5tZGMtdGVtcG9yYXJ5LWRyYXdlcl9fY29udGVudCB7XG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcbiAgICAgICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7XG4gICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgbWFyZ2luOiAwO1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAgIC1tcy10b3VjaC1hY3Rpb246IHBhbi15O1xuICAgICAgICB0b3VjaC1hY3Rpb246IHBhbi15OyB9XG4gIC5tZGMtdGVtcG9yYXJ5LWRyYXdlcl9fZm9vdGVyIHtcbiAgICBib3gtc2hhZG93OiAwcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAwO1xuICAgICAgICBmbGV4LXNocmluazogMDsgfVxuICAubWRjLXRlbXBvcmFyeS1kcmF3ZXItLWFuaW1hdGluZzo6YmVmb3JlIHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsgfVxuICAubWRjLXRlbXBvcmFyeS1kcmF3ZXItLWFuaW1hdGluZy5tZGMtdGVtcG9yYXJ5LWRyYXdlci0tb3BlbiAubWRjLXRlbXBvcmFyeS1kcmF3ZXJfX2RyYXdlciB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAwLjMzcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4zM3MgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjMzcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMzNzIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gMC4zM3MgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOyB9XG4gIC5tZGMtdGVtcG9yYXJ5LWRyYXdlci0tYW5pbWF0aW5nIC5tZGMtdGVtcG9yYXJ5LWRyYXdlcl9fZHJhd2VyIHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuMTNzIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICB0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAwLjEzcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTNzIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xM3MgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpLCAtd2Via2l0LXRyYW5zZm9ybSAwLjEzcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7IH1cbiAgLm1kYy10ZW1wb3JhcnktZHJhd2VyLS1vcGVuIHtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bzsgfVxuICAgIC5tZGMtdGVtcG9yYXJ5LWRyYXdlci0tb3Blbjo6YmVmb3JlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICBvcGFjaXR5OiB2YXIoLS1tZGMtdGVtcG9yYXJ5LWRyYXdlci1vcGFjaXR5LCAxKTsgfVxuICAgIC5tZGMtdGVtcG9yYXJ5LWRyYXdlci0tb3BlbiAubWRjLXRlbXBvcmFyeS1kcmF3ZXJfX2RyYXdlciB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lOyB9XG4gICAgW2Rpcj1cInJ0bFwiXSAubWRjLXRlbXBvcmFyeS1kcmF3ZXItLW9wZW4gLm1kYy10ZW1wb3JhcnktZHJhd2VyX19kcmF3ZXIsIC5tZGMtdGVtcG9yYXJ5LWRyYXdlci0tb3BlbltkaXI9XCJydGxcIl0gLm1kYy10ZW1wb3JhcnktZHJhd2VyX19kcmF3ZXIge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBUaGUgY3NzIHByb3BlcnR5IHVzZWQgZm9yIGVsZXZhdGlvbi4gSW4gbW9zdCBjYXNlcyB0aGlzIHNob3VsZCBub3QgYmUgY2hhbmdlZC4gSXQgaXMgZXhwb3NlZFxuICogYXMgYSB2YXJpYWJsZSBmb3IgYWJzdHJhY3Rpb24gLyBlYXN5IHVzZSB3aGVuIG5lZWRpbmcgdG8gcmVmZXJlbmNlIHRoZSBwcm9wZXJ0eSBkaXJlY3RseSwgZm9yXG4gKiBleGFtcGxlIGluIGEgYHdpbGwtY2hhbmdlYCBydWxlLlxuICovXG4vKipcbiAqIFRoZSBkZWZhdWx0IGR1cmF0aW9uIHZhbHVlIGZvciBlbGV2YXRpb24gdHJhbnNpdGlvbnMuXG4gKi9cbi8qKlxuICogVGhlIGRlZmF1bHQgZWFzaW5nIHZhbHVlIGZvciBlbGV2YXRpb24gdHJhbnNpdGlvbnMuXG4gKi9cbi8qKlxuICogQXBwbGllcyB0aGUgY29ycmVjdCBjc3MgcnVsZXMgdG8gYW4gZWxlbWVudCB0byBnaXZlIGl0IHRoZSBlbGV2YXRpb24gc3BlY2lmaWVkIGJ5ICR6LXZhbHVlLlxuICogVGhlICR6LXZhbHVlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyNC5cbiAqL1xuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgY2FuIGJlIHVzZWQgYXMgdGhlIHZhbHVlIGZvciBhIGB0cmFuc2l0aW9uYCBwcm9wZXJ0eSBmb3IgZWxldmF0aW9uLlxuICogQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGlzIHVzZWZ1bCBpbiBzaXR1YXRpb25zIHdoZXJlIGEgY29tcG9uZW50IG5lZWRzIHRvIHRyYW5zaXRpb25cbiAqIG1vcmUgdGhhbiBvbmUgcHJvcGVydHkuXG4gKlxuICogYGBgc2Nzc1xuICogLmZvbyB7XG4gKiAgIHRyYW5zaXRpb246IG1kYy1lbGV2YXRpb24tdHJhbnNpdGlvbi1ydWxlKCksIG9wYWNpdHkgMTAwbXMgZWFzZTtcbiAqICAgd2lsbC1jaGFuZ2U6ICRtZGMtZWxldmF0aW9uLXByb3BlcnR5LCBvcGFjaXR5O1xuICogfVxuICogYGBgXG4gKi9cbi8qKlxuICogQXBwbGllcyB0aGUgY29ycmVjdCBjc3MgcnVsZXMgbmVlZGVkIHRvIGhhdmUgYW4gZWxlbWVudCB0cmFuc2l0aW9uIGJldHdlZW4gZWxldmF0aW9ucy5cbiAqIFRoaXMgbWl4aW4gc2hvdWxkIGJlIGFwcGxpZWQgdG8gZWxlbWVudHMgd2hvc2UgZWxldmF0aW9uIHZhbHVlcyB3aWxsIGNoYW5nZSBkZXBlbmRpbmcgb24gdGhlaXJcbiAqIGNvbnRleHQgKGUuZy4gd2hlbiBhY3RpdmUgb3IgZGlzYWJsZWQpLlxuICovXG4ubWRjLWVsZXZhdGlvbi0tejAge1xuICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7IH1cblxuLm1kYy1lbGV2YXRpb24tLXoxIHtcbiAgYm94LXNoYWRvdzogMHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTsgfVxuXG4ubWRjLWVsZXZhdGlvbi0tejIge1xuICBib3gtc2hhZG93OiAwcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpOyB9XG5cbi5tZGMtZWxldmF0aW9uLS16MyB7XG4gIGJveC1zaGFkb3c6IDBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7IH1cblxuLm1kYy1lbGV2YXRpb24tLXo0IHtcbiAgYm94LXNoYWRvdzogMHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7IH1cblxuLm1kYy1lbGV2YXRpb24tLXo1IHtcbiAgYm94LXNoYWRvdzogMHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDE0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7IH1cblxuLm1kYy1lbGV2YXRpb24tLXo2IHtcbiAgYm94LXNoYWRvdzogMHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpOyB9XG5cbi5tZGMtZWxldmF0aW9uLS16NyB7XG4gIGJveC1zaGFkb3c6IDBweCA0cHggNXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggN3B4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKTsgfVxuXG4ubWRjLWVsZXZhdGlvbi0tejgge1xuICBib3gtc2hhZG93OiAwcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMik7IH1cblxuLm1kYy1lbGV2YXRpb24tLXo5IHtcbiAgYm94LXNoYWRvdzogMHB4IDVweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDNweCAxNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpOyB9XG5cbi5tZGMtZWxldmF0aW9uLS16MTAge1xuICBib3gtc2hhZG93OiAwcHggNnB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDEwcHggMTRweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDRweCAxOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpOyB9XG5cbi5tZGMtZWxldmF0aW9uLS16MTEge1xuICBib3gtc2hhZG93OiAwcHggNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDRweCAyMHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpOyB9XG5cbi5tZGMtZWxldmF0aW9uLS16MTIge1xuICBib3gtc2hhZG93OiAwcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpOyB9XG5cbi5tZGMtZWxldmF0aW9uLS16MTMge1xuICBib3gtc2hhZG93OiAwcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDEzcHggMTlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDVweCAyNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpOyB9XG5cbi5tZGMtZWxldmF0aW9uLS16MTQge1xuICBib3gtc2hhZG93OiAwcHggN3B4IDlweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDVweCAyNnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpOyB9XG5cbi5tZGMtZWxldmF0aW9uLS16MTUge1xuICBib3gtc2hhZG93OiAwcHggOHB4IDlweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDZweCAyOHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpOyB9XG5cbi5tZGMtZWxldmF0aW9uLS16MTYge1xuICBib3gtc2hhZG93OiAwcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTsgfVxuXG4ubWRjLWVsZXZhdGlvbi0tejE3IHtcbiAgYm94LXNoYWRvdzogMHB4IDhweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggNnB4IDMycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7IH1cblxuLm1kYy1lbGV2YXRpb24tLXoxOCB7XG4gIGJveC1zaGFkb3c6IDBweCA5cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDdweCAzNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpOyB9XG5cbi5tZGMtZWxldmF0aW9uLS16MTkge1xuICBib3gtc2hhZG93OiAwcHggOXB4IDEycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxOXB4IDI5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA3cHggMzZweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKTsgfVxuXG4ubWRjLWVsZXZhdGlvbi0tejIwIHtcbiAgYm94LXNoYWRvdzogMHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDhweCAzOHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpOyB9XG5cbi5tZGMtZWxldmF0aW9uLS16MjEge1xuICBib3gtc2hhZG93OiAwcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggOHB4IDQwcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMik7IH1cblxuLm1kYy1lbGV2YXRpb24tLXoyMiB7XG4gIGJveC1zaGFkb3c6IDBweCAxMHB4IDE0cHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAyMnB4IDM1cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA4cHggNDJweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKTsgfVxuXG4ubWRjLWVsZXZhdGlvbi0tejIzIHtcbiAgYm94LXNoYWRvdzogMHB4IDExcHggMTRweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDlweCA0NHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpOyB9XG5cbi5tZGMtZWxldmF0aW9uLS16MjQge1xuICBib3gtc2hhZG93OiAwcHggMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7IH1cblxuLm1kYy1lbGV2YXRpb24tdHJhbnNpdGlvbiB7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gIHdpbGwtY2hhbmdlOiBib3gtc2hhZG93OyB9XG5cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIFRoZSBjc3MgcHJvcGVydHkgdXNlZCBmb3IgZWxldmF0aW9uLiBJbiBtb3N0IGNhc2VzIHRoaXMgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkLiBJdCBpcyBleHBvc2VkXG4gKiBhcyBhIHZhcmlhYmxlIGZvciBhYnN0cmFjdGlvbiAvIGVhc3kgdXNlIHdoZW4gbmVlZGluZyB0byByZWZlcmVuY2UgdGhlIHByb3BlcnR5IGRpcmVjdGx5LCBmb3JcbiAqIGV4YW1wbGUgaW4gYSBgd2lsbC1jaGFuZ2VgIHJ1bGUuXG4gKi9cbi8qKlxuICogVGhlIGRlZmF1bHQgZHVyYXRpb24gdmFsdWUgZm9yIGVsZXZhdGlvbiB0cmFuc2l0aW9ucy5cbiAqL1xuLyoqXG4gKiBUaGUgZGVmYXVsdCBlYXNpbmcgdmFsdWUgZm9yIGVsZXZhdGlvbiB0cmFuc2l0aW9ucy5cbiAqL1xuLyoqXG4gKiBBcHBsaWVzIHRoZSBjb3JyZWN0IGNzcyBydWxlcyB0byBhbiBlbGVtZW50IHRvIGdpdmUgaXQgdGhlIGVsZXZhdGlvbiBzcGVjaWZpZWQgYnkgJHotdmFsdWUuXG4gKiBUaGUgJHotdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI0LlxuICovXG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgdGhhdCBjYW4gYmUgdXNlZCBhcyB0aGUgdmFsdWUgZm9yIGEgYHRyYW5zaXRpb25gIHByb3BlcnR5IGZvciBlbGV2YXRpb24uXG4gKiBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgaXMgdXNlZnVsIGluIHNpdHVhdGlvbnMgd2hlcmUgYSBjb21wb25lbnQgbmVlZHMgdG8gdHJhbnNpdGlvblxuICogbW9yZSB0aGFuIG9uZSBwcm9wZXJ0eS5cbiAqXG4gKiBgYGBzY3NzXG4gKiAuZm9vIHtcbiAqICAgdHJhbnNpdGlvbjogbWRjLWVsZXZhdGlvbi10cmFuc2l0aW9uLXJ1bGUoKSwgb3BhY2l0eSAxMDBtcyBlYXNlO1xuICogICB3aWxsLWNoYW5nZTogJG1kYy1lbGV2YXRpb24tcHJvcGVydHksIG9wYWNpdHk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuLyoqXG4gKiBBcHBsaWVzIHRoZSBjb3JyZWN0IGNzcyBydWxlcyBuZWVkZWQgdG8gaGF2ZSBhbiBlbGVtZW50IHRyYW5zaXRpb24gYmV0d2VlbiBlbGV2YXRpb25zLlxuICogVGhpcyBtaXhpbiBzaG91bGQgYmUgYXBwbGllZCB0byBlbGVtZW50cyB3aG9zZSBlbGV2YXRpb24gdmFsdWVzIHdpbGwgY2hhbmdlIGRlcGVuZGluZyBvbiB0aGVpclxuICogY29udGV4dCAoZS5nLiB3aGVuIGFjdGl2ZSBvciBkaXNhYmxlZCkuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKlxuICBQcmVjb21wdXRlZCBsaW5lYXIgY29sb3IgY2hhbm5lbCB2YWx1ZXMsIGZvciB1c2UgaW4gY29udHJhc3QgY2FsY3VsYXRpb25zLlxuICBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcblxuICBBbGdvcml0aG0sIGZvciBjIGluIDAgdG8gMjU1OlxuICBmKGMpIHtcbiAgICBjID0gYyAvIDI1NTtcbiAgICByZXR1cm4gYyA8IDAuMDM5MjggPyBjIC8gMTIuOTIgOiBNYXRoLnBvdygoYyArIDAuMDU1KSAvIDEuMDU1LCAyLjQpO1xuICB9XG5cbiAgVGhpcyBsb29rdXAgdGFibGUgaXMgbmVlZGVkIHNpbmNlIHRoZXJlIGlzIG5vIGBwb3dgIGluIFNBU1MuXG4qL1xuLyogQWxsIHZhcmlhYmxlcyBhcmUgbG9jYWwsIHNvIGRpc2FibGUgcGF0dGVybiBjaGVja2luZy4gKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBsdW1pbmFuY2UgZm9yIGEgY29sb3IuXG4gKiBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcbiAqL1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGNvbnRyYXN0IHJhdGlvIGJldHdlZW4gdHdvIGNvbG9ycy5cbiAqIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuICovXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIHRvIHVzZSBkYXJrIG9yIGxpZ2h0IHRleHQgb24gdG9wIG9mIGdpdmVuIGNvbG9yLlxuICogUmV0dXJucyBcImRhcmtcIiBmb3IgZGFyayB0ZXh0IGFuZCBcImxpZ2h0XCIgZm9yIGxpZ2h0IHRleHQuXG4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLypcbiAgTWFpbiB0aGVtZSBjb2xvcnMuXG4gIElmIHlvdSdyZSBhIHVzZXIgY3VzdG9taXppbmcgeW91ciBjb2xvciBzY2hlbWUgaW4gU0FTUywgdGhlc2UgYXJlIHByb2JhYmx5IHRoZSBvbmx5IHZhcmlhYmxlcyB5b3UgbmVlZCB0byBjaGFuZ2UuXG4qL1xuLyogSW5kaWdvIDUwMCAqL1xuLyogUGluayBBMjAwICovXG4vKiBXaGl0ZSAqL1xuLyogV2hpY2ggc2V0IG9mIHRleHQgY29sb3JzIHRvIHVzZSBmb3IgZWFjaCBtYWluIHRoZW1lIGNvbG9yIChsaWdodCBvciBkYXJrKSAqL1xuLyogVGV4dCBjb2xvcnMgYWNjb3JkaW5nIHRvIGxpZ2h0IHZzIGRhcmsgYW5kIHRleHQgdHlwZSAqL1xuLyogUHJpbWFyeSB0ZXh0IGNvbG9ycyBmb3IgZWFjaCBvZiB0aGUgdGhlbWUgY29sb3JzICovXG4vKiBBbGwgdmFyaWFibGVzIGFyZSBsb2NhbCwgc28gZGlzYWJsZSBwYXR0ZXJuIGNoZWNraW5nLiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBBcHBsaWVzIHRoZSBjb3JyZWN0IHRoZW1lIGNvbG9yIHN0eWxlIHRvIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkuXG4gKiAkcHJvcGVydHkgaXMgdHlwaWNhbGx5IGNvbG9yIG9yIGJhY2tncm91bmQtY29sb3IsIGJ1dCBjYW4gYmUgYW55IENTUyBwcm9wZXJ0eSB0aGF0IGFjY2VwdHMgY29sb3IgdmFsdWVzLlxuICogJHN0eWxlIHNob3VsZCBiZSBvbmUgb2YgdGhlIG1hcCBrZXlzIGluICRtZGMtdGhlbWUtcHJvcGVydHktdmFsdWVzIChfdmFyaWFibGVzLnNjc3MpLlxuICovXG4vKipcbiAqIENyZWF0ZXMgYSBydWxlIHRvIGJlIHVzZWQgaW4gTURDLVdlYiBjb21wb25lbnRzIGZvciBkYXJrIHRoZW1pbmcsIGFuZCBhcHBsaWVzIHRoZSBwcm92aWRlZCBjb250ZW50cy5cbiAqIFNob3VsZCBwcm92aWRlIHRoZSAkcm9vdC1zZWxlY3RvciBvcHRpb24gaWYgYXBwbGllZCB0byBhbnl0aGluZyBvdGhlciB0aGFuIHRoZSByb290IHNlbGVjdG9yLlxuICogV2hlbiB1c2VkIHdpdGggYSBtb2RpZmllciBjbGFzcywgcHJvdmlkZSBhIHNlY29uZCBhcmd1bWVudCBvZiBgdHJ1ZWAgZm9yIHRoZSAkY29tcG91bmQgcGFyYW1ldGVyXG4gKiB0byBzcGVjaWZ5IHRoYXQgdGhpcyBzaG91bGQgYmUgYXR0YWNoZWQgYXMgYSBjb21wb3VuZCBjbGFzcy5cbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgY29sb3I6IGJsYWNrO1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsge1xuICogICAgIGNvbG9yOiB3aGl0ZTtcbiAqICAgfVxuICpcbiAqICAgJl9fYmFyIHtcbiAqICAgICBiYWNrZ3JvdW5kOiBibGFjaztcbiAqXG4gKiAgICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsoXCIubWRjLWZvb1wiKSB7XG4gKiAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAqICAgICB9XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAubWRjLWZvby0tZGlzYWJsZWQge1xuICogICBvcGFjaXR5OiAuMzg7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtdGhlbWUtZGFyayhcIi5tZGMtZm9vXCIsIHRydWUpIHtcbiAqICAgICBvcGFjaXR5OiAuNTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyogcG9zdGNzcy1iZW0tbGludGVyOiBkZWZpbmUgZmFiICovXG4ubWRjLWZhYiB7XG4gIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDtcbiAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94O1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XG4gICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiA1NnB4O1xuICBoZWlnaHQ6IDU2cHg7XG4gIHBhZGRpbmc6IDA7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGZpbGw6IGN1cnJlbnRDb2xvcjtcbiAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjQwODE7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kYy10aGVtZS1hY2NlbnQsICNmZjQwODEpO1xuICBjb2xvcjogd2hpdGU7XG4gIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1wcmltYXJ5LW9uLWFjY2VudCwgd2hpdGUpO1xuICBib3gtc2hhZG93OiAwcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gIC8qXG4gICAgVGhpcyBhbGxvd3MgZm9yIHVzaW5nIFNWR3Mgd2l0aGluIHRoZW0gdG8gYWxpZ24gcHJvcGVybHkgaW4gYWxsIGJyb3dzZXJzLlxuICAgIENhbiByZW1vdmUgb25jZTogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NDUxNSBpcyByZXNvbHZlZC5cbiAgKi9cbiAgLyogc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3Itbm8tdHlwZSAqL1xuICAvKiBwb3N0Y3NzLWJlbS1saW50ZXI6IGlnbm9yZSAqLyB9XG4gIC5tZGMtZmFiLS1taW5pIHtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7IH1cbiAgLm1kYy1mYWItLXBsYWluIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbiAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjg3KSk7IH1cbiAgLm1kYy1mYWI6OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMTIwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMTIwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gICAgYmFja2dyb3VuZDogYmxhY2s7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBvcGFjaXR5OiAwOyB9XG4gIC5tZGMtZmFiOmZvY3VzOjpiZWZvcmUge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgb3BhY2l0eTogLjEyOyB9XG4gIC5tZGMtZmFiOmFjdGl2ZTo6YmVmb3JlIHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMTIwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMTIwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgIG9wYWNpdHk6IC4xODsgfVxuICAubWRjLWZhYjphY3RpdmU6Zm9jdXM6OmJlZm9yZSB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICAgICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOyB9XG4gIC5tZGMtZmFiOmFjdGl2ZSwgLm1kYy1mYWI6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7IH1cbiAgLm1kYy1mYWI6YWN0aXZlIHtcbiAgICBib3gtc2hhZG93OiAwcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpOyB9XG4gIC5tZGMtZmFiOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7IH1cbiAgLm1kYy1mYWI6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyOiAwOyB9XG4gIC5tZGMtZmFiID4gc3ZnIHtcbiAgICB3aWR0aDogMTAwJTsgfVxuICBmaWVsZHNldDpkaXNhYmxlZCAubWRjLWZhYiwgLm1kYy1mYWI6ZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNik7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyB9XG5cbi5tZGMtZmFiX19pY29uIHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xuICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XG4gICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlOyB9XG5cbi8qIHBvc3Rjc3MtYmVtLWxpbnRlcjogZW5kICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ3JlYXRlcyBhIHJ1bGUgdGhhdCB3aWxsIGJlIGFwcGxpZWQgd2hlbiBhbiBNREMtV2ViIGNvbXBvbmVudCBpcyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYW4gUlRMIGxheW91dC5cbiAqXG4gKiBVc2FnZSBFeGFtcGxlOlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gKiAgIGxlZnQ6IDA7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtcnRsIHtcbiAqICAgICBsZWZ0OiBhdXRvO1xuICogICAgIHJpZ2h0OiAwO1xuICogICB9XG4gKlxuICogICAmX19iYXIge1xuICogICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gKiAgICAgQGluY2x1ZGUgbWRjLXJ0bChcIi5tZGMtZm9vXCIpIHtcbiAqICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICogICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKlxuICogLm1kYy1mb28tLW1vZCB7XG4gKiAgIHBhZGRpbmctbGVmdDogNHB4O1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bCB7XG4gKiAgICAgcGFkZGluZy1sZWZ0OiBhdXRvO1xuICogICAgIHBhZGRpbmctcmlnaHQ6IDRweDtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogTm90ZSB0aGF0IHRoaXMgd29ya3MgYnkgY2hlY2tpbmcgZm9yIFtkaXI9XCJydGxcIl0gb24gYW4gYW5jZXN0b3IgZWxlbWVudC4gV2hpbGUgdGhpcyB3aWxsIHdvcmtcbiAqIGluIG1vc3QgY2FzZXMsIGl0IHdpbGwgaW4gc29tZSBjYXNlcyBsZWFkIHRvIGZhbHNlIG5lZ2F0aXZlcywgZS5nLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxodG1sIGRpcj1cInJ0bFwiPlxuICogICA8IS0tIC4uLiAtLT5cbiAqICAgPGRpdiBkaXI9XCJsdHJcIj5cbiAqICAgICA8ZGl2IGNsYXNzPVwibWRjLWZvb1wiPlN0eWxlZCBpbmNvcnJlY3RseSBhcyBSVEwhPC9kaXY+XG4gKiAgIDwvZGl2PlxuICogPC9odG1sPlxuICogYGBgXG4gKlxuICogSW4gdGhlIGZ1dHVyZSwgc2VsZWN0b3JzIHN1Y2ggYXMgOmRpciAoaHR0cDovL21kbi5pby86ZGlyKSB3aWxsIGhlbHAgdXMgbWl0aWdhdGUgdGhpcy5cbiAqL1xuLyoqXG4gKiBUYWtlcyBhIGJhc2UgYm94LW1vZGVsIHByb3BlcnR5IC0gZS5nLiBtYXJnaW4gLyBib3JkZXIgLyBwYWRkaW5nIC0gYWxvbmcgd2l0aCBhIGRlZmF1bHRcbiAqIGRpcmVjdGlvbiBhbmQgdmFsdWUsIGFuZCBlbWl0cyBydWxlcyB3aGljaCBhcHBseSB0aGUgdmFsdWUgdG8gdGhlXG4gKiBcIjxiYXNlLXByb3BlcnR5Pi08ZGVmYXVsdC1kaXJlY3Rpb24+XCIgcHJvcGVydHkgYnkgZGVmYXVsdCwgYnV0IGZsaXBzIHRoZSBkaXJlY3Rpb25cbiAqIHdoZW4gd2l0aGluIGFuIFJUTCBjb250ZXh0LlxuICpcbiAqIEZvciBleGFtcGxlOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bC1yZWZsZXhpdmUtYm94KG1hcmdpbiwgbGVmdCwgOHB4KTtcbiAqIH1cbiAqIGBgYFxuICogaXMgZXF1aXZhbGVudCB0bzpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtcnRsIHtcbiAqICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAqICAgICBtYXJnaW4tbGVmdDogMDtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKiB3aGVyZWFzOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bC1yZWZsZXhpdmUtYm94KG1hcmdpbiwgcmlnaHQsIDhweCk7XG4gKiB9XG4gKiBgYGBcbiAqIGlzIGVxdWl2YWxlbnQgdG86XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAqXG4gKiAgIEBpbmNsdWRlIG1kYy1ydGwge1xuICogICAgIG1hcmdpbi1yaWdodDogMDtcbiAqICAgICBtYXJnaW4tbGVmdDogOHB4O1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBZb3UgY2FuIGFsc28gcGFzcyBhIDR0aCBvcHRpb25hbCAkcm9vdC1zZWxlY3RvciBhcmd1bWVudCB3aGljaCB3aWxsIGJlIGZvcndhcmRlZCB0byBgbWRjLXJ0bGAsXG4gKiBlLmcuIGBAaW5jbHVkZSBtZGMtcnRsLXJlZmxleGl2ZS1ib3gtcHJvcGVydHkobWFyZ2luLCBsZWZ0LCA4cHgsIFwiLm1kYy1jb21wb25lbnRcIilgLlxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHplcm8gb3V0IHRoZSBvcmlnaW5hbCB2YWx1ZSBpbiBhbiBSVEwgY29udGV4dC4gSWYgeW91J3JlXG4gKiB0cnlpbmcgdG8gZmxpcCB0aGUgdmFsdWVzLCB1c2UgbWRjLXJ0bC1yZWZsZXhpdmUtcHJvcGVydHkoKS5cbiAqL1xuLyoqXG4gKiBUYWtlcyBhIGJhc2UgcHJvcGVydHkgYW5kIGVtaXRzIHJ1bGVzIHRoYXQgYXNzaWduIDxiYXNlLXByb3BlcnR5Pi1sZWZ0IHRvIDxsZWZ0LXZhbHVlPiBhbmRcbiAqIDxiYXNlLXByb3BlcnR5Pi1yaWdodCB0byA8cmlnaHQtdmFsdWU+IGluIGEgTFRSIGNvbnRleHQsIGFuZCB2aWNlIHZlcnNhIGluIGEgUlRMIGNvbnRleHQuXG4gKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIEBpbmNsdWRlIG1kYy1ydGwtcmVmbGV4aXZlLXByb3BlcnR5KG1hcmdpbiwgYXV0bywgMTJweCk7XG4gKiB9XG4gKiBgYGBcbiAqIGlzIGVxdWl2YWxlbnQgdG86XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBtYXJnaW4tbGVmdDogYXV0bztcbiAqICAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bCB7XG4gKiAgICAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gKiAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBBIDR0aCBvcHRpb25hbCAkcm9vdC1zZWxlY3RvciBhcmd1bWVudCBjYW4gYmUgZ2l2ZW4sIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIGBtZGMtcnRsYC5cbiAqL1xuLyoqXG4gKiBUYWtlcyBhbiBhcmd1bWVudCBzcGVjaWZ5aW5nIGEgaG9yaXpvbnRhbCBwb3NpdGlvbiBwcm9wZXJ0eSAoZWl0aGVyIFwibGVmdFwiIG9yIFwicmlnaHRcIikgYXMgd2VsbFxuICogYXMgYSB2YWx1ZSwgYW5kIGFwcGxpZXMgdGhhdCB2YWx1ZSB0byB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIGluIGEgTFRSIGNvbnRleHQsIGFuZCBmbGlwcyBpdCBpbiBhXG4gKiBSVEwgY29udGV4dC4gRm9yIGV4YW1wbGU6XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBAaW5jbHVkZSBtZGMtcnRsLXJlZmxleGl2ZS1wb3NpdGlvbihsZWZ0LCAwKTtcbiAqICAgcG9zaXRpb246IGFic29sdXRlO1xuICogfVxuICogYGBgXG4gKiBpcyBlcXVpdmFsZW50IHRvOlxuICpcbiAqIGBgYHNjc3NcbiAqICAubWRjLWZvbyB7XG4gKiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gKiAgICBsZWZ0OiAwO1xuICogICAgcmlnaHQ6IGluaXRpYWw7XG4gKlxuICogICAgQGluY2x1ZGUgbWRjLXJ0bCB7XG4gKiAgICAgIHJpZ2h0OiAwO1xuICogICAgICBsZWZ0OiBpbml0aWFsO1xuICogICAgfVxuICogIH1cbiAqIGBgYFxuICogQW4gb3B0aW9uYWwgdGhpcmQgJHJvb3Qtc2VsZWN0b3IgYXJndW1lbnQgbWF5IGFsc28gYmUgZ2l2ZW4sIHdoaWNoIGlzIHBhc3NlZCB0byBgbWRjLXJ0bGAuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKlxuICBQcmVjb21wdXRlZCBsaW5lYXIgY29sb3IgY2hhbm5lbCB2YWx1ZXMsIGZvciB1c2UgaW4gY29udHJhc3QgY2FsY3VsYXRpb25zLlxuICBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcblxuICBBbGdvcml0aG0sIGZvciBjIGluIDAgdG8gMjU1OlxuICBmKGMpIHtcbiAgICBjID0gYyAvIDI1NTtcbiAgICByZXR1cm4gYyA8IDAuMDM5MjggPyBjIC8gMTIuOTIgOiBNYXRoLnBvdygoYyArIDAuMDU1KSAvIDEuMDU1LCAyLjQpO1xuICB9XG5cbiAgVGhpcyBsb29rdXAgdGFibGUgaXMgbmVlZGVkIHNpbmNlIHRoZXJlIGlzIG5vIGBwb3dgIGluIFNBU1MuXG4qL1xuLyogQWxsIHZhcmlhYmxlcyBhcmUgbG9jYWwsIHNvIGRpc2FibGUgcGF0dGVybiBjaGVja2luZy4gKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBsdW1pbmFuY2UgZm9yIGEgY29sb3IuXG4gKiBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcbiAqL1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGNvbnRyYXN0IHJhdGlvIGJldHdlZW4gdHdvIGNvbG9ycy5cbiAqIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuICovXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIHRvIHVzZSBkYXJrIG9yIGxpZ2h0IHRleHQgb24gdG9wIG9mIGdpdmVuIGNvbG9yLlxuICogUmV0dXJucyBcImRhcmtcIiBmb3IgZGFyayB0ZXh0IGFuZCBcImxpZ2h0XCIgZm9yIGxpZ2h0IHRleHQuXG4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLypcbiAgTWFpbiB0aGVtZSBjb2xvcnMuXG4gIElmIHlvdSdyZSBhIHVzZXIgY3VzdG9taXppbmcgeW91ciBjb2xvciBzY2hlbWUgaW4gU0FTUywgdGhlc2UgYXJlIHByb2JhYmx5IHRoZSBvbmx5IHZhcmlhYmxlcyB5b3UgbmVlZCB0byBjaGFuZ2UuXG4qL1xuLyogSW5kaWdvIDUwMCAqL1xuLyogUGluayBBMjAwICovXG4vKiBXaGl0ZSAqL1xuLyogV2hpY2ggc2V0IG9mIHRleHQgY29sb3JzIHRvIHVzZSBmb3IgZWFjaCBtYWluIHRoZW1lIGNvbG9yIChsaWdodCBvciBkYXJrKSAqL1xuLyogVGV4dCBjb2xvcnMgYWNjb3JkaW5nIHRvIGxpZ2h0IHZzIGRhcmsgYW5kIHRleHQgdHlwZSAqL1xuLyogUHJpbWFyeSB0ZXh0IGNvbG9ycyBmb3IgZWFjaCBvZiB0aGUgdGhlbWUgY29sb3JzICovXG4vKiBBbGwgdmFyaWFibGVzIGFyZSBsb2NhbCwgc28gZGlzYWJsZSBwYXR0ZXJuIGNoZWNraW5nLiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBBcHBsaWVzIHRoZSBjb3JyZWN0IHRoZW1lIGNvbG9yIHN0eWxlIHRvIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkuXG4gKiAkcHJvcGVydHkgaXMgdHlwaWNhbGx5IGNvbG9yIG9yIGJhY2tncm91bmQtY29sb3IsIGJ1dCBjYW4gYmUgYW55IENTUyBwcm9wZXJ0eSB0aGF0IGFjY2VwdHMgY29sb3IgdmFsdWVzLlxuICogJHN0eWxlIHNob3VsZCBiZSBvbmUgb2YgdGhlIG1hcCBrZXlzIGluICRtZGMtdGhlbWUtcHJvcGVydHktdmFsdWVzIChfdmFyaWFibGVzLnNjc3MpLlxuICovXG4vKipcbiAqIENyZWF0ZXMgYSBydWxlIHRvIGJlIHVzZWQgaW4gTURDLVdlYiBjb21wb25lbnRzIGZvciBkYXJrIHRoZW1pbmcsIGFuZCBhcHBsaWVzIHRoZSBwcm92aWRlZCBjb250ZW50cy5cbiAqIFNob3VsZCBwcm92aWRlIHRoZSAkcm9vdC1zZWxlY3RvciBvcHRpb24gaWYgYXBwbGllZCB0byBhbnl0aGluZyBvdGhlciB0aGFuIHRoZSByb290IHNlbGVjdG9yLlxuICogV2hlbiB1c2VkIHdpdGggYSBtb2RpZmllciBjbGFzcywgcHJvdmlkZSBhIHNlY29uZCBhcmd1bWVudCBvZiBgdHJ1ZWAgZm9yIHRoZSAkY29tcG91bmQgcGFyYW1ldGVyXG4gKiB0byBzcGVjaWZ5IHRoYXQgdGhpcyBzaG91bGQgYmUgYXR0YWNoZWQgYXMgYSBjb21wb3VuZCBjbGFzcy5cbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgY29sb3I6IGJsYWNrO1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsge1xuICogICAgIGNvbG9yOiB3aGl0ZTtcbiAqICAgfVxuICpcbiAqICAgJl9fYmFyIHtcbiAqICAgICBiYWNrZ3JvdW5kOiBibGFjaztcbiAqXG4gKiAgICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsoXCIubWRjLWZvb1wiKSB7XG4gKiAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAqICAgICB9XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAubWRjLWZvby0tZGlzYWJsZWQge1xuICogICBvcGFjaXR5OiAuMzg7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtdGhlbWUtZGFyayhcIi5tZGMtZm9vXCIsIHRydWUpIHtcbiAqICAgICBvcGFjaXR5OiAuNTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiBUT0RPKHNnb21lcyk6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyBhYm91dCBkZXNrdG9wIGZvbnQgc2l6ZXMuICovXG4vKiBUT0RPKHNnb21lcyk6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyBhYm91dCBpMThuIGFuZCBpMThuIGZvbnQgc2l6ZXMuICovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1uby10eXBlICovXG4ubWRjLWZvcm0tZmllbGQge1xuICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xuICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjg3KSk7XG4gIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDtcbiAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94O1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuICAubWRjLWZvcm0tZmllbGQtLXRoZW1lLWRhcmssXG4gIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1mb3JtLWZpZWxkIHtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LXByaW1hcnktb24tZGFyaywgd2hpdGUpOyB9XG4gIC5tZGMtZm9ybS1maWVsZCA+IGxhYmVsIHtcbiAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAxO1xuICAgICAgICAtbXMtZmxleC1vcmRlcjogMDtcbiAgICAgICAgICAgIG9yZGVyOiAwO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXJnaW4tbGVmdDogNHB4OyB9XG4gIFtkaXI9XCJydGxcIl0gLm1kYy1mb3JtLWZpZWxkID4gbGFiZWwsIC5tZGMtZm9ybS1maWVsZFtkaXI9XCJydGxcIl0gPiBsYWJlbCB7XG4gICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87IH1cblxuLm1kYy1mb3JtLWZpZWxkLS1hbGlnbi1lbmQgPiBsYWJlbCB7XG4gIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDA7XG4gICAgICAtbXMtZmxleC1vcmRlcjogLTE7XG4gICAgICAgICAgb3JkZXI6IC0xO1xuICBtYXJnaW4tcmlnaHQ6IDRweDtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87IH1cblxuW2Rpcj1cInJ0bFwiXSAubWRjLWZvcm0tZmllbGQtLWFsaWduLWVuZCA+IGxhYmVsLCAubWRjLWZvcm0tZmllbGQtLWFsaWduLWVuZFtkaXI9XCJydGxcIl0gPiBsYWJlbCB7XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbWFyZ2luLWxlZnQ6IDRweDsgfVxuXG4vKiBzdHlsZWxpbnQtZW5hYmxlIHNlbGVjdG9yLW5vLXR5cGUgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiogcG9zdGNzcy1iZW0tbGludGVyOiBkZWZpbmUgaWNvbi10b2dnbGUgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qXG4gIFByZWNvbXB1dGVkIGxpbmVhciBjb2xvciBjaGFubmVsIHZhbHVlcywgZm9yIHVzZSBpbiBjb250cmFzdCBjYWxjdWxhdGlvbnMuXG4gIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuXG4gIEFsZ29yaXRobSwgZm9yIGMgaW4gMCB0byAyNTU6XG4gIGYoYykge1xuICAgIGMgPSBjIC8gMjU1O1xuICAgIHJldHVybiBjIDwgMC4wMzkyOCA/IGMgLyAxMi45MiA6IE1hdGgucG93KChjICsgMC4wNTUpIC8gMS4wNTUsIDIuNCk7XG4gIH1cblxuICBUaGlzIGxvb2t1cCB0YWJsZSBpcyBuZWVkZWQgc2luY2UgdGhlcmUgaXMgbm8gYHBvd2AgaW4gU0FTUy5cbiovXG4vKiBBbGwgdmFyaWFibGVzIGFyZSBsb2NhbCwgc28gZGlzYWJsZSBwYXR0ZXJuIGNoZWNraW5nLiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGx1bWluYW5jZSBmb3IgYSBjb2xvci5cbiAqIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuICovXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgY29udHJhc3QgcmF0aW8gYmV0d2VlbiB0d28gY29sb3JzLlxuICogU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG4gKi9cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gdXNlIGRhcmsgb3IgbGlnaHQgdGV4dCBvbiB0b3Agb2YgZ2l2ZW4gY29sb3IuXG4gKiBSZXR1cm5zIFwiZGFya1wiIGZvciBkYXJrIHRleHQgYW5kIFwibGlnaHRcIiBmb3IgbGlnaHQgdGV4dC5cbiAqL1xuLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKlxuICBNYWluIHRoZW1lIGNvbG9ycy5cbiAgSWYgeW91J3JlIGEgdXNlciBjdXN0b21pemluZyB5b3VyIGNvbG9yIHNjaGVtZSBpbiBTQVNTLCB0aGVzZSBhcmUgcHJvYmFibHkgdGhlIG9ubHkgdmFyaWFibGVzIHlvdSBuZWVkIHRvIGNoYW5nZS5cbiovXG4vKiBJbmRpZ28gNTAwICovXG4vKiBQaW5rIEEyMDAgKi9cbi8qIFdoaXRlICovXG4vKiBXaGljaCBzZXQgb2YgdGV4dCBjb2xvcnMgdG8gdXNlIGZvciBlYWNoIG1haW4gdGhlbWUgY29sb3IgKGxpZ2h0IG9yIGRhcmspICovXG4vKiBUZXh0IGNvbG9ycyBhY2NvcmRpbmcgdG8gbGlnaHQgdnMgZGFyayBhbmQgdGV4dCB0eXBlICovXG4vKiBQcmltYXJ5IHRleHQgY29sb3JzIGZvciBlYWNoIG9mIHRoZSB0aGVtZSBjb2xvcnMgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiogTURDIFJpcHBsZSBrZXlmcmFtZXMgYXJlIHNwbGl0IGludG8gdGhlaXIgb3duIGZpbGUgc28gdGhhdCBfbWl4aW5zLnNjc3MgY2FuIHJlbHkgb24gdGhlbS4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5ALXdlYmtpdC1rZXlmcmFtZXMgbWRjLXJpcHBsZS1mZy1yYWRpdXMtaW4ge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTU3LCAwLjcyLCAwLjM4NiwgMC45ODcpO1xuICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTU3LCAwLjcyLCAwLjM4NiwgMC45ODcpOyB9XG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS41KTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS41KTsgfSB9XG5Aa2V5ZnJhbWVzIG1kYy1yaXBwbGUtZmctcmFkaXVzLWluIHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE1NywgMC43MiwgMC4zODYsIDAuOTg3KTtcbiAgICAgICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE1NywgMC43MiwgMC4zODYsIDAuOTg3KTsgfVxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuNSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuNSk7IH0gfVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgbWRjLXJpcHBsZS1mZy1vcGFjaXR5LW91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG4gICAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7IH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG5Aa2V5ZnJhbWVzIG1kYy1yaXBwbGUtZmctb3BhY2l0eS1vdXQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOyB9XG4gIHRvIHtcbiAgICBvcGFjaXR5OiAwOyB9IH1cblxuQC13ZWJraXQta2V5ZnJhbWVzIG1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLW9wYWNpdHktZGVhY3RpdmF0ZSB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG5Aa2V5ZnJhbWVzIG1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLW9wYWNpdHktZGVhY3RpdmF0ZSB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWRlYWN0aXZhdGUge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdmFyKC0tbWRjLXJpcHBsZS1mZy1hcHByb3gteGYpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB2YXIoLS1tZGMtcmlwcGxlLWZnLWFwcHJveC14Zik7IH1cbiAgdG8ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjAxKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wMSk7IH0gfVxuXG5Aa2V5ZnJhbWVzIG1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kZWFjdGl2YXRlIHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHZhcigtLW1kYy1yaXBwbGUtZmctYXBwcm94LXhmKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdmFyKC0tbWRjLXJpcHBsZS1mZy1hcHByb3gteGYpOyB9XG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4wMSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDEpOyB9IH1cblxuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKlxuICBQcmVjb21wdXRlZCBsaW5lYXIgY29sb3IgY2hhbm5lbCB2YWx1ZXMsIGZvciB1c2UgaW4gY29udHJhc3QgY2FsY3VsYXRpb25zLlxuICBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcblxuICBBbGdvcml0aG0sIGZvciBjIGluIDAgdG8gMjU1OlxuICBmKGMpIHtcbiAgICBjID0gYyAvIDI1NTtcbiAgICByZXR1cm4gYyA8IDAuMDM5MjggPyBjIC8gMTIuOTIgOiBNYXRoLnBvdygoYyArIDAuMDU1KSAvIDEuMDU1LCAyLjQpO1xuICB9XG5cbiAgVGhpcyBsb29rdXAgdGFibGUgaXMgbmVlZGVkIHNpbmNlIHRoZXJlIGlzIG5vIGBwb3dgIGluIFNBU1MuXG4qL1xuLyogQWxsIHZhcmlhYmxlcyBhcmUgbG9jYWwsIHNvIGRpc2FibGUgcGF0dGVybiBjaGVja2luZy4gKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBsdW1pbmFuY2UgZm9yIGEgY29sb3IuXG4gKiBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcbiAqL1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGNvbnRyYXN0IHJhdGlvIGJldHdlZW4gdHdvIGNvbG9ycy5cbiAqIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuICovXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIHRvIHVzZSBkYXJrIG9yIGxpZ2h0IHRleHQgb24gdG9wIG9mIGdpdmVuIGNvbG9yLlxuICogUmV0dXJucyBcImRhcmtcIiBmb3IgZGFyayB0ZXh0IGFuZCBcImxpZ2h0XCIgZm9yIGxpZ2h0IHRleHQuXG4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLypcbiAgTWFpbiB0aGVtZSBjb2xvcnMuXG4gIElmIHlvdSdyZSBhIHVzZXIgY3VzdG9taXppbmcgeW91ciBjb2xvciBzY2hlbWUgaW4gU0FTUywgdGhlc2UgYXJlIHByb2JhYmx5IHRoZSBvbmx5IHZhcmlhYmxlcyB5b3UgbmVlZCB0byBjaGFuZ2UuXG4qL1xuLyogSW5kaWdvIDUwMCAqL1xuLyogUGluayBBMjAwICovXG4vKiBXaGl0ZSAqL1xuLyogV2hpY2ggc2V0IG9mIHRleHQgY29sb3JzIHRvIHVzZSBmb3IgZWFjaCBtYWluIHRoZW1lIGNvbG9yIChsaWdodCBvciBkYXJrKSAqL1xuLyogVGV4dCBjb2xvcnMgYWNjb3JkaW5nIHRvIGxpZ2h0IHZzIGRhcmsgYW5kIHRleHQgdHlwZSAqL1xuLyogUHJpbWFyeSB0ZXh0IGNvbG9ycyBmb3IgZWFjaCBvZiB0aGUgdGhlbWUgY29sb3JzICovXG4vKiBBbGwgdmFyaWFibGVzIGFyZSBsb2NhbCwgc28gZGlzYWJsZSBwYXR0ZXJuIGNoZWNraW5nLiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBBcHBsaWVzIHRoZSBjb3JyZWN0IHRoZW1lIGNvbG9yIHN0eWxlIHRvIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkuXG4gKiAkcHJvcGVydHkgaXMgdHlwaWNhbGx5IGNvbG9yIG9yIGJhY2tncm91bmQtY29sb3IsIGJ1dCBjYW4gYmUgYW55IENTUyBwcm9wZXJ0eSB0aGF0IGFjY2VwdHMgY29sb3IgdmFsdWVzLlxuICogJHN0eWxlIHNob3VsZCBiZSBvbmUgb2YgdGhlIG1hcCBrZXlzIGluICRtZGMtdGhlbWUtcHJvcGVydHktdmFsdWVzIChfdmFyaWFibGVzLnNjc3MpLlxuICovXG4vKipcbiAqIENyZWF0ZXMgYSBydWxlIHRvIGJlIHVzZWQgaW4gTURDLVdlYiBjb21wb25lbnRzIGZvciBkYXJrIHRoZW1pbmcsIGFuZCBhcHBsaWVzIHRoZSBwcm92aWRlZCBjb250ZW50cy5cbiAqIFNob3VsZCBwcm92aWRlIHRoZSAkcm9vdC1zZWxlY3RvciBvcHRpb24gaWYgYXBwbGllZCB0byBhbnl0aGluZyBvdGhlciB0aGFuIHRoZSByb290IHNlbGVjdG9yLlxuICogV2hlbiB1c2VkIHdpdGggYSBtb2RpZmllciBjbGFzcywgcHJvdmlkZSBhIHNlY29uZCBhcmd1bWVudCBvZiBgdHJ1ZWAgZm9yIHRoZSAkY29tcG91bmQgcGFyYW1ldGVyXG4gKiB0byBzcGVjaWZ5IHRoYXQgdGhpcyBzaG91bGQgYmUgYXR0YWNoZWQgYXMgYSBjb21wb3VuZCBjbGFzcy5cbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgY29sb3I6IGJsYWNrO1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsge1xuICogICAgIGNvbG9yOiB3aGl0ZTtcbiAqICAgfVxuICpcbiAqICAgJl9fYmFyIHtcbiAqICAgICBiYWNrZ3JvdW5kOiBibGFjaztcbiAqXG4gKiAgICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsoXCIubWRjLWZvb1wiKSB7XG4gKiAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAqICAgICB9XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAubWRjLWZvby0tZGlzYWJsZWQge1xuICogICBvcGFjaXR5OiAuMzg7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtdGhlbWUtZGFyayhcIi5tZGMtZm9vXCIsIHRydWUpIHtcbiAqICAgICBvcGFjaXR5OiAuNTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLm1kYy1pY29uLXRvZ2dsZSB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xuICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtc2Vjb25kYXJ5LW9uLWxpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNTQpKTtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XG4gICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcbiAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgd2lkdGg6IDQ4cHg7XG4gIGhlaWdodDogNDhweDtcbiAgcGFkZGluZzogMTJweDtcbiAgb3V0bGluZTogbm9uZTtcbiAgZm9udC1zaXplOiAxLjVyZW07XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsgfVxuICAubWRjLWljb24tdG9nZ2xlOjphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCwgMCk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAsIDApO1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSA4MG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSA4MG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSA4MG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKSwgdHJhbnNmb3JtIDgwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSksIHRyYW5zZm9ybSA4MG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IH1cbiAgLm1kYy1pY29uLXRvZ2dsZTpmb2N1czo6YWZ0ZXIge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjMsIDEuMyk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMywgMS4zKTtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDgwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDgwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIHRyYW5zZm9ybSA4MG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDgwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpLCB0cmFuc2Zvcm0gODBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDgwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgIG9wYWNpdHk6IC4xMjsgfVxuICAubWRjLWljb24tdG9nZ2xlLS10aGVtZS1kYXJrLFxuICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtaWNvbi10b2dnbGUge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1kYXJrLCB3aGl0ZSk7IH1cbiAgICAubWRjLWljb24tdG9nZ2xlLS10aGVtZS1kYXJrOmZvY3VzOjphZnRlcixcbiAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtaWNvbi10b2dnbGU6Zm9jdXM6OmFmdGVyIHtcbiAgICAgIG9wYWNpdHk6IC4zOyB9XG5cbi5tZGMtaWNvbi10b2dnbGUtLXByaW1hcnkge1xuICBjb2xvcjogIzNmNTFiNTtcbiAgY29sb3I6IHZhcigtLW1kYy10aGVtZS1wcmltYXJ5LCAjM2Y1MWI1KTsgfVxuXG4ubWRjLWljb24tdG9nZ2xlLS1hY2NlbnQge1xuICBjb2xvcjogI2ZmNDA4MTtcbiAgY29sb3I6IHZhcigtLW1kYy10aGVtZS1hY2NlbnQsICNmZjQwODEpOyB9XG5cbi5tZGMtaWNvbi10b2dnbGUtLXByaW1hcnk6Zm9jdXM6OmFmdGVyLFxuLm1kYy1pY29uLXRvZ2dsZS0tYWNjZW50OmZvY3VzOjphZnRlciB7XG4gIG9wYWNpdHk6IC4yNjsgfVxuXG4ubWRjLWljb24tdG9nZ2xlLS1kaXNhYmxlZCB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xuICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtZGlzYWJsZWQtb24tbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC4zOCkpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxuICAubWRjLWljb24tdG9nZ2xlLS10aGVtZS1kYXJrLm1kYy1pY29uLXRvZ2dsZS0tZGlzYWJsZWQsXG4gIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1pY29uLXRvZ2dsZS0tZGlzYWJsZWQge1xuICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LWRpc2FibGVkLW9uLWRhcmssIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSk7IH1cblxuLyoqIHBvc3Rjc3MtYmVtLWxpbnRlcjogZW5kICovXG4ubWRjLWljb24tdG9nZ2xlLm1kYy1yaXBwbGUtdXBncmFkZWQge1xuICAtLW1kYy1yaXBwbGUtbGVmdDogMDtcbiAgLS1tZGMtcmlwcGxlLXRvcDogMDtcbiAgLS1tZGMtcmlwcGxlLWZnLXNpemU6IDA7XG4gIC0tbWRjLXJpcHBsZS1zdXJmYWNlLWhlaWdodDogMDtcbiAgLS1tZGMtcmlwcGxlLXN1cmZhY2Utd2lkdGg6IDA7XG4gIC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uOiAwbXM7XG4gIC0tbWRjLXJpcHBsZS14Zm8teDogY2VudGVyO1xuICAtLW1kYy1yaXBwbGUteGZvLXk6IGNlbnRlcjtcbiAgLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC1vcGFjaXR5LWR1cmF0aW9uOiAwbXM7XG4gIC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uOiAwbXM7XG4gIC0tbWRjLXJpcHBsZS1mZy1hcHByb3gteGY6IDA7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2l0aW9uLCBvcGFjaXR5O1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgLyogc3R5bGVsaW50LWVuYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgLyogc3R5bGVsaW50LWRpc2FibGUgYXQtcnVsZS1lbXB0eS1saW5lLWJlZm9yZSwgYmxvY2stY2xvc2luZy1icmFjZS1uZXdsaW5lLWFmdGVyICovXG4gIC8qIHN0eWxlbGludC1lbmFibGUgYXQtcnVsZS1lbXB0eS1saW5lLWJlZm9yZSwgYmxvY2stY2xvc2luZy1icmFjZS1uZXdsaW5lLWFmdGVyICovXG4gIHdpbGwtY2hhbmdlOiBpbml0aWFsOyB9XG4gIC5tZGMtaWNvbi10b2dnbGUubWRjLXJpcHBsZS11cGdyYWRlZDo6YmVmb3JlIHtcbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNjIpO1xuICAgIC8qIHN0eWxlbGludC1lbmFibGUgYXQtcnVsZS1lbXB0eS1saW5lLWJlZm9yZSwgYmxvY2stY2xvc2luZy1icmFjZS1uZXdsaW5lLWFmdGVyICovXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogY2FsYyg1MCUgLSAxMDAlKTtcbiAgICBsZWZ0OiBjYWxjKDUwJSAtIDEwMCUpO1xuICAgIHdpZHRoOiAyMDAlO1xuICAgIGhlaWdodDogMjAwJTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAyMDBtcyBsaW5lYXI7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyMDBtcyBsaW5lYXI7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgY29udGVudDogXCJcIjsgfVxuICAubWRjLWljb24tdG9nZ2xlLm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tYmFja2dyb3VuZC1hY3RpdmU6OmJlZm9yZSB7XG4gICAgb3BhY2l0eTogLjk5OTk5OyB9XG4gIC5tZGMtaWNvbi10b2dnbGUubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1iYWNrZ3JvdW5kLWFjdGl2ZTphY3RpdmU6OmJlZm9yZSB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiA2MDBtcztcbiAgICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDYwMG1zOyB9XG4gIC5tZGMtaWNvbi10b2dnbGUubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1iYWNrZ3JvdW5kLWJvdW5kZWQtYWN0aXZlLWZpbGw6OmJlZm9yZSB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAxMjBtcztcbiAgICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDEyMG1zO1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgLm1kYy1pY29uLXRvZ2dsZS5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLXVuYm91bmRlZDo6YmVmb3JlIHtcbiAgICB0b3A6IHZhcigtLW1kYy1yaXBwbGUtdG9wKTtcbiAgICBsZWZ0OiB2YXIoLS1tZGMtcmlwcGxlLWxlZnQpO1xuICAgIHdpZHRoOiB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUpO1xuICAgIGhlaWdodDogdmFyKC0tbWRjLXJpcHBsZS1mZy1zaXplKTsgfVxuICAubWRjLWljb24tdG9nZ2xlLm1kYy1yaXBwbGUtdXBncmFkZWQ6OmFmdGVyIHtcbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUgYXQtcnVsZS1lbXB0eS1saW5lLWJlZm9yZSwgYmxvY2stY2xvc2luZy1icmFjZS1uZXdsaW5lLWFmdGVyICovXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA2Mik7XG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSk7XG4gICAgaGVpZ2h0OiB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUpO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyO1xuICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgb3BhY2l0eTogMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBjb250ZW50OiBcIlwiOyB9XG4gIC5tZGMtaWNvbi10b2dnbGUubWRjLXJpcHBsZS11cGdyYWRlZDpub3QoLm1kYy1yaXBwbGUtdXBncmFkZWQtLXVuYm91bmRlZCk6OmFmdGVyIHtcbiAgICB0b3A6IGNhbGModmFyKC0tbWRjLXJpcHBsZS10b3ApIC0gdmFyKC0tbWRjLXJpcHBsZS1mZy1zaXplKSAvIDIpO1xuICAgIGxlZnQ6IGNhbGModmFyKC0tbWRjLXJpcHBsZS1sZWZ0KSAtIHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSkgLyAyKTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7XG4gICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOyB9XG4gIC5tZGMtaWNvbi10b2dnbGUubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS11bmJvdW5kZWQ6OmFmdGVyIHtcbiAgICB0b3A6IHZhcigtLW1kYy1yaXBwbGUtdG9wKTtcbiAgICBsZWZ0OiB2YXIoLS1tZGMtcmlwcGxlLWxlZnQpO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogdmFyKC0tbWRjLXJpcHBsZS14Zm8teCkgdmFyKC0tbWRjLXJpcHBsZS14Zm8teSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiB2YXIoLS1tZGMtcmlwcGxlLXhmby14KSB2YXIoLS1tZGMtcmlwcGxlLXhmby15KTsgfVxuICAubWRjLWljb24tdG9nZ2xlLm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tZm9yZWdyb3VuZC1ib3VuZGVkLWFjdGl2ZS1maWxsOjphZnRlciB7XG4gICAgLXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcbiAgICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgIC13ZWJraXQtYW5pbWF0aW9uOiA4MDBtcyBtZGMtcmlwcGxlLWZnLXJhZGl1cy1pbiwgNDAwbXMgbWRjLXJpcHBsZS1mZy1vcGFjaXR5LW91dDtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogODAwbXMgbWRjLXJpcHBsZS1mZy1yYWRpdXMtaW4sIDQwMG1zIG1kYy1yaXBwbGUtZmctb3BhY2l0eS1vdXQ7IH1cbiAgLm1kYy1pY29uLXRvZ2dsZS5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLXVuYm91bmRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1mb3JlZ3JvdW5kLXVuYm91bmRlZC1hY3RpdmF0aW9uOjphZnRlciB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMTEwbXMgbGluZWFyLCAtd2Via2l0LXRyYW5zZm9ybSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb24pIGxpbmVhciA4MG1zO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMTEwbXMgbGluZWFyLCAtd2Via2l0LXRyYW5zZm9ybSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb24pIGxpbmVhciA4MG1zO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMTEwbXMgbGluZWFyLCB0cmFuc2Zvcm0gdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBsaW5lYXIgODBtcztcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDExMG1zIGxpbmVhciwgdHJhbnNmb3JtIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kdXJhdGlvbikgbGluZWFyIDgwbXMsIC13ZWJraXQtdHJhbnNmb3JtIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kdXJhdGlvbikgbGluZWFyIDgwbXM7XG4gICAgb3BhY2l0eTogMTsgfVxuICAubWRjLWljb24tdG9nZ2xlLm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tdW5ib3VuZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLWZvcmVncm91bmQtdW5ib3VuZGVkLWRlYWN0aXZhdGlvbjo6YWZ0ZXIge1xuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBtZGMtcmlwcGxlLWZnLXVuYm91bmRlZC1vcGFjaXR5LWRlYWN0aXZhdGUgdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtb3BhY2l0eS1kdXJhdGlvbikgbGluZWFyLCBtZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZGVhY3RpdmF0ZSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb24pIGN1YmljLWJlemllcigwLjE1NywgMC43MiwgMC4zODYsIDAuOTg3KTtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtb3BhY2l0eS1kZWFjdGl2YXRlIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLW9wYWNpdHktZHVyYXRpb24pIGxpbmVhciwgbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWRlYWN0aXZhdGUgdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBjdWJpYy1iZXppZXIoMC4xNTcsIDAuNzIsIDAuMzg2LCAwLjk4Nyk7IH1cbiAgLm1kYy1pY29uLXRvZ2dsZS0tdGhlbWUtZGFyay5tZGMtaWNvbi10b2dnbGUubWRjLXJpcHBsZS11cGdyYWRlZCxcbiAgLm1kYy10aGVtZS0tZGFyayAubWRjLWljb24tdG9nZ2xlLm1kYy1yaXBwbGUtdXBncmFkZWQge1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqL1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqLyB9XG4gICAgLm1kYy1pY29uLXRvZ2dsZS0tdGhlbWUtZGFyay5tZGMtaWNvbi10b2dnbGUubWRjLXJpcHBsZS11cGdyYWRlZDo6YmVmb3JlLFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1pY29uLXRvZ2dsZS5tZGMtcmlwcGxlLXVwZ3JhZGVkOjpiZWZvcmUge1xuICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNik7XG4gICAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqL1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiBjYWxjKDUwJSAtIDEwMCUpO1xuICAgICAgbGVmdDogY2FsYyg1MCUgLSAxMDAlKTtcbiAgICAgIHdpZHRoOiAyMDAlO1xuICAgICAgaGVpZ2h0OiAyMDAlO1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDIwMG1zIGxpbmVhcjtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMjAwbXMgbGluZWFyO1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgY29udGVudDogXCJcIjsgfVxuICAgIC5tZGMtaWNvbi10b2dnbGUtLXRoZW1lLWRhcmsubWRjLWljb24tdG9nZ2xlLm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tYmFja2dyb3VuZC1hY3RpdmU6OmJlZm9yZSxcbiAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtaWNvbi10b2dnbGUubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1iYWNrZ3JvdW5kLWFjdGl2ZTo6YmVmb3JlIHtcbiAgICAgIG9wYWNpdHk6IC45OTk5OTsgfVxuICAgIC5tZGMtaWNvbi10b2dnbGUtLXRoZW1lLWRhcmsubWRjLWljb24tdG9nZ2xlLm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tYmFja2dyb3VuZC1hY3RpdmU6YWN0aXZlOjpiZWZvcmUsXG4gICAgLm1kYy10aGVtZS0tZGFyayAubWRjLWljb24tdG9nZ2xlLm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tYmFja2dyb3VuZC1hY3RpdmU6YWN0aXZlOjpiZWZvcmUge1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiA2MDBtcztcbiAgICAgICAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNjAwbXM7IH1cbiAgICAubWRjLWljb24tdG9nZ2xlLS10aGVtZS1kYXJrLm1kYy1pY29uLXRvZ2dsZS5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLWJhY2tncm91bmQtYm91bmRlZC1hY3RpdmUtZmlsbDo6YmVmb3JlLFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1pY29uLXRvZ2dsZS5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLWJhY2tncm91bmQtYm91bmRlZC1hY3RpdmUtZmlsbDo6YmVmb3JlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMTIwbXM7XG4gICAgICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDEyMG1zO1xuICAgICAgb3BhY2l0eTogMTsgfVxuICAgIC5tZGMtaWNvbi10b2dnbGUtLXRoZW1lLWRhcmsubWRjLWljb24tdG9nZ2xlLm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tdW5ib3VuZGVkOjpiZWZvcmUsXG4gICAgLm1kYy10aGVtZS0tZGFyayAubWRjLWljb24tdG9nZ2xlLm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tdW5ib3VuZGVkOjpiZWZvcmUge1xuICAgICAgdG9wOiB2YXIoLS1tZGMtcmlwcGxlLXRvcCk7XG4gICAgICBsZWZ0OiB2YXIoLS1tZGMtcmlwcGxlLWxlZnQpO1xuICAgICAgd2lkdGg6IHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSk7XG4gICAgICBoZWlnaHQ6IHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSk7IH1cbiAgICAubWRjLWljb24tdG9nZ2xlLS10aGVtZS1kYXJrLm1kYy1pY29uLXRvZ2dsZS5tZGMtcmlwcGxlLXVwZ3JhZGVkOjphZnRlcixcbiAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtaWNvbi10b2dnbGUubWRjLXJpcHBsZS11cGdyYWRlZDo6YWZ0ZXIge1xuICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUgYXQtcnVsZS1lbXB0eS1saW5lLWJlZm9yZSwgYmxvY2stY2xvc2luZy1icmFjZS1uZXdsaW5lLWFmdGVyICovXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTYpO1xuICAgICAgLyogc3R5bGVsaW50LWVuYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOiB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUpO1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyO1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgY29udGVudDogXCJcIjsgfVxuICAgIC5tZGMtaWNvbi10b2dnbGUtLXRoZW1lLWRhcmsubWRjLWljb24tdG9nZ2xlLm1kYy1yaXBwbGUtdXBncmFkZWQ6bm90KC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS11bmJvdW5kZWQpOjphZnRlcixcbiAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtaWNvbi10b2dnbGUubWRjLXJpcHBsZS11cGdyYWRlZDpub3QoLm1kYy1yaXBwbGUtdXBncmFkZWQtLXVuYm91bmRlZCk6OmFmdGVyIHtcbiAgICAgIHRvcDogY2FsYyh2YXIoLS1tZGMtcmlwcGxlLXRvcCkgLSB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUpIC8gMik7XG4gICAgICBsZWZ0OiBjYWxjKHZhcigtLW1kYy1yaXBwbGUtbGVmdCkgLSB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUpIC8gMik7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7IH1cbiAgICAubWRjLWljb24tdG9nZ2xlLS10aGVtZS1kYXJrLm1kYy1pY29uLXRvZ2dsZS5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLXVuYm91bmRlZDo6YWZ0ZXIsXG4gICAgLm1kYy10aGVtZS0tZGFyayAubWRjLWljb24tdG9nZ2xlLm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tdW5ib3VuZGVkOjphZnRlciB7XG4gICAgICB0b3A6IHZhcigtLW1kYy1yaXBwbGUtdG9wKTtcbiAgICAgIGxlZnQ6IHZhcigtLW1kYy1yaXBwbGUtbGVmdCk7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHZhcigtLW1kYy1yaXBwbGUteGZvLXgpIHZhcigtLW1kYy1yaXBwbGUteGZvLXkpO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiB2YXIoLS1tZGMtcmlwcGxlLXhmby14KSB2YXIoLS1tZGMtcmlwcGxlLXhmby15KTsgfVxuICAgIC5tZGMtaWNvbi10b2dnbGUtLXRoZW1lLWRhcmsubWRjLWljb24tdG9nZ2xlLm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tZm9yZWdyb3VuZC1ib3VuZGVkLWFjdGl2ZS1maWxsOjphZnRlcixcbiAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtaWNvbi10b2dnbGUubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1mb3JlZ3JvdW5kLWJvdW5kZWQtYWN0aXZlLWZpbGw6OmFmdGVyIHtcbiAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgLXdlYmtpdC1hbmltYXRpb246IDgwMG1zIG1kYy1yaXBwbGUtZmctcmFkaXVzLWluLCA0MDBtcyBtZGMtcmlwcGxlLWZnLW9wYWNpdHktb3V0O1xuICAgICAgICAgICAgICBhbmltYXRpb246IDgwMG1zIG1kYy1yaXBwbGUtZmctcmFkaXVzLWluLCA0MDBtcyBtZGMtcmlwcGxlLWZnLW9wYWNpdHktb3V0OyB9XG4gICAgLm1kYy1pY29uLXRvZ2dsZS0tdGhlbWUtZGFyay5tZGMtaWNvbi10b2dnbGUubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS11bmJvdW5kZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tZm9yZWdyb3VuZC11bmJvdW5kZWQtYWN0aXZhdGlvbjo6YWZ0ZXIsXG4gICAgLm1kYy10aGVtZS0tZGFyayAubWRjLWljb24tdG9nZ2xlLm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tdW5ib3VuZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLWZvcmVncm91bmQtdW5ib3VuZGVkLWFjdGl2YXRpb246OmFmdGVyIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAxMTBtcyBsaW5lYXIsIC13ZWJraXQtdHJhbnNmb3JtIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kdXJhdGlvbikgbGluZWFyIDgwbXM7XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDExMG1zIGxpbmVhciwgLXdlYmtpdC10cmFuc2Zvcm0gdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBsaW5lYXIgODBtcztcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMTEwbXMgbGluZWFyLCB0cmFuc2Zvcm0gdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBsaW5lYXIgODBtcztcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMTEwbXMgbGluZWFyLCB0cmFuc2Zvcm0gdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBsaW5lYXIgODBtcywgLXdlYmtpdC10cmFuc2Zvcm0gdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBsaW5lYXIgODBtcztcbiAgICAgIG9wYWNpdHk6IDE7IH1cbiAgICAubWRjLWljb24tdG9nZ2xlLS10aGVtZS1kYXJrLm1kYy1pY29uLXRvZ2dsZS5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLXVuYm91bmRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1mb3JlZ3JvdW5kLXVuYm91bmRlZC1kZWFjdGl2YXRpb246OmFmdGVyLFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1pY29uLXRvZ2dsZS5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLXVuYm91bmRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1mb3JlZ3JvdW5kLXVuYm91bmRlZC1kZWFjdGl2YXRpb246OmFmdGVyIHtcbiAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBtZGMtcmlwcGxlLWZnLXVuYm91bmRlZC1vcGFjaXR5LWRlYWN0aXZhdGUgdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtb3BhY2l0eS1kdXJhdGlvbikgbGluZWFyLCBtZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZGVhY3RpdmF0ZSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb24pIGN1YmljLWJlemllcigwLjE1NywgMC43MiwgMC4zODYsIDAuOTg3KTtcbiAgICAgICAgICAgICAgYW5pbWF0aW9uOiBtZGMtcmlwcGxlLWZnLXVuYm91bmRlZC1vcGFjaXR5LWRlYWN0aXZhdGUgdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtb3BhY2l0eS1kdXJhdGlvbikgbGluZWFyLCBtZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZGVhY3RpdmF0ZSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb24pIGN1YmljLWJlemllcigwLjE1NywgMC43MiwgMC4zODYsIDAuOTg3KTsgfVxuXG4ubWRjLWljb24tdG9nZ2xlLS1wcmltYXJ5Lm1kYy1yaXBwbGUtdXBncmFkZWQge1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgLyogc3R5bGVsaW50LWVuYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgLyogc3R5bGVsaW50LWRpc2FibGUgYXQtcnVsZS1lbXB0eS1saW5lLWJlZm9yZSwgYmxvY2stY2xvc2luZy1icmFjZS1uZXdsaW5lLWFmdGVyICovXG4gIC8qIHN0eWxlbGludC1lbmFibGUgYXQtcnVsZS1lbXB0eS1saW5lLWJlZm9yZSwgYmxvY2stY2xvc2luZy1icmFjZS1uZXdsaW5lLWFmdGVyICovIH1cbiAgLm1kYy1pY29uLXRvZ2dsZS0tcHJpbWFyeS5tZGMtcmlwcGxlLXVwZ3JhZGVkOjpiZWZvcmUge1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUgYXQtcnVsZS1lbXB0eS1saW5lLWJlZm9yZSwgYmxvY2stY2xvc2luZy1icmFjZS1uZXdsaW5lLWFmdGVyICovXG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg2MywgODEsIDE4MSwgMC4xNCk7XG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiBjYWxjKDUwJSAtIDEwMCUpO1xuICAgIGxlZnQ6IGNhbGMoNTAlIC0gMTAwJSk7XG4gICAgd2lkdGg6IDIwMCU7XG4gICAgaGVpZ2h0OiAyMDAlO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDIwMG1zIGxpbmVhcjtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDIwMG1zIGxpbmVhcjtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgb3BhY2l0eTogMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBjb250ZW50OiBcIlwiOyB9XG4gICAgQHN1cHBvcnRzIChiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcihncmVlbiBhKDEwJSkpKSB7XG4gICAgICAubWRjLWljb24tdG9nZ2xlLS1wcmltYXJ5Lm1kYy1yaXBwbGUtdXBncmFkZWQ6OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yKHZhcigtLW1kYy10aGVtZS1wcmltYXJ5LCAjM2Y1MWI1KSBhKDE0JSkpOyB9IH1cbiAgLm1kYy1pY29uLXRvZ2dsZS0tcHJpbWFyeS5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLWJhY2tncm91bmQtYWN0aXZlOjpiZWZvcmUge1xuICAgIG9wYWNpdHk6IC45OTk5OTsgfVxuICAubWRjLWljb24tdG9nZ2xlLS1wcmltYXJ5Lm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tYmFja2dyb3VuZC1hY3RpdmU6YWN0aXZlOjpiZWZvcmUge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogNjAwbXM7XG4gICAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA2MDBtczsgfVxuICAubWRjLWljb24tdG9nZ2xlLS1wcmltYXJ5Lm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tYmFja2dyb3VuZC1ib3VuZGVkLWFjdGl2ZS1maWxsOjpiZWZvcmUge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMTIwbXM7XG4gICAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAxMjBtcztcbiAgICBvcGFjaXR5OiAxOyB9XG4gIC5tZGMtaWNvbi10b2dnbGUtLXByaW1hcnkubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS11bmJvdW5kZWQ6OmJlZm9yZSB7XG4gICAgdG9wOiB2YXIoLS1tZGMtcmlwcGxlLXRvcCk7XG4gICAgbGVmdDogdmFyKC0tbWRjLXJpcHBsZS1sZWZ0KTtcbiAgICB3aWR0aDogdmFyKC0tbWRjLXJpcHBsZS1mZy1zaXplKTtcbiAgICBoZWlnaHQ6IHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSk7IH1cbiAgLm1kYy1pY29uLXRvZ2dsZS0tcHJpbWFyeS5tZGMtcmlwcGxlLXVwZ3JhZGVkOjphZnRlciB7XG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqL1xuICAgIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNjMsIDgxLCAxODEsIDAuMTQpO1xuICAgIC8qIHN0eWxlbGludC1lbmFibGUgYXQtcnVsZS1lbXB0eS1saW5lLWJlZm9yZSwgYmxvY2stY2xvc2luZy1icmFjZS1uZXdsaW5lLWFmdGVyICovXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUpO1xuICAgIGhlaWdodDogdmFyKC0tbWRjLXJpcHBsZS1mZy1zaXplKTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcbiAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgY29udGVudDogXCJcIjsgfVxuICAgIEBzdXBwb3J0cyAoYmFja2dyb3VuZC1jb2xvcjogY29sb3IoZ3JlZW4gYSgxMCUpKSkge1xuICAgICAgLm1kYy1pY29uLXRvZ2dsZS0tcHJpbWFyeS5tZGMtcmlwcGxlLXVwZ3JhZGVkOjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yKHZhcigtLW1kYy10aGVtZS1wcmltYXJ5LCAjM2Y1MWI1KSBhKDE0JSkpOyB9IH1cbiAgLm1kYy1pY29uLXRvZ2dsZS0tcHJpbWFyeS5tZGMtcmlwcGxlLXVwZ3JhZGVkOm5vdCgubWRjLXJpcHBsZS11cGdyYWRlZC0tdW5ib3VuZGVkKTo6YWZ0ZXIge1xuICAgIHRvcDogY2FsYyh2YXIoLS1tZGMtcmlwcGxlLXRvcCkgLSB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUpIC8gMik7XG4gICAgbGVmdDogY2FsYyh2YXIoLS1tZGMtcmlwcGxlLWxlZnQpIC0gdmFyKC0tbWRjLXJpcHBsZS1mZy1zaXplKSAvIDIpO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcbiAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7IH1cbiAgLm1kYy1pY29uLXRvZ2dsZS0tcHJpbWFyeS5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLXVuYm91bmRlZDo6YWZ0ZXIge1xuICAgIHRvcDogdmFyKC0tbWRjLXJpcHBsZS10b3ApO1xuICAgIGxlZnQ6IHZhcigtLW1kYy1yaXBwbGUtbGVmdCk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiB2YXIoLS1tZGMtcmlwcGxlLXhmby14KSB2YXIoLS1tZGMtcmlwcGxlLXhmby15KTtcbiAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHZhcigtLW1kYy1yaXBwbGUteGZvLXgpIHZhcigtLW1kYy1yaXBwbGUteGZvLXkpOyB9XG4gIC5tZGMtaWNvbi10b2dnbGUtLXByaW1hcnkubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1mb3JlZ3JvdW5kLWJvdW5kZWQtYWN0aXZlLWZpbGw6OmFmdGVyIHtcbiAgICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgLXdlYmtpdC1hbmltYXRpb246IDgwMG1zIG1kYy1yaXBwbGUtZmctcmFkaXVzLWluLCA0MDBtcyBtZGMtcmlwcGxlLWZnLW9wYWNpdHktb3V0O1xuICAgICAgICAgICAgYW5pbWF0aW9uOiA4MDBtcyBtZGMtcmlwcGxlLWZnLXJhZGl1cy1pbiwgNDAwbXMgbWRjLXJpcHBsZS1mZy1vcGFjaXR5LW91dDsgfVxuICAubWRjLWljb24tdG9nZ2xlLS1wcmltYXJ5Lm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tdW5ib3VuZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLWZvcmVncm91bmQtdW5ib3VuZGVkLWFjdGl2YXRpb246OmFmdGVyIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAxMTBtcyBsaW5lYXIsIC13ZWJraXQtdHJhbnNmb3JtIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kdXJhdGlvbikgbGluZWFyIDgwbXM7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxMTBtcyBsaW5lYXIsIC13ZWJraXQtdHJhbnNmb3JtIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kdXJhdGlvbikgbGluZWFyIDgwbXM7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxMTBtcyBsaW5lYXIsIHRyYW5zZm9ybSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb24pIGxpbmVhciA4MG1zO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMTEwbXMgbGluZWFyLCB0cmFuc2Zvcm0gdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBsaW5lYXIgODBtcywgLXdlYmtpdC10cmFuc2Zvcm0gdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBsaW5lYXIgODBtcztcbiAgICBvcGFjaXR5OiAxOyB9XG4gIC5tZGMtaWNvbi10b2dnbGUtLXByaW1hcnkubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS11bmJvdW5kZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tZm9yZWdyb3VuZC11bmJvdW5kZWQtZGVhY3RpdmF0aW9uOjphZnRlciB7XG4gICAgLXdlYmtpdC1hbmltYXRpb246IG1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLW9wYWNpdHktZGVhY3RpdmF0ZSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC1vcGFjaXR5LWR1cmF0aW9uKSBsaW5lYXIsIG1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kZWFjdGl2YXRlIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kdXJhdGlvbikgY3ViaWMtYmV6aWVyKDAuMTU3LCAwLjcyLCAwLjM4NiwgMC45ODcpO1xuICAgICAgICAgICAgYW5pbWF0aW9uOiBtZGMtcmlwcGxlLWZnLXVuYm91bmRlZC1vcGFjaXR5LWRlYWN0aXZhdGUgdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtb3BhY2l0eS1kdXJhdGlvbikgbGluZWFyLCBtZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZGVhY3RpdmF0ZSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb24pIGN1YmljLWJlemllcigwLjE1NywgMC43MiwgMC4zODYsIDAuOTg3KTsgfVxuXG4ubWRjLWljb24tdG9nZ2xlLS1hY2NlbnQubWRjLXJpcHBsZS11cGdyYWRlZCB7XG4gIC8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gIC8qIHN0eWxlbGludC1kaXNhYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqL1xuICAvKiBzdHlsZWxpbnQtZW5hYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqL1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgLyogc3R5bGVsaW50LWVuYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi8gfVxuICAubWRjLWljb24tdG9nZ2xlLS1hY2NlbnQubWRjLXJpcHBsZS11cGdyYWRlZDo6YmVmb3JlIHtcbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqL1xuICAgIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NCwgMTI5LCAwLjE0KTtcbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqL1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IGNhbGMoNTAlIC0gMTAwJSk7XG4gICAgbGVmdDogY2FsYyg1MCUgLSAxMDAlKTtcbiAgICB3aWR0aDogMjAwJTtcbiAgICBoZWlnaHQ6IDIwMCU7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMjAwbXMgbGluZWFyO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMjAwbXMgbGluZWFyO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGNvbnRlbnQ6IFwiXCI7IH1cbiAgICBAc3VwcG9ydHMgKGJhY2tncm91bmQtY29sb3I6IGNvbG9yKGdyZWVuIGEoMTAlKSkpIHtcbiAgICAgIC5tZGMtaWNvbi10b2dnbGUtLWFjY2VudC5tZGMtcmlwcGxlLXVwZ3JhZGVkOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcih2YXIoLS1tZGMtdGhlbWUtYWNjZW50LCAjZmY0MDgxKSBhKDE0JSkpOyB9IH1cbiAgLm1kYy1pY29uLXRvZ2dsZS0tYWNjZW50Lm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tYmFja2dyb3VuZC1hY3RpdmU6OmJlZm9yZSB7XG4gICAgb3BhY2l0eTogLjk5OTk5OyB9XG4gIC5tZGMtaWNvbi10b2dnbGUtLWFjY2VudC5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLWJhY2tncm91bmQtYWN0aXZlOmFjdGl2ZTo6YmVmb3JlIHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDYwMG1zO1xuICAgICAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNjAwbXM7IH1cbiAgLm1kYy1pY29uLXRvZ2dsZS0tYWNjZW50Lm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tYmFja2dyb3VuZC1ib3VuZGVkLWFjdGl2ZS1maWxsOjpiZWZvcmUge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMTIwbXM7XG4gICAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAxMjBtcztcbiAgICBvcGFjaXR5OiAxOyB9XG4gIC5tZGMtaWNvbi10b2dnbGUtLWFjY2VudC5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLXVuYm91bmRlZDo6YmVmb3JlIHtcbiAgICB0b3A6IHZhcigtLW1kYy1yaXBwbGUtdG9wKTtcbiAgICBsZWZ0OiB2YXIoLS1tZGMtcmlwcGxlLWxlZnQpO1xuICAgIHdpZHRoOiB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUpO1xuICAgIGhlaWdodDogdmFyKC0tbWRjLXJpcHBsZS1mZy1zaXplKTsgfVxuICAubWRjLWljb24tdG9nZ2xlLS1hY2NlbnQubWRjLXJpcHBsZS11cGdyYWRlZDo6YWZ0ZXIge1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjQsIDEyOSwgMC4xNCk7XG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSk7XG4gICAgaGVpZ2h0OiB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUpO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyO1xuICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgb3BhY2l0eTogMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBjb250ZW50OiBcIlwiOyB9XG4gICAgQHN1cHBvcnRzIChiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcihncmVlbiBhKDEwJSkpKSB7XG4gICAgICAubWRjLWljb24tdG9nZ2xlLS1hY2NlbnQubWRjLXJpcHBsZS11cGdyYWRlZDo6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcih2YXIoLS1tZGMtdGhlbWUtYWNjZW50LCAjZmY0MDgxKSBhKDE0JSkpOyB9IH1cbiAgLm1kYy1pY29uLXRvZ2dsZS0tYWNjZW50Lm1kYy1yaXBwbGUtdXBncmFkZWQ6bm90KC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS11bmJvdW5kZWQpOjphZnRlciB7XG4gICAgdG9wOiBjYWxjKHZhcigtLW1kYy1yaXBwbGUtdG9wKSAtIHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSkgLyAyKTtcbiAgICBsZWZ0OiBjYWxjKHZhcigtLW1kYy1yaXBwbGUtbGVmdCkgLSB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUpIC8gMik7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyO1xuICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsgfVxuICAubWRjLWljb24tdG9nZ2xlLS1hY2NlbnQubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS11bmJvdW5kZWQ6OmFmdGVyIHtcbiAgICB0b3A6IHZhcigtLW1kYy1yaXBwbGUtdG9wKTtcbiAgICBsZWZ0OiB2YXIoLS1tZGMtcmlwcGxlLWxlZnQpO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogdmFyKC0tbWRjLXJpcHBsZS14Zm8teCkgdmFyKC0tbWRjLXJpcHBsZS14Zm8teSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiB2YXIoLS1tZGMtcmlwcGxlLXhmby14KSB2YXIoLS1tZGMtcmlwcGxlLXhmby15KTsgfVxuICAubWRjLWljb24tdG9nZ2xlLS1hY2NlbnQubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1mb3JlZ3JvdW5kLWJvdW5kZWQtYWN0aXZlLWZpbGw6OmFmdGVyIHtcbiAgICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgLXdlYmtpdC1hbmltYXRpb246IDgwMG1zIG1kYy1yaXBwbGUtZmctcmFkaXVzLWluLCA0MDBtcyBtZGMtcmlwcGxlLWZnLW9wYWNpdHktb3V0O1xuICAgICAgICAgICAgYW5pbWF0aW9uOiA4MDBtcyBtZGMtcmlwcGxlLWZnLXJhZGl1cy1pbiwgNDAwbXMgbWRjLXJpcHBsZS1mZy1vcGFjaXR5LW91dDsgfVxuICAubWRjLWljb24tdG9nZ2xlLS1hY2NlbnQubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS11bmJvdW5kZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tZm9yZWdyb3VuZC11bmJvdW5kZWQtYWN0aXZhdGlvbjo6YWZ0ZXIge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDExMG1zIGxpbmVhciwgLXdlYmtpdC10cmFuc2Zvcm0gdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBsaW5lYXIgODBtcztcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDExMG1zIGxpbmVhciwgLXdlYmtpdC10cmFuc2Zvcm0gdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBsaW5lYXIgODBtcztcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDExMG1zIGxpbmVhciwgdHJhbnNmb3JtIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kdXJhdGlvbikgbGluZWFyIDgwbXM7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxMTBtcyBsaW5lYXIsIHRyYW5zZm9ybSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb24pIGxpbmVhciA4MG1zLCAtd2Via2l0LXRyYW5zZm9ybSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb24pIGxpbmVhciA4MG1zO1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgLm1kYy1pY29uLXRvZ2dsZS0tYWNjZW50Lm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tdW5ib3VuZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLWZvcmVncm91bmQtdW5ib3VuZGVkLWRlYWN0aXZhdGlvbjo6YWZ0ZXIge1xuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBtZGMtcmlwcGxlLWZnLXVuYm91bmRlZC1vcGFjaXR5LWRlYWN0aXZhdGUgdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtb3BhY2l0eS1kdXJhdGlvbikgbGluZWFyLCBtZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZGVhY3RpdmF0ZSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb24pIGN1YmljLWJlemllcigwLjE1NywgMC43MiwgMC4zODYsIDAuOTg3KTtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtb3BhY2l0eS1kZWFjdGl2YXRlIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLW9wYWNpdHktZHVyYXRpb24pIGxpbmVhciwgbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWRlYWN0aXZhdGUgdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBjdWJpYy1iZXppZXIoMC4xNTcsIDAuNzIsIDAuMzg2LCAwLjk4Nyk7IH1cblxuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENyZWF0ZXMgYSBydWxlIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHdoZW4gYW4gTURDLVdlYiBjb21wb25lbnQgaXMgd2l0aGluIHRoZSBjb250ZXh0IG9mIGFuIFJUTCBsYXlvdXQuXG4gKlxuICogVXNhZ2UgRXhhbXBsZTpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgcG9zaXRpb246IGFic29sdXRlO1xuICogICBsZWZ0OiAwO1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bCB7XG4gKiAgICAgbGVmdDogYXV0bztcbiAqICAgICByaWdodDogMDtcbiAqICAgfVxuICpcbiAqICAgJl9fYmFyIHtcbiAqICAgICBtYXJnaW4tbGVmdDogNHB4O1xuICogICAgIEBpbmNsdWRlIG1kYy1ydGwoXCIubWRjLWZvb1wiKSB7XG4gKiAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAqICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xuICogICAgIH1cbiAqICAgfVxuICogfVxuICpcbiAqIC5tZGMtZm9vLS1tb2Qge1xuICogICBwYWRkaW5nLWxlZnQ6IDRweDtcbiAqXG4gKiAgIEBpbmNsdWRlIG1kYy1ydGwge1xuICogICAgIHBhZGRpbmctbGVmdDogYXV0bztcbiAqICAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIHdvcmtzIGJ5IGNoZWNraW5nIGZvciBbZGlyPVwicnRsXCJdIG9uIGFuIGFuY2VzdG9yIGVsZW1lbnQuIFdoaWxlIHRoaXMgd2lsbCB3b3JrXG4gKiBpbiBtb3N0IGNhc2VzLCBpdCB3aWxsIGluIHNvbWUgY2FzZXMgbGVhZCB0byBmYWxzZSBuZWdhdGl2ZXMsIGUuZy5cbiAqXG4gKiBgYGBodG1sXG4gKiA8aHRtbCBkaXI9XCJydGxcIj5cbiAqICAgPCEtLSAuLi4gLS0+XG4gKiAgIDxkaXYgZGlyPVwibHRyXCI+XG4gKiAgICAgPGRpdiBjbGFzcz1cIm1kYy1mb29cIj5TdHlsZWQgaW5jb3JyZWN0bHkgYXMgUlRMITwvZGl2PlxuICogICA8L2Rpdj5cbiAqIDwvaHRtbD5cbiAqIGBgYFxuICpcbiAqIEluIHRoZSBmdXR1cmUsIHNlbGVjdG9ycyBzdWNoIGFzIDpkaXIgKGh0dHA6Ly9tZG4uaW8vOmRpcikgd2lsbCBoZWxwIHVzIG1pdGlnYXRlIHRoaXMuXG4gKi9cbi8qKlxuICogVGFrZXMgYSBiYXNlIGJveC1tb2RlbCBwcm9wZXJ0eSAtIGUuZy4gbWFyZ2luIC8gYm9yZGVyIC8gcGFkZGluZyAtIGFsb25nIHdpdGggYSBkZWZhdWx0XG4gKiBkaXJlY3Rpb24gYW5kIHZhbHVlLCBhbmQgZW1pdHMgcnVsZXMgd2hpY2ggYXBwbHkgdGhlIHZhbHVlIHRvIHRoZVxuICogXCI8YmFzZS1wcm9wZXJ0eT4tPGRlZmF1bHQtZGlyZWN0aW9uPlwiIHByb3BlcnR5IGJ5IGRlZmF1bHQsIGJ1dCBmbGlwcyB0aGUgZGlyZWN0aW9uXG4gKiB3aGVuIHdpdGhpbiBhbiBSVEwgY29udGV4dC5cbiAqXG4gKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIEBpbmNsdWRlIG1kYy1ydGwtcmVmbGV4aXZlLWJveChtYXJnaW4sIGxlZnQsIDhweCk7XG4gKiB9XG4gKiBgYGBcbiAqIGlzIGVxdWl2YWxlbnQgdG86XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBtYXJnaW4tbGVmdDogOHB4O1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bCB7XG4gKiAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gKiAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICogd2hlcmVhczpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIEBpbmNsdWRlIG1kYy1ydGwtcmVmbGV4aXZlLWJveChtYXJnaW4sIHJpZ2h0LCA4cHgpO1xuICogfVxuICogYGBgXG4gKiBpcyBlcXVpdmFsZW50IHRvOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtcnRsIHtcbiAqICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gKiAgICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogWW91IGNhbiBhbHNvIHBhc3MgYSA0dGggb3B0aW9uYWwgJHJvb3Qtc2VsZWN0b3IgYXJndW1lbnQgd2hpY2ggd2lsbCBiZSBmb3J3YXJkZWQgdG8gYG1kYy1ydGxgLFxuICogZS5nLiBgQGluY2x1ZGUgbWRjLXJ0bC1yZWZsZXhpdmUtYm94LXByb3BlcnR5KG1hcmdpbiwgbGVmdCwgOHB4LCBcIi5tZGMtY29tcG9uZW50XCIpYC5cbiAqXG4gKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIGFsd2F5cyB6ZXJvIG91dCB0aGUgb3JpZ2luYWwgdmFsdWUgaW4gYW4gUlRMIGNvbnRleHQuIElmIHlvdSdyZVxuICogdHJ5aW5nIHRvIGZsaXAgdGhlIHZhbHVlcywgdXNlIG1kYy1ydGwtcmVmbGV4aXZlLXByb3BlcnR5KCkuXG4gKi9cbi8qKlxuICogVGFrZXMgYSBiYXNlIHByb3BlcnR5IGFuZCBlbWl0cyBydWxlcyB0aGF0IGFzc2lnbiA8YmFzZS1wcm9wZXJ0eT4tbGVmdCB0byA8bGVmdC12YWx1ZT4gYW5kXG4gKiA8YmFzZS1wcm9wZXJ0eT4tcmlnaHQgdG8gPHJpZ2h0LXZhbHVlPiBpbiBhIExUUiBjb250ZXh0LCBhbmQgdmljZSB2ZXJzYSBpbiBhIFJUTCBjb250ZXh0LlxuICogRm9yIGV4YW1wbGU6XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBAaW5jbHVkZSBtZGMtcnRsLXJlZmxleGl2ZS1wcm9wZXJ0eShtYXJnaW4sIGF1dG8sIDEycHgpO1xuICogfVxuICogYGBgXG4gKiBpcyBlcXVpdmFsZW50IHRvOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gKiAgIG1hcmdpbi1yaWdodDogMTJweDtcbiAqXG4gKiAgIEBpbmNsdWRlIG1kYy1ydGwge1xuICogICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICogICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogQSA0dGggb3B0aW9uYWwgJHJvb3Qtc2VsZWN0b3IgYXJndW1lbnQgY2FuIGJlIGdpdmVuLCB3aGljaCB3aWxsIGJlIHBhc3NlZCB0byBgbWRjLXJ0bGAuXG4gKi9cbi8qKlxuICogVGFrZXMgYW4gYXJndW1lbnQgc3BlY2lmeWluZyBhIGhvcml6b250YWwgcG9zaXRpb24gcHJvcGVydHkgKGVpdGhlciBcImxlZnRcIiBvciBcInJpZ2h0XCIpIGFzIHdlbGxcbiAqIGFzIGEgdmFsdWUsIGFuZCBhcHBsaWVzIHRoYXQgdmFsdWUgdG8gdGhlIHNwZWNpZmllZCBwb3NpdGlvbiBpbiBhIExUUiBjb250ZXh0LCBhbmQgZmxpcHMgaXQgaW4gYVxuICogUlRMIGNvbnRleHQuIEZvciBleGFtcGxlOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bC1yZWZsZXhpdmUtcG9zaXRpb24obGVmdCwgMCk7XG4gKiAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAqIH1cbiAqIGBgYFxuICogaXMgZXF1aXZhbGVudCB0bzpcbiAqXG4gKiBgYGBzY3NzXG4gKiAgLm1kYy1mb28ge1xuICogICAgcG9zaXRpb246IGFic29sdXRlO1xuICogICAgbGVmdDogMDtcbiAqICAgIHJpZ2h0OiBpbml0aWFsO1xuICpcbiAqICAgIEBpbmNsdWRlIG1kYy1ydGwge1xuICogICAgICByaWdodDogMDtcbiAqICAgICAgbGVmdDogaW5pdGlhbDtcbiAqICAgIH1cbiAqICB9XG4gKiBgYGBcbiAqIEFuIG9wdGlvbmFsIHRoaXJkICRyb290LXNlbGVjdG9yIGFyZ3VtZW50IG1heSBhbHNvIGJlIGdpdmVuLCB3aGljaCBpcyBwYXNzZWQgdG8gYG1kYy1ydGxgLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLypcbiAgUHJlY29tcHV0ZWQgbGluZWFyIGNvbG9yIGNoYW5uZWwgdmFsdWVzLCBmb3IgdXNlIGluIGNvbnRyYXN0IGNhbGN1bGF0aW9ucy5cbiAgU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG5cbiAgQWxnb3JpdGhtLCBmb3IgYyBpbiAwIHRvIDI1NTpcbiAgZihjKSB7XG4gICAgYyA9IGMgLyAyNTU7XG4gICAgcmV0dXJuIGMgPCAwLjAzOTI4ID8gYyAvIDEyLjkyIDogTWF0aC5wb3coKGMgKyAwLjA1NSkgLyAxLjA1NSwgMi40KTtcbiAgfVxuXG4gIFRoaXMgbG9va3VwIHRhYmxlIGlzIG5lZWRlZCBzaW5jZSB0aGVyZSBpcyBubyBgcG93YCBpbiBTQVNTLlxuKi9cbi8qIEFsbCB2YXJpYWJsZXMgYXJlIGxvY2FsLCBzbyBkaXNhYmxlIHBhdHRlcm4gY2hlY2tpbmcuICovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgbHVtaW5hbmNlIGZvciBhIGNvbG9yLlxuICogU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG4gKi9cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBjb250cmFzdCByYXRpbyBiZXR3ZWVuIHR3byBjb2xvcnMuXG4gKiBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcbiAqL1xuLyoqXG4gKiBEZXRlcm1pbmUgd2hldGhlciB0byB1c2UgZGFyayBvciBsaWdodCB0ZXh0IG9uIHRvcCBvZiBnaXZlbiBjb2xvci5cbiAqIFJldHVybnMgXCJkYXJrXCIgZm9yIGRhcmsgdGV4dCBhbmQgXCJsaWdodFwiIGZvciBsaWdodCB0ZXh0LlxuICovXG4vKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qXG4gIE1haW4gdGhlbWUgY29sb3JzLlxuICBJZiB5b3UncmUgYSB1c2VyIGN1c3RvbWl6aW5nIHlvdXIgY29sb3Igc2NoZW1lIGluIFNBU1MsIHRoZXNlIGFyZSBwcm9iYWJseSB0aGUgb25seSB2YXJpYWJsZXMgeW91IG5lZWQgdG8gY2hhbmdlLlxuKi9cbi8qIEluZGlnbyA1MDAgKi9cbi8qIFBpbmsgQTIwMCAqL1xuLyogV2hpdGUgKi9cbi8qIFdoaWNoIHNldCBvZiB0ZXh0IGNvbG9ycyB0byB1c2UgZm9yIGVhY2ggbWFpbiB0aGVtZSBjb2xvciAobGlnaHQgb3IgZGFyaykgKi9cbi8qIFRleHQgY29sb3JzIGFjY29yZGluZyB0byBsaWdodCB2cyBkYXJrIGFuZCB0ZXh0IHR5cGUgKi9cbi8qIFByaW1hcnkgdGV4dCBjb2xvcnMgZm9yIGVhY2ggb2YgdGhlIHRoZW1lIGNvbG9ycyAqL1xuLyogQWxsIHZhcmlhYmxlcyBhcmUgbG9jYWwsIHNvIGRpc2FibGUgcGF0dGVybiBjaGVja2luZy4gKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qKlxuICogQXBwbGllcyB0aGUgY29ycmVjdCB0aGVtZSBjb2xvciBzdHlsZSB0byB0aGUgc3BlY2lmaWVkIHByb3BlcnR5LlxuICogJHByb3BlcnR5IGlzIHR5cGljYWxseSBjb2xvciBvciBiYWNrZ3JvdW5kLWNvbG9yLCBidXQgY2FuIGJlIGFueSBDU1MgcHJvcGVydHkgdGhhdCBhY2NlcHRzIGNvbG9yIHZhbHVlcy5cbiAqICRzdHlsZSBzaG91bGQgYmUgb25lIG9mIHRoZSBtYXAga2V5cyBpbiAkbWRjLXRoZW1lLXByb3BlcnR5LXZhbHVlcyAoX3ZhcmlhYmxlcy5zY3NzKS5cbiAqL1xuLyoqXG4gKiBDcmVhdGVzIGEgcnVsZSB0byBiZSB1c2VkIGluIE1EQy1XZWIgY29tcG9uZW50cyBmb3IgZGFyayB0aGVtaW5nLCBhbmQgYXBwbGllcyB0aGUgcHJvdmlkZWQgY29udGVudHMuXG4gKiBTaG91bGQgcHJvdmlkZSB0aGUgJHJvb3Qtc2VsZWN0b3Igb3B0aW9uIGlmIGFwcGxpZWQgdG8gYW55dGhpbmcgb3RoZXIgdGhhbiB0aGUgcm9vdCBzZWxlY3Rvci5cbiAqIFdoZW4gdXNlZCB3aXRoIGEgbW9kaWZpZXIgY2xhc3MsIHByb3ZpZGUgYSBzZWNvbmQgYXJndW1lbnQgb2YgYHRydWVgIGZvciB0aGUgJGNvbXBvdW5kIHBhcmFtZXRlclxuICogdG8gc3BlY2lmeSB0aGF0IHRoaXMgc2hvdWxkIGJlIGF0dGFjaGVkIGFzIGEgY29tcG91bmQgY2xhc3MuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIGNvbG9yOiBibGFjaztcbiAqXG4gKiAgIEBpbmNsdWRlIG1kYy10aGVtZS1kYXJrIHtcbiAqICAgICBjb2xvcjogd2hpdGU7XG4gKiAgIH1cbiAqXG4gKiAgICZfX2JhciB7XG4gKiAgICAgYmFja2dyb3VuZDogYmxhY2s7XG4gKlxuICogICAgIEBpbmNsdWRlIG1kYy10aGVtZS1kYXJrKFwiLm1kYy1mb29cIikge1xuICogICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKlxuICogLm1kYy1mb28tLWRpc2FibGVkIHtcbiAqICAgb3BhY2l0eTogLjM4O1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsoXCIubWRjLWZvb1wiLCB0cnVlKSB7XG4gKiAgICAgb3BhY2l0eTogLjU7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG4vKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogVE9ETyhzZ29tZXMpOiBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gYWJvdXQgZGVza3RvcCBmb250IHNpemVzLiAqL1xuLyogVE9ETyhzZ29tZXMpOiBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gYWJvdXQgaTE4biBhbmQgaTE4biBmb250IHNpemVzLiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qIFRPRE8oc2dvbWVzKTogRmlndXJlIG91dCB3aGF0IHRvIGRvIGFib3V0IGRlc2t0b3AgZm9udCBzaXplcy4gKi9cbi8qIFRPRE8oc2dvbWVzKTogRmlndXJlIG91dCB3aGF0IHRvIGRvIGFib3V0IGkxOG4gYW5kIGkxOG4gZm9udCBzaXplcy4gKi9cbi8qKlxuICogU2V0cyB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiBhIGRldGFpbCBlbGVtZW50IHRvIHRoZSBzcGVjaWZpZWQgZGltZW5zaW9uLlxuICovXG4vKipcbiAqIFNldHMgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHN0YXJ0IGRldGFpbCBlbGVtZW50LCBhcyB3ZWxsIGFzIGNhbGN1bGF0ZXMgdGhlIG1hcmdpbnMgZm9yXG4gKiB0aGUgc3RhcnQgZGV0YWlsIGVsZW1lbnQgc3VjaCB0aGF0IHRoZSB0ZXh0IGlzIGFsd2F5cyBvZmZzZXQgYnkgNzJweCwgd2hpY2ggaXMgZGVmaW5lZCB3aXRoaW5cbiAqIHRoZSBzcGVjLlxuICovXG4vKiBwb3N0Y3NzLWJlbS1saW50ZXI6IGRlZmluZSBsaXN0ICovXG4ubWRjLWxpc3Qge1xuICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICBsaW5lLWhlaWdodDogMS43NXJlbTtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XG4gIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1wcmltYXJ5LW9uLWJhY2tncm91bmQsIHJnYmEoMCwgMCwgMCwgMC44NykpO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDhweCAxNnB4IDA7XG4gIC8qIEFjY29yZGluZyB0byB0aGUgbW9ja3MgYW5kIHN0aWNrZXJzaGVldCwgdGhlIGxpbmUtaGVpZ2h0IGlzIGFkanVzdGVkIHRvIDI0cHggZm9yIHRleHQgY29udGVudCxcbiAgICogc2FtZSBhcyBmb3Igc3ViaGVhZGluZzEuICovXG4gIGxpbmUtaGVpZ2h0OiAxLjVyZW07XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgfVxuICAubWRjLWxpc3QtLXRoZW1lLWRhcmssXG4gIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1saXN0IHtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LXByaW1hcnktb24tZGFyaywgd2hpdGUpOyB9XG5cbi5tZGMtbGlzdC0tZGVuc2Uge1xuICBwYWRkaW5nLXRvcDogNHB4O1xuICBmb250LXNpemU6IC44MTJyZW07IH1cblxuLyogcG9zdGNzcy1iZW0tbGludGVyOiBlbmQgKi9cbi8qIHBvc3Rjc3MtYmVtLWxpbnRlcjogZGVmaW5lIGxpc3QtaXRlbSAqL1xuLm1kYy1saXN0LWl0ZW0ge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XG4gICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0O1xuICAgICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBoZWlnaHQ6IDQ4cHg7XG4gIC8qIHN0eWxlbGludC1kaXNhYmxlIHBsdWdpbi9zZWxlY3Rvci1iZW0tcGF0dGVybiAqL1xuICAvKiBzdHlsZWxpbnQtZW5hYmxlIHBsdWdpbi9zZWxlY3Rvci1iZW0tcGF0dGVybiAqLyB9XG4gIC5tZGMtbGlzdC1pdGVtX19zdGFydC1kZXRhaWwge1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDMycHg7XG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovIH1cbiAgICBbZGlyPVwicnRsXCJdIC5tZGMtbGlzdC1pdGVtIC5tZGMtbGlzdC1pdGVtX19zdGFydC1kZXRhaWwsXG4gICAgLm1kYy1saXN0LWl0ZW1bZGlyPVwicnRsXCJdIC5tZGMtbGlzdC1pdGVtX19zdGFydC1kZXRhaWwge1xuICAgICAgbWFyZ2luLWxlZnQ6IDMycHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7IH1cbiAgLm1kYy1saXN0LWl0ZW1fX2VuZC1kZXRhaWwge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xuICAgIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqLyB9XG4gICAgW2Rpcj1cInJ0bFwiXSAubWRjLWxpc3QtaXRlbSAubWRjLWxpc3QtaXRlbV9fZW5kLWRldGFpbCxcbiAgICAubWRjLWxpc3QtaXRlbVtkaXI9XCJydGxcIl0gLm1kYy1saXN0LWl0ZW1fX2VuZC1kZXRhaWwge1xuICAgICAgbWFyZ2luLWxlZnQ6IDE2cHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87IH1cbiAgLm1kYy1saXN0LWl0ZW1fX3RleHQge1xuICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDtcbiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcbiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB9XG4gICAgLm1kYy1saXN0LWl0ZW1fX3RleHRfX3NlY29uZGFyeSB7XG4gICAgICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmO1xuICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XG4gICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcbiAgICAgIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1zZWNvbmRhcnktb24tYmFja2dyb3VuZCwgcmdiYSgwLCAwLCAwLCAwLjU0KSk7XG4gICAgICAvKiBNYXRjaCB0aGUgZm9udCBzaXplIHRvIHRoZSBwcmltYXJ5IHRleHQgd2hlbiBkZW5zZSAqL1xuICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUgcGx1Z2luL3NlbGVjdG9yLWJlbS1wYXR0ZXJuICovXG4gICAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHBsdWdpbi9zZWxlY3Rvci1iZW0tcGF0dGVybiAqLyB9XG4gICAgICAubWRjLWxpc3QtaXRlbV9fdGV4dF9fc2Vjb25kYXJ5LS10aGVtZS1kYXJrLFxuICAgICAgLm1kYy10aGVtZS0tZGFyayAubWRjLWxpc3QtaXRlbV9fdGV4dF9fc2Vjb25kYXJ5IHtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LXNlY29uZGFyeS1vbi1kYXJrLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykpOyB9XG4gICAgICAubWRjLWxpc3QtLWRlbnNlIC5tZGMtbGlzdC1pdGVtX190ZXh0X19zZWNvbmRhcnkge1xuICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7IH1cbiAgLm1kYy1saXN0LS1kZW5zZSAubWRjLWxpc3QtaXRlbSB7XG4gICAgaGVpZ2h0OiA0MHB4OyB9XG4gICAgLm1kYy1saXN0LS1kZW5zZSAubWRjLWxpc3QtaXRlbV9fc3RhcnQtZGV0YWlsIHtcbiAgICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDM2cHg7XG4gICAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAgIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovIH1cbiAgICAgIFtkaXI9XCJydGxcIl0gLm1kYy1saXN0LWl0ZW0gLm1kYy1saXN0LS1kZW5zZSAubWRjLWxpc3QtaXRlbV9fc3RhcnQtZGV0YWlsLFxuICAgICAgLm1kYy1saXN0LWl0ZW1bZGlyPVwicnRsXCJdIC5tZGMtbGlzdC0tZGVuc2UgLm1kYy1saXN0LWl0ZW1fX3N0YXJ0LWRldGFpbCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAzNnB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7IH1cbiAgICAubWRjLWxpc3QtLWRlbnNlIC5tZGMtbGlzdC1pdGVtX19lbmQtZGV0YWlsIHtcbiAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgaGVpZ2h0OiAyMHB4OyB9XG4gIC5tZGMtbGlzdC0tYXZhdGFyLWxpc3QgLm1kYy1saXN0LWl0ZW0ge1xuICAgIGhlaWdodDogNTZweDsgfVxuICAgIC5tZGMtbGlzdC0tYXZhdGFyLWxpc3QgLm1kYy1saXN0LWl0ZW1fX3N0YXJ0LWRldGFpbCB7XG4gICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgICB3aWR0aDogNDBweDtcbiAgICAgIGhlaWdodDogNDBweDtcbiAgICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xuICAgICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAgIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlOyB9XG4gICAgICBbZGlyPVwicnRsXCJdIC5tZGMtbGlzdC1pdGVtIC5tZGMtbGlzdC0tYXZhdGFyLWxpc3QgLm1kYy1saXN0LWl0ZW1fX3N0YXJ0LWRldGFpbCxcbiAgICAgIC5tZGMtbGlzdC1pdGVtW2Rpcj1cInJ0bFwiXSAubWRjLWxpc3QtLWF2YXRhci1saXN0IC5tZGMtbGlzdC1pdGVtX19zdGFydC1kZXRhaWwge1xuICAgICAgICBtYXJnaW4tbGVmdDogMTZweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOyB9XG4gIC5tZGMtbGlzdC1pdGVtIC5tZGMtbGlzdC0tYXZhdGFyLWxpc3QubWRjLWxpc3QtLWRlbnNlIC5tZGMtbGlzdF9faXRlbSB7XG4gICAgaGVpZ2h0OiA0OHB4OyB9XG4gICAgLm1kYy1saXN0LWl0ZW0gLm1kYy1saXN0LS1hdmF0YXItbGlzdC5tZGMtbGlzdC0tZGVuc2UgLm1kYy1saXN0X19pdGVtX19zdGFydC1kZXRhaWwge1xuICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIG1hcmdpbi1yaWdodDogMjBweDtcbiAgICAgIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi8gfVxuICAgICAgW2Rpcj1cInJ0bFwiXSAubWRjLWxpc3QtaXRlbSAubWRjLWxpc3QtaXRlbSAubWRjLWxpc3QtLWF2YXRhci1saXN0Lm1kYy1saXN0LS1kZW5zZSAubWRjLWxpc3RfX2l0ZW1fX3N0YXJ0LWRldGFpbCxcbiAgICAgIC5tZGMtbGlzdC1pdGVtW2Rpcj1cInJ0bFwiXSAubWRjLWxpc3QtaXRlbSAubWRjLWxpc3QtLWF2YXRhci1saXN0Lm1kYy1saXN0LS1kZW5zZSAubWRjLWxpc3RfX2l0ZW1fX3N0YXJ0LWRldGFpbCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7IH1cbiAgLm1kYy1saXN0LS10d28tbGluZSAubWRjLWxpc3QtaXRlbSB7XG4gICAgaGVpZ2h0OiA3MnB4OyB9XG4gIC5tZGMtbGlzdC0tdHdvLWxpbmUubWRjLWxpc3QtLWRlbnNlIC5tZGMtbGlzdC1pdGVtIHtcbiAgICBoZWlnaHQ6IDYwcHg7IH1cblxuLyogcG9zdGNzcy1iZW0tbGludGVyOiBlbmQgKi9cbi8qIHBvc3Rjc3MtYmVtLWxpbnRlcjogZGVmaW5lIGxpc3QtZGl2aWRlciAqL1xuLm1kYy1saXN0LWRpdmlkZXIge1xuICBoZWlnaHQ6IDA7XG4gIG1hcmdpbjogMDtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyKTsgfVxuICAubWRjLWxpc3QtLXRoZW1lLWRhcmsgLm1kYy1saXN0LWRpdmlkZXIsXG4gIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1saXN0LWRpdmlkZXIge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTsgfVxuXG4ubWRjLWxpc3QtZGl2aWRlci0taW5zZXQge1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gIC8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgbWFyZ2luLWxlZnQ6IDU2cHg7XG4gIG1hcmdpbi1yaWdodDogMDtcbiAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICB3aWR0aDogY2FsYygxMDAlIC0gNTZweCk7IH1cbiAgW2Rpcj1cInJ0bFwiXSAubWRjLWxpc3QtZ3JvdXAgLm1kYy1saXN0LWRpdmlkZXItLWluc2V0LFxuICAubWRjLWxpc3QtZ3JvdXBbZGlyPVwicnRsXCJdIC5tZGMtbGlzdC1kaXZpZGVyLS1pbnNldCB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiA1NnB4OyB9XG5cbi8qIHBvc3Rjc3MtYmVtLWxpbnRlcjogZW5kICovXG4vKiBwb3N0Y3NzLWJlbS1saW50ZXI6IGRlZmluZSBsaXN0LWdyb3VwICovXG4ubWRjLWxpc3QtZ3JvdXAge1xuICBwYWRkaW5nOiAwIDE2cHg7XG4gIC8qIFJlc2V0IHBhZGRpbmcgb24gbWRjLWxpc3Qgc2luY2UgaXQncyBhbHJlYWR5IGFjY291bnRlZCBmb3IgYnkgdGhlIGxpc3QgZ3JvdXAuICovXG4gIC8qIHN0eWxlbGludC1kaXNhYmxlIHBsdWdpbi9zZWxlY3Rvci1iZW0tcGF0dGVybiAqL1xuICAvKiBzdHlsZWxpbnQtZW5hYmxlIHBsdWdpbi9zZWxlY3Rvci1iZW0tcGF0dGVybiAqLyB9XG4gIC5tZGMtbGlzdC1ncm91cF9fc3ViaGVhZGVyIHtcbiAgICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbiAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1iYWNrZ3JvdW5kLCByZ2JhKDAsIDAsIDAsIDAuODcpKTtcbiAgICBtYXJnaW46IDAuNzVyZW0gMDsgfVxuICAgIC5tZGMtbGlzdC1ncm91cF9fc3ViaGVhZGVyLS10aGVtZS1kYXJrLFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1saXN0LWdyb3VwX19zdWJoZWFkZXIge1xuICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LXByaW1hcnktb24tZGFyaywgd2hpdGUpOyB9XG4gIC5tZGMtbGlzdC1ncm91cCAubWRjLWxpc3Qge1xuICAgIHBhZGRpbmc6IDA7IH1cblxuLyogcG9zdGNzcy1iZW0tbGludGVyOiBlbmQgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogVGhlIGNzcyBwcm9wZXJ0eSB1c2VkIGZvciBlbGV2YXRpb24uIEluIG1vc3QgY2FzZXMgdGhpcyBzaG91bGQgbm90IGJlIGNoYW5nZWQuIEl0IGlzIGV4cG9zZWRcbiAqIGFzIGEgdmFyaWFibGUgZm9yIGFic3RyYWN0aW9uIC8gZWFzeSB1c2Ugd2hlbiBuZWVkaW5nIHRvIHJlZmVyZW5jZSB0aGUgcHJvcGVydHkgZGlyZWN0bHksIGZvclxuICogZXhhbXBsZSBpbiBhIGB3aWxsLWNoYW5nZWAgcnVsZS5cbiAqL1xuLyoqXG4gKiBUaGUgZGVmYXVsdCBkdXJhdGlvbiB2YWx1ZSBmb3IgZWxldmF0aW9uIHRyYW5zaXRpb25zLlxuICovXG4vKipcbiAqIFRoZSBkZWZhdWx0IGVhc2luZyB2YWx1ZSBmb3IgZWxldmF0aW9uIHRyYW5zaXRpb25zLlxuICovXG4vKipcbiAqIEFwcGxpZXMgdGhlIGNvcnJlY3QgY3NzIHJ1bGVzIHRvIGFuIGVsZW1lbnQgdG8gZ2l2ZSBpdCB0aGUgZWxldmF0aW9uIHNwZWNpZmllZCBieSAkei12YWx1ZS5cbiAqIFRoZSAkei12YWx1ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjQuXG4gKi9cbi8qKlxuICogUmV0dXJucyBhIHN0cmluZyB0aGF0IGNhbiBiZSB1c2VkIGFzIHRoZSB2YWx1ZSBmb3IgYSBgdHJhbnNpdGlvbmAgcHJvcGVydHkgZm9yIGVsZXZhdGlvbi5cbiAqIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBkaXJlY3RseSBpcyB1c2VmdWwgaW4gc2l0dWF0aW9ucyB3aGVyZSBhIGNvbXBvbmVudCBuZWVkcyB0byB0cmFuc2l0aW9uXG4gKiBtb3JlIHRoYW4gb25lIHByb3BlcnR5LlxuICpcbiAqIGBgYHNjc3NcbiAqIC5mb28ge1xuICogICB0cmFuc2l0aW9uOiBtZGMtZWxldmF0aW9uLXRyYW5zaXRpb24tcnVsZSgpLCBvcGFjaXR5IDEwMG1zIGVhc2U7XG4gKiAgIHdpbGwtY2hhbmdlOiAkbWRjLWVsZXZhdGlvbi1wcm9wZXJ0eSwgb3BhY2l0eTtcbiAqIH1cbiAqIGBgYFxuICovXG4vKipcbiAqIEFwcGxpZXMgdGhlIGNvcnJlY3QgY3NzIHJ1bGVzIG5lZWRlZCB0byBoYXZlIGFuIGVsZW1lbnQgdHJhbnNpdGlvbiBiZXR3ZWVuIGVsZXZhdGlvbnMuXG4gKiBUaGlzIG1peGluIHNob3VsZCBiZSBhcHBsaWVkIHRvIGVsZW1lbnRzIHdob3NlIGVsZXZhdGlvbiB2YWx1ZXMgd2lsbCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHRoZWlyXG4gKiBjb250ZXh0IChlLmcuIHdoZW4gYWN0aXZlIG9yIGRpc2FibGVkKS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qXG4gIFByZWNvbXB1dGVkIGxpbmVhciBjb2xvciBjaGFubmVsIHZhbHVlcywgZm9yIHVzZSBpbiBjb250cmFzdCBjYWxjdWxhdGlvbnMuXG4gIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuXG4gIEFsZ29yaXRobSwgZm9yIGMgaW4gMCB0byAyNTU6XG4gIGYoYykge1xuICAgIGMgPSBjIC8gMjU1O1xuICAgIHJldHVybiBjIDwgMC4wMzkyOCA/IGMgLyAxMi45MiA6IE1hdGgucG93KChjICsgMC4wNTUpIC8gMS4wNTUsIDIuNCk7XG4gIH1cblxuICBUaGlzIGxvb2t1cCB0YWJsZSBpcyBuZWVkZWQgc2luY2UgdGhlcmUgaXMgbm8gYHBvd2AgaW4gU0FTUy5cbiovXG4vKiBBbGwgdmFyaWFibGVzIGFyZSBsb2NhbCwgc28gZGlzYWJsZSBwYXR0ZXJuIGNoZWNraW5nLiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGx1bWluYW5jZSBmb3IgYSBjb2xvci5cbiAqIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuICovXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgY29udHJhc3QgcmF0aW8gYmV0d2VlbiB0d28gY29sb3JzLlxuICogU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG4gKi9cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gdXNlIGRhcmsgb3IgbGlnaHQgdGV4dCBvbiB0b3Agb2YgZ2l2ZW4gY29sb3IuXG4gKiBSZXR1cm5zIFwiZGFya1wiIGZvciBkYXJrIHRleHQgYW5kIFwibGlnaHRcIiBmb3IgbGlnaHQgdGV4dC5cbiAqL1xuLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKlxuICBNYWluIHRoZW1lIGNvbG9ycy5cbiAgSWYgeW91J3JlIGEgdXNlciBjdXN0b21pemluZyB5b3VyIGNvbG9yIHNjaGVtZSBpbiBTQVNTLCB0aGVzZSBhcmUgcHJvYmFibHkgdGhlIG9ubHkgdmFyaWFibGVzIHlvdSBuZWVkIHRvIGNoYW5nZS5cbiovXG4vKiBJbmRpZ28gNTAwICovXG4vKiBQaW5rIEEyMDAgKi9cbi8qIFdoaXRlICovXG4vKiBXaGljaCBzZXQgb2YgdGV4dCBjb2xvcnMgdG8gdXNlIGZvciBlYWNoIG1haW4gdGhlbWUgY29sb3IgKGxpZ2h0IG9yIGRhcmspICovXG4vKiBUZXh0IGNvbG9ycyBhY2NvcmRpbmcgdG8gbGlnaHQgdnMgZGFyayBhbmQgdGV4dCB0eXBlICovXG4vKiBQcmltYXJ5IHRleHQgY29sb3JzIGZvciBlYWNoIG9mIHRoZSB0aGVtZSBjb2xvcnMgKi9cbi8qIEFsbCB2YXJpYWJsZXMgYXJlIGxvY2FsLCBzbyBkaXNhYmxlIHBhdHRlcm4gY2hlY2tpbmcuICovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKipcbiAqIEFwcGxpZXMgdGhlIGNvcnJlY3QgdGhlbWUgY29sb3Igc3R5bGUgdG8gdGhlIHNwZWNpZmllZCBwcm9wZXJ0eS5cbiAqICRwcm9wZXJ0eSBpcyB0eXBpY2FsbHkgY29sb3Igb3IgYmFja2dyb3VuZC1jb2xvciwgYnV0IGNhbiBiZSBhbnkgQ1NTIHByb3BlcnR5IHRoYXQgYWNjZXB0cyBjb2xvciB2YWx1ZXMuXG4gKiAkc3R5bGUgc2hvdWxkIGJlIG9uZSBvZiB0aGUgbWFwIGtleXMgaW4gJG1kYy10aGVtZS1wcm9wZXJ0eS12YWx1ZXMgKF92YXJpYWJsZXMuc2NzcykuXG4gKi9cbi8qKlxuICogQ3JlYXRlcyBhIHJ1bGUgdG8gYmUgdXNlZCBpbiBNREMtV2ViIGNvbXBvbmVudHMgZm9yIGRhcmsgdGhlbWluZywgYW5kIGFwcGxpZXMgdGhlIHByb3ZpZGVkIGNvbnRlbnRzLlxuICogU2hvdWxkIHByb3ZpZGUgdGhlICRyb290LXNlbGVjdG9yIG9wdGlvbiBpZiBhcHBsaWVkIHRvIGFueXRoaW5nIG90aGVyIHRoYW4gdGhlIHJvb3Qgc2VsZWN0b3IuXG4gKiBXaGVuIHVzZWQgd2l0aCBhIG1vZGlmaWVyIGNsYXNzLCBwcm92aWRlIGEgc2Vjb25kIGFyZ3VtZW50IG9mIGB0cnVlYCBmb3IgdGhlICRjb21wb3VuZCBwYXJhbWV0ZXJcbiAqIHRvIHNwZWNpZnkgdGhhdCB0aGlzIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBhIGNvbXBvdW5kIGNsYXNzLlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBjb2xvcjogYmxhY2s7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtdGhlbWUtZGFyayB7XG4gKiAgICAgY29sb3I6IHdoaXRlO1xuICogICB9XG4gKlxuICogICAmX19iYXIge1xuICogICAgIGJhY2tncm91bmQ6IGJsYWNrO1xuICpcbiAqICAgICBAaW5jbHVkZSBtZGMtdGhlbWUtZGFyayhcIi5tZGMtZm9vXCIpIHtcbiAqICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICogICAgIH1cbiAqICAgfVxuICogfVxuICpcbiAqIC5tZGMtZm9vLS1kaXNhYmxlZCB7XG4gKiAgIG9wYWNpdHk6IC4zODtcbiAqXG4gKiAgIEBpbmNsdWRlIG1kYy10aGVtZS1kYXJrKFwiLm1kYy1mb29cIiwgdHJ1ZSkge1xuICogICAgIG9wYWNpdHk6IC41O1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qIFRPRE8oc2dvbWVzKTogRmlndXJlIG91dCB3aGF0IHRvIGRvIGFib3V0IGRlc2t0b3AgZm9udCBzaXplcy4gKi9cbi8qIFRPRE8oc2dvbWVzKTogRmlndXJlIG91dCB3aGF0IHRvIGRvIGFib3V0IGkxOG4gYW5kIGkxOG4gZm9udCBzaXplcy4gKi9cbi8qIHBvc3Rjc3MtYmVtLWxpbnRlcjogZGVmaW5lIHNpbXBsZS1tZW51ICovXG4ubWRjLXNpbXBsZS1tZW51IHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSAzMnB4KTtcbiAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDMycHgpO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0O1xuICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0O1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvcGFjaXR5OiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtLCBvcGFjaXR5O1xuICBib3gtc2hhZG93OiAwcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBwbHVnaW4vc2VsZWN0b3ItYmVtLXBhdHRlcm4gKi9cbiAgLyogc3R5bGVsaW50LWVuYWJsZSBwbHVnaW4vc2VsZWN0b3ItYmVtLXBhdHRlcm4gKi9cbiAgLyogc3R5bGVsaW50LWRpc2FibGUgcGx1Z2luL3NlbGVjdG9yLWJlbS1wYXR0ZXJuICovXG4gIC8qIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZSAqL1xuICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZSAqL1xuICAvKiBUT0RPKHNnb21lcyk6IFJldmlzaXQgd2hlbiB3ZSBoYXZlIGludGVyYWN0aXZlIGxpc3RzLiAqL1xuICAvKiBzdHlsZWxpbnQtZW5hYmxlIHBsdWdpbi9zZWxlY3Rvci1iZW0tcGF0dGVybiAqLyB9XG4gIC5tZGMtc2ltcGxlLW1lbnUtLXRoZW1lLWRhcmssXG4gIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1zaW1wbGUtbWVudSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQyNDI0MjsgfVxuICAubWRjLXNpbXBsZS1tZW51OmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lOyB9XG4gIC5tZGMtc2ltcGxlLW1lbnUtLW9wZW4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgLm1kYy1zaW1wbGUtbWVudS0tYW5pbWF0aW5nIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOyB9XG4gIC5tZGMtc2ltcGxlLW1lbnVfX2l0ZW1zIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIHBsdWdpbi9zZWxlY3Rvci1iZW0tcGF0dGVybiwgc2VsZWN0b3Itbm8tdW5pdmVyc2FsICovXG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBwbHVnaW4vc2VsZWN0b3ItYmVtLXBhdHRlcm4sIHNlbGVjdG9yLW5vLXVuaXZlcnNhbCAqLyB9XG4gICAgLm1kYy1zaW1wbGUtbWVudV9faXRlbXMgPiAqIHtcbiAgICAgIG9wYWNpdHk6IDA7IH1cbiAgICAubWRjLXNpbXBsZS1tZW51X19pdGVtcyA+IC5tZGMtbGlzdC1pdGVtIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjsgfVxuICAgIC5tZGMtc2ltcGxlLW1lbnUtLWFuaW1hdGluZyAubWRjLXNpbXBsZS1tZW51X19pdGVtcyB7XG4gICAgICBvdmVyZmxvdy15OiBoaWRkZW47IH1cbiAgICAgIC5tZGMtc2ltcGxlLW1lbnUtLWFuaW1hdGluZyAubWRjLXNpbXBsZS1tZW51X19pdGVtcyA+ICoge1xuICAgICAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcztcbiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5O1xuICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5O1xuICAgICAgICAtd2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7IH1cbiAgICAubWRjLXNpbXBsZS1tZW51LS1vcGVuIC5tZGMtc2ltcGxlLW1lbnVfX2l0ZW1zID4gKiB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgICAgd2lsbC1jaGFuZ2U6IG9wYWNpdHk7IH1cbiAgW2Rpcj1cInJ0bFwiXSAubWRjLXNpbXBsZS1tZW51IHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHRvcCByaWdodDtcbiAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCByaWdodDsgfVxuICAubWRjLXNpbXBsZS1tZW51LS1vcGVuLWZyb20tdG9wLWxlZnQge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0ICFpbXBvcnRhbnQ7IH1cbiAgLm1kYy1zaW1wbGUtbWVudS0tb3Blbi1mcm9tLXRvcC1yaWdodCB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiB0b3AgcmlnaHQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCByaWdodCAhaW1wb3J0YW50OyB9XG4gIC5tZGMtc2ltcGxlLW1lbnUtLW9wZW4tZnJvbS1ib3R0b20tbGVmdCB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gbGVmdCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogYm90dG9tIGxlZnQgIWltcG9ydGFudDsgfVxuICAubWRjLXNpbXBsZS1tZW51LS1vcGVuLWZyb20tYm90dG9tLXJpZ2h0IHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSByaWdodCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogYm90dG9tIHJpZ2h0ICFpbXBvcnRhbnQ7IH1cbiAgLm1kYy1zaW1wbGUtbWVudSAubWRjLWxpc3QtZ3JvdXAsXG4gIC5tZGMtc2ltcGxlLW1lbnUgLm1kYy1saXN0IHtcbiAgICBwYWRkaW5nOiAwOyB9XG4gIC5tZGMtc2ltcGxlLW1lbnUgLm1kYy1saXN0LWl0ZW0ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAwIDE2cHg7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjVyZW07IH1cbiAgICAubWRjLXNpbXBsZS1tZW51LS10aGVtZS1kYXJrLm1kYy1zaW1wbGUtbWVudSAubWRjLWxpc3QtaXRlbSxcbiAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtc2ltcGxlLW1lbnUgLm1kYy1saXN0LWl0ZW0ge1xuICAgICAgY29sb3I6IHdoaXRlOyB9XG4gIC5tZGMtc2ltcGxlLW1lbnUtLXRoZW1lLWRhcmsubWRjLXNpbXBsZS1tZW51IC5tZGMtbGlzdC1kaXZpZGVyLFxuICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtc2ltcGxlLW1lbnUgLm1kYy1saXN0LWRpdmlkZXIge1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTsgfVxuICAubWRjLXNpbXBsZS1tZW51IC5tZGMtbGlzdC1pdGVtX19zdGFydC1kZXRhaWwge1xuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpOyB9XG4gICAgLm1kYy1zaW1wbGUtbWVudS0tdGhlbWUtZGFyay5tZGMtc2ltcGxlLW1lbnUgLm1kYy1saXN0LWl0ZW1fX3N0YXJ0LWRldGFpbCxcbiAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtc2ltcGxlLW1lbnUgLm1kYy1saXN0LWl0ZW1fX3N0YXJ0LWRldGFpbCB7XG4gICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU0KTsgfVxuICAubWRjLXNpbXBsZS1tZW51LS1zZWxlY3RlZC5tZGMtbGlzdC1pdGVtLFxuICAubWRjLXNpbXBsZS1tZW51LS1zZWxlY3RlZC5tZGMtbGlzdC1pdGVtIC5tZGMtbGlzdC1pdGVtX19zdGFydC1kZXRhaWwge1xuICAgIGNvbG9yOiAjM2Y1MWI1O1xuICAgIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtcHJpbWFyeSwgIzNmNTFiNSk7IH1cbiAgLm1kYy1zaW1wbGUtbWVudSAubWRjLWxpc3QtaXRlbTo6YmVmb3JlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAxMjBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDEyMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gICAgYmFja2dyb3VuZDogY3VycmVudENvbG9yO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgb3BhY2l0eTogMDsgfVxuICAubWRjLXNpbXBsZS1tZW51IC5tZGMtbGlzdC1pdGVtOmZvY3VzOjpiZWZvcmUge1xuICAgIG9wYWNpdHk6IC4xMjsgfVxuICAubWRjLXNpbXBsZS1tZW51IC5tZGMtbGlzdC1pdGVtOmFjdGl2ZTo6YmVmb3JlIHtcbiAgICAvKlxuICAgICAgU2xpZ2h0bHkgZGFya2VyIHZhbHVlIGZvciB2aXN1YWwgZGlzdGluY3Rpb24uXG4gICAgICBUaGlzIGFsbG93cyBhIGZ1bGwgYmFzZSB0aGF0IGhhcyBkaXN0aW5jdCBtb2Rlcy5cbiAgICAgIFByb2dyZXNzaXZlIGVuaGFuY2VtZW50IHdpdGggcmlwcGxlcyB3aWxsIHByb3ZpZGUgY29tcGxldGUgYnV0dG9uIHNwZWMgYWxpZ25tZW50LlxuICAgICovXG4gICAgb3BhY2l0eTogLjE4OyB9XG5cbi8qIHBvc3Rjc3MtYmVtLWxpbnRlcjogZW5kICovXG4ubWRjLW1lbnUtYW5jaG9yIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogdmlzaWJsZTsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLypcbiAgUHJlY29tcHV0ZWQgbGluZWFyIGNvbG9yIGNoYW5uZWwgdmFsdWVzLCBmb3IgdXNlIGluIGNvbnRyYXN0IGNhbGN1bGF0aW9ucy5cbiAgU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG5cbiAgQWxnb3JpdGhtLCBmb3IgYyBpbiAwIHRvIDI1NTpcbiAgZihjKSB7XG4gICAgYyA9IGMgLyAyNTU7XG4gICAgcmV0dXJuIGMgPCAwLjAzOTI4ID8gYyAvIDEyLjkyIDogTWF0aC5wb3coKGMgKyAwLjA1NSkgLyAxLjA1NSwgMi40KTtcbiAgfVxuXG4gIFRoaXMgbG9va3VwIHRhYmxlIGlzIG5lZWRlZCBzaW5jZSB0aGVyZSBpcyBubyBgcG93YCBpbiBTQVNTLlxuKi9cbi8qIEFsbCB2YXJpYWJsZXMgYXJlIGxvY2FsLCBzbyBkaXNhYmxlIHBhdHRlcm4gY2hlY2tpbmcuICovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgbHVtaW5hbmNlIGZvciBhIGNvbG9yLlxuICogU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG4gKi9cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBjb250cmFzdCByYXRpbyBiZXR3ZWVuIHR3byBjb2xvcnMuXG4gKiBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcbiAqL1xuLyoqXG4gKiBEZXRlcm1pbmUgd2hldGhlciB0byB1c2UgZGFyayBvciBsaWdodCB0ZXh0IG9uIHRvcCBvZiBnaXZlbiBjb2xvci5cbiAqIFJldHVybnMgXCJkYXJrXCIgZm9yIGRhcmsgdGV4dCBhbmQgXCJsaWdodFwiIGZvciBsaWdodCB0ZXh0LlxuICovXG4vKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qXG4gIE1haW4gdGhlbWUgY29sb3JzLlxuICBJZiB5b3UncmUgYSB1c2VyIGN1c3RvbWl6aW5nIHlvdXIgY29sb3Igc2NoZW1lIGluIFNBU1MsIHRoZXNlIGFyZSBwcm9iYWJseSB0aGUgb25seSB2YXJpYWJsZXMgeW91IG5lZWQgdG8gY2hhbmdlLlxuKi9cbi8qIEluZGlnbyA1MDAgKi9cbi8qIFBpbmsgQTIwMCAqL1xuLyogV2hpdGUgKi9cbi8qIFdoaWNoIHNldCBvZiB0ZXh0IGNvbG9ycyB0byB1c2UgZm9yIGVhY2ggbWFpbiB0aGVtZSBjb2xvciAobGlnaHQgb3IgZGFyaykgKi9cbi8qIFRleHQgY29sb3JzIGFjY29yZGluZyB0byBsaWdodCB2cyBkYXJrIGFuZCB0ZXh0IHR5cGUgKi9cbi8qIFByaW1hcnkgdGV4dCBjb2xvcnMgZm9yIGVhY2ggb2YgdGhlIHRoZW1lIGNvbG9ycyAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKiBNREMgUmlwcGxlIGtleWZyYW1lcyBhcmUgc3BsaXQgaW50byB0aGVpciBvd24gZmlsZSBzbyB0aGF0IF9taXhpbnMuc2NzcyBjYW4gcmVseSBvbiB0aGVtLiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbkBrZXlmcmFtZXMgbWRjLXJpcHBsZS1mZy1yYWRpdXMtaW4ge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTU3LCAwLjcyLCAwLjM4NiwgMC45ODcpO1xuICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTU3LCAwLjcyLCAwLjM4NiwgMC45ODcpOyB9XG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS41KTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS41KTsgfSB9XG5cbkBrZXlmcmFtZXMgbWRjLXJpcHBsZS1mZy1vcGFjaXR5LW91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG4gICAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7IH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG5Aa2V5ZnJhbWVzIG1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLW9wYWNpdHktZGVhY3RpdmF0ZSB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG5Aa2V5ZnJhbWVzIG1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kZWFjdGl2YXRlIHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHZhcigtLW1kYy1yaXBwbGUtZmctYXBwcm94LXhmKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdmFyKC0tbWRjLXJpcHBsZS1mZy1hcHByb3gteGYpOyB9XG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4wMSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDEpOyB9IH1cblxuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKlxuICBQcmVjb21wdXRlZCBsaW5lYXIgY29sb3IgY2hhbm5lbCB2YWx1ZXMsIGZvciB1c2UgaW4gY29udHJhc3QgY2FsY3VsYXRpb25zLlxuICBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcblxuICBBbGdvcml0aG0sIGZvciBjIGluIDAgdG8gMjU1OlxuICBmKGMpIHtcbiAgICBjID0gYyAvIDI1NTtcbiAgICByZXR1cm4gYyA8IDAuMDM5MjggPyBjIC8gMTIuOTIgOiBNYXRoLnBvdygoYyArIDAuMDU1KSAvIDEuMDU1LCAyLjQpO1xuICB9XG5cbiAgVGhpcyBsb29rdXAgdGFibGUgaXMgbmVlZGVkIHNpbmNlIHRoZXJlIGlzIG5vIGBwb3dgIGluIFNBU1MuXG4qL1xuLyogQWxsIHZhcmlhYmxlcyBhcmUgbG9jYWwsIHNvIGRpc2FibGUgcGF0dGVybiBjaGVja2luZy4gKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBsdW1pbmFuY2UgZm9yIGEgY29sb3IuXG4gKiBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcbiAqL1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGNvbnRyYXN0IHJhdGlvIGJldHdlZW4gdHdvIGNvbG9ycy5cbiAqIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuICovXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIHRvIHVzZSBkYXJrIG9yIGxpZ2h0IHRleHQgb24gdG9wIG9mIGdpdmVuIGNvbG9yLlxuICogUmV0dXJucyBcImRhcmtcIiBmb3IgZGFyayB0ZXh0IGFuZCBcImxpZ2h0XCIgZm9yIGxpZ2h0IHRleHQuXG4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLypcbiAgTWFpbiB0aGVtZSBjb2xvcnMuXG4gIElmIHlvdSdyZSBhIHVzZXIgY3VzdG9taXppbmcgeW91ciBjb2xvciBzY2hlbWUgaW4gU0FTUywgdGhlc2UgYXJlIHByb2JhYmx5IHRoZSBvbmx5IHZhcmlhYmxlcyB5b3UgbmVlZCB0byBjaGFuZ2UuXG4qL1xuLyogSW5kaWdvIDUwMCAqL1xuLyogUGluayBBMjAwICovXG4vKiBXaGl0ZSAqL1xuLyogV2hpY2ggc2V0IG9mIHRleHQgY29sb3JzIHRvIHVzZSBmb3IgZWFjaCBtYWluIHRoZW1lIGNvbG9yIChsaWdodCBvciBkYXJrKSAqL1xuLyogVGV4dCBjb2xvcnMgYWNjb3JkaW5nIHRvIGxpZ2h0IHZzIGRhcmsgYW5kIHRleHQgdHlwZSAqL1xuLyogUHJpbWFyeSB0ZXh0IGNvbG9ycyBmb3IgZWFjaCBvZiB0aGUgdGhlbWUgY29sb3JzICovXG4vKiBBbGwgdmFyaWFibGVzIGFyZSBsb2NhbCwgc28gZGlzYWJsZSBwYXR0ZXJuIGNoZWNraW5nLiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBBcHBsaWVzIHRoZSBjb3JyZWN0IHRoZW1lIGNvbG9yIHN0eWxlIHRvIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkuXG4gKiAkcHJvcGVydHkgaXMgdHlwaWNhbGx5IGNvbG9yIG9yIGJhY2tncm91bmQtY29sb3IsIGJ1dCBjYW4gYmUgYW55IENTUyBwcm9wZXJ0eSB0aGF0IGFjY2VwdHMgY29sb3IgdmFsdWVzLlxuICogJHN0eWxlIHNob3VsZCBiZSBvbmUgb2YgdGhlIG1hcCBrZXlzIGluICRtZGMtdGhlbWUtcHJvcGVydHktdmFsdWVzIChfdmFyaWFibGVzLnNjc3MpLlxuICovXG4vKipcbiAqIENyZWF0ZXMgYSBydWxlIHRvIGJlIHVzZWQgaW4gTURDLVdlYiBjb21wb25lbnRzIGZvciBkYXJrIHRoZW1pbmcsIGFuZCBhcHBsaWVzIHRoZSBwcm92aWRlZCBjb250ZW50cy5cbiAqIFNob3VsZCBwcm92aWRlIHRoZSAkcm9vdC1zZWxlY3RvciBvcHRpb24gaWYgYXBwbGllZCB0byBhbnl0aGluZyBvdGhlciB0aGFuIHRoZSByb290IHNlbGVjdG9yLlxuICogV2hlbiB1c2VkIHdpdGggYSBtb2RpZmllciBjbGFzcywgcHJvdmlkZSBhIHNlY29uZCBhcmd1bWVudCBvZiBgdHJ1ZWAgZm9yIHRoZSAkY29tcG91bmQgcGFyYW1ldGVyXG4gKiB0byBzcGVjaWZ5IHRoYXQgdGhpcyBzaG91bGQgYmUgYXR0YWNoZWQgYXMgYSBjb21wb3VuZCBjbGFzcy5cbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgY29sb3I6IGJsYWNrO1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsge1xuICogICAgIGNvbG9yOiB3aGl0ZTtcbiAqICAgfVxuICpcbiAqICAgJl9fYmFyIHtcbiAqICAgICBiYWNrZ3JvdW5kOiBibGFjaztcbiAqXG4gKiAgICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsoXCIubWRjLWZvb1wiKSB7XG4gKiAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAqICAgICB9XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAubWRjLWZvby0tZGlzYWJsZWQge1xuICogICBvcGFjaXR5OiAuMzg7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtdGhlbWUtZGFyayhcIi5tZGMtZm9vXCIsIHRydWUpIHtcbiAqICAgICBvcGFjaXR5OiAuNTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyogcG9zdGNzcy1iZW0tbGludGVyOiBkZWZpbmUgcmFkaW8gKi9cbi5tZGMtcmFkaW8ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgcGFkZGluZzogMTBweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB3aWxsLWNoYW5nZTogb3BhY2l0eSwgdHJhbnNmb3JtLCBib3JkZXItY29sb3IsIGJhY2tncm91bmQtY29sb3IsIGNvbG9yOyB9XG4gIC5tZGMtcmFkaW9fX2JhY2tncm91bmQge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDUwJTtcbiAgICBoZWlnaHQ6IDUwJTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG4gICAgLm1kYy1yYWRpb19fYmFja2dyb3VuZDo6YmVmb3JlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzZjUxYjU7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtcHJpbWFyeSwgIzNmNTFiNSk7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCwgMCk7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCwgMCk7XG4gICAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMTIwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpLCAtd2Via2l0LXRyYW5zZm9ybSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gMTIwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSksIHRyYW5zZm9ybSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKSwgdHJhbnNmb3JtIDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gMTIwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxuICAubWRjLXJhZGlvX19vdXRlci1jaXJjbGUge1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LXNlY29uZGFyeS1vbi1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjU0KSk7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJvcmRlci1jb2xvciAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICBib3JkZXItd2lkdGg6IDJweDtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG4gICAgLm1kYy1yYWRpby0tdGhlbWUtZGFyayAubWRjLXJhZGlvX19vdXRlci1jaXJjbGUsXG4gICAgLm1kYy10aGVtZS0tZGFyayAubWRjLXJhZGlvX19vdXRlci1jaXJjbGUge1xuICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG4gICAgICBib3JkZXItY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LXNlY29uZGFyeS1vbi1kYXJrLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykpOyB9XG4gIC5tZGMtcmFkaW9fX2lubmVyLWNpcmNsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1zZWNvbmRhcnktb24tbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC41NCkpO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAsIDApO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLCAwKTtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMTIwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpLCAtd2Via2l0LXRyYW5zZm9ybSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMTIwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpLCBiYWNrZ3JvdW5kLWNvbG9yIDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMTIwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpLCBiYWNrZ3JvdW5kLWNvbG9yIDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gMTIwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG4gICAgLm1kYy1yYWRpby0tdGhlbWUtZGFyayAubWRjLXJhZGlvX19pbm5lci1jaXJjbGUsXG4gICAgLm1kYy10aGVtZS0tZGFyayAubWRjLXJhZGlvX19pbm5lci1jaXJjbGUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtc2Vjb25kYXJ5LW9uLWRhcmssIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSk7IH1cbiAgLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2wge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY3Vyc29yOiBpbmhlcml0O1xuICAgIG9wYWNpdHk6IDA7XG4gICAgei1pbmRleDogMTsgfVxuXG4ubWRjLXJhZGlvX19uYXRpdmUtY29udHJvbDpjaGVja2VkICsgLm1kYy1yYWRpb19fYmFja2dyb3VuZCxcbi5tZGMtcmFkaW9fX25hdGl2ZS1jb250cm9sOmRpc2FibGVkICsgLm1kYy1yYWRpb19fYmFja2dyb3VuZCB7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIHRyYW5zZm9ybSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMTIwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpLCB0cmFuc2Zvcm0gMTIwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpLCAtd2Via2l0LXRyYW5zZm9ybSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7IH1cbiAgLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2w6Y2hlY2tlZCArIC5tZGMtcmFkaW9fX2JhY2tncm91bmQgLm1kYy1yYWRpb19fb3V0ZXItY2lyY2xlLFxuICAubWRjLXJhZGlvX19uYXRpdmUtY29udHJvbDpkaXNhYmxlZCArIC5tZGMtcmFkaW9fX2JhY2tncm91bmQgLm1kYy1yYWRpb19fb3V0ZXItY2lyY2xlIHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJvcmRlci1jb2xvciAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsgfVxuICAubWRjLXJhZGlvX19uYXRpdmUtY29udHJvbDpjaGVja2VkICsgLm1kYy1yYWRpb19fYmFja2dyb3VuZCAubWRjLXJhZGlvX19pbm5lci1jaXJjbGUsXG4gIC5tZGMtcmFkaW9fX25hdGl2ZS1jb250cm9sOmRpc2FibGVkICsgLm1kYy1yYWRpb19fYmFja2dyb3VuZCAubWRjLXJhZGlvX19pbm5lci1jaXJjbGUge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gMTIwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIGJhY2tncm91bmQtY29sb3IgMTIwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIGJhY2tncm91bmQtY29sb3IgMTIwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpLCAtd2Via2l0LXRyYW5zZm9ybSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7IH1cblxuLm1kYy1yYWRpby0tZGlzYWJsZWQge1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lOyB9XG5cbi5tZGMtcmFkaW9fX25hdGl2ZS1jb250cm9sOmNoZWNrZWQgKyAubWRjLXJhZGlvX19iYWNrZ3JvdW5kIC5tZGMtcmFkaW9fX291dGVyLWNpcmNsZSB7XG4gIGJvcmRlci1jb2xvcjogIzNmNTFiNTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtcHJpbWFyeSwgIzNmNTFiNSk7IH1cblxuLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2w6Y2hlY2tlZCArIC5tZGMtcmFkaW9fX2JhY2tncm91bmQgLm1kYy1yYWRpb19faW5uZXItY2lyY2xlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNmNTFiNTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpO1xuICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC41KTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNSk7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSwgYmFja2dyb3VuZC1jb2xvciAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIGJhY2tncm91bmQtY29sb3IgMTIwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpLCAtd2Via2l0LXRyYW5zZm9ybSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7IH1cblxuLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2w6ZGlzYWJsZWQgKyAubWRjLXJhZGlvX19iYWNrZ3JvdW5kLFxuZmllbGRzZXQ6ZGlzYWJsZWQgLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2wgKyAubWRjLXJhZGlvX19iYWNrZ3JvdW5kLFxuW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIC5tZGMtcmFkaW9fX25hdGl2ZS1jb250cm9sICsgLm1kYy1yYWRpb19fYmFja2dyb3VuZCB7XG4gIGN1cnNvcjogZGVmYXVsdDsgfVxuICAubWRjLXJhZGlvX19uYXRpdmUtY29udHJvbDpkaXNhYmxlZCArIC5tZGMtcmFkaW9fX2JhY2tncm91bmQgLm1kYy1yYWRpb19fb3V0ZXItY2lyY2xlLFxuICBmaWVsZHNldDpkaXNhYmxlZCAubWRjLXJhZGlvX19uYXRpdmUtY29udHJvbCArIC5tZGMtcmFkaW9fX2JhY2tncm91bmQgLm1kYy1yYWRpb19fb3V0ZXItY2lyY2xlLFxuICBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl0gLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2wgKyAubWRjLXJhZGlvX19iYWNrZ3JvdW5kIC5tZGMtcmFkaW9fX291dGVyLWNpcmNsZSB7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjYpOyB9XG4gICAgLm1kYy1yYWRpby0tdGhlbWUtZGFyayAubWRjLXJhZGlvX19uYXRpdmUtY29udHJvbDpkaXNhYmxlZCArIC5tZGMtcmFkaW9fX2JhY2tncm91bmQgLm1kYy1yYWRpb19fb3V0ZXItY2lyY2xlLFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2w6ZGlzYWJsZWQgKyAubWRjLXJhZGlvX19iYWNrZ3JvdW5kIC5tZGMtcmFkaW9fX291dGVyLWNpcmNsZSwgLm1kYy1yYWRpby0tdGhlbWUtZGFya1xuICAgIGZpZWxkc2V0OmRpc2FibGVkIC5tZGMtcmFkaW9fX25hdGl2ZS1jb250cm9sICsgLm1kYy1yYWRpb19fYmFja2dyb3VuZCAubWRjLXJhZGlvX19vdXRlci1jaXJjbGUsXG4gICAgLm1kYy10aGVtZS0tZGFya1xuICAgIGZpZWxkc2V0OmRpc2FibGVkIC5tZGMtcmFkaW9fX25hdGl2ZS1jb250cm9sICsgLm1kYy1yYWRpb19fYmFja2dyb3VuZCAubWRjLXJhZGlvX19vdXRlci1jaXJjbGUsIC5tZGMtcmFkaW8tLXRoZW1lLWRhcmtcbiAgICBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl0gLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2wgKyAubWRjLXJhZGlvX19iYWNrZ3JvdW5kIC5tZGMtcmFkaW9fX291dGVyLWNpcmNsZSxcbiAgICAubWRjLXRoZW1lLS1kYXJrXG4gICAgW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIC5tZGMtcmFkaW9fX25hdGl2ZS1jb250cm9sICsgLm1kYy1yYWRpb19fYmFja2dyb3VuZCAubWRjLXJhZGlvX19vdXRlci1jaXJjbGUge1xuICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7IH1cbiAgLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2w6ZGlzYWJsZWQgKyAubWRjLXJhZGlvX19iYWNrZ3JvdW5kIC5tZGMtcmFkaW9fX2lubmVyLWNpcmNsZSxcbiAgZmllbGRzZXQ6ZGlzYWJsZWQgLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2wgKyAubWRjLXJhZGlvX19iYWNrZ3JvdW5kIC5tZGMtcmFkaW9fX2lubmVyLWNpcmNsZSxcbiAgW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIC5tZGMtcmFkaW9fX25hdGl2ZS1jb250cm9sICsgLm1kYy1yYWRpb19fYmFja2dyb3VuZCAubWRjLXJhZGlvX19pbm5lci1jaXJjbGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNik7IH1cbiAgICAubWRjLXJhZGlvLS10aGVtZS1kYXJrIC5tZGMtcmFkaW9fX25hdGl2ZS1jb250cm9sOmRpc2FibGVkICsgLm1kYy1yYWRpb19fYmFja2dyb3VuZCAubWRjLXJhZGlvX19pbm5lci1jaXJjbGUsXG4gICAgLm1kYy10aGVtZS0tZGFyayAubWRjLXJhZGlvX19uYXRpdmUtY29udHJvbDpkaXNhYmxlZCArIC5tZGMtcmFkaW9fX2JhY2tncm91bmQgLm1kYy1yYWRpb19faW5uZXItY2lyY2xlLCAubWRjLXJhZGlvLS10aGVtZS1kYXJrXG4gICAgZmllbGRzZXQ6ZGlzYWJsZWQgLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2wgKyAubWRjLXJhZGlvX19iYWNrZ3JvdW5kIC5tZGMtcmFkaW9fX2lubmVyLWNpcmNsZSxcbiAgICAubWRjLXRoZW1lLS1kYXJrXG4gICAgZmllbGRzZXQ6ZGlzYWJsZWQgLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2wgKyAubWRjLXJhZGlvX19iYWNrZ3JvdW5kIC5tZGMtcmFkaW9fX2lubmVyLWNpcmNsZSwgLm1kYy1yYWRpby0tdGhlbWUtZGFya1xuICAgIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSAubWRjLXJhZGlvX19uYXRpdmUtY29udHJvbCArIC5tZGMtcmFkaW9fX2JhY2tncm91bmQgLm1kYy1yYWRpb19faW5uZXItY2lyY2xlLFxuICAgIC5tZGMtdGhlbWUtLWRhcmtcbiAgICBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl0gLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2wgKyAubWRjLXJhZGlvX19iYWNrZ3JvdW5kIC5tZGMtcmFkaW9fX2lubmVyLWNpcmNsZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7IH1cblxuLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2w6Zm9jdXMgKyAubWRjLXJhZGlvX19iYWNrZ3JvdW5kOjpiZWZvcmUge1xuICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMi44LCAyLjgpO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMi44LCAyLjgpO1xuICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMTIwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpLCAtd2Via2l0LXRyYW5zZm9ybSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMTIwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpLCAtd2Via2l0LXRyYW5zZm9ybSAxMjBtcyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMTIwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpLCB0cmFuc2Zvcm0gMTIwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSwgdHJhbnNmb3JtIDEyMG1zIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gMTIwbXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICBvcGFjaXR5OiAuMjY7IH1cblxuLyogcG9zdGNzcy1iZW0tbGludGVyOiBlbmQgKi9cbi5tZGMtcmFkaW8ubWRjLXJpcHBsZS11cGdyYWRlZCB7XG4gIC0tbWRjLXJpcHBsZS1sZWZ0OiAwO1xuICAtLW1kYy1yaXBwbGUtdG9wOiAwO1xuICAtLW1kYy1yaXBwbGUtZmctc2l6ZTogMDtcbiAgLS1tZGMtcmlwcGxlLXN1cmZhY2UtaGVpZ2h0OiAwO1xuICAtLW1kYy1yaXBwbGUtc3VyZmFjZS13aWR0aDogMDtcbiAgLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb246IDBtcztcbiAgLS1tZGMtcmlwcGxlLXhmby14OiBjZW50ZXI7XG4gIC0tbWRjLXJpcHBsZS14Zm8teTogY2VudGVyO1xuICAtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLW9wYWNpdHktZHVyYXRpb246IDBtcztcbiAgLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb246IDBtcztcbiAgLS1tZGMtcmlwcGxlLWZnLWFwcHJveC14ZjogMDtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zaXRpb24sIG9wYWNpdHk7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIC8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gIC8qIHN0eWxlbGludC1kaXNhYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqL1xuICAvKiBzdHlsZWxpbnQtZW5hYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqL1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgLyogc3R5bGVsaW50LWVuYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi8gfVxuICAubWRjLXJhZGlvLm1kYy1yaXBwbGUtdXBncmFkZWQ6OmJlZm9yZSB7XG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDYzLCA4MSwgMTgxLCAwLjE0KTtcbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqL1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IGNhbGMoNTAlIC0gMTAwJSk7XG4gICAgbGVmdDogY2FsYyg1MCUgLSAxMDAlKTtcbiAgICB3aWR0aDogMjAwJTtcbiAgICBoZWlnaHQ6IDIwMCU7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMjAwbXMgbGluZWFyO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMjAwbXMgbGluZWFyO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGNvbnRlbnQ6IFwiXCI7IH1cbiAgICBAc3VwcG9ydHMgKGJhY2tncm91bmQtY29sb3I6IGNvbG9yKGdyZWVuIGEoMTAlKSkpIHtcbiAgICAgIC5tZGMtcmFkaW8ubWRjLXJpcHBsZS11cGdyYWRlZDo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IodmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpIGEoMTQlKSk7IH0gfVxuICAubWRjLXJhZGlvLm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tYmFja2dyb3VuZC1hY3RpdmU6OmJlZm9yZSB7XG4gICAgb3BhY2l0eTogLjk5OTk5OyB9XG4gIC5tZGMtcmFkaW8ubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1iYWNrZ3JvdW5kLWFjdGl2ZTphY3RpdmU6OmJlZm9yZSB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiA2MDBtcztcbiAgICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDYwMG1zOyB9XG4gIC5tZGMtcmFkaW8ubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1iYWNrZ3JvdW5kLWJvdW5kZWQtYWN0aXZlLWZpbGw6OmJlZm9yZSB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAxMjBtcztcbiAgICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDEyMG1zO1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgLm1kYy1yYWRpby5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLXVuYm91bmRlZDo6YmVmb3JlIHtcbiAgICB0b3A6IHZhcigtLW1kYy1yaXBwbGUtdG9wKTtcbiAgICBsZWZ0OiB2YXIoLS1tZGMtcmlwcGxlLWxlZnQpO1xuICAgIHdpZHRoOiB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUpO1xuICAgIGhlaWdodDogdmFyKC0tbWRjLXJpcHBsZS1mZy1zaXplKTsgfVxuICAubWRjLXJhZGlvLm1kYy1yaXBwbGUtdXBncmFkZWQ6OmFmdGVyIHtcbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUgYXQtcnVsZS1lbXB0eS1saW5lLWJlZm9yZSwgYmxvY2stY2xvc2luZy1icmFjZS1uZXdsaW5lLWFmdGVyICovXG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg2MywgODEsIDE4MSwgMC4xNCk7XG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSk7XG4gICAgaGVpZ2h0OiB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUpO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyO1xuICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgb3BhY2l0eTogMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBjb250ZW50OiBcIlwiOyB9XG4gICAgQHN1cHBvcnRzIChiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcihncmVlbiBhKDEwJSkpKSB7XG4gICAgICAubWRjLXJhZGlvLm1kYy1yaXBwbGUtdXBncmFkZWQ6OmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IodmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpIGEoMTQlKSk7IH0gfVxuICAubWRjLXJhZGlvLm1kYy1yaXBwbGUtdXBncmFkZWQ6bm90KC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS11bmJvdW5kZWQpOjphZnRlciB7XG4gICAgdG9wOiBjYWxjKHZhcigtLW1kYy1yaXBwbGUtdG9wKSAtIHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSkgLyAyKTtcbiAgICBsZWZ0OiBjYWxjKHZhcigtLW1kYy1yaXBwbGUtbGVmdCkgLSB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUpIC8gMik7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyO1xuICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsgfVxuICAubWRjLXJhZGlvLm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tdW5ib3VuZGVkOjphZnRlciB7XG4gICAgdG9wOiB2YXIoLS1tZGMtcmlwcGxlLXRvcCk7XG4gICAgbGVmdDogdmFyKC0tbWRjLXJpcHBsZS1sZWZ0KTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHZhcigtLW1kYy1yaXBwbGUteGZvLXgpIHZhcigtLW1kYy1yaXBwbGUteGZvLXkpO1xuICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdmFyKC0tbWRjLXJpcHBsZS14Zm8teCkgdmFyKC0tbWRjLXJpcHBsZS14Zm8teSk7IH1cbiAgLm1kYy1yYWRpby5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLWZvcmVncm91bmQtYm91bmRlZC1hY3RpdmUtZmlsbDo6YWZ0ZXIge1xuICAgIC13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogODAwbXMgbWRjLXJpcHBsZS1mZy1yYWRpdXMtaW4sIDQwMG1zIG1kYy1yaXBwbGUtZmctb3BhY2l0eS1vdXQ7XG4gICAgICAgICAgICBhbmltYXRpb246IDgwMG1zIG1kYy1yaXBwbGUtZmctcmFkaXVzLWluLCA0MDBtcyBtZGMtcmlwcGxlLWZnLW9wYWNpdHktb3V0OyB9XG4gIC5tZGMtcmFkaW8ubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS11bmJvdW5kZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tZm9yZWdyb3VuZC11bmJvdW5kZWQtYWN0aXZhdGlvbjo6YWZ0ZXIge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDExMG1zIGxpbmVhciwgLXdlYmtpdC10cmFuc2Zvcm0gdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBsaW5lYXIgODBtcztcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDExMG1zIGxpbmVhciwgLXdlYmtpdC10cmFuc2Zvcm0gdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBsaW5lYXIgODBtcztcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDExMG1zIGxpbmVhciwgdHJhbnNmb3JtIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kdXJhdGlvbikgbGluZWFyIDgwbXM7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxMTBtcyBsaW5lYXIsIHRyYW5zZm9ybSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb24pIGxpbmVhciA4MG1zLCAtd2Via2l0LXRyYW5zZm9ybSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb24pIGxpbmVhciA4MG1zO1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgLm1kYy1yYWRpby5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLXVuYm91bmRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1mb3JlZ3JvdW5kLXVuYm91bmRlZC1kZWFjdGl2YXRpb246OmFmdGVyIHtcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtb3BhY2l0eS1kZWFjdGl2YXRlIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLW9wYWNpdHktZHVyYXRpb24pIGxpbmVhciwgbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWRlYWN0aXZhdGUgdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBjdWJpYy1iZXppZXIoMC4xNTcsIDAuNzIsIDAuMzg2LCAwLjk4Nyk7XG4gICAgICAgICAgICBhbmltYXRpb246IG1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLW9wYWNpdHktZGVhY3RpdmF0ZSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC1vcGFjaXR5LWR1cmF0aW9uKSBsaW5lYXIsIG1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kZWFjdGl2YXRlIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kdXJhdGlvbikgY3ViaWMtYmV6aWVyKDAuMTU3LCAwLjcyLCAwLjM4NiwgMC45ODcpOyB9XG4gIC5tZGMtcmFkaW8ubWRjLXJpcHBsZS11cGdyYWRlZCAubWRjLXJhZGlvX19iYWNrZ3JvdW5kOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IG5vbmU7IH1cblxuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qXG4gIFByZWNvbXB1dGVkIGxpbmVhciBjb2xvciBjaGFubmVsIHZhbHVlcywgZm9yIHVzZSBpbiBjb250cmFzdCBjYWxjdWxhdGlvbnMuXG4gIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuXG4gIEFsZ29yaXRobSwgZm9yIGMgaW4gMCB0byAyNTU6XG4gIGYoYykge1xuICAgIGMgPSBjIC8gMjU1O1xuICAgIHJldHVybiBjIDwgMC4wMzkyOCA/IGMgLyAxMi45MiA6IE1hdGgucG93KChjICsgMC4wNTUpIC8gMS4wNTUsIDIuNCk7XG4gIH1cblxuICBUaGlzIGxvb2t1cCB0YWJsZSBpcyBuZWVkZWQgc2luY2UgdGhlcmUgaXMgbm8gYHBvd2AgaW4gU0FTUy5cbiovXG4vKiBBbGwgdmFyaWFibGVzIGFyZSBsb2NhbCwgc28gZGlzYWJsZSBwYXR0ZXJuIGNoZWNraW5nLiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGx1bWluYW5jZSBmb3IgYSBjb2xvci5cbiAqIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuICovXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgY29udHJhc3QgcmF0aW8gYmV0d2VlbiB0d28gY29sb3JzLlxuICogU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG4gKi9cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gdXNlIGRhcmsgb3IgbGlnaHQgdGV4dCBvbiB0b3Agb2YgZ2l2ZW4gY29sb3IuXG4gKiBSZXR1cm5zIFwiZGFya1wiIGZvciBkYXJrIHRleHQgYW5kIFwibGlnaHRcIiBmb3IgbGlnaHQgdGV4dC5cbiAqL1xuLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKlxuICBNYWluIHRoZW1lIGNvbG9ycy5cbiAgSWYgeW91J3JlIGEgdXNlciBjdXN0b21pemluZyB5b3VyIGNvbG9yIHNjaGVtZSBpbiBTQVNTLCB0aGVzZSBhcmUgcHJvYmFibHkgdGhlIG9ubHkgdmFyaWFibGVzIHlvdSBuZWVkIHRvIGNoYW5nZS5cbiovXG4vKiBJbmRpZ28gNTAwICovXG4vKiBQaW5rIEEyMDAgKi9cbi8qIFdoaXRlICovXG4vKiBXaGljaCBzZXQgb2YgdGV4dCBjb2xvcnMgdG8gdXNlIGZvciBlYWNoIG1haW4gdGhlbWUgY29sb3IgKGxpZ2h0IG9yIGRhcmspICovXG4vKiBUZXh0IGNvbG9ycyBhY2NvcmRpbmcgdG8gbGlnaHQgdnMgZGFyayBhbmQgdGV4dCB0eXBlICovXG4vKiBQcmltYXJ5IHRleHQgY29sb3JzIGZvciBlYWNoIG9mIHRoZSB0aGVtZSBjb2xvcnMgKi9cbi8qIEFsbCB2YXJpYWJsZXMgYXJlIGxvY2FsLCBzbyBkaXNhYmxlIHBhdHRlcm4gY2hlY2tpbmcuICovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKipcbiAqIEFwcGxpZXMgdGhlIGNvcnJlY3QgdGhlbWUgY29sb3Igc3R5bGUgdG8gdGhlIHNwZWNpZmllZCBwcm9wZXJ0eS5cbiAqICRwcm9wZXJ0eSBpcyB0eXBpY2FsbHkgY29sb3Igb3IgYmFja2dyb3VuZC1jb2xvciwgYnV0IGNhbiBiZSBhbnkgQ1NTIHByb3BlcnR5IHRoYXQgYWNjZXB0cyBjb2xvciB2YWx1ZXMuXG4gKiAkc3R5bGUgc2hvdWxkIGJlIG9uZSBvZiB0aGUgbWFwIGtleXMgaW4gJG1kYy10aGVtZS1wcm9wZXJ0eS12YWx1ZXMgKF92YXJpYWJsZXMuc2NzcykuXG4gKi9cbi8qKlxuICogQ3JlYXRlcyBhIHJ1bGUgdG8gYmUgdXNlZCBpbiBNREMtV2ViIGNvbXBvbmVudHMgZm9yIGRhcmsgdGhlbWluZywgYW5kIGFwcGxpZXMgdGhlIHByb3ZpZGVkIGNvbnRlbnRzLlxuICogU2hvdWxkIHByb3ZpZGUgdGhlICRyb290LXNlbGVjdG9yIG9wdGlvbiBpZiBhcHBsaWVkIHRvIGFueXRoaW5nIG90aGVyIHRoYW4gdGhlIHJvb3Qgc2VsZWN0b3IuXG4gKiBXaGVuIHVzZWQgd2l0aCBhIG1vZGlmaWVyIGNsYXNzLCBwcm92aWRlIGEgc2Vjb25kIGFyZ3VtZW50IG9mIGB0cnVlYCBmb3IgdGhlICRjb21wb3VuZCBwYXJhbWV0ZXJcbiAqIHRvIHNwZWNpZnkgdGhhdCB0aGlzIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBhIGNvbXBvdW5kIGNsYXNzLlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBjb2xvcjogYmxhY2s7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtdGhlbWUtZGFyayB7XG4gKiAgICAgY29sb3I6IHdoaXRlO1xuICogICB9XG4gKlxuICogICAmX19iYXIge1xuICogICAgIGJhY2tncm91bmQ6IGJsYWNrO1xuICpcbiAqICAgICBAaW5jbHVkZSBtZGMtdGhlbWUtZGFyayhcIi5tZGMtZm9vXCIpIHtcbiAqICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICogICAgIH1cbiAqICAgfVxuICogfVxuICpcbiAqIC5tZGMtZm9vLS1kaXNhYmxlZCB7XG4gKiAgIG9wYWNpdHk6IC4zODtcbiAqXG4gKiAgIEBpbmNsdWRlIG1kYy10aGVtZS1kYXJrKFwiLm1kYy1mb29cIiwgdHJ1ZSkge1xuICogICAgIG9wYWNpdHk6IC41O1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLypcbiAgUHJlY29tcHV0ZWQgbGluZWFyIGNvbG9yIGNoYW5uZWwgdmFsdWVzLCBmb3IgdXNlIGluIGNvbnRyYXN0IGNhbGN1bGF0aW9ucy5cbiAgU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG5cbiAgQWxnb3JpdGhtLCBmb3IgYyBpbiAwIHRvIDI1NTpcbiAgZihjKSB7XG4gICAgYyA9IGMgLyAyNTU7XG4gICAgcmV0dXJuIGMgPCAwLjAzOTI4ID8gYyAvIDEyLjkyIDogTWF0aC5wb3coKGMgKyAwLjA1NSkgLyAxLjA1NSwgMi40KTtcbiAgfVxuXG4gIFRoaXMgbG9va3VwIHRhYmxlIGlzIG5lZWRlZCBzaW5jZSB0aGVyZSBpcyBubyBgcG93YCBpbiBTQVNTLlxuKi9cbi8qIEFsbCB2YXJpYWJsZXMgYXJlIGxvY2FsLCBzbyBkaXNhYmxlIHBhdHRlcm4gY2hlY2tpbmcuICovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgbHVtaW5hbmNlIGZvciBhIGNvbG9yLlxuICogU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG4gKi9cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBjb250cmFzdCByYXRpbyBiZXR3ZWVuIHR3byBjb2xvcnMuXG4gKiBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcbiAqL1xuLyoqXG4gKiBEZXRlcm1pbmUgd2hldGhlciB0byB1c2UgZGFyayBvciBsaWdodCB0ZXh0IG9uIHRvcCBvZiBnaXZlbiBjb2xvci5cbiAqIFJldHVybnMgXCJkYXJrXCIgZm9yIGRhcmsgdGV4dCBhbmQgXCJsaWdodFwiIGZvciBsaWdodCB0ZXh0LlxuICovXG4vKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qXG4gIE1haW4gdGhlbWUgY29sb3JzLlxuICBJZiB5b3UncmUgYSB1c2VyIGN1c3RvbWl6aW5nIHlvdXIgY29sb3Igc2NoZW1lIGluIFNBU1MsIHRoZXNlIGFyZSBwcm9iYWJseSB0aGUgb25seSB2YXJpYWJsZXMgeW91IG5lZWQgdG8gY2hhbmdlLlxuKi9cbi8qIEluZGlnbyA1MDAgKi9cbi8qIFBpbmsgQTIwMCAqL1xuLyogV2hpdGUgKi9cbi8qIFdoaWNoIHNldCBvZiB0ZXh0IGNvbG9ycyB0byB1c2UgZm9yIGVhY2ggbWFpbiB0aGVtZSBjb2xvciAobGlnaHQgb3IgZGFyaykgKi9cbi8qIFRleHQgY29sb3JzIGFjY29yZGluZyB0byBsaWdodCB2cyBkYXJrIGFuZCB0ZXh0IHR5cGUgKi9cbi8qIFByaW1hcnkgdGV4dCBjb2xvcnMgZm9yIGVhY2ggb2YgdGhlIHRoZW1lIGNvbG9ycyAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKiBNREMgUmlwcGxlIGtleWZyYW1lcyBhcmUgc3BsaXQgaW50byB0aGVpciBvd24gZmlsZSBzbyB0aGF0IF9taXhpbnMuc2NzcyBjYW4gcmVseSBvbiB0aGVtLiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbkBrZXlmcmFtZXMgbWRjLXJpcHBsZS1mZy1yYWRpdXMtaW4ge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTU3LCAwLjcyLCAwLjM4NiwgMC45ODcpO1xuICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTU3LCAwLjcyLCAwLjM4NiwgMC45ODcpOyB9XG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS41KTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS41KTsgfSB9XG5cbkBrZXlmcmFtZXMgbWRjLXJpcHBsZS1mZy1vcGFjaXR5LW91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG4gICAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7IH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG5Aa2V5ZnJhbWVzIG1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLW9wYWNpdHktZGVhY3RpdmF0ZSB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG5Aa2V5ZnJhbWVzIG1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kZWFjdGl2YXRlIHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHZhcigtLW1kYy1yaXBwbGUtZmctYXBwcm94LXhmKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdmFyKC0tbWRjLXJpcHBsZS1mZy1hcHByb3gteGYpOyB9XG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4wMSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDEpOyB9IH1cblxuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qIHBvc3Rjc3MtYmVtLWxpbnRlcjogZGVmaW5lIHJpcHBsZS1zdXJmYWNlICovXG4ubWRjLXJpcHBsZS1zdXJmYWNlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdXRsaW5lOiBub25lO1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG4gIC5tZGMtcmlwcGxlLXN1cmZhY2VbZGF0YS1tZGMtcmlwcGxlLWlzLXVuYm91bmRlZF0ge1xuICAgIG92ZXJmbG93OiB2aXNpYmxlOyB9XG4gIC5tZGMtcmlwcGxlLXN1cmZhY2U6OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMTIwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMTIwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gICAgYmFja2dyb3VuZDogY3VycmVudENvbG9yO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgb3BhY2l0eTogMDsgfVxuICAubWRjLXJpcHBsZS1zdXJmYWNlOmZvY3VzOjpiZWZvcmUge1xuICAgIG9wYWNpdHk6IC4xMjsgfVxuICAubWRjLXJpcHBsZS1zdXJmYWNlOmFjdGl2ZTo6YmVmb3JlIHtcbiAgICBvcGFjaXR5OiAuMTg7IH1cbiAgLm1kYy1yaXBwbGUtc3VyZmFjZS5tZGMtcmlwcGxlLXVwZ3JhZGVkIHtcbiAgICAtLW1kYy1yaXBwbGUtbGVmdDogMDtcbiAgICAtLW1kYy1yaXBwbGUtdG9wOiAwO1xuICAgIC0tbWRjLXJpcHBsZS1mZy1zaXplOiAwO1xuICAgIC0tbWRjLXJpcHBsZS1zdXJmYWNlLWhlaWdodDogMDtcbiAgICAtLW1kYy1yaXBwbGUtc3VyZmFjZS13aWR0aDogMDtcbiAgICAtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kdXJhdGlvbjogMG1zO1xuICAgIC0tbWRjLXJpcHBsZS14Zm8teDogY2VudGVyO1xuICAgIC0tbWRjLXJpcHBsZS14Zm8teTogY2VudGVyO1xuICAgIC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtb3BhY2l0eS1kdXJhdGlvbjogMG1zO1xuICAgIC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uOiAwbXM7XG4gICAgLS1tZGMtcmlwcGxlLWZnLWFwcHJveC14ZjogMDtcbiAgICB3aWxsLWNoYW5nZTogdHJhbnNpdGlvbiwgb3BhY2l0eTtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqL1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqLyB9XG4gICAgLm1kYy1yaXBwbGUtc3VyZmFjZS5tZGMtcmlwcGxlLXVwZ3JhZGVkOjpiZWZvcmUge1xuICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNik7XG4gICAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqL1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiBjYWxjKDUwJSAtIDEwMCUpO1xuICAgICAgbGVmdDogY2FsYyg1MCUgLSAxMDAlKTtcbiAgICAgIHdpZHRoOiAyMDAlO1xuICAgICAgaGVpZ2h0OiAyMDAlO1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDIwMG1zIGxpbmVhcjtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMjAwbXMgbGluZWFyO1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgY29udGVudDogXCJcIjsgfVxuICAgIC5tZGMtcmlwcGxlLXN1cmZhY2UubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1iYWNrZ3JvdW5kLWFjdGl2ZTo6YmVmb3JlIHtcbiAgICAgIG9wYWNpdHk6IC45OTk5OTsgfVxuICAgIC5tZGMtcmlwcGxlLXN1cmZhY2UubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1iYWNrZ3JvdW5kLWFjdGl2ZTphY3RpdmU6OmJlZm9yZSB7XG4gICAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDYwMG1zO1xuICAgICAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA2MDBtczsgfVxuICAgIC5tZGMtcmlwcGxlLXN1cmZhY2UubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1iYWNrZ3JvdW5kLWJvdW5kZWQtYWN0aXZlLWZpbGw6OmJlZm9yZSB7XG4gICAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDEyMG1zO1xuICAgICAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAxMjBtcztcbiAgICAgIG9wYWNpdHk6IDE7IH1cbiAgICAubWRjLXJpcHBsZS1zdXJmYWNlLm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tdW5ib3VuZGVkOjpiZWZvcmUge1xuICAgICAgdG9wOiB2YXIoLS1tZGMtcmlwcGxlLXRvcCk7XG4gICAgICBsZWZ0OiB2YXIoLS1tZGMtcmlwcGxlLWxlZnQpO1xuICAgICAgd2lkdGg6IHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSk7XG4gICAgICBoZWlnaHQ6IHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSk7IH1cbiAgICAubWRjLXJpcHBsZS1zdXJmYWNlLm1kYy1yaXBwbGUtdXBncmFkZWQ6OmFmdGVyIHtcbiAgICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqL1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA2KTtcbiAgICAgIC8qIHN0eWxlbGludC1lbmFibGUgYXQtcnVsZS1lbXB0eS1saW5lLWJlZm9yZSwgYmxvY2stY2xvc2luZy1icmFjZS1uZXdsaW5lLWFmdGVyICovXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogdmFyKC0tbWRjLXJpcHBsZS1mZy1zaXplKTtcbiAgICAgIGhlaWdodDogdmFyKC0tbWRjLXJpcHBsZS1mZy1zaXplKTtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7IH1cbiAgICAubWRjLXJpcHBsZS1zdXJmYWNlLm1kYy1yaXBwbGUtdXBncmFkZWQ6bm90KC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS11bmJvdW5kZWQpOjphZnRlciB7XG4gICAgICB0b3A6IGNhbGModmFyKC0tbWRjLXJpcHBsZS10b3ApIC0gdmFyKC0tbWRjLXJpcHBsZS1mZy1zaXplKSAvIDIpO1xuICAgICAgbGVmdDogY2FsYyh2YXIoLS1tZGMtcmlwcGxlLWxlZnQpIC0gdmFyKC0tbWRjLXJpcHBsZS1mZy1zaXplKSAvIDIpO1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOyB9XG4gICAgLm1kYy1yaXBwbGUtc3VyZmFjZS5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLXVuYm91bmRlZDo6YWZ0ZXIge1xuICAgICAgdG9wOiB2YXIoLS1tZGMtcmlwcGxlLXRvcCk7XG4gICAgICBsZWZ0OiB2YXIoLS1tZGMtcmlwcGxlLWxlZnQpO1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiB2YXIoLS1tZGMtcmlwcGxlLXhmby14KSB2YXIoLS1tZGMtcmlwcGxlLXhmby15KTtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdmFyKC0tbWRjLXJpcHBsZS14Zm8teCkgdmFyKC0tbWRjLXJpcHBsZS14Zm8teSk7IH1cbiAgICAubWRjLXJpcHBsZS1zdXJmYWNlLm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tZm9yZWdyb3VuZC1ib3VuZGVkLWFjdGl2ZS1maWxsOjphZnRlciB7XG4gICAgICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcbiAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiA4MDBtcyBtZGMtcmlwcGxlLWZnLXJhZGl1cy1pbiwgNDAwbXMgbWRjLXJpcHBsZS1mZy1vcGFjaXR5LW91dDtcbiAgICAgICAgICAgICAgYW5pbWF0aW9uOiA4MDBtcyBtZGMtcmlwcGxlLWZnLXJhZGl1cy1pbiwgNDAwbXMgbWRjLXJpcHBsZS1mZy1vcGFjaXR5LW91dDsgfVxuICAgIC5tZGMtcmlwcGxlLXN1cmZhY2UubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS11bmJvdW5kZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tZm9yZWdyb3VuZC11bmJvdW5kZWQtYWN0aXZhdGlvbjo6YWZ0ZXIge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDExMG1zIGxpbmVhciwgLXdlYmtpdC10cmFuc2Zvcm0gdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBsaW5lYXIgODBtcztcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMTEwbXMgbGluZWFyLCAtd2Via2l0LXRyYW5zZm9ybSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb24pIGxpbmVhciA4MG1zO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxMTBtcyBsaW5lYXIsIHRyYW5zZm9ybSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb24pIGxpbmVhciA4MG1zO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxMTBtcyBsaW5lYXIsIHRyYW5zZm9ybSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb24pIGxpbmVhciA4MG1zLCAtd2Via2l0LXRyYW5zZm9ybSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb24pIGxpbmVhciA4MG1zO1xuICAgICAgb3BhY2l0eTogMTsgfVxuICAgIC5tZGMtcmlwcGxlLXN1cmZhY2UubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS11bmJvdW5kZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tZm9yZWdyb3VuZC11bmJvdW5kZWQtZGVhY3RpdmF0aW9uOjphZnRlciB7XG4gICAgICAtd2Via2l0LWFuaW1hdGlvbjogbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtb3BhY2l0eS1kZWFjdGl2YXRlIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLW9wYWNpdHktZHVyYXRpb24pIGxpbmVhciwgbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWRlYWN0aXZhdGUgdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBjdWJpYy1iZXppZXIoMC4xNTcsIDAuNzIsIDAuMzg2LCAwLjk4Nyk7XG4gICAgICAgICAgICAgIGFuaW1hdGlvbjogbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtb3BhY2l0eS1kZWFjdGl2YXRlIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLW9wYWNpdHktZHVyYXRpb24pIGxpbmVhciwgbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWRlYWN0aXZhdGUgdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBjdWJpYy1iZXppZXIoMC4xNTcsIDAuNzIsIDAuMzg2LCAwLjk4Nyk7IH1cbiAgLm1kYy1yaXBwbGUtc3VyZmFjZS0tcHJpbWFyeS5tZGMtcmlwcGxlLXVwZ3JhZGVkIHtcbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUgYXQtcnVsZS1lbXB0eS1saW5lLWJlZm9yZSwgYmxvY2stY2xvc2luZy1icmFjZS1uZXdsaW5lLWFmdGVyICovXG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUgYXQtcnVsZS1lbXB0eS1saW5lLWJlZm9yZSwgYmxvY2stY2xvc2luZy1icmFjZS1uZXdsaW5lLWFmdGVyICovXG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi8gfVxuICAgIC5tZGMtcmlwcGxlLXN1cmZhY2UtLXByaW1hcnkubWRjLXJpcHBsZS11cGdyYWRlZDo6YmVmb3JlLCAubWRjLXJpcHBsZS1zdXJmYWNlLS1wcmltYXJ5Lm1kYy1yaXBwbGUtdXBncmFkZWQ6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzZjUxYjU7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtcHJpbWFyeSwgIzNmNTFiNSk7IH1cbiAgICAubWRjLXJpcHBsZS1zdXJmYWNlLS1wcmltYXJ5Lm1kYy1yaXBwbGUtdXBncmFkZWQ6OmJlZm9yZSB7XG4gICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqL1xuICAgICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDYzLCA4MSwgMTgxLCAwLjE0KTtcbiAgICAgIC8qIHN0eWxlbGludC1lbmFibGUgYXQtcnVsZS1lbXB0eS1saW5lLWJlZm9yZSwgYmxvY2stY2xvc2luZy1icmFjZS1uZXdsaW5lLWFmdGVyICovXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IGNhbGMoNTAlIC0gMTAwJSk7XG4gICAgICBsZWZ0OiBjYWxjKDUwJSAtIDEwMCUpO1xuICAgICAgd2lkdGg6IDIwMCU7XG4gICAgICBoZWlnaHQ6IDIwMCU7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMjAwbXMgbGluZWFyO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyMDBtcyBsaW5lYXI7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICBjb250ZW50OiBcIlwiOyB9XG4gICAgICBAc3VwcG9ydHMgKGJhY2tncm91bmQtY29sb3I6IGNvbG9yKGdyZWVuIGEoMTAlKSkpIHtcbiAgICAgICAgLm1kYy1yaXBwbGUtc3VyZmFjZS0tcHJpbWFyeS5tZGMtcmlwcGxlLXVwZ3JhZGVkOjpiZWZvcmUge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yKHZhcigtLW1kYy10aGVtZS1wcmltYXJ5LCAjM2Y1MWI1KSBhKDE0JSkpOyB9IH1cbiAgICAubWRjLXJpcHBsZS1zdXJmYWNlLS1wcmltYXJ5Lm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tYmFja2dyb3VuZC1hY3RpdmU6OmJlZm9yZSB7XG4gICAgICBvcGFjaXR5OiAuOTk5OTk7IH1cbiAgICAubWRjLXJpcHBsZS1zdXJmYWNlLS1wcmltYXJ5Lm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tYmFja2dyb3VuZC1hY3RpdmU6YWN0aXZlOjpiZWZvcmUge1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiA2MDBtcztcbiAgICAgICAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNjAwbXM7IH1cbiAgICAubWRjLXJpcHBsZS1zdXJmYWNlLS1wcmltYXJ5Lm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tYmFja2dyb3VuZC1ib3VuZGVkLWFjdGl2ZS1maWxsOjpiZWZvcmUge1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAxMjBtcztcbiAgICAgICAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMTIwbXM7XG4gICAgICBvcGFjaXR5OiAxOyB9XG4gICAgLm1kYy1yaXBwbGUtc3VyZmFjZS0tcHJpbWFyeS5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLXVuYm91bmRlZDo6YmVmb3JlIHtcbiAgICAgIHRvcDogdmFyKC0tbWRjLXJpcHBsZS10b3ApO1xuICAgICAgbGVmdDogdmFyKC0tbWRjLXJpcHBsZS1sZWZ0KTtcbiAgICAgIHdpZHRoOiB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUpOyB9XG4gICAgLm1kYy1yaXBwbGUtc3VyZmFjZS0tcHJpbWFyeS5tZGMtcmlwcGxlLXVwZ3JhZGVkOjphZnRlciB7XG4gICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgICAgIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg2MywgODEsIDE4MSwgMC4xNCk7XG4gICAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqL1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6IHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSk7XG4gICAgICBoZWlnaHQ6IHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSk7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICBjb250ZW50OiBcIlwiOyB9XG4gICAgICBAc3VwcG9ydHMgKGJhY2tncm91bmQtY29sb3I6IGNvbG9yKGdyZWVuIGEoMTAlKSkpIHtcbiAgICAgICAgLm1kYy1yaXBwbGUtc3VyZmFjZS0tcHJpbWFyeS5tZGMtcmlwcGxlLXVwZ3JhZGVkOjphZnRlciB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IodmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpIGEoMTQlKSk7IH0gfVxuICAgIC5tZGMtcmlwcGxlLXN1cmZhY2UtLXByaW1hcnkubWRjLXJpcHBsZS11cGdyYWRlZDpub3QoLm1kYy1yaXBwbGUtdXBncmFkZWQtLXVuYm91bmRlZCk6OmFmdGVyIHtcbiAgICAgIHRvcDogY2FsYyh2YXIoLS1tZGMtcmlwcGxlLXRvcCkgLSB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUpIC8gMik7XG4gICAgICBsZWZ0OiBjYWxjKHZhcigtLW1kYy1yaXBwbGUtbGVmdCkgLSB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUpIC8gMik7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7IH1cbiAgICAubWRjLXJpcHBsZS1zdXJmYWNlLS1wcmltYXJ5Lm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tdW5ib3VuZGVkOjphZnRlciB7XG4gICAgICB0b3A6IHZhcigtLW1kYy1yaXBwbGUtdG9wKTtcbiAgICAgIGxlZnQ6IHZhcigtLW1kYy1yaXBwbGUtbGVmdCk7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHZhcigtLW1kYy1yaXBwbGUteGZvLXgpIHZhcigtLW1kYy1yaXBwbGUteGZvLXkpO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiB2YXIoLS1tZGMtcmlwcGxlLXhmby14KSB2YXIoLS1tZGMtcmlwcGxlLXhmby15KTsgfVxuICAgIC5tZGMtcmlwcGxlLXN1cmZhY2UtLXByaW1hcnkubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1mb3JlZ3JvdW5kLWJvdW5kZWQtYWN0aXZlLWZpbGw6OmFmdGVyIHtcbiAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgLXdlYmtpdC1hbmltYXRpb246IDgwMG1zIG1kYy1yaXBwbGUtZmctcmFkaXVzLWluLCA0MDBtcyBtZGMtcmlwcGxlLWZnLW9wYWNpdHktb3V0O1xuICAgICAgICAgICAgICBhbmltYXRpb246IDgwMG1zIG1kYy1yaXBwbGUtZmctcmFkaXVzLWluLCA0MDBtcyBtZGMtcmlwcGxlLWZnLW9wYWNpdHktb3V0OyB9XG4gICAgLm1kYy1yaXBwbGUtc3VyZmFjZS0tcHJpbWFyeS5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLXVuYm91bmRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1mb3JlZ3JvdW5kLXVuYm91bmRlZC1hY3RpdmF0aW9uOjphZnRlciB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMTEwbXMgbGluZWFyLCAtd2Via2l0LXRyYW5zZm9ybSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb24pIGxpbmVhciA4MG1zO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxMTBtcyBsaW5lYXIsIC13ZWJraXQtdHJhbnNmb3JtIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kdXJhdGlvbikgbGluZWFyIDgwbXM7XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDExMG1zIGxpbmVhciwgdHJhbnNmb3JtIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kdXJhdGlvbikgbGluZWFyIDgwbXM7XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDExMG1zIGxpbmVhciwgdHJhbnNmb3JtIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kdXJhdGlvbikgbGluZWFyIDgwbXMsIC13ZWJraXQtdHJhbnNmb3JtIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kdXJhdGlvbikgbGluZWFyIDgwbXM7XG4gICAgICBvcGFjaXR5OiAxOyB9XG4gICAgLm1kYy1yaXBwbGUtc3VyZmFjZS0tcHJpbWFyeS5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLXVuYm91bmRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1mb3JlZ3JvdW5kLXVuYm91bmRlZC1kZWFjdGl2YXRpb246OmFmdGVyIHtcbiAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBtZGMtcmlwcGxlLWZnLXVuYm91bmRlZC1vcGFjaXR5LWRlYWN0aXZhdGUgdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtb3BhY2l0eS1kdXJhdGlvbikgbGluZWFyLCBtZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZGVhY3RpdmF0ZSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb24pIGN1YmljLWJlemllcigwLjE1NywgMC43MiwgMC4zODYsIDAuOTg3KTtcbiAgICAgICAgICAgICAgYW5pbWF0aW9uOiBtZGMtcmlwcGxlLWZnLXVuYm91bmRlZC1vcGFjaXR5LWRlYWN0aXZhdGUgdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtb3BhY2l0eS1kdXJhdGlvbikgbGluZWFyLCBtZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZGVhY3RpdmF0ZSB2YXIoLS1tZGMtcmlwcGxlLWZnLXVuYm91bmRlZC10cmFuc2Zvcm0tZHVyYXRpb24pIGN1YmljLWJlemllcigwLjE1NywgMC43MiwgMC4zODYsIDAuOTg3KTsgfVxuICAubWRjLXJpcHBsZS1zdXJmYWNlLS1hY2NlbnQubWRjLXJpcHBsZS11cGdyYWRlZCB7XG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqL1xuICAgIC8qIHN0eWxlbGludC1lbmFibGUgYXQtcnVsZS1lbXB0eS1saW5lLWJlZm9yZSwgYmxvY2stY2xvc2luZy1icmFjZS1uZXdsaW5lLWFmdGVyICovXG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIGF0LXJ1bGUtZW1wdHktbGluZS1iZWZvcmUsIGJsb2NrLWNsb3NpbmctYnJhY2UtbmV3bGluZS1hZnRlciAqL1xuICAgIC8qIHN0eWxlbGludC1lbmFibGUgYXQtcnVsZS1lbXB0eS1saW5lLWJlZm9yZSwgYmxvY2stY2xvc2luZy1icmFjZS1uZXdsaW5lLWFmdGVyICovIH1cbiAgICAubWRjLXJpcHBsZS1zdXJmYWNlLS1hY2NlbnQubWRjLXJpcHBsZS11cGdyYWRlZDo6YmVmb3JlLCAubWRjLXJpcHBsZS1zdXJmYWNlLS1hY2NlbnQubWRjLXJpcHBsZS11cGdyYWRlZDo6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzNmNTFiNTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kYy10aGVtZS1wcmltYXJ5LCAjM2Y1MWI1KTsgfVxuICAgIC5tZGMtcmlwcGxlLXN1cmZhY2UtLWFjY2VudC5tZGMtcmlwcGxlLXVwZ3JhZGVkOjpiZWZvcmUge1xuICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgICAgIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDY0LCAxMjksIDAuMTQpO1xuICAgICAgLyogc3R5bGVsaW50LWVuYWJsZSBhdC1ydWxlLWVtcHR5LWxpbmUtYmVmb3JlLCBibG9jay1jbG9zaW5nLWJyYWNlLW5ld2xpbmUtYWZ0ZXIgKi9cbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogY2FsYyg1MCUgLSAxMDAlKTtcbiAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMTAwJSk7XG4gICAgICB3aWR0aDogMjAwJTtcbiAgICAgIGhlaWdodDogMjAwJTtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAyMDBtcyBsaW5lYXI7XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDIwMG1zIGxpbmVhcjtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7IH1cbiAgICAgIEBzdXBwb3J0cyAoYmFja2dyb3VuZC1jb2xvcjogY29sb3IoZ3JlZW4gYSgxMCUpKSkge1xuICAgICAgICAubWRjLXJpcHBsZS1zdXJmYWNlLS1hY2NlbnQubWRjLXJpcHBsZS11cGdyYWRlZDo6YmVmb3JlIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcih2YXIoLS1tZGMtdGhlbWUtYWNjZW50LCAjZmY0MDgxKSBhKDE0JSkpOyB9IH1cbiAgICAubWRjLXJpcHBsZS1zdXJmYWNlLS1hY2NlbnQubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1iYWNrZ3JvdW5kLWFjdGl2ZTo6YmVmb3JlIHtcbiAgICAgIG9wYWNpdHk6IC45OTk5OTsgfVxuICAgIC5tZGMtcmlwcGxlLXN1cmZhY2UtLWFjY2VudC5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLWJhY2tncm91bmQtYWN0aXZlOmFjdGl2ZTo6YmVmb3JlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogNjAwbXM7XG4gICAgICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDYwMG1zOyB9XG4gICAgLm1kYy1yaXBwbGUtc3VyZmFjZS0tYWNjZW50Lm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tYmFja2dyb3VuZC1ib3VuZGVkLWFjdGl2ZS1maWxsOjpiZWZvcmUge1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAxMjBtcztcbiAgICAgICAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMTIwbXM7XG4gICAgICBvcGFjaXR5OiAxOyB9XG4gICAgLm1kYy1yaXBwbGUtc3VyZmFjZS0tYWNjZW50Lm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tdW5ib3VuZGVkOjpiZWZvcmUge1xuICAgICAgdG9wOiB2YXIoLS1tZGMtcmlwcGxlLXRvcCk7XG4gICAgICBsZWZ0OiB2YXIoLS1tZGMtcmlwcGxlLWxlZnQpO1xuICAgICAgd2lkdGg6IHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSk7XG4gICAgICBoZWlnaHQ6IHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSk7IH1cbiAgICAubWRjLXJpcHBsZS1zdXJmYWNlLS1hY2NlbnQubWRjLXJpcHBsZS11cGdyYWRlZDo6YWZ0ZXIge1xuICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUgYXQtcnVsZS1lbXB0eS1saW5lLWJlZm9yZSwgYmxvY2stY2xvc2luZy1icmFjZS1uZXdsaW5lLWFmdGVyICovXG4gICAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NCwgMTI5LCAwLjE0KTtcbiAgICAgIC8qIHN0eWxlbGludC1lbmFibGUgYXQtcnVsZS1lbXB0eS1saW5lLWJlZm9yZSwgYmxvY2stY2xvc2luZy1icmFjZS1uZXdsaW5lLWFmdGVyICovXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogdmFyKC0tbWRjLXJpcHBsZS1mZy1zaXplKTtcbiAgICAgIGhlaWdodDogdmFyKC0tbWRjLXJpcHBsZS1mZy1zaXplKTtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7IH1cbiAgICAgIEBzdXBwb3J0cyAoYmFja2dyb3VuZC1jb2xvcjogY29sb3IoZ3JlZW4gYSgxMCUpKSkge1xuICAgICAgICAubWRjLXJpcHBsZS1zdXJmYWNlLS1hY2NlbnQubWRjLXJpcHBsZS11cGdyYWRlZDo6YWZ0ZXIge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yKHZhcigtLW1kYy10aGVtZS1hY2NlbnQsICNmZjQwODEpIGEoMTQlKSk7IH0gfVxuICAgIC5tZGMtcmlwcGxlLXN1cmZhY2UtLWFjY2VudC5tZGMtcmlwcGxlLXVwZ3JhZGVkOm5vdCgubWRjLXJpcHBsZS11cGdyYWRlZC0tdW5ib3VuZGVkKTo6YWZ0ZXIge1xuICAgICAgdG9wOiBjYWxjKHZhcigtLW1kYy1yaXBwbGUtdG9wKSAtIHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSkgLyAyKTtcbiAgICAgIGxlZnQ6IGNhbGModmFyKC0tbWRjLXJpcHBsZS1sZWZ0KSAtIHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSkgLyAyKTtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsgfVxuICAgIC5tZGMtcmlwcGxlLXN1cmZhY2UtLWFjY2VudC5tZGMtcmlwcGxlLXVwZ3JhZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLXVuYm91bmRlZDo6YWZ0ZXIge1xuICAgICAgdG9wOiB2YXIoLS1tZGMtcmlwcGxlLXRvcCk7XG4gICAgICBsZWZ0OiB2YXIoLS1tZGMtcmlwcGxlLWxlZnQpO1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiB2YXIoLS1tZGMtcmlwcGxlLXhmby14KSB2YXIoLS1tZGMtcmlwcGxlLXhmby15KTtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdmFyKC0tbWRjLXJpcHBsZS14Zm8teCkgdmFyKC0tbWRjLXJpcHBsZS14Zm8teSk7IH1cbiAgICAubWRjLXJpcHBsZS1zdXJmYWNlLS1hY2NlbnQubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1mb3JlZ3JvdW5kLWJvdW5kZWQtYWN0aXZlLWZpbGw6OmFmdGVyIHtcbiAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgLXdlYmtpdC1hbmltYXRpb246IDgwMG1zIG1kYy1yaXBwbGUtZmctcmFkaXVzLWluLCA0MDBtcyBtZGMtcmlwcGxlLWZnLW9wYWNpdHktb3V0O1xuICAgICAgICAgICAgICBhbmltYXRpb246IDgwMG1zIG1kYy1yaXBwbGUtZmctcmFkaXVzLWluLCA0MDBtcyBtZGMtcmlwcGxlLWZnLW9wYWNpdHktb3V0OyB9XG4gICAgLm1kYy1yaXBwbGUtc3VyZmFjZS0tYWNjZW50Lm1kYy1yaXBwbGUtdXBncmFkZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tdW5ib3VuZGVkLm1kYy1yaXBwbGUtdXBncmFkZWQtLWZvcmVncm91bmQtdW5ib3VuZGVkLWFjdGl2YXRpb246OmFmdGVyIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAxMTBtcyBsaW5lYXIsIC13ZWJraXQtdHJhbnNmb3JtIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLXRyYW5zZm9ybS1kdXJhdGlvbikgbGluZWFyIDgwbXM7XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDExMG1zIGxpbmVhciwgLXdlYmtpdC10cmFuc2Zvcm0gdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBsaW5lYXIgODBtcztcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMTEwbXMgbGluZWFyLCB0cmFuc2Zvcm0gdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBsaW5lYXIgODBtcztcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMTEwbXMgbGluZWFyLCB0cmFuc2Zvcm0gdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBsaW5lYXIgODBtcywgLXdlYmtpdC10cmFuc2Zvcm0gdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBsaW5lYXIgODBtcztcbiAgICAgIG9wYWNpdHk6IDE7IH1cbiAgICAubWRjLXJpcHBsZS1zdXJmYWNlLS1hY2NlbnQubWRjLXJpcHBsZS11cGdyYWRlZC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS11bmJvdW5kZWQubWRjLXJpcHBsZS11cGdyYWRlZC0tZm9yZWdyb3VuZC11bmJvdW5kZWQtZGVhY3RpdmF0aW9uOjphZnRlciB7XG4gICAgICAtd2Via2l0LWFuaW1hdGlvbjogbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtb3BhY2l0eS1kZWFjdGl2YXRlIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLW9wYWNpdHktZHVyYXRpb24pIGxpbmVhciwgbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWRlYWN0aXZhdGUgdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBjdWJpYy1iZXppZXIoMC4xNTcsIDAuNzIsIDAuMzg2LCAwLjk4Nyk7XG4gICAgICAgICAgICAgIGFuaW1hdGlvbjogbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtb3BhY2l0eS1kZWFjdGl2YXRlIHZhcigtLW1kYy1yaXBwbGUtZmctdW5ib3VuZGVkLW9wYWNpdHktZHVyYXRpb24pIGxpbmVhciwgbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWRlYWN0aXZhdGUgdmFyKC0tbWRjLXJpcHBsZS1mZy11bmJvdW5kZWQtdHJhbnNmb3JtLWR1cmF0aW9uKSBjdWJpYy1iZXppZXIoMC4xNTcsIDAuNzIsIDAuMzg2LCAwLjk4Nyk7IH1cblxuLyogcG9zdGNzcy1iZW0tbGludGVyOiBlbmQgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogVE9ETyhzZ29tZXMpOiBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gYWJvdXQgZGVza3RvcCBmb250IHNpemVzLiAqL1xuLyogVE9ETyhzZ29tZXMpOiBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gYWJvdXQgaTE4biBhbmQgaTE4biBmb250IHNpemVzLiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qXG4gIFByZWNvbXB1dGVkIGxpbmVhciBjb2xvciBjaGFubmVsIHZhbHVlcywgZm9yIHVzZSBpbiBjb250cmFzdCBjYWxjdWxhdGlvbnMuXG4gIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuXG4gIEFsZ29yaXRobSwgZm9yIGMgaW4gMCB0byAyNTU6XG4gIGYoYykge1xuICAgIGMgPSBjIC8gMjU1O1xuICAgIHJldHVybiBjIDwgMC4wMzkyOCA/IGMgLyAxMi45MiA6IE1hdGgucG93KChjICsgMC4wNTUpIC8gMS4wNTUsIDIuNCk7XG4gIH1cblxuICBUaGlzIGxvb2t1cCB0YWJsZSBpcyBuZWVkZWQgc2luY2UgdGhlcmUgaXMgbm8gYHBvd2AgaW4gU0FTUy5cbiovXG4vKiBBbGwgdmFyaWFibGVzIGFyZSBsb2NhbCwgc28gZGlzYWJsZSBwYXR0ZXJuIGNoZWNraW5nLiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGx1bWluYW5jZSBmb3IgYSBjb2xvci5cbiAqIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuICovXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgY29udHJhc3QgcmF0aW8gYmV0d2VlbiB0d28gY29sb3JzLlxuICogU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG4gKi9cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gdXNlIGRhcmsgb3IgbGlnaHQgdGV4dCBvbiB0b3Agb2YgZ2l2ZW4gY29sb3IuXG4gKiBSZXR1cm5zIFwiZGFya1wiIGZvciBkYXJrIHRleHQgYW5kIFwibGlnaHRcIiBmb3IgbGlnaHQgdGV4dC5cbiAqL1xuLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKlxuICBNYWluIHRoZW1lIGNvbG9ycy5cbiAgSWYgeW91J3JlIGEgdXNlciBjdXN0b21pemluZyB5b3VyIGNvbG9yIHNjaGVtZSBpbiBTQVNTLCB0aGVzZSBhcmUgcHJvYmFibHkgdGhlIG9ubHkgdmFyaWFibGVzIHlvdSBuZWVkIHRvIGNoYW5nZS5cbiovXG4vKiBJbmRpZ28gNTAwICovXG4vKiBQaW5rIEEyMDAgKi9cbi8qIFdoaXRlICovXG4vKiBXaGljaCBzZXQgb2YgdGV4dCBjb2xvcnMgdG8gdXNlIGZvciBlYWNoIG1haW4gdGhlbWUgY29sb3IgKGxpZ2h0IG9yIGRhcmspICovXG4vKiBUZXh0IGNvbG9ycyBhY2NvcmRpbmcgdG8gbGlnaHQgdnMgZGFyayBhbmQgdGV4dCB0eXBlICovXG4vKiBQcmltYXJ5IHRleHQgY29sb3JzIGZvciBlYWNoIG9mIHRoZSB0aGVtZSBjb2xvcnMgKi9cbi8qIEFsbCB2YXJpYWJsZXMgYXJlIGxvY2FsLCBzbyBkaXNhYmxlIHBhdHRlcm4gY2hlY2tpbmcuICovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKipcbiAqIEFwcGxpZXMgdGhlIGNvcnJlY3QgdGhlbWUgY29sb3Igc3R5bGUgdG8gdGhlIHNwZWNpZmllZCBwcm9wZXJ0eS5cbiAqICRwcm9wZXJ0eSBpcyB0eXBpY2FsbHkgY29sb3Igb3IgYmFja2dyb3VuZC1jb2xvciwgYnV0IGNhbiBiZSBhbnkgQ1NTIHByb3BlcnR5IHRoYXQgYWNjZXB0cyBjb2xvciB2YWx1ZXMuXG4gKiAkc3R5bGUgc2hvdWxkIGJlIG9uZSBvZiB0aGUgbWFwIGtleXMgaW4gJG1kYy10aGVtZS1wcm9wZXJ0eS12YWx1ZXMgKF92YXJpYWJsZXMuc2NzcykuXG4gKi9cbi8qKlxuICogQ3JlYXRlcyBhIHJ1bGUgdG8gYmUgdXNlZCBpbiBNREMtV2ViIGNvbXBvbmVudHMgZm9yIGRhcmsgdGhlbWluZywgYW5kIGFwcGxpZXMgdGhlIHByb3ZpZGVkIGNvbnRlbnRzLlxuICogU2hvdWxkIHByb3ZpZGUgdGhlICRyb290LXNlbGVjdG9yIG9wdGlvbiBpZiBhcHBsaWVkIHRvIGFueXRoaW5nIG90aGVyIHRoYW4gdGhlIHJvb3Qgc2VsZWN0b3IuXG4gKiBXaGVuIHVzZWQgd2l0aCBhIG1vZGlmaWVyIGNsYXNzLCBwcm92aWRlIGEgc2Vjb25kIGFyZ3VtZW50IG9mIGB0cnVlYCBmb3IgdGhlICRjb21wb3VuZCBwYXJhbWV0ZXJcbiAqIHRvIHNwZWNpZnkgdGhhdCB0aGlzIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBhIGNvbXBvdW5kIGNsYXNzLlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBjb2xvcjogYmxhY2s7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtdGhlbWUtZGFyayB7XG4gKiAgICAgY29sb3I6IHdoaXRlO1xuICogICB9XG4gKlxuICogICAmX19iYXIge1xuICogICAgIGJhY2tncm91bmQ6IGJsYWNrO1xuICpcbiAqICAgICBAaW5jbHVkZSBtZGMtdGhlbWUtZGFyayhcIi5tZGMtZm9vXCIpIHtcbiAqICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICogICAgIH1cbiAqICAgfVxuICogfVxuICpcbiAqIC5tZGMtZm9vLS1kaXNhYmxlZCB7XG4gKiAgIG9wYWNpdHk6IC4zODtcbiAqXG4gKiAgIEBpbmNsdWRlIG1kYy10aGVtZS1kYXJrKFwiLm1kYy1mb29cIiwgdHJ1ZSkge1xuICogICAgIG9wYWNpdHk6IC41O1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDcmVhdGVzIGEgcnVsZSB0aGF0IHdpbGwgYmUgYXBwbGllZCB3aGVuIGFuIE1EQy1XZWIgY29tcG9uZW50IGlzIHdpdGhpbiB0aGUgY29udGV4dCBvZiBhbiBSVEwgbGF5b3V0LlxuICpcbiAqIFVzYWdlIEV4YW1wbGU6XG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAqICAgbGVmdDogMDtcbiAqXG4gKiAgIEBpbmNsdWRlIG1kYy1ydGwge1xuICogICAgIGxlZnQ6IGF1dG87XG4gKiAgICAgcmlnaHQ6IDA7XG4gKiAgIH1cbiAqXG4gKiAgICZfX2JhciB7XG4gKiAgICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAqICAgICBAaW5jbHVkZSBtZGMtcnRsKFwiLm1kYy1mb29cIikge1xuICogICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gKiAgICAgICBtYXJnaW4tcmlnaHQ6IDRweDtcbiAqICAgICB9XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAubWRjLWZvby0tbW9kIHtcbiAqICAgcGFkZGluZy1sZWZ0OiA0cHg7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtcnRsIHtcbiAqICAgICBwYWRkaW5nLWxlZnQ6IGF1dG87XG4gKiAgICAgcGFkZGluZy1yaWdodDogNHB4O1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBOb3RlIHRoYXQgdGhpcyB3b3JrcyBieSBjaGVja2luZyBmb3IgW2Rpcj1cInJ0bFwiXSBvbiBhbiBhbmNlc3RvciBlbGVtZW50LiBXaGlsZSB0aGlzIHdpbGwgd29ya1xuICogaW4gbW9zdCBjYXNlcywgaXQgd2lsbCBpbiBzb21lIGNhc2VzIGxlYWQgdG8gZmFsc2UgbmVnYXRpdmVzLCBlLmcuXG4gKlxuICogYGBgaHRtbFxuICogPGh0bWwgZGlyPVwicnRsXCI+XG4gKiAgIDwhLS0gLi4uIC0tPlxuICogICA8ZGl2IGRpcj1cImx0clwiPlxuICogICAgIDxkaXYgY2xhc3M9XCJtZGMtZm9vXCI+U3R5bGVkIGluY29ycmVjdGx5IGFzIFJUTCE8L2Rpdj5cbiAqICAgPC9kaXY+XG4gKiA8L2h0bWw+XG4gKiBgYGBcbiAqXG4gKiBJbiB0aGUgZnV0dXJlLCBzZWxlY3RvcnMgc3VjaCBhcyA6ZGlyIChodHRwOi8vbWRuLmlvLzpkaXIpIHdpbGwgaGVscCB1cyBtaXRpZ2F0ZSB0aGlzLlxuICovXG4vKipcbiAqIFRha2VzIGEgYmFzZSBib3gtbW9kZWwgcHJvcGVydHkgLSBlLmcuIG1hcmdpbiAvIGJvcmRlciAvIHBhZGRpbmcgLSBhbG9uZyB3aXRoIGEgZGVmYXVsdFxuICogZGlyZWN0aW9uIGFuZCB2YWx1ZSwgYW5kIGVtaXRzIHJ1bGVzIHdoaWNoIGFwcGx5IHRoZSB2YWx1ZSB0byB0aGVcbiAqIFwiPGJhc2UtcHJvcGVydHk+LTxkZWZhdWx0LWRpcmVjdGlvbj5cIiBwcm9wZXJ0eSBieSBkZWZhdWx0LCBidXQgZmxpcHMgdGhlIGRpcmVjdGlvblxuICogd2hlbiB3aXRoaW4gYW4gUlRMIGNvbnRleHQuXG4gKlxuICogRm9yIGV4YW1wbGU6XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBAaW5jbHVkZSBtZGMtcnRsLXJlZmxleGl2ZS1ib3gobWFyZ2luLCBsZWZ0LCA4cHgpO1xuICogfVxuICogYGBgXG4gKiBpcyBlcXVpdmFsZW50IHRvOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAqXG4gKiAgIEBpbmNsdWRlIG1kYy1ydGwge1xuICogICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICogICAgIG1hcmdpbi1sZWZ0OiAwO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqIHdoZXJlYXM6XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBAaW5jbHVkZSBtZGMtcnRsLXJlZmxleGl2ZS1ib3gobWFyZ2luLCByaWdodCwgOHB4KTtcbiAqIH1cbiAqIGBgYFxuICogaXMgZXF1aXZhbGVudCB0bzpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIG1hcmdpbi1yaWdodDogOHB4O1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bCB7XG4gKiAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICogICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFlvdSBjYW4gYWxzbyBwYXNzIGEgNHRoIG9wdGlvbmFsICRyb290LXNlbGVjdG9yIGFyZ3VtZW50IHdoaWNoIHdpbGwgYmUgZm9yd2FyZGVkIHRvIGBtZGMtcnRsYCxcbiAqIGUuZy4gYEBpbmNsdWRlIG1kYy1ydGwtcmVmbGV4aXZlLWJveC1wcm9wZXJ0eShtYXJnaW4sIGxlZnQsIDhweCwgXCIubWRjLWNvbXBvbmVudFwiKWAuXG4gKlxuICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gd2lsbCBhbHdheXMgemVybyBvdXQgdGhlIG9yaWdpbmFsIHZhbHVlIGluIGFuIFJUTCBjb250ZXh0LiBJZiB5b3UncmVcbiAqIHRyeWluZyB0byBmbGlwIHRoZSB2YWx1ZXMsIHVzZSBtZGMtcnRsLXJlZmxleGl2ZS1wcm9wZXJ0eSgpLlxuICovXG4vKipcbiAqIFRha2VzIGEgYmFzZSBwcm9wZXJ0eSBhbmQgZW1pdHMgcnVsZXMgdGhhdCBhc3NpZ24gPGJhc2UtcHJvcGVydHk+LWxlZnQgdG8gPGxlZnQtdmFsdWU+IGFuZFxuICogPGJhc2UtcHJvcGVydHk+LXJpZ2h0IHRvIDxyaWdodC12YWx1ZT4gaW4gYSBMVFIgY29udGV4dCwgYW5kIHZpY2UgdmVyc2EgaW4gYSBSVEwgY29udGV4dC5cbiAqIEZvciBleGFtcGxlOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bC1yZWZsZXhpdmUtcHJvcGVydHkobWFyZ2luLCBhdXRvLCAxMnB4KTtcbiAqIH1cbiAqIGBgYFxuICogaXMgZXF1aXZhbGVudCB0bzpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICogICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtcnRsIHtcbiAqICAgICBtYXJnaW4tbGVmdDogMTJweDtcbiAqICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIEEgNHRoIG9wdGlvbmFsICRyb290LXNlbGVjdG9yIGFyZ3VtZW50IGNhbiBiZSBnaXZlbiwgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gYG1kYy1ydGxgLlxuICovXG4vKipcbiAqIFRha2VzIGFuIGFyZ3VtZW50IHNwZWNpZnlpbmcgYSBob3Jpem9udGFsIHBvc2l0aW9uIHByb3BlcnR5IChlaXRoZXIgXCJsZWZ0XCIgb3IgXCJyaWdodFwiKSBhcyB3ZWxsXG4gKiBhcyBhIHZhbHVlLCBhbmQgYXBwbGllcyB0aGF0IHZhbHVlIHRvIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24gaW4gYSBMVFIgY29udGV4dCwgYW5kIGZsaXBzIGl0IGluIGFcbiAqIFJUTCBjb250ZXh0LiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIEBpbmNsdWRlIG1kYy1ydGwtcmVmbGV4aXZlLXBvc2l0aW9uKGxlZnQsIDApO1xuICogICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gKiB9XG4gKiBgYGBcbiAqIGlzIGVxdWl2YWxlbnQgdG86XG4gKlxuICogYGBgc2Nzc1xuICogIC5tZGMtZm9vIHtcbiAqICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAqICAgIGxlZnQ6IDA7XG4gKiAgICByaWdodDogaW5pdGlhbDtcbiAqXG4gKiAgICBAaW5jbHVkZSBtZGMtcnRsIHtcbiAqICAgICAgcmlnaHQ6IDA7XG4gKiAgICAgIGxlZnQ6IGluaXRpYWw7XG4gKiAgICB9XG4gKiAgfVxuICogYGBgXG4gKiBBbiBvcHRpb25hbCB0aGlyZCAkcm9vdC1zZWxlY3RvciBhcmd1bWVudCBtYXkgYWxzbyBiZSBnaXZlbiwgd2hpY2ggaXMgcGFzc2VkIHRvIGBtZGMtcnRsYC5cbiAqL1xuLm1kYy1zZWxlY3Qge1xuICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICBsaW5lLWhlaWdodDogMS43NXJlbTtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XG4gIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1wcmltYXJ5LW9uLWxpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuODcpKTtcbiAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gIHBhZGRpbmctbGVmdDogMDtcbiAgcGFkZGluZy1yaWdodDogMjRweDtcbiAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgICBhcHBlYXJhbmNlOiBub25lO1xuICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7XG4gIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XG4gICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0O1xuICAgICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDI0cHgpO1xuICBoZWlnaHQ6IDMycHg7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYm9yZGVyLWJvdHRvbS1jb2xvciAxNTBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSksIGJhY2tncm91bmQtY29sb3IgMTUwbXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICB0cmFuc2l0aW9uOiBib3JkZXItYm90dG9tLWNvbG9yIDE1MG1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKSwgYmFja2dyb3VuZC1jb2xvciAxNTBtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB3aWR0aCUzRCUyMjEwcHglMjIlMjBoZWlnaHQlM0QlMjI1cHglMjIlMjB2aWV3Qm94JTNEJTIyNyUyMDEwJTIwMTAlMjA1JTIyJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIweG1sbnMlM0F4bGluayUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhsaW5rJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGlkJTNEJTIyU2hhcGUlMjIlMjBzdHJva2UlM0QlMjJub25lJTIyJTIwZmlsbCUzRCUyMiUyMzAlMjIlMjBmaWxsLXJ1bGUlM0QlMjJldmVub2RkJTIyJTIwb3BhY2l0eSUzRCUyMjAuNTQlMjIlMjBwb2ludHMlM0QlMjI3JTIwMTAlMjAxMiUyMDE1JTIwMTclMjAxMCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEElM0MlMkZzdmclM0UpO1xuICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IC45MzZyZW07XG4gIGN1cnNvcjogcG9pbnRlcjsgfVxuICBbZGlyPVwicnRsXCJdIC5tZGMtc2VsZWN0LCAubWRjLXNlbGVjdFtkaXI9XCJydGxcIl0ge1xuICAgIHBhZGRpbmctbGVmdDogMjRweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwOyB9XG4gIC5tZGMtc2VsZWN0OjotbXMtZXhwYW5kIHtcbiAgICBkaXNwbGF5OiBub25lOyB9XG4gIC5tZGMtc2VsZWN0OmZvY3VzIHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjM2Y1MWI1O1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLW1kYy10aGVtZS1wcmltYXJ5LCAjM2Y1MWI1KTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNik7IH1cbiAgW2Rpcj1cInJ0bFwiXSAubWRjLXNlbGVjdCwgLm1kYy1zZWxlY3RbZGlyPVwicnRsXCJdIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IGNlbnRlcjsgfVxuICAubWRjLXNlbGVjdC0tdGhlbWUtZGFyayxcbiAgLm1kYy10aGVtZS0tZGFyayAubWRjLXNlbGVjdCB7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1wcmltYXJ5LW9uLWRhcmssIHdoaXRlKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMTBweCUyMiUyMGhlaWdodCUzRCUyMjVweCUyMiUyMHZpZXdCb3glM0QlMjI3JTIwMTAlMjAxMCUyMDUlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB4bWxucyUzQXhsaW5rJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGxpbmslMjIlM0UlMEElMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwaWQlM0QlMjJTaGFwZSUyMiUyMHN0cm9rZSUzRCUyMm5vbmUlMjIlMjBmaWxsJTNEJTIyJTIzZmZmZmZmJTIyJTIwZmlsbC1ydWxlJTNEJTIyZXZlbm9kZCUyMiUyMG9wYWNpdHklM0QlMjIwLjU0JTIyJTIwcG9pbnRzJTNEJTIyNyUyMDEwJTIwMTIlMjAxNSUyMDE3JTIwMTAlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBBJTNDJTJGc3ZnJTNFKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTsgfVxuICAgIC5tZGMtc2VsZWN0LS10aGVtZS1kYXJrOmZvY3VzLFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1zZWxlY3Q6Zm9jdXMge1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzNmNTFiNTtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLW1kYy10aGVtZS1wcmltYXJ5LCAjM2Y1MWI1KTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOSk7IH1cbiAgLm1kYy1zZWxlY3RfX21lbnUge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcbiAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7XG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsOyB9XG4gIC5tZGMtc2VsZWN0X19zZWxlY3RlZC10ZXh0IHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMTI1bXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpLCAtd2Via2l0LXRyYW5zZm9ybSAxMjVtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxMjVtcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDEyNW1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDEyNW1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKSwgdHJhbnNmb3JtIDEyNW1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDEyNW1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKSwgdHJhbnNmb3JtIDEyNW1zIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gMTI1bXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuXG4ubWRjLXNlbGVjdC0tb3BlbiAubWRjLXNlbGVjdF9fc2VsZWN0ZWQtdGV4dCB7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDhweCk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDhweCk7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAxMjVtcyAxMjVtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gMTI1bXMgMTI1bXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMTI1bXMgMTI1bXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDEyNW1zIDEyNW1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDEyNW1zIDEyNW1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpLCB0cmFuc2Zvcm0gMTI1bXMgMTI1bXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMTI1bXMgMTI1bXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIHRyYW5zZm9ybSAxMjVtcyAxMjVtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gMTI1bXMgMTI1bXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gIG9wYWNpdHk6IDA7IH1cblxuLm1kYy1zZWxlY3QtLWRpc2FibGVkLFxuLm1kYy1zZWxlY3RbZGlzYWJsZWRdIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XG4gIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1kaXNhYmxlZC1vbi1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjM4KSk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIwd2lkdGglM0QlMjIxMHB4JTIyJTIwaGVpZ2h0JTNEJTIyNXB4JTIyJTIwdmlld0JveCUzRCUyMjclMjAxMCUyMDEwJTIwNSUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHhtbG5zJTNBeGxpbmslM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4bGluayUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBpZCUzRCUyMlNoYXBlJTIyJTIwc3Ryb2tlJTNEJTIybm9uZSUyMiUyMGZpbGwlM0QlMjIlMjMwJTIyJTIwZmlsbC1ydWxlJTNEJTIyZXZlbm9kZCUyMiUyMG9wYWNpdHklM0QlMjIwLjM4JTIyJTIwcG9pbnRzJTNEJTIyNyUyMDEwJTIwMTIlMjAxNSUyMDE3JTIwMTAlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBBJTNDJTJGc3ZnJTNFKTtcbiAgYm9yZGVyLWJvdHRvbS1zdHlsZTogZG90dGVkO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lOyB9XG4gIC5tZGMtc2VsZWN0LS10aGVtZS1kYXJrLm1kYy1zZWxlY3QtLWRpc2FibGVkLCAubWRjLXNlbGVjdFtkaXNhYmxlZF0sXG4gIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1zZWxlY3QtLWRpc2FibGVkLFxuICAubWRjLXRoZW1lLS1kYXJrXG4gIC5tZGMtc2VsZWN0W2Rpc2FibGVkXSB7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtZGlzYWJsZWQtb24tZGFyaywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMTBweCUyMiUyMGhlaWdodCUzRCUyMjVweCUyMiUyMHZpZXdCb3glM0QlMjI3JTIwMTAlMjAxMCUyMDUlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB4bWxucyUzQXhsaW5rJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGxpbmslMjIlM0UlMEElMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwaWQlM0QlMjJTaGFwZSUyMiUyMHN0cm9rZSUzRCUyMm5vbmUlMjIlMjBmaWxsJTNEJTIyJTIzZmZmZmZmJTIyJTIwZmlsbC1ydWxlJTNEJTIyZXZlbm9kZCUyMiUyMG9wYWNpdHklM0QlMjIwLjM4JTIyJTIwcG9pbnRzJTNEJTIyNyUyMDEwJTIwMTIlMjAxNSUyMDE3JTIwMTAlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBBJTNDJTJGc3ZnJTNFKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zOCk7IH1cblxuLm1kYy1zZWxlY3RfX21lbnUgLm1kYy1saXN0LWl0ZW0ge1xuICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICBsaW5lLWhlaWdodDogMS43NXJlbTtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XG4gIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1zZWNvbmRhcnktb24tbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC41NCkpOyB9XG4gIC5tZGMtc2VsZWN0X19tZW51IC5tZGMtbGlzdC1pdGVtW2FyaWEtc2VsZWN0ZWQ9XCJ0cnVlXCJdIHtcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbiAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjg3KSk7IH1cbiAgLm1kYy1zZWxlY3QtLXRoZW1lLWRhcmsgLm1kYy1zZWxlY3RfX21lbnUgLm1kYy1saXN0LWl0ZW0sXG4gIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy1zZWxlY3RfX21lbnUgLm1kYy1saXN0LWl0ZW0ge1xuICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG4gICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LXNlY29uZGFyeS1vbi1kYXJrLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykpOyB9XG4gICAgLm1kYy1zZWxlY3QtLXRoZW1lLWRhcmsgLm1kYy1zZWxlY3RfX21lbnUgLm1kYy1saXN0LWl0ZW1bYXJpYS1zZWxlY3RlZD1cInRydWVcIl0sXG4gICAgLm1kYy10aGVtZS0tZGFyayAubWRjLXNlbGVjdF9fbWVudSAubWRjLWxpc3QtaXRlbVthcmlhLXNlbGVjdGVkPVwidHJ1ZVwiXSB7XG4gICAgICBjb2xvcjogd2hpdGU7XG4gICAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1kYXJrLCB3aGl0ZSk7IH1cblxuLm1kYy1zZWxlY3RfX21lbnUgLm1kYy1saXN0LWdyb3VwLFxuLm1kYy1zZWxlY3RfX21lbnUgLm1kYy1saXN0LWdyb3VwID4gLm1kYy1saXN0LWl0ZW06Zmlyc3QtY2hpbGQge1xuICBtYXJnaW4tdG9wOiAxMnB4OyB9XG5cbi5tZGMtc2VsZWN0X19tZW51IC5tZGMtbGlzdC1ncm91cCB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xuICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtaGludC1vbi1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjM4KSk7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7IH1cbiAgLm1kYy1zZWxlY3RfX21lbnUgLm1kYy1saXN0LWdyb3VwIC5tZGMtbGlzdC1pdGVtIHtcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbiAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjg3KSk7IH1cblxuLm1kYy1zZWxlY3QtLXRoZW1lLWRhcmsgLm1kYy1zZWxlY3RfX21lbnUgLm1kYy1saXN0LWdyb3VwLFxuLm1kYy10aGVtZS0tZGFyayAubWRjLXNlbGVjdF9fbWVudSAubWRjLWxpc3QtZ3JvdXAge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtaGludC1vbi1kYXJrLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkpOyB9XG4gIC5tZGMtc2VsZWN0LS10aGVtZS1kYXJrIC5tZGMtc2VsZWN0X19tZW51IC5tZGMtbGlzdC1ncm91cCAubWRjLWxpc3QtaXRlbSxcbiAgLm1kYy10aGVtZS0tZGFyayAubWRjLXNlbGVjdF9fbWVudSAubWRjLWxpc3QtZ3JvdXAgLm1kYy1saXN0LWl0ZW0ge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1kYXJrLCB3aGl0ZSk7IH1cblxuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ3JlYXRlcyBhIHJ1bGUgdGhhdCB3aWxsIGJlIGFwcGxpZWQgd2hlbiBhbiBNREMtV2ViIGNvbXBvbmVudCBpcyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYW4gUlRMIGxheW91dC5cbiAqXG4gKiBVc2FnZSBFeGFtcGxlOlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gKiAgIGxlZnQ6IDA7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtcnRsIHtcbiAqICAgICBsZWZ0OiBhdXRvO1xuICogICAgIHJpZ2h0OiAwO1xuICogICB9XG4gKlxuICogICAmX19iYXIge1xuICogICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gKiAgICAgQGluY2x1ZGUgbWRjLXJ0bChcIi5tZGMtZm9vXCIpIHtcbiAqICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICogICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKlxuICogLm1kYy1mb28tLW1vZCB7XG4gKiAgIHBhZGRpbmctbGVmdDogNHB4O1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bCB7XG4gKiAgICAgcGFkZGluZy1sZWZ0OiBhdXRvO1xuICogICAgIHBhZGRpbmctcmlnaHQ6IDRweDtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogTm90ZSB0aGF0IHRoaXMgd29ya3MgYnkgY2hlY2tpbmcgZm9yIFtkaXI9XCJydGxcIl0gb24gYW4gYW5jZXN0b3IgZWxlbWVudC4gV2hpbGUgdGhpcyB3aWxsIHdvcmtcbiAqIGluIG1vc3QgY2FzZXMsIGl0IHdpbGwgaW4gc29tZSBjYXNlcyBsZWFkIHRvIGZhbHNlIG5lZ2F0aXZlcywgZS5nLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxodG1sIGRpcj1cInJ0bFwiPlxuICogICA8IS0tIC4uLiAtLT5cbiAqICAgPGRpdiBkaXI9XCJsdHJcIj5cbiAqICAgICA8ZGl2IGNsYXNzPVwibWRjLWZvb1wiPlN0eWxlZCBpbmNvcnJlY3RseSBhcyBSVEwhPC9kaXY+XG4gKiAgIDwvZGl2PlxuICogPC9odG1sPlxuICogYGBgXG4gKlxuICogSW4gdGhlIGZ1dHVyZSwgc2VsZWN0b3JzIHN1Y2ggYXMgOmRpciAoaHR0cDovL21kbi5pby86ZGlyKSB3aWxsIGhlbHAgdXMgbWl0aWdhdGUgdGhpcy5cbiAqL1xuLyoqXG4gKiBUYWtlcyBhIGJhc2UgYm94LW1vZGVsIHByb3BlcnR5IC0gZS5nLiBtYXJnaW4gLyBib3JkZXIgLyBwYWRkaW5nIC0gYWxvbmcgd2l0aCBhIGRlZmF1bHRcbiAqIGRpcmVjdGlvbiBhbmQgdmFsdWUsIGFuZCBlbWl0cyBydWxlcyB3aGljaCBhcHBseSB0aGUgdmFsdWUgdG8gdGhlXG4gKiBcIjxiYXNlLXByb3BlcnR5Pi08ZGVmYXVsdC1kaXJlY3Rpb24+XCIgcHJvcGVydHkgYnkgZGVmYXVsdCwgYnV0IGZsaXBzIHRoZSBkaXJlY3Rpb25cbiAqIHdoZW4gd2l0aGluIGFuIFJUTCBjb250ZXh0LlxuICpcbiAqIEZvciBleGFtcGxlOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bC1yZWZsZXhpdmUtYm94KG1hcmdpbiwgbGVmdCwgOHB4KTtcbiAqIH1cbiAqIGBgYFxuICogaXMgZXF1aXZhbGVudCB0bzpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtcnRsIHtcbiAqICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAqICAgICBtYXJnaW4tbGVmdDogMDtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKiB3aGVyZWFzOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bC1yZWZsZXhpdmUtYm94KG1hcmdpbiwgcmlnaHQsIDhweCk7XG4gKiB9XG4gKiBgYGBcbiAqIGlzIGVxdWl2YWxlbnQgdG86XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAqXG4gKiAgIEBpbmNsdWRlIG1kYy1ydGwge1xuICogICAgIG1hcmdpbi1yaWdodDogMDtcbiAqICAgICBtYXJnaW4tbGVmdDogOHB4O1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBZb3UgY2FuIGFsc28gcGFzcyBhIDR0aCBvcHRpb25hbCAkcm9vdC1zZWxlY3RvciBhcmd1bWVudCB3aGljaCB3aWxsIGJlIGZvcndhcmRlZCB0byBgbWRjLXJ0bGAsXG4gKiBlLmcuIGBAaW5jbHVkZSBtZGMtcnRsLXJlZmxleGl2ZS1ib3gtcHJvcGVydHkobWFyZ2luLCBsZWZ0LCA4cHgsIFwiLm1kYy1jb21wb25lbnRcIilgLlxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHplcm8gb3V0IHRoZSBvcmlnaW5hbCB2YWx1ZSBpbiBhbiBSVEwgY29udGV4dC4gSWYgeW91J3JlXG4gKiB0cnlpbmcgdG8gZmxpcCB0aGUgdmFsdWVzLCB1c2UgbWRjLXJ0bC1yZWZsZXhpdmUtcHJvcGVydHkoKS5cbiAqL1xuLyoqXG4gKiBUYWtlcyBhIGJhc2UgcHJvcGVydHkgYW5kIGVtaXRzIHJ1bGVzIHRoYXQgYXNzaWduIDxiYXNlLXByb3BlcnR5Pi1sZWZ0IHRvIDxsZWZ0LXZhbHVlPiBhbmRcbiAqIDxiYXNlLXByb3BlcnR5Pi1yaWdodCB0byA8cmlnaHQtdmFsdWU+IGluIGEgTFRSIGNvbnRleHQsIGFuZCB2aWNlIHZlcnNhIGluIGEgUlRMIGNvbnRleHQuXG4gKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIEBpbmNsdWRlIG1kYy1ydGwtcmVmbGV4aXZlLXByb3BlcnR5KG1hcmdpbiwgYXV0bywgMTJweCk7XG4gKiB9XG4gKiBgYGBcbiAqIGlzIGVxdWl2YWxlbnQgdG86XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBtYXJnaW4tbGVmdDogYXV0bztcbiAqICAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bCB7XG4gKiAgICAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gKiAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBBIDR0aCBvcHRpb25hbCAkcm9vdC1zZWxlY3RvciBhcmd1bWVudCBjYW4gYmUgZ2l2ZW4sIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIGBtZGMtcnRsYC5cbiAqL1xuLyoqXG4gKiBUYWtlcyBhbiBhcmd1bWVudCBzcGVjaWZ5aW5nIGEgaG9yaXpvbnRhbCBwb3NpdGlvbiBwcm9wZXJ0eSAoZWl0aGVyIFwibGVmdFwiIG9yIFwicmlnaHRcIikgYXMgd2VsbFxuICogYXMgYSB2YWx1ZSwgYW5kIGFwcGxpZXMgdGhhdCB2YWx1ZSB0byB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIGluIGEgTFRSIGNvbnRleHQsIGFuZCBmbGlwcyBpdCBpbiBhXG4gKiBSVEwgY29udGV4dC4gRm9yIGV4YW1wbGU6XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBAaW5jbHVkZSBtZGMtcnRsLXJlZmxleGl2ZS1wb3NpdGlvbihsZWZ0LCAwKTtcbiAqICAgcG9zaXRpb246IGFic29sdXRlO1xuICogfVxuICogYGBgXG4gKiBpcyBlcXVpdmFsZW50IHRvOlxuICpcbiAqIGBgYHNjc3NcbiAqICAubWRjLWZvbyB7XG4gKiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gKiAgICBsZWZ0OiAwO1xuICogICAgcmlnaHQ6IGluaXRpYWw7XG4gKlxuICogICAgQGluY2x1ZGUgbWRjLXJ0bCB7XG4gKiAgICAgIHJpZ2h0OiAwO1xuICogICAgICBsZWZ0OiBpbml0aWFsO1xuICogICAgfVxuICogIH1cbiAqIGBgYFxuICogQW4gb3B0aW9uYWwgdGhpcmQgJHJvb3Qtc2VsZWN0b3IgYXJndW1lbnQgbWF5IGFsc28gYmUgZ2l2ZW4sIHdoaWNoIGlzIHBhc3NlZCB0byBgbWRjLXJ0bGAuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKlxuICBQcmVjb21wdXRlZCBsaW5lYXIgY29sb3IgY2hhbm5lbCB2YWx1ZXMsIGZvciB1c2UgaW4gY29udHJhc3QgY2FsY3VsYXRpb25zLlxuICBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcblxuICBBbGdvcml0aG0sIGZvciBjIGluIDAgdG8gMjU1OlxuICBmKGMpIHtcbiAgICBjID0gYyAvIDI1NTtcbiAgICByZXR1cm4gYyA8IDAuMDM5MjggPyBjIC8gMTIuOTIgOiBNYXRoLnBvdygoYyArIDAuMDU1KSAvIDEuMDU1LCAyLjQpO1xuICB9XG5cbiAgVGhpcyBsb29rdXAgdGFibGUgaXMgbmVlZGVkIHNpbmNlIHRoZXJlIGlzIG5vIGBwb3dgIGluIFNBU1MuXG4qL1xuLyogQWxsIHZhcmlhYmxlcyBhcmUgbG9jYWwsIHNvIGRpc2FibGUgcGF0dGVybiBjaGVja2luZy4gKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBsdW1pbmFuY2UgZm9yIGEgY29sb3IuXG4gKiBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcbiAqL1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGNvbnRyYXN0IHJhdGlvIGJldHdlZW4gdHdvIGNvbG9ycy5cbiAqIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuICovXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIHRvIHVzZSBkYXJrIG9yIGxpZ2h0IHRleHQgb24gdG9wIG9mIGdpdmVuIGNvbG9yLlxuICogUmV0dXJucyBcImRhcmtcIiBmb3IgZGFyayB0ZXh0IGFuZCBcImxpZ2h0XCIgZm9yIGxpZ2h0IHRleHQuXG4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLypcbiAgTWFpbiB0aGVtZSBjb2xvcnMuXG4gIElmIHlvdSdyZSBhIHVzZXIgY3VzdG9taXppbmcgeW91ciBjb2xvciBzY2hlbWUgaW4gU0FTUywgdGhlc2UgYXJlIHByb2JhYmx5IHRoZSBvbmx5IHZhcmlhYmxlcyB5b3UgbmVlZCB0byBjaGFuZ2UuXG4qL1xuLyogSW5kaWdvIDUwMCAqL1xuLyogUGluayBBMjAwICovXG4vKiBXaGl0ZSAqL1xuLyogV2hpY2ggc2V0IG9mIHRleHQgY29sb3JzIHRvIHVzZSBmb3IgZWFjaCBtYWluIHRoZW1lIGNvbG9yIChsaWdodCBvciBkYXJrKSAqL1xuLyogVGV4dCBjb2xvcnMgYWNjb3JkaW5nIHRvIGxpZ2h0IHZzIGRhcmsgYW5kIHRleHQgdHlwZSAqL1xuLyogUHJpbWFyeSB0ZXh0IGNvbG9ycyBmb3IgZWFjaCBvZiB0aGUgdGhlbWUgY29sb3JzICovXG4vKiBBbGwgdmFyaWFibGVzIGFyZSBsb2NhbCwgc28gZGlzYWJsZSBwYXR0ZXJuIGNoZWNraW5nLiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBBcHBsaWVzIHRoZSBjb3JyZWN0IHRoZW1lIGNvbG9yIHN0eWxlIHRvIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkuXG4gKiAkcHJvcGVydHkgaXMgdHlwaWNhbGx5IGNvbG9yIG9yIGJhY2tncm91bmQtY29sb3IsIGJ1dCBjYW4gYmUgYW55IENTUyBwcm9wZXJ0eSB0aGF0IGFjY2VwdHMgY29sb3IgdmFsdWVzLlxuICogJHN0eWxlIHNob3VsZCBiZSBvbmUgb2YgdGhlIG1hcCBrZXlzIGluICRtZGMtdGhlbWUtcHJvcGVydHktdmFsdWVzIChfdmFyaWFibGVzLnNjc3MpLlxuICovXG4vKipcbiAqIENyZWF0ZXMgYSBydWxlIHRvIGJlIHVzZWQgaW4gTURDLVdlYiBjb21wb25lbnRzIGZvciBkYXJrIHRoZW1pbmcsIGFuZCBhcHBsaWVzIHRoZSBwcm92aWRlZCBjb250ZW50cy5cbiAqIFNob3VsZCBwcm92aWRlIHRoZSAkcm9vdC1zZWxlY3RvciBvcHRpb24gaWYgYXBwbGllZCB0byBhbnl0aGluZyBvdGhlciB0aGFuIHRoZSByb290IHNlbGVjdG9yLlxuICogV2hlbiB1c2VkIHdpdGggYSBtb2RpZmllciBjbGFzcywgcHJvdmlkZSBhIHNlY29uZCBhcmd1bWVudCBvZiBgdHJ1ZWAgZm9yIHRoZSAkY29tcG91bmQgcGFyYW1ldGVyXG4gKiB0byBzcGVjaWZ5IHRoYXQgdGhpcyBzaG91bGQgYmUgYXR0YWNoZWQgYXMgYSBjb21wb3VuZCBjbGFzcy5cbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgY29sb3I6IGJsYWNrO1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsge1xuICogICAgIGNvbG9yOiB3aGl0ZTtcbiAqICAgfVxuICpcbiAqICAgJl9fYmFyIHtcbiAqICAgICBiYWNrZ3JvdW5kOiBibGFjaztcbiAqXG4gKiAgICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsoXCIubWRjLWZvb1wiKSB7XG4gKiAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAqICAgICB9XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAubWRjLWZvby0tZGlzYWJsZWQge1xuICogICBvcGFjaXR5OiAuMzg7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtdGhlbWUtZGFyayhcIi5tZGMtZm9vXCIsIHRydWUpIHtcbiAqICAgICBvcGFjaXR5OiAuNTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiBUT0RPKHNnb21lcyk6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyBhYm91dCBkZXNrdG9wIGZvbnQgc2l6ZXMuICovXG4vKiBUT0RPKHNnb21lcyk6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyBhYm91dCBpMThuIGFuZCBpMThuIGZvbnQgc2l6ZXMuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogcG9zdGNzcy1iZW0tbGludGVyOiBkZWZpbmUgc25hY2tiYXIgKi9cbi5tZGMtc25hY2tiYXIge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiA1MCU7XG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XG4gICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0O1xuICAgICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBwYWRkaW5nLXJpZ2h0OiAyNHB4O1xuICBwYWRkaW5nLWxlZnQ6IDI0cHg7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMTAwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMTAwJSk7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4yNXMgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICB0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAwLjI1cyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjI1cyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjI1cyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDAuMjVzIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMyMzIzMjtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIC8qIHN0eWxlbGludC1kaXNhYmxlIHBsdWdpbi9zZWxlY3Rvci1iZW0tcGF0dGVybiAqL1xuICAvKiBzdHlsZWxpbnQtZW5hYmxlIHBsdWdpbi9zZWxlY3Rvci1iZW0tcGF0dGVybiAqLyB9XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA1OTlweCkge1xuICAgIC5tZGMtc25hY2tiYXIge1xuICAgICAgbGVmdDogMDtcbiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0OHB4KTsgfSB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkge1xuICAgIC5tZGMtc25hY2tiYXIge1xuICAgICAgbWluLXdpZHRoOiAyODhweDtcbiAgICAgIG1heC13aWR0aDogNTY4cHg7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDEwMCUpO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAxMDAlKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsgfSB9XG4gIC5tZGMtc25hY2tiYXItLWFjdGl2ZSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4yNXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgIHRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuMjVzIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yNXMgMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjI1cyAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDAuMjVzIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsgfVxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkge1xuICAgICAgLm1kYy1zbmFja2Jhci0tYWN0aXZlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAwKTtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAwKTsgfSB9XG4gIC5tZGMtc25hY2tiYXItLWFjdGlvbi1vbi1ib3R0b20ge1xuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XG4gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfVxuICAubWRjLXNuYWNrYmFyLS1hY3Rpb24tb24tYm90dG9tIC5tZGMtc25hY2tiYXJfX3RleHQge1xuICAgIG1hcmdpbi1yaWdodDogaW5oZXJpdDsgfVxuICAubWRjLXNuYWNrYmFyLS1hY3Rpb24tb24tYm90dG9tIC5tZGMtc25hY2tiYXJfX2FjdGlvbi13cmFwcGVyIHtcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsO1xuICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7XG4gICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIG1hcmdpbi10b3A6IC0xMnB4O1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi8gfVxuICAgIFtkaXI9XCJydGxcIl0gLm1kYy1zbmFja2Jhci0tYWN0aW9uLW9uLWJvdHRvbSAubWRjLXNuYWNrYmFyX19hY3Rpb24td3JhcHBlciwgLm1kYy1zbmFja2Jhci0tYWN0aW9uLW9uLWJvdHRvbSAubWRjLXNuYWNrYmFyX19hY3Rpb24td3JhcHBlcltkaXI9XCJydGxcIl0ge1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87IH1cbiAgLm1kYy1zbmFja2Jhcl9fdGV4dCB7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgIC8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBvcGFjaXR5OiAwOyB9XG4gICAgW2Rpcj1cInJ0bFwiXSAubWRjLXNuYWNrYmFyIC5tZGMtc25hY2tiYXJfX3RleHQsXG4gICAgLm1kYy1zbmFja2JhcltkaXI9XCJydGxcIl0gLm1kYy1zbmFja2Jhcl9fdGV4dCB7XG4gICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgIG1hcmdpbi1yaWdodDogMDsgfVxuICAubWRjLXNuYWNrYmFyLS1tdWx0aWxpbmUgLm1kYy1zbmFja2Jhcl9fdGV4dCB7XG4gICAgaGVpZ2h0OiA4MHB4OyB9XG4gIC5tZGMtc25hY2tiYXItLW11bHRpbGluZS5tZGMtc25hY2tiYXItLWFjdGlvbi1vbi1ib3R0b20gLm1kYy1zbmFja2Jhcl9fdGV4dCB7XG4gICAgbWFyZ2luOiAwOyB9XG4gIC5tZGMtc25hY2tiYXJfX2FjdGlvbi1idXR0b24ge1xuICAgIGNvbG9yOiAjZmY0MDgxO1xuICAgIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtYWNjZW50LCAjZmY0MDgxKTtcbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIG1hcmdpbi1yaWdodDogLTE2cHg7XG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4gICAgbWluLXdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogaW5oZXJpdDtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuICAgIFtkaXI9XCJydGxcIl0gLm1kYy1zbmFja2JhciAubWRjLXNuYWNrYmFyX19hY3Rpb24tYnV0dG9uLFxuICAgIC5tZGMtc25hY2tiYXJbZGlyPVwicnRsXCJdIC5tZGMtc25hY2tiYXJfX2FjdGlvbi1idXR0b24ge1xuICAgICAgbWFyZ2luLWxlZnQ6IC0xNnB4O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwOyB9XG4gICAgLm1kYy1zbmFja2Jhcl9fYWN0aW9uLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgICBib3JkZXI6IDA7IH1cbiAgICAubWRjLXNuYWNrYmFyX19hY3Rpb24tYnV0dG9uOm5vdChbYXJpYS1oaWRkZW5dKSB7XG4gICAgICB2aXNpYmlsaXR5OiBpbmhlcml0OyB9XG4gIC5tZGMtc25hY2tiYXItLWFjdGl2ZSAubWRjLXNuYWNrYmFyX190ZXh0LFxuICAubWRjLXNuYWNrYmFyLS1hY3RpdmUgLm1kYy1zbmFja2Jhcl9fYWN0aW9uLWJ1dHRvbjpub3QoW2FyaWEtaGlkZGVuXSkge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgIG9wYWNpdHk6IDE7IH1cblxuLyogcG9zdGNzcy1iZW0tbGludGVyOiBlbmQgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ3JlYXRlcyBhIHJ1bGUgdGhhdCB3aWxsIGJlIGFwcGxpZWQgd2hlbiBhbiBNREMtV2ViIGNvbXBvbmVudCBpcyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYW4gUlRMIGxheW91dC5cbiAqXG4gKiBVc2FnZSBFeGFtcGxlOlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gKiAgIGxlZnQ6IDA7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtcnRsIHtcbiAqICAgICBsZWZ0OiBhdXRvO1xuICogICAgIHJpZ2h0OiAwO1xuICogICB9XG4gKlxuICogICAmX19iYXIge1xuICogICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gKiAgICAgQGluY2x1ZGUgbWRjLXJ0bChcIi5tZGMtZm9vXCIpIHtcbiAqICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICogICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKlxuICogLm1kYy1mb28tLW1vZCB7XG4gKiAgIHBhZGRpbmctbGVmdDogNHB4O1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bCB7XG4gKiAgICAgcGFkZGluZy1sZWZ0OiBhdXRvO1xuICogICAgIHBhZGRpbmctcmlnaHQ6IDRweDtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogTm90ZSB0aGF0IHRoaXMgd29ya3MgYnkgY2hlY2tpbmcgZm9yIFtkaXI9XCJydGxcIl0gb24gYW4gYW5jZXN0b3IgZWxlbWVudC4gV2hpbGUgdGhpcyB3aWxsIHdvcmtcbiAqIGluIG1vc3QgY2FzZXMsIGl0IHdpbGwgaW4gc29tZSBjYXNlcyBsZWFkIHRvIGZhbHNlIG5lZ2F0aXZlcywgZS5nLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxodG1sIGRpcj1cInJ0bFwiPlxuICogICA8IS0tIC4uLiAtLT5cbiAqICAgPGRpdiBkaXI9XCJsdHJcIj5cbiAqICAgICA8ZGl2IGNsYXNzPVwibWRjLWZvb1wiPlN0eWxlZCBpbmNvcnJlY3RseSBhcyBSVEwhPC9kaXY+XG4gKiAgIDwvZGl2PlxuICogPC9odG1sPlxuICogYGBgXG4gKlxuICogSW4gdGhlIGZ1dHVyZSwgc2VsZWN0b3JzIHN1Y2ggYXMgOmRpciAoaHR0cDovL21kbi5pby86ZGlyKSB3aWxsIGhlbHAgdXMgbWl0aWdhdGUgdGhpcy5cbiAqL1xuLyoqXG4gKiBUYWtlcyBhIGJhc2UgYm94LW1vZGVsIHByb3BlcnR5IC0gZS5nLiBtYXJnaW4gLyBib3JkZXIgLyBwYWRkaW5nIC0gYWxvbmcgd2l0aCBhIGRlZmF1bHRcbiAqIGRpcmVjdGlvbiBhbmQgdmFsdWUsIGFuZCBlbWl0cyBydWxlcyB3aGljaCBhcHBseSB0aGUgdmFsdWUgdG8gdGhlXG4gKiBcIjxiYXNlLXByb3BlcnR5Pi08ZGVmYXVsdC1kaXJlY3Rpb24+XCIgcHJvcGVydHkgYnkgZGVmYXVsdCwgYnV0IGZsaXBzIHRoZSBkaXJlY3Rpb25cbiAqIHdoZW4gd2l0aGluIGFuIFJUTCBjb250ZXh0LlxuICpcbiAqIEZvciBleGFtcGxlOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bC1yZWZsZXhpdmUtYm94KG1hcmdpbiwgbGVmdCwgOHB4KTtcbiAqIH1cbiAqIGBgYFxuICogaXMgZXF1aXZhbGVudCB0bzpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtcnRsIHtcbiAqICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAqICAgICBtYXJnaW4tbGVmdDogMDtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKiB3aGVyZWFzOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bC1yZWZsZXhpdmUtYm94KG1hcmdpbiwgcmlnaHQsIDhweCk7XG4gKiB9XG4gKiBgYGBcbiAqIGlzIGVxdWl2YWxlbnQgdG86XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAqXG4gKiAgIEBpbmNsdWRlIG1kYy1ydGwge1xuICogICAgIG1hcmdpbi1yaWdodDogMDtcbiAqICAgICBtYXJnaW4tbGVmdDogOHB4O1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBZb3UgY2FuIGFsc28gcGFzcyBhIDR0aCBvcHRpb25hbCAkcm9vdC1zZWxlY3RvciBhcmd1bWVudCB3aGljaCB3aWxsIGJlIGZvcndhcmRlZCB0byBgbWRjLXJ0bGAsXG4gKiBlLmcuIGBAaW5jbHVkZSBtZGMtcnRsLXJlZmxleGl2ZS1ib3gtcHJvcGVydHkobWFyZ2luLCBsZWZ0LCA4cHgsIFwiLm1kYy1jb21wb25lbnRcIilgLlxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHplcm8gb3V0IHRoZSBvcmlnaW5hbCB2YWx1ZSBpbiBhbiBSVEwgY29udGV4dC4gSWYgeW91J3JlXG4gKiB0cnlpbmcgdG8gZmxpcCB0aGUgdmFsdWVzLCB1c2UgbWRjLXJ0bC1yZWZsZXhpdmUtcHJvcGVydHkoKS5cbiAqL1xuLyoqXG4gKiBUYWtlcyBhIGJhc2UgcHJvcGVydHkgYW5kIGVtaXRzIHJ1bGVzIHRoYXQgYXNzaWduIDxiYXNlLXByb3BlcnR5Pi1sZWZ0IHRvIDxsZWZ0LXZhbHVlPiBhbmRcbiAqIDxiYXNlLXByb3BlcnR5Pi1yaWdodCB0byA8cmlnaHQtdmFsdWU+IGluIGEgTFRSIGNvbnRleHQsIGFuZCB2aWNlIHZlcnNhIGluIGEgUlRMIGNvbnRleHQuXG4gKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBgYGBzY3NzXG4gKiAubWRjLWZvbyB7XG4gKiAgIEBpbmNsdWRlIG1kYy1ydGwtcmVmbGV4aXZlLXByb3BlcnR5KG1hcmdpbiwgYXV0bywgMTJweCk7XG4gKiB9XG4gKiBgYGBcbiAqIGlzIGVxdWl2YWxlbnQgdG86XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBtYXJnaW4tbGVmdDogYXV0bztcbiAqICAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXJ0bCB7XG4gKiAgICAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gKiAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBBIDR0aCBvcHRpb25hbCAkcm9vdC1zZWxlY3RvciBhcmd1bWVudCBjYW4gYmUgZ2l2ZW4sIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIGBtZGMtcnRsYC5cbiAqL1xuLyoqXG4gKiBUYWtlcyBhbiBhcmd1bWVudCBzcGVjaWZ5aW5nIGEgaG9yaXpvbnRhbCBwb3NpdGlvbiBwcm9wZXJ0eSAoZWl0aGVyIFwibGVmdFwiIG9yIFwicmlnaHRcIikgYXMgd2VsbFxuICogYXMgYSB2YWx1ZSwgYW5kIGFwcGxpZXMgdGhhdCB2YWx1ZSB0byB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIGluIGEgTFRSIGNvbnRleHQsIGFuZCBmbGlwcyBpdCBpbiBhXG4gKiBSVEwgY29udGV4dC4gRm9yIGV4YW1wbGU6XG4gKlxuICogYGBgc2Nzc1xuICogLm1kYy1mb28ge1xuICogICBAaW5jbHVkZSBtZGMtcnRsLXJlZmxleGl2ZS1wb3NpdGlvbihsZWZ0LCAwKTtcbiAqICAgcG9zaXRpb246IGFic29sdXRlO1xuICogfVxuICogYGBgXG4gKiBpcyBlcXVpdmFsZW50IHRvOlxuICpcbiAqIGBgYHNjc3NcbiAqICAubWRjLWZvbyB7XG4gKiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gKiAgICBsZWZ0OiAwO1xuICogICAgcmlnaHQ6IGluaXRpYWw7XG4gKlxuICogICAgQGluY2x1ZGUgbWRjLXJ0bCB7XG4gKiAgICAgIHJpZ2h0OiAwO1xuICogICAgICBsZWZ0OiBpbml0aWFsO1xuICogICAgfVxuICogIH1cbiAqIGBgYFxuICogQW4gb3B0aW9uYWwgdGhpcmQgJHJvb3Qtc2VsZWN0b3IgYXJndW1lbnQgbWF5IGFsc28gYmUgZ2l2ZW4sIHdoaWNoIGlzIHBhc3NlZCB0byBgbWRjLXJ0bGAuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qXG4gIFByZWNvbXB1dGVkIGxpbmVhciBjb2xvciBjaGFubmVsIHZhbHVlcywgZm9yIHVzZSBpbiBjb250cmFzdCBjYWxjdWxhdGlvbnMuXG4gIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuXG4gIEFsZ29yaXRobSwgZm9yIGMgaW4gMCB0byAyNTU6XG4gIGYoYykge1xuICAgIGMgPSBjIC8gMjU1O1xuICAgIHJldHVybiBjIDwgMC4wMzkyOCA/IGMgLyAxMi45MiA6IE1hdGgucG93KChjICsgMC4wNTUpIC8gMS4wNTUsIDIuNCk7XG4gIH1cblxuICBUaGlzIGxvb2t1cCB0YWJsZSBpcyBuZWVkZWQgc2luY2UgdGhlcmUgaXMgbm8gYHBvd2AgaW4gU0FTUy5cbiovXG4vKiBBbGwgdmFyaWFibGVzIGFyZSBsb2NhbCwgc28gZGlzYWJsZSBwYXR0ZXJuIGNoZWNraW5nLiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGx1bWluYW5jZSBmb3IgYSBjb2xvci5cbiAqIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuICovXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgY29udHJhc3QgcmF0aW8gYmV0d2VlbiB0d28gY29sb3JzLlxuICogU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG4gKi9cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gdXNlIGRhcmsgb3IgbGlnaHQgdGV4dCBvbiB0b3Agb2YgZ2l2ZW4gY29sb3IuXG4gKiBSZXR1cm5zIFwiZGFya1wiIGZvciBkYXJrIHRleHQgYW5kIFwibGlnaHRcIiBmb3IgbGlnaHQgdGV4dC5cbiAqL1xuLyogc3R5bGVsaW50LWVuYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1wYXR0ZXJuICovXG4vKlxuICBNYWluIHRoZW1lIGNvbG9ycy5cbiAgSWYgeW91J3JlIGEgdXNlciBjdXN0b21pemluZyB5b3VyIGNvbG9yIHNjaGVtZSBpbiBTQVNTLCB0aGVzZSBhcmUgcHJvYmFibHkgdGhlIG9ubHkgdmFyaWFibGVzIHlvdSBuZWVkIHRvIGNoYW5nZS5cbiovXG4vKiBJbmRpZ28gNTAwICovXG4vKiBQaW5rIEEyMDAgKi9cbi8qIFdoaXRlICovXG4vKiBXaGljaCBzZXQgb2YgdGV4dCBjb2xvcnMgdG8gdXNlIGZvciBlYWNoIG1haW4gdGhlbWUgY29sb3IgKGxpZ2h0IG9yIGRhcmspICovXG4vKiBUZXh0IGNvbG9ycyBhY2NvcmRpbmcgdG8gbGlnaHQgdnMgZGFyayBhbmQgdGV4dCB0eXBlICovXG4vKiBQcmltYXJ5IHRleHQgY29sb3JzIGZvciBlYWNoIG9mIHRoZSB0aGVtZSBjb2xvcnMgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKlxuICBQcmVjb21wdXRlZCBsaW5lYXIgY29sb3IgY2hhbm5lbCB2YWx1ZXMsIGZvciB1c2UgaW4gY29udHJhc3QgY2FsY3VsYXRpb25zLlxuICBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcblxuICBBbGdvcml0aG0sIGZvciBjIGluIDAgdG8gMjU1OlxuICBmKGMpIHtcbiAgICBjID0gYyAvIDI1NTtcbiAgICByZXR1cm4gYyA8IDAuMDM5MjggPyBjIC8gMTIuOTIgOiBNYXRoLnBvdygoYyArIDAuMDU1KSAvIDEuMDU1LCAyLjQpO1xuICB9XG5cbiAgVGhpcyBsb29rdXAgdGFibGUgaXMgbmVlZGVkIHNpbmNlIHRoZXJlIGlzIG5vIGBwb3dgIGluIFNBU1MuXG4qL1xuLyogQWxsIHZhcmlhYmxlcyBhcmUgbG9jYWwsIHNvIGRpc2FibGUgcGF0dGVybiBjaGVja2luZy4gKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBsdW1pbmFuY2UgZm9yIGEgY29sb3IuXG4gKiBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcbiAqL1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGNvbnRyYXN0IHJhdGlvIGJldHdlZW4gdHdvIGNvbG9ycy5cbiAqIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuICovXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIHRvIHVzZSBkYXJrIG9yIGxpZ2h0IHRleHQgb24gdG9wIG9mIGdpdmVuIGNvbG9yLlxuICogUmV0dXJucyBcImRhcmtcIiBmb3IgZGFyayB0ZXh0IGFuZCBcImxpZ2h0XCIgZm9yIGxpZ2h0IHRleHQuXG4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLypcbiAgTWFpbiB0aGVtZSBjb2xvcnMuXG4gIElmIHlvdSdyZSBhIHVzZXIgY3VzdG9taXppbmcgeW91ciBjb2xvciBzY2hlbWUgaW4gU0FTUywgdGhlc2UgYXJlIHByb2JhYmx5IHRoZSBvbmx5IHZhcmlhYmxlcyB5b3UgbmVlZCB0byBjaGFuZ2UuXG4qL1xuLyogSW5kaWdvIDUwMCAqL1xuLyogUGluayBBMjAwICovXG4vKiBXaGl0ZSAqL1xuLyogV2hpY2ggc2V0IG9mIHRleHQgY29sb3JzIHRvIHVzZSBmb3IgZWFjaCBtYWluIHRoZW1lIGNvbG9yIChsaWdodCBvciBkYXJrKSAqL1xuLyogVGV4dCBjb2xvcnMgYWNjb3JkaW5nIHRvIGxpZ2h0IHZzIGRhcmsgYW5kIHRleHQgdHlwZSAqL1xuLyogUHJpbWFyeSB0ZXh0IGNvbG9ycyBmb3IgZWFjaCBvZiB0aGUgdGhlbWUgY29sb3JzICovXG4vKiBBbGwgdmFyaWFibGVzIGFyZSBsb2NhbCwgc28gZGlzYWJsZSBwYXR0ZXJuIGNoZWNraW5nLiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBBcHBsaWVzIHRoZSBjb3JyZWN0IHRoZW1lIGNvbG9yIHN0eWxlIHRvIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkuXG4gKiAkcHJvcGVydHkgaXMgdHlwaWNhbGx5IGNvbG9yIG9yIGJhY2tncm91bmQtY29sb3IsIGJ1dCBjYW4gYmUgYW55IENTUyBwcm9wZXJ0eSB0aGF0IGFjY2VwdHMgY29sb3IgdmFsdWVzLlxuICogJHN0eWxlIHNob3VsZCBiZSBvbmUgb2YgdGhlIG1hcCBrZXlzIGluICRtZGMtdGhlbWUtcHJvcGVydHktdmFsdWVzIChfdmFyaWFibGVzLnNjc3MpLlxuICovXG4vKipcbiAqIENyZWF0ZXMgYSBydWxlIHRvIGJlIHVzZWQgaW4gTURDLVdlYiBjb21wb25lbnRzIGZvciBkYXJrIHRoZW1pbmcsIGFuZCBhcHBsaWVzIHRoZSBwcm92aWRlZCBjb250ZW50cy5cbiAqIFNob3VsZCBwcm92aWRlIHRoZSAkcm9vdC1zZWxlY3RvciBvcHRpb24gaWYgYXBwbGllZCB0byBhbnl0aGluZyBvdGhlciB0aGFuIHRoZSByb290IHNlbGVjdG9yLlxuICogV2hlbiB1c2VkIHdpdGggYSBtb2RpZmllciBjbGFzcywgcHJvdmlkZSBhIHNlY29uZCBhcmd1bWVudCBvZiBgdHJ1ZWAgZm9yIHRoZSAkY29tcG91bmQgcGFyYW1ldGVyXG4gKiB0byBzcGVjaWZ5IHRoYXQgdGhpcyBzaG91bGQgYmUgYXR0YWNoZWQgYXMgYSBjb21wb3VuZCBjbGFzcy5cbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgY29sb3I6IGJsYWNrO1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsge1xuICogICAgIGNvbG9yOiB3aGl0ZTtcbiAqICAgfVxuICpcbiAqICAgJl9fYmFyIHtcbiAqICAgICBiYWNrZ3JvdW5kOiBibGFjaztcbiAqXG4gKiAgICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsoXCIubWRjLWZvb1wiKSB7XG4gKiAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAqICAgICB9XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAubWRjLWZvby0tZGlzYWJsZWQge1xuICogICBvcGFjaXR5OiAuMzg7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtdGhlbWUtZGFyayhcIi5tZGMtZm9vXCIsIHRydWUpIHtcbiAqICAgICBvcGFjaXR5OiAuNTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiBUT0RPKHNnb21lcyk6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyBhYm91dCBkZXNrdG9wIGZvbnQgc2l6ZXMuICovXG4vKiBUT0RPKHNnb21lcyk6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyBhYm91dCBpMThuIGFuZCBpMThuIGZvbnQgc2l6ZXMuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogVE9ETyhzZ29tZXMpOiBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gYWJvdXQgZGVza3RvcCBmb250IHNpemVzLiAqL1xuLyogVE9ETyhzZ29tZXMpOiBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gYWJvdXQgaTE4biBhbmQgaTE4biBmb250IHNpemVzLiAqL1xuLyogcG9zdGNzcy1iZW0tbGludGVyOiBkZWZpbmUgdGV4dGZpZWxkICovXG4ubWRjLXRleHRmaWVsZCB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICBmb250LXNpemU6IDFyZW07XG4gIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICB3aWxsLWNoYW5nZTogb3BhY2l0eSwgdHJhbnNmb3JtLCBjb2xvcjsgfVxuICAubWRjLXRleHRmaWVsZF9faW5wdXQge1xuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xuICAgIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1wcmltYXJ5LW9uLWxpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuODcpKTtcbiAgICBwYWRkaW5nOiAwIDAgOHB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTsgfVxuICAgIC5tZGMtdGV4dGZpZWxkX19pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KTtcbiAgICAgIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1oaW50LW9uLWxpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuMzgpKTtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogY29sb3IgMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIDE4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgICBvcGFjaXR5OiAxOyB9XG4gICAgLm1kYy10ZXh0ZmllbGRfX2lucHV0OjotbW96LXBsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xuICAgICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LWhpbnQtb24tbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC4zOCkpO1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBjb2xvciAxODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgICAgdHJhbnNpdGlvbjogY29sb3IgMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICAgIG9wYWNpdHk6IDE7IH1cbiAgICAubWRjLXRleHRmaWVsZF9faW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xuICAgICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LWhpbnQtb24tbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC4zOCkpO1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBjb2xvciAxODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgICAgdHJhbnNpdGlvbjogY29sb3IgMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICAgIG9wYWNpdHk6IDE7IH1cbiAgICAubWRjLXRleHRmaWVsZF9faW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xuICAgICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LWhpbnQtb24tbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC4zOCkpO1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBjb2xvciAxODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgICAgdHJhbnNpdGlvbjogY29sb3IgMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICAgIG9wYWNpdHk6IDE7IH1cbiAgICAubWRjLXRleHRmaWVsZF9faW5wdXQ6Zm9jdXMge1xuICAgICAgb3V0bGluZTogbm9uZTsgfVxuICAgICAgLm1kYy10ZXh0ZmllbGRfX2lucHV0OmZvY3VzOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1zZWNvbmRhcnktb24tbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC41NCkpOyB9XG4gICAgICAubWRjLXRleHRmaWVsZF9faW5wdXQ6Zm9jdXM6Oi1tb3otcGxhY2Vob2xkZXIge1xuICAgICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LXNlY29uZGFyeS1vbi1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjU0KSk7IH1cbiAgICAgIC5tZGMtdGV4dGZpZWxkX19pbnB1dDpmb2N1czotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LXNlY29uZGFyeS1vbi1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjU0KSk7IH1cbiAgICAgIC5tZGMtdGV4dGZpZWxkX19pbnB1dDpmb2N1czo6cGxhY2Vob2xkZXIge1xuICAgICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LXNlY29uZGFyeS1vbi1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjU0KSk7IH1cbiAgICAubWRjLXRleHRmaWVsZF9faW5wdXQ6aW52YWxpZCB7XG4gICAgICBib3gtc2hhZG93OiBub25lOyB9XG4gICAgLm1kYy10ZXh0ZmllbGRfX2lucHV0LS10aGVtZS1kYXJrLFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy10ZXh0ZmllbGRfX2lucHV0IHtcbiAgICAgIGNvbG9yOiB3aGl0ZTsgfVxuICAgICAgLm1kYy10ZXh0ZmllbGRfX2lucHV0LS10aGVtZS1kYXJrOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLFxuICAgICAgLm1kYy10aGVtZS0tZGFyayAubWRjLXRleHRmaWVsZF9faW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtaGludC1vbi1kYXJrLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkpOyB9XG4gICAgICAubWRjLXRleHRmaWVsZF9faW5wdXQtLXRoZW1lLWRhcms6Oi1tb3otcGxhY2Vob2xkZXIsXG4gICAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtdGV4dGZpZWxkX19pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7XG4gICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1oaW50LW9uLWRhcmssIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSk7IH1cbiAgICAgIC5tZGMtdGV4dGZpZWxkX19pbnB1dC0tdGhlbWUtZGFyazotbXMtaW5wdXQtcGxhY2Vob2xkZXIsXG4gICAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtdGV4dGZpZWxkX19pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtaGludC1vbi1kYXJrLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkpOyB9XG4gICAgICAubWRjLXRleHRmaWVsZF9faW5wdXQtLXRoZW1lLWRhcms6OnBsYWNlaG9sZGVyLFxuICAgICAgLm1kYy10aGVtZS0tZGFyayAubWRjLXRleHRmaWVsZF9faW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LWhpbnQtb24tZGFyaywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpKTsgfVxuICAgICAgLm1kYy10ZXh0ZmllbGRfX2lucHV0LS10aGVtZS1kYXJrOmZvY3VzOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLFxuICAgICAgLm1kYy10aGVtZS0tZGFyayAubWRjLXRleHRmaWVsZF9faW5wdXQ6Zm9jdXM6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtc2Vjb25kYXJ5LW9uLWRhcmssIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSk7IH1cbiAgICAgIC5tZGMtdGV4dGZpZWxkX19pbnB1dC0tdGhlbWUtZGFyazpmb2N1czo6LW1vei1wbGFjZWhvbGRlcixcbiAgICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy10ZXh0ZmllbGRfX2lucHV0OmZvY3VzOjotbW96LXBsYWNlaG9sZGVyIHtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LXNlY29uZGFyeS1vbi1kYXJrLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykpOyB9XG4gICAgICAubWRjLXRleHRmaWVsZF9faW5wdXQtLXRoZW1lLWRhcms6Zm9jdXM6LW1zLWlucHV0LXBsYWNlaG9sZGVyLFxuICAgICAgLm1kYy10aGVtZS0tZGFyayAubWRjLXRleHRmaWVsZF9faW5wdXQ6Zm9jdXM6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LXNlY29uZGFyeS1vbi1kYXJrLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykpOyB9XG4gICAgICAubWRjLXRleHRmaWVsZF9faW5wdXQtLXRoZW1lLWRhcms6Zm9jdXM6OnBsYWNlaG9sZGVyLFxuICAgICAgLm1kYy10aGVtZS0tZGFyayAubWRjLXRleHRmaWVsZF9faW5wdXQ6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LXNlY29uZGFyeS1vbi1kYXJrLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykpOyB9XG4gIC5tZGMtdGV4dGZpZWxkX19sYWJlbCB7XG4gICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XG4gICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LWhpbnQtb24tbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC4zOCkpO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDhweDtcbiAgICBsZWZ0OiAwO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCB0b3A7XG4gICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGNvbG9yIDE4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDE4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgY29sb3IgMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgY29sb3IgMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICBjdXJzb3I6IHRleHQ7XG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUgcGx1Z2luL3NlbGVjdG9yLWJlbS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBwbHVnaW4vc2VsZWN0b3ItYmVtLXBhdHRlcm4gKi8gfVxuICAgIFtkaXI9XCJydGxcIl0gLm1kYy10ZXh0ZmllbGQgLm1kYy10ZXh0ZmllbGRfX2xhYmVsLFxuICAgIC5tZGMtdGV4dGZpZWxkW2Rpcj1cInJ0bFwiXSAubWRjLXRleHRmaWVsZF9fbGFiZWwge1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBsZWZ0OiBhdXRvO1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCB0b3A7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IHRvcDsgfVxuICAgIC5tZGMtdGV4dGZpZWxkLS10aGVtZS1kYXJrIC5tZGMtdGV4dGZpZWxkX19sYWJlbCxcbiAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtdGV4dGZpZWxkX19sYWJlbCB7XG4gICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICAgICAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LWhpbnQtb24tZGFyaywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpKTsgfVxuICAgIC5tZGMtdGV4dGZpZWxkX19sYWJlbC0tZmxvYXQtYWJvdmUge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpIHNjYWxlKDAuNzUsIDAuNzUpO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpIHNjYWxlKDAuNzUsIDAuNzUpO1xuICAgICAgY3Vyc29yOiBhdXRvOyB9XG5cbi5tZGMtdGV4dGZpZWxkLS11cGdyYWRlZDpub3QoLm1kYy10ZXh0ZmllbGQtLWZ1bGx3aWR0aCkge1xuICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7XG4gIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGVuZDtcbiAgICAgIC1tcy1mbGV4LWFsaWduOiBlbmQ7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICBtYXJnaW4tdG9wOiAxNnB4OyB9XG4gIC5tZGMtdGV4dGZpZWxkLS11cGdyYWRlZDpub3QoLm1kYy10ZXh0ZmllbGQtLWZ1bGx3aWR0aCk6bm90KC5tZGMtdGV4dGZpZWxkLS1tdWx0aWxpbmUpIHtcbiAgICBoZWlnaHQ6IDQ4cHg7IH1cbiAgICAubWRjLXRleHRmaWVsZC0tdXBncmFkZWQ6bm90KC5tZGMtdGV4dGZpZWxkLS1mdWxsd2lkdGgpOm5vdCgubWRjLXRleHRmaWVsZC0tbXVsdGlsaW5lKTo6YWZ0ZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSg1MCUpIHNjYWxlWSgxKTtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDUwJSkgc2NhbGVZKDEpO1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgYm90dG9tO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgYm90dG9tO1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDE4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDE4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDE4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDE4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDE4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIHRyYW5zZm9ybSAxODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLCB0cmFuc2Zvcm0gMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgICBjb250ZW50OiBcIlwiOyB9XG4gICAgICAubWRjLXRleHRmaWVsZC0tdGhlbWUtZGFyayAubWRjLXRleHRmaWVsZC0tdXBncmFkZWQ6bm90KC5tZGMtdGV4dGZpZWxkLS1mdWxsd2lkdGgpOm5vdCgubWRjLXRleHRmaWVsZC0tbXVsdGlsaW5lKTo6YWZ0ZXIsXG4gICAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtdGV4dGZpZWxkLS11cGdyYWRlZDpub3QoLm1kYy10ZXh0ZmllbGQtLWZ1bGx3aWR0aCk6bm90KC5tZGMtdGV4dGZpZWxkLS1tdWx0aWxpbmUpOjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7IH1cbiAgLm1kYy10ZXh0ZmllbGQtLXVwZ3JhZGVkOm5vdCgubWRjLXRleHRmaWVsZC0tZnVsbHdpZHRoKSAubWRjLXRleHRmaWVsZF9fbGFiZWwge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyB9XG5cbi5tZGMtdGV4dGZpZWxkLS1mb2N1c2VkLm1kYy10ZXh0ZmllbGQtLXVwZ3JhZGVkOm5vdCgubWRjLXRleHRmaWVsZC0tZnVsbHdpZHRoKTpub3QoLm1kYy10ZXh0ZmllbGQtLW11bHRpbGluZSk6OmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNmNTFiNTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKSBzY2FsZVkoMik7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpIHNjYWxlWSgyKTtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAxODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICB0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAxODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDE4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIC13ZWJraXQtdHJhbnNmb3JtIDE4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7IH1cbiAgLm1kYy10ZXh0ZmllbGQtLXRoZW1lLWRhcmsubWRjLXRleHRmaWVsZC0tZm9jdXNlZC5tZGMtdGV4dGZpZWxkLS11cGdyYWRlZDpub3QoLm1kYy10ZXh0ZmllbGQtLWZ1bGx3aWR0aCk6bm90KC5tZGMtdGV4dGZpZWxkLS1tdWx0aWxpbmUpOjphZnRlcixcbiAgLm1kYy10aGVtZS0tZGFyayAubWRjLXRleHRmaWVsZC0tZm9jdXNlZC5tZGMtdGV4dGZpZWxkLS11cGdyYWRlZDpub3QoLm1kYy10ZXh0ZmllbGQtLWZ1bGx3aWR0aCk6bm90KC5tZGMtdGV4dGZpZWxkLS1tdWx0aWxpbmUpOjphZnRlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzNmNTFiNTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtcHJpbWFyeSwgIzNmNTFiNSk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSkgc2NhbGVZKDIpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpIHNjYWxlWSgyKTtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDE4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgLXdlYmtpdC10cmFuc2Zvcm0gMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsgfVxuXG4ubWRjLXRleHRmaWVsZC0tZm9jdXNlZCAubWRjLXRleHRmaWVsZF9fbGFiZWwge1xuICBjb2xvcjogIzNmNTFiNTtcbiAgY29sb3I6IHZhcigtLW1kYy10aGVtZS1wcmltYXJ5LCAjM2Y1MWI1KTsgfVxuICAubWRjLXRleHRmaWVsZC0tdGhlbWUtZGFyayAubWRjLXRleHRmaWVsZC0tZm9jdXNlZCAubWRjLXRleHRmaWVsZF9fbGFiZWwsXG4gIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy10ZXh0ZmllbGQtLWZvY3VzZWQgLm1kYy10ZXh0ZmllbGRfX2xhYmVsIHtcbiAgICBjb2xvcjogIzNmNTFiNTtcbiAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpOyB9XG5cbi5tZGMtdGV4dGZpZWxkLS1kZW5zZSB7XG4gIG1hcmdpbi10b3A6IDEycHg7XG4gIG1hcmdpbi1ib3R0b206IDRweDtcbiAgZm9udC1zaXplOiAuODEzcmVtOyB9XG4gIC5tZGMtdGV4dGZpZWxkLS1kZW5zZSAubWRjLXRleHRmaWVsZF9fbGFiZWwtLWZsb2F0LWFib3ZlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWShjYWxjKC0xMDAlIC0gMnB4KSkgc2NhbGUoMC45MjMsIDAuOTIzKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWShjYWxjKC0xMDAlIC0gMnB4KSkgc2NhbGUoMC45MjMsIDAuOTIzKTsgfVxuXG4ubWRjLXRleHRmaWVsZC0taW52YWxpZDpub3QoLm1kYy10ZXh0ZmllbGQtLWZvY3VzZWQpOjphZnRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkNTAwMDA7IH1cblxuLm1kYy10ZXh0ZmllbGQtLWludmFsaWQ6bm90KC5tZGMtdGV4dGZpZWxkLS1mb2N1c2VkKSAubWRjLXRleHRmaWVsZF9fbGFiZWwge1xuICBjb2xvcjogI2Q1MDAwMDsgfVxuXG4ubWRjLXRleHRmaWVsZC0tdGhlbWUtZGFyay5tZGMtdGV4dGZpZWxkLS1pbnZhbGlkOm5vdCgubWRjLXRleHRmaWVsZC0tZm9jdXNlZCk6OmFmdGVyLFxuLm1kYy10aGVtZS0tZGFyayAubWRjLXRleHRmaWVsZC0taW52YWxpZDpub3QoLm1kYy10ZXh0ZmllbGQtLWZvY3VzZWQpOjphZnRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZlNmU7IH1cblxuLm1kYy10ZXh0ZmllbGQtLXRoZW1lLWRhcmsubWRjLXRleHRmaWVsZC0taW52YWxpZDpub3QoLm1kYy10ZXh0ZmllbGQtLWZvY3VzZWQpIC5tZGMtdGV4dGZpZWxkX19sYWJlbCxcbi5tZGMtdGhlbWUtLWRhcmsgLm1kYy10ZXh0ZmllbGQtLWludmFsaWQ6bm90KC5tZGMtdGV4dGZpZWxkLS1mb2N1c2VkKSAubWRjLXRleHRmaWVsZF9fbGFiZWwge1xuICBjb2xvcjogI2ZmNmU2ZTsgfVxuXG4ubWRjLXRleHRmaWVsZC0tZGlzYWJsZWQge1xuICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkIHJnYmEoMzUsIDMxLCAzMiwgMC4yNik7XG4gIC8qIHN0eWxlbGludC1kaXNhYmxlIHBsdWdpbi9zZWxlY3Rvci1iZW0tcGF0dGVybiAqL1xuICAvKiBzdHlsZWxpbnQtZW5hYmxlIHBsdWdpbi9zZWxlY3Rvci1iZW0tcGF0dGVybiAqLyB9XG4gIC5tZGMtdGV4dGZpZWxkLS1kaXNhYmxlZDo6YWZ0ZXIge1xuICAgIGRpc3BsYXk6IG5vbmU7IH1cbiAgLm1kYy10ZXh0ZmllbGQtLWRpc2FibGVkIC5tZGMtdGV4dGZpZWxkX19pbnB1dCB7XG4gICAgcGFkZGluZy1ib3R0b206IDdweDsgfVxuICAubWRjLXRleHRmaWVsZC0tdGhlbWUtZGFyay5tZGMtdGV4dGZpZWxkLS1kaXNhYmxlZCxcbiAgLm1kYy10aGVtZS0tZGFyayAubWRjLXRleHRmaWVsZC0tZGlzYWJsZWQge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpOyB9XG4gIC5tZGMtdGV4dGZpZWxkLS1kaXNhYmxlZCAubWRjLXRleHRmaWVsZF9faW5wdXQsXG4gIC5tZGMtdGV4dGZpZWxkLS1kaXNhYmxlZCAubWRjLXRleHRmaWVsZF9fbGFiZWwsXG4gIC5tZGMtdGV4dGZpZWxkLS1kaXNhYmxlZCArIC5tZGMtdGV4dGZpZWxkLWhlbHB0ZXh0IHtcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KTtcbiAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtZGlzYWJsZWQtb24tbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC4zOCkpOyB9XG4gIC5tZGMtdGV4dGZpZWxkLS10aGVtZS1kYXJrIC5tZGMtdGV4dGZpZWxkLS1kaXNhYmxlZCAubWRjLXRleHRmaWVsZF9faW5wdXQsXG4gIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy10ZXh0ZmllbGQtLWRpc2FibGVkIC5tZGMtdGV4dGZpZWxkX19pbnB1dCwgLm1kYy10ZXh0ZmllbGQtLXRoZW1lLWRhcmtcbiAgLm1kYy10ZXh0ZmllbGQtLWRpc2FibGVkIC5tZGMtdGV4dGZpZWxkX19sYWJlbCxcbiAgLm1kYy10aGVtZS0tZGFya1xuICAubWRjLXRleHRmaWVsZC0tZGlzYWJsZWQgLm1kYy10ZXh0ZmllbGRfX2xhYmVsIHtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICAgIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1kaXNhYmxlZC1vbi1kYXJrLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkpOyB9XG4gIC5tZGMtdGV4dGZpZWxkLS10aGVtZS1kYXJrLm1kYy10ZXh0ZmllbGQtLWRpc2FibGVkLFxuICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtdGV4dGZpZWxkLS1kaXNhYmxlZCB7XG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUgcGx1Z2luL3NlbGVjdG9yLWJlbS1wYXR0ZXJuICovXG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBwbHVnaW4vc2VsZWN0b3ItYmVtLXBhdHRlcm4gKi8gfVxuICAgIC5tZGMtdGV4dGZpZWxkLS10aGVtZS1kYXJrLm1kYy10ZXh0ZmllbGQtLWRpc2FibGVkICsgLm1kYy10ZXh0ZmllbGQtaGVscHRleHQsXG4gICAgLm1kYy10aGVtZS0tZGFyayAubWRjLXRleHRmaWVsZC0tZGlzYWJsZWQgKyAubWRjLXRleHRmaWVsZC1oZWxwdGV4dCB7XG4gICAgICBjb2xyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gICAgICBjb2xyOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1kaXNhYmxlZC1vbi1kYXJrLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkpOyB9XG4gIC5tZGMtdGV4dGZpZWxkLS1kaXNhYmxlZCAubWRjLXRleHRmaWVsZF9fbGFiZWwge1xuICAgIGJvdHRvbTogN3B4O1xuICAgIGN1cnNvcjogZGVmYXVsdDsgfVxuXG4ubWRjLXRleHRmaWVsZF9faW5wdXQ6cmVxdWlyZWQgKyAubWRjLXRleHRmaWVsZF9fbGFiZWw6OmFmdGVyIHtcbiAgbWFyZ2luLWxlZnQ6IDFweDtcbiAgY29udGVudDogXCIqXCI7IH1cbiAgLm1kYy10ZXh0ZmllbGQtLWZvY3VzZWQgLm1kYy10ZXh0ZmllbGRfX2lucHV0OnJlcXVpcmVkICsgLm1kYy10ZXh0ZmllbGRfX2xhYmVsOjphZnRlciB7XG4gICAgY29sb3I6ICNkNTAwMDA7IH1cbiAgLm1kYy10ZXh0ZmllbGQtLWZvY3VzZWQgLm1kYy10ZXh0ZmllbGQtLXRoZW1lLWRhcmsgLm1kYy10ZXh0ZmllbGRfX2lucHV0OnJlcXVpcmVkICsgLm1kYy10ZXh0ZmllbGRfX2xhYmVsOjphZnRlciwgLm1kYy10ZXh0ZmllbGQtLWZvY3VzZWRcbiAgLm1kYy10aGVtZS0tZGFyayAubWRjLXRleHRmaWVsZF9faW5wdXQ6cmVxdWlyZWQgKyAubWRjLXRleHRmaWVsZF9fbGFiZWw6OmFmdGVyIHtcbiAgICBjb2xvcjogI2ZmNmU2ZTsgfVxuXG4ubWRjLXRleHRmaWVsZC0tbXVsdGlsaW5lIHtcbiAgLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuICAvKiBzdHlsZWxpbnQtZW5hYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6IGluaXRpYWw7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTtcbiAgdHJhbnNpdGlvbjogbm9uZTtcbiAgLyogc3R5bGVsaW50LWRpc2FibGUgcGx1Z2luL3NlbGVjdG9yLWJlbS1wYXR0ZXJuICovXG4gIC8qIHN0eWxlbGludC1lbmFibGUgcGx1Z2luL3NlbGVjdG9yLWJlbS1wYXR0ZXJuICovIH1cbiAgLm1kYy10ZXh0ZmllbGQtLW11bHRpbGluZTo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IGluaXRpYWw7IH1cbiAgLm1kYy10ZXh0ZmllbGQtLW11bHRpbGluZSAubWRjLXRleHRmaWVsZF9faW5wdXQge1xuICAgIHBhZGRpbmc6IDRweDtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJvcmRlci1jb2xvciAxODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAxODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgYm9yZGVyLXJhZGl1czogMnB4OyB9XG4gICAgLm1kYy10ZXh0ZmllbGQtLXRoZW1lLWRhcmsgLm1kYy10ZXh0ZmllbGQtLW11bHRpbGluZSAubWRjLXRleHRmaWVsZF9faW5wdXQsXG4gICAgLm1kYy10aGVtZS0tZGFyayAubWRjLXRleHRmaWVsZC0tbXVsdGlsaW5lIC5tZGMtdGV4dGZpZWxkX19pbnB1dCB7XG4gICAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7IH1cbiAgICAubWRjLXRleHRmaWVsZC0tbXVsdGlsaW5lIC5tZGMtdGV4dGZpZWxkX19pbnB1dDpmb2N1cyB7XG4gICAgICBib3JkZXItY29sb3I6ICMzZjUxYjU7XG4gICAgICBib3JkZXItY29sb3I6IHZhcigtLW1kYy10aGVtZS1wcmltYXJ5LCAjM2Y1MWI1KTsgfVxuICAgIC5tZGMtdGV4dGZpZWxkLS1tdWx0aWxpbmUgLm1kYy10ZXh0ZmllbGRfX2lucHV0OmludmFsaWQ6bm90KDpmb2N1cykge1xuICAgICAgYm9yZGVyLWNvbG9yOiAjZDUwMDAwOyB9XG4gICAgLm1kYy10ZXh0ZmllbGQtLXRoZW1lLWRhcmsgLm1kYy10ZXh0ZmllbGQtLW11bHRpbGluZSAubWRjLXRleHRmaWVsZF9faW5wdXQ6aW52YWxpZDpub3QoOmZvY3VzKSxcbiAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtdGV4dGZpZWxkLS1tdWx0aWxpbmUgLm1kYy10ZXh0ZmllbGRfX2lucHV0OmludmFsaWQ6bm90KDpmb2N1cykge1xuICAgICAgYm9yZGVyLWNvbG9yOiAjZmY2ZTZlOyB9XG4gIC5tZGMtdGV4dGZpZWxkLS1tdWx0aWxpbmUgLm1kYy10ZXh0ZmllbGRfX2xhYmVsIHtcbiAgICB0b3A6IDZweDtcbiAgICBib3R0b206IGluaXRpYWw7XG4gICAgbGVmdDogNHB4OyB9XG4gICAgW2Rpcj1cInJ0bFwiXSAubWRjLXRleHRmaWVsZC0tbXVsdGlsaW5lIC5tZGMtdGV4dGZpZWxkLS1tdWx0aWxpbmUgLm1kYy10ZXh0ZmllbGRfX2xhYmVsLFxuICAgIC5tZGMtdGV4dGZpZWxkLS1tdWx0aWxpbmVbZGlyPVwicnRsXCJdIC5tZGMtdGV4dGZpZWxkLS1tdWx0aWxpbmUgLm1kYy10ZXh0ZmllbGRfX2xhYmVsIHtcbiAgICAgIHJpZ2h0OiA0cHg7XG4gICAgICBsZWZ0OiBhdXRvOyB9XG4gICAgLm1kYy10ZXh0ZmllbGQtLW11bHRpbGluZSAubWRjLXRleHRmaWVsZF9fbGFiZWwtLWZsb2F0LWFib3ZlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKGNhbGMoLTEwMCUgLSA2cHgpKSBzY2FsZSgwLjkyMywgMC45MjMpO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoY2FsYygtMTAwJSAtIDZweCkpIHNjYWxlKDAuOTIzLCAwLjkyMyk7IH1cbiAgLm1kYy10ZXh0ZmllbGQtLW11bHRpbGluZS5tZGMtdGV4dGZpZWxkLS1kaXNhYmxlZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTsgfVxuICAgIC5tZGMtdGV4dGZpZWxkLS1tdWx0aWxpbmUubWRjLXRleHRmaWVsZC0tZGlzYWJsZWQgLm1kYy10ZXh0ZmllbGRfX2lucHV0IHtcbiAgICAgIGJvcmRlcjogMXB4IGRvdHRlZCByZ2JhKDM1LCAzMSwgMzIsIDAuMjYpOyB9XG4gICAgICAubWRjLXRleHRmaWVsZC0tdGhlbWUtZGFyayAubWRjLXRleHRmaWVsZC0tbXVsdGlsaW5lLm1kYy10ZXh0ZmllbGQtLWRpc2FibGVkIC5tZGMtdGV4dGZpZWxkX19pbnB1dCxcbiAgICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy10ZXh0ZmllbGQtLW11bHRpbGluZS5tZGMtdGV4dGZpZWxkLS1kaXNhYmxlZCAubWRjLXRleHRmaWVsZF9faW5wdXQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsgfVxuXG4ubWRjLXRleHRmaWVsZC0tZnVsbHdpZHRoIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBtYXJnaW46IDA7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gIG91dGxpbmU6IG5vbmU7XG4gIC8qIHN0eWxlbGludC1kaXNhYmxlIHBsdWdpbi9zZWxlY3Rvci1iZW0tcGF0dGVybiAqL1xuICAvKiBzdHlsZWxpbnQtZW5hYmxlIHBsdWdpbi9zZWxlY3Rvci1iZW0tcGF0dGVybiAqLyB9XG4gIC5tZGMtdGV4dGZpZWxkLS1mdWxsd2lkdGg6bm90KC5tZGMtdGV4dGZpZWxkLS1tdWx0aWxpbmUpIHtcbiAgICBoZWlnaHQ6IDU2cHg7IH1cbiAgLm1kYy10ZXh0ZmllbGQtLWZ1bGx3aWR0aC5tZGMtdGV4dGZpZWxkLS1tdWx0aWxpbmUge1xuICAgIHBhZGRpbmc6IDIwcHggMCAwOyB9XG4gIC5tZGMtdGV4dGZpZWxkLS1mdWxsd2lkdGgubWRjLXRleHRmaWVsZC0tZGVuc2U6bm90KC5tZGMtdGV4dGZpZWxkLS1tdWx0aWxpbmUpIHtcbiAgICBoZWlnaHQ6IDQ4cHg7IH1cbiAgLm1kYy10ZXh0ZmllbGQtLWZ1bGx3aWR0aC5tZGMtdGV4dGZpZWxkLS1kZW5zZS5tZGMtdGV4dGZpZWxkLS1tdWx0aWxpbmUge1xuICAgIHBhZGRpbmc6IDE2cHggMCAwOyB9XG4gIC5tZGMtdGV4dGZpZWxkLS1mdWxsd2lkdGgubWRjLXRleHRmaWVsZC0tZGlzYWJsZWQsIC5tZGMtdGV4dGZpZWxkLS1mdWxsd2lkdGgubWRjLXRleHRmaWVsZC0tZGlzYWJsZWQubWRjLXRleHRmaWVsZC0tbXVsdGlsaW5lIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkIHJnYmEoMCwgMCwgMCwgMC4xMik7IH1cbiAgLm1kYy10ZXh0ZmllbGQtLWZ1bGx3aWR0aC0tdGhlbWUtZGFyayxcbiAgLm1kYy10aGVtZS0tZGFyayAubWRjLXRleHRmaWVsZC0tZnVsbHdpZHRoIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTsgfVxuICAgIC5tZGMtdGV4dGZpZWxkLS1mdWxsd2lkdGgtLXRoZW1lLWRhcmsubWRjLXRleHRmaWVsZC0tZGlzYWJsZWQsIC5tZGMtdGV4dGZpZWxkLS1mdWxsd2lkdGgtLXRoZW1lLWRhcmsubWRjLXRleHRmaWVsZC0tZGlzYWJsZWQubWRjLXRleHRmaWVsZC0tbXVsdGlsaW5lLFxuICAgIC5tZGMtdGhlbWUtLWRhcmsgLm1kYy10ZXh0ZmllbGQtLWZ1bGx3aWR0aC5tZGMtdGV4dGZpZWxkLS1kaXNhYmxlZCxcbiAgICAubWRjLXRoZW1lLS1kYXJrIC5tZGMtdGV4dGZpZWxkLS1mdWxsd2lkdGgubWRjLXRleHRmaWVsZC0tZGlzYWJsZWQubWRjLXRleHRmaWVsZC0tbXVsdGlsaW5lIHtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTsgfVxuICAubWRjLXRleHRmaWVsZC0tZnVsbHdpZHRoIC5tZGMtdGV4dGZpZWxkX19pbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgcmVzaXplOiBub25lO1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OyB9XG5cbi5tZGMtdGV4dGZpZWxkOm5vdCgubWRjLXRleHRmaWVsZC0tdXBncmFkZWQpOm5vdCgubWRjLXRleHRmaWVsZC0tbXVsdGlsaW5lKSAubWRjLXRleHRmaWVsZF9faW5wdXQge1xuICAtd2Via2l0LXRyYW5zaXRpb246IGJvcmRlci1ib3R0b20tY29sb3IgMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWJvdHRvbS1jb2xvciAxODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyKTsgfVxuXG4ubWRjLXRleHRmaWVsZDpub3QoLm1kYy10ZXh0ZmllbGQtLXVwZ3JhZGVkKSAubWRjLXRleHRmaWVsZF9faW5wdXQ6Zm9jdXMge1xuICBib3JkZXItY29sb3I6ICMzZjUxYjU7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpOyB9XG5cbi5tZGMtdGV4dGZpZWxkOm5vdCgubWRjLXRleHRmaWVsZC0tdXBncmFkZWQpIC5tZGMtdGV4dGZpZWxkX19pbnB1dDpkaXNhYmxlZCB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xuICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtZGlzYWJsZWQtb24tbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC4zOCkpO1xuICBib3JkZXItc3R5bGU6IGRvdHRlZDtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDM1LCAzMSwgMzIsIDAuMjYpOyB9XG5cbi5tZGMtdGV4dGZpZWxkOm5vdCgubWRjLXRleHRmaWVsZC0tdXBncmFkZWQpIC5tZGMtdGV4dGZpZWxkX19pbnB1dDppbnZhbGlkOm5vdCg6Zm9jdXMpIHtcbiAgYm9yZGVyLWNvbG9yOiAjZDUwMDAwOyB9XG5cbi5tZGMtdGV4dGZpZWxkLS10aGVtZS1kYXJrOm5vdCgubWRjLXRleHRmaWVsZC0tdXBncmFkZWQpIC5tZGMtdGV4dGZpZWxkX19pbnB1dDpub3QoOmZvY3VzKSxcbi5tZGMtdGhlbWUtLWRhcmsgLm1kYy10ZXh0ZmllbGQ6bm90KC5tZGMtdGV4dGZpZWxkLS11cGdyYWRlZCkgLm1kYy10ZXh0ZmllbGRfX2lucHV0Om5vdCg6Zm9jdXMpIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpOyB9XG5cbi5tZGMtdGV4dGZpZWxkLS10aGVtZS1kYXJrOm5vdCgubWRjLXRleHRmaWVsZC0tdXBncmFkZWQpIC5tZGMtdGV4dGZpZWxkX19pbnB1dDpkaXNhYmxlZCxcbi5tZGMtdGhlbWUtLWRhcmsgLm1kYy10ZXh0ZmllbGQ6bm90KC5tZGMtdGV4dGZpZWxkLS11cGdyYWRlZCkgLm1kYy10ZXh0ZmllbGRfX2lucHV0OmRpc2FibGVkIHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LWRpc2FibGVkLW9uLWRhcmssIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSk7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpOyB9XG5cbi5tZGMtdGV4dGZpZWxkLS10aGVtZS1kYXJrOm5vdCgubWRjLXRleHRmaWVsZC0tdXBncmFkZWQpIC5tZGMtdGV4dGZpZWxkX19pbnB1dDppbnZhbGlkOm5vdCg6Zm9jdXMpLFxuLm1kYy10aGVtZS0tZGFyayAubWRjLXRleHRmaWVsZDpub3QoLm1kYy10ZXh0ZmllbGQtLXVwZ3JhZGVkKSAubWRjLXRleHRmaWVsZF9faW5wdXQ6aW52YWxpZDpub3QoOmZvY3VzKSB7XG4gIGJvcmRlci1jb2xvcjogI2ZmNmU2ZTsgfVxuXG4vKiBwb3N0Y3NzLWJlbS1saW50ZXI6IGVuZCAqL1xuLyogcG9zdGNzcy1iZW0tbGludGVyOiBkZWZpbmUgdGV4dGZpZWxkLWhlbHB0ZXh0ICovXG4ubWRjLXRleHRmaWVsZC1oZWxwdGV4dCB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xuICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtaGludC1vbi1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjM4KSk7XG4gIG1hcmdpbjogMDtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDE4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMTgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgZm9udC1zaXplOiAuNzVyZW07XG4gIG9wYWNpdHk6IDA7XG4gIHdpbGwtY2hhbmdlOiBvcGFjaXR5O1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBwbHVnaW4vc2VsZWN0b3ItYmVtLXBhdHRlcm4gKi9cbiAgLyogc3R5bGVsaW50LWVuYWJsZSBwbHVnaW4vc2VsZWN0b3ItYmVtLXBhdHRlcm4gKi8gfVxuICAubWRjLXRleHRmaWVsZC1oZWxwdGV4dC0tdGhlbWUtZGFyayxcbiAgLm1kYy10aGVtZS0tZGFyayAubWRjLXRleHRmaWVsZC1oZWxwdGV4dCB7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtaGludC1vbi1kYXJrLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkpOyB9XG4gIC5tZGMtdGV4dGZpZWxkICsgLm1kYy10ZXh0ZmllbGQtaGVscHRleHQge1xuICAgIG1hcmdpbi1ib3R0b206IDhweDsgfVxuICAubWRjLXRleHRmaWVsZC0tZGVuc2UgKyAubWRjLXRleHRmaWVsZC1oZWxwdGV4dCB7XG4gICAgbWFyZ2luLWJvdHRvbTogNHB4OyB9XG4gIC5tZGMtdGV4dGZpZWxkLS1mb2N1c2VkICsgLm1kYy10ZXh0ZmllbGQtaGVscHRleHQ6bm90KC5tZGMtdGV4dGZpZWxkLWhlbHB0ZXh0LS12YWxpZGF0aW9uLW1zZykge1xuICAgIG9wYWNpdHk6IDE7IH1cblxuLm1kYy10ZXh0ZmllbGQtaGVscHRleHQtLXBlcnNpc3RlbnQge1xuICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IG5vbmU7XG4gIG9wYWNpdHk6IDE7XG4gIHdpbGwtY2hhbmdlOiBpbml0aWFsOyB9XG5cbi8qIHBvc3Rjc3MtYmVtLWxpbnRlcjogZW5kICovXG4ubWRjLXRleHRmaWVsZC0taW52YWxpZCArIC5tZGMtdGV4dGZpZWxkLWhlbHB0ZXh0LS12YWxpZGF0aW9uLW1zZyB7XG4gIGNvbG9yOiAjZDUwMDAwO1xuICBvcGFjaXR5OiAxOyB9XG5cbi5tZGMtdGV4dGZpZWxkLS10aGVtZS1kYXJrLm1kYy10ZXh0ZmllbGQtLWludmFsaWQgKyAubWRjLXRleHRmaWVsZC1oZWxwdGV4dC0tdmFsaWRhdGlvbi1tc2csXG4ubWRjLXRoZW1lLS1kYXJrIC5tZGMtdGV4dGZpZWxkLS1pbnZhbGlkICsgLm1kYy10ZXh0ZmllbGQtaGVscHRleHQtLXZhbGlkYXRpb24tbXNnIHtcbiAgY29sb3I6ICNmZjZlNmU7IH1cblxuLyogc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3Itbm8tdHlwZSAqL1xuLm1kYy1mb3JtLWZpZWxkID4gLm1kYy10ZXh0ZmllbGQgKyBsYWJlbCB7XG4gIC1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0YXJ0O1xuICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDsgfVxuXG4vKiBzdHlsZWxpbnQtZW5hYmxlIHNlbGVjdG9yLW5vLXR5cGUgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSgpIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKlxuICBQcmVjb21wdXRlZCBsaW5lYXIgY29sb3IgY2hhbm5lbCB2YWx1ZXMsIGZvciB1c2UgaW4gY29udHJhc3QgY2FsY3VsYXRpb25zLlxuICBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcblxuICBBbGdvcml0aG0sIGZvciBjIGluIDAgdG8gMjU1OlxuICBmKGMpIHtcbiAgICBjID0gYyAvIDI1NTtcbiAgICByZXR1cm4gYyA8IDAuMDM5MjggPyBjIC8gMTIuOTIgOiBNYXRoLnBvdygoYyArIDAuMDU1KSAvIDEuMDU1LCAyLjQpO1xuICB9XG5cbiAgVGhpcyBsb29rdXAgdGFibGUgaXMgbmVlZGVkIHNpbmNlIHRoZXJlIGlzIG5vIGBwb3dgIGluIFNBU1MuXG4qL1xuLyogQWxsIHZhcmlhYmxlcyBhcmUgbG9jYWwsIHNvIGRpc2FibGUgcGF0dGVybiBjaGVja2luZy4gKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG9sbGFyLXZhcmlhYmxlLXBhdHRlcm4gKi9cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBsdW1pbmFuY2UgZm9yIGEgY29sb3IuXG4gKiBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcbiAqL1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGNvbnRyYXN0IHJhdGlvIGJldHdlZW4gdHdvIGNvbG9ycy5cbiAqIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLVRFQ0hTL0cxNy5odG1sI0cxNy10ZXN0c1xuICovXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIHRvIHVzZSBkYXJrIG9yIGxpZ2h0IHRleHQgb24gdG9wIG9mIGdpdmVuIGNvbG9yLlxuICogUmV0dXJucyBcImRhcmtcIiBmb3IgZGFyayB0ZXh0IGFuZCBcImxpZ2h0XCIgZm9yIGxpZ2h0IHRleHQuXG4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLypcbiAgTWFpbiB0aGVtZSBjb2xvcnMuXG4gIElmIHlvdSdyZSBhIHVzZXIgY3VzdG9taXppbmcgeW91ciBjb2xvciBzY2hlbWUgaW4gU0FTUywgdGhlc2UgYXJlIHByb2JhYmx5IHRoZSBvbmx5IHZhcmlhYmxlcyB5b3UgbmVlZCB0byBjaGFuZ2UuXG4qL1xuLyogSW5kaWdvIDUwMCAqL1xuLyogUGluayBBMjAwICovXG4vKiBXaGl0ZSAqL1xuLyogV2hpY2ggc2V0IG9mIHRleHQgY29sb3JzIHRvIHVzZSBmb3IgZWFjaCBtYWluIHRoZW1lIGNvbG9yIChsaWdodCBvciBkYXJrKSAqL1xuLyogVGV4dCBjb2xvcnMgYWNjb3JkaW5nIHRvIGxpZ2h0IHZzIGRhcmsgYW5kIHRleHQgdHlwZSAqL1xuLyogUHJpbWFyeSB0ZXh0IGNvbG9ycyBmb3IgZWFjaCBvZiB0aGUgdGhlbWUgY29sb3JzICovXG4vKiBBbGwgdmFyaWFibGVzIGFyZSBsb2NhbCwgc28gZGlzYWJsZSBwYXR0ZXJuIGNoZWNraW5nLiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuLyoqXG4gKiBBcHBsaWVzIHRoZSBjb3JyZWN0IHRoZW1lIGNvbG9yIHN0eWxlIHRvIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkuXG4gKiAkcHJvcGVydHkgaXMgdHlwaWNhbGx5IGNvbG9yIG9yIGJhY2tncm91bmQtY29sb3IsIGJ1dCBjYW4gYmUgYW55IENTUyBwcm9wZXJ0eSB0aGF0IGFjY2VwdHMgY29sb3IgdmFsdWVzLlxuICogJHN0eWxlIHNob3VsZCBiZSBvbmUgb2YgdGhlIG1hcCBrZXlzIGluICRtZGMtdGhlbWUtcHJvcGVydHktdmFsdWVzIChfdmFyaWFibGVzLnNjc3MpLlxuICovXG4vKipcbiAqIENyZWF0ZXMgYSBydWxlIHRvIGJlIHVzZWQgaW4gTURDLVdlYiBjb21wb25lbnRzIGZvciBkYXJrIHRoZW1pbmcsIGFuZCBhcHBsaWVzIHRoZSBwcm92aWRlZCBjb250ZW50cy5cbiAqIFNob3VsZCBwcm92aWRlIHRoZSAkcm9vdC1zZWxlY3RvciBvcHRpb24gaWYgYXBwbGllZCB0byBhbnl0aGluZyBvdGhlciB0aGFuIHRoZSByb290IHNlbGVjdG9yLlxuICogV2hlbiB1c2VkIHdpdGggYSBtb2RpZmllciBjbGFzcywgcHJvdmlkZSBhIHNlY29uZCBhcmd1bWVudCBvZiBgdHJ1ZWAgZm9yIHRoZSAkY29tcG91bmQgcGFyYW1ldGVyXG4gKiB0byBzcGVjaWZ5IHRoYXQgdGhpcyBzaG91bGQgYmUgYXR0YWNoZWQgYXMgYSBjb21wb3VuZCBjbGFzcy5cbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICpcbiAqIGBgYHNjc3NcbiAqIC5tZGMtZm9vIHtcbiAqICAgY29sb3I6IGJsYWNrO1xuICpcbiAqICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsge1xuICogICAgIGNvbG9yOiB3aGl0ZTtcbiAqICAgfVxuICpcbiAqICAgJl9fYmFyIHtcbiAqICAgICBiYWNrZ3JvdW5kOiBibGFjaztcbiAqXG4gKiAgICAgQGluY2x1ZGUgbWRjLXRoZW1lLWRhcmsoXCIubWRjLWZvb1wiKSB7XG4gKiAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAqICAgICB9XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAubWRjLWZvby0tZGlzYWJsZWQge1xuICogICBvcGFjaXR5OiAuMzg7XG4gKlxuICogICBAaW5jbHVkZSBtZGMtdGhlbWUtZGFyayhcIi5tZGMtZm9vXCIsIHRydWUpIHtcbiAqICAgICBvcGFjaXR5OiAuNTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtcGF0dGVybiAqL1xuOnJvb3Qge1xuICAtLW1kYy10aGVtZS1wcmltYXJ5OiAjM2Y1MWI1O1xuICAtLW1kYy10aGVtZS1hY2NlbnQ6ICNmZjQwODE7XG4gIC0tbWRjLXRoZW1lLWJhY2tncm91bmQ6ICNmZmY7XG4gIC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1wcmltYXJ5OiB3aGl0ZTtcbiAgLS1tZGMtdGhlbWUtdGV4dC1zZWNvbmRhcnktb24tcHJpbWFyeTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xuICAtLW1kYy10aGVtZS10ZXh0LWhpbnQtb24tcHJpbWFyeTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICAtLW1kYy10aGVtZS10ZXh0LWRpc2FibGVkLW9uLXByaW1hcnk6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgLS1tZGMtdGhlbWUtdGV4dC1pY29uLW9uLXByaW1hcnk6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgLS1tZGMtdGhlbWUtdGV4dC1wcmltYXJ5LW9uLWFjY2VudDogd2hpdGU7XG4gIC0tbWRjLXRoZW1lLXRleHQtc2Vjb25kYXJ5LW9uLWFjY2VudDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xuICAtLW1kYy10aGVtZS10ZXh0LWhpbnQtb24tYWNjZW50OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gIC0tbWRjLXRoZW1lLXRleHQtZGlzYWJsZWQtb24tYWNjZW50OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gIC0tbWRjLXRoZW1lLXRleHQtaWNvbi1vbi1hY2NlbnQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgLS1tZGMtdGhlbWUtdGV4dC1wcmltYXJ5LW9uLWJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XG4gIC0tbWRjLXRoZW1lLXRleHQtc2Vjb25kYXJ5LW9uLWJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC41NCk7XG4gIC0tbWRjLXRoZW1lLXRleHQtaGludC1vbi1iYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xuICAtLW1kYy10aGVtZS10ZXh0LWRpc2FibGVkLW9uLWJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XG4gIC0tbWRjLXRoZW1lLXRleHQtaWNvbi1vbi1iYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xuICAtLW1kYy10aGVtZS10ZXh0LXByaW1hcnktb24tbGlnaHQ6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XG4gIC0tbWRjLXRoZW1lLXRleHQtc2Vjb25kYXJ5LW9uLWxpZ2h0OiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xuICAtLW1kYy10aGVtZS10ZXh0LWhpbnQtb24tbGlnaHQ6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XG4gIC0tbWRjLXRoZW1lLXRleHQtZGlzYWJsZWQtb24tbGlnaHQ6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XG4gIC0tbWRjLXRoZW1lLXRleHQtaWNvbi1vbi1saWdodDogcmdiYSgwLCAwLCAwLCAwLjM4KTtcbiAgLS1tZGMtdGhlbWUtdGV4dC1wcmltYXJ5LW9uLWRhcms6IHdoaXRlO1xuICAtLW1kYy10aGVtZS10ZXh0LXNlY29uZGFyeS1vbi1kYXJrOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG4gIC0tbWRjLXRoZW1lLXRleHQtaGludC1vbi1kYXJrOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gIC0tbWRjLXRoZW1lLXRleHQtZGlzYWJsZWQtb24tZGFyazogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICAtLW1kYy10aGVtZS10ZXh0LWljb24tb24tZGFyazogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOyB9XG5cbi8qIFNwZWNpYWwgY2FzZSwgc28gdGhhdCAubWRjLXRoZW1lLS1iYWNrZ3JvdW5kIGNoYW5nZXMgYmFja2dyb3VuZCBjb2xvciwgbm90IHRleHQgY29sb3IuICovXG4ubWRjLXRoZW1lLS1iYWNrZ3JvdW5kIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWRjLXRoZW1lLWJhY2tncm91bmQsICNmZmYpOyB9XG5cbi5tZGMtdGhlbWUtLXByaW1hcnkge1xuICBjb2xvcjogIzNmNTFiNSAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpICFpbXBvcnRhbnQ7IH1cblxuLm1kYy10aGVtZS0tYWNjZW50IHtcbiAgY29sb3I6ICNmZjQwODEgIWltcG9ydGFudDtcbiAgY29sb3I6IHZhcigtLW1kYy10aGVtZS1hY2NlbnQsICNmZjQwODEpICFpbXBvcnRhbnQ7IH1cblxuLm1kYy10aGVtZS0tdGV4dC1wcmltYXJ5LW9uLXByaW1hcnkge1xuICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LXByaW1hcnktb24tcHJpbWFyeSwgd2hpdGUpICFpbXBvcnRhbnQ7IH1cblxuLm1kYy10aGVtZS0tdGV4dC1zZWNvbmRhcnktb24tcHJpbWFyeSB7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykgIWltcG9ydGFudDtcbiAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LXNlY29uZGFyeS1vbi1wcmltYXJ5LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykpICFpbXBvcnRhbnQ7IH1cblxuLm1kYy10aGVtZS0tdGV4dC1oaW50LW9uLXByaW1hcnkge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1oaW50LW9uLXByaW1hcnksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSkgIWltcG9ydGFudDsgfVxuXG4ubWRjLXRoZW1lLS10ZXh0LWRpc2FibGVkLW9uLXByaW1hcnkge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1kaXNhYmxlZC1vbi1wcmltYXJ5LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkpICFpbXBvcnRhbnQ7IH1cblxuLm1kYy10aGVtZS0tdGV4dC1pY29uLW9uLXByaW1hcnkge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1pY29uLW9uLXByaW1hcnksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSkgIWltcG9ydGFudDsgfVxuXG4ubWRjLXRoZW1lLS10ZXh0LXByaW1hcnktb24tYWNjZW50IHtcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1wcmltYXJ5LW9uLWFjY2VudCwgd2hpdGUpICFpbXBvcnRhbnQ7IH1cblxuLm1kYy10aGVtZS0tdGV4dC1zZWNvbmRhcnktb24tYWNjZW50IHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtc2Vjb25kYXJ5LW9uLWFjY2VudCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpKSAhaW1wb3J0YW50OyB9XG5cbi5tZGMtdGhlbWUtLXRleHQtaGludC1vbi1hY2NlbnQge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1oaW50LW9uLWFjY2VudCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpKSAhaW1wb3J0YW50OyB9XG5cbi5tZGMtdGhlbWUtLXRleHQtZGlzYWJsZWQtb24tYWNjZW50IHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtZGlzYWJsZWQtb24tYWNjZW50LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkpICFpbXBvcnRhbnQ7IH1cblxuLm1kYy10aGVtZS0tdGV4dC1pY29uLW9uLWFjY2VudCB7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgIWltcG9ydGFudDtcbiAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LWljb24tb24tYWNjZW50LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkpICFpbXBvcnRhbnQ7IH1cblxuLm1kYy10aGVtZS0tdGV4dC1wcmltYXJ5LW9uLWJhY2tncm91bmQge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KSAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1iYWNrZ3JvdW5kLCByZ2JhKDAsIDAsIDAsIDAuODcpKSAhaW1wb3J0YW50OyB9XG5cbi5tZGMtdGhlbWUtLXRleHQtc2Vjb25kYXJ5LW9uLWJhY2tncm91bmQge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KSAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtc2Vjb25kYXJ5LW9uLWJhY2tncm91bmQsIHJnYmEoMCwgMCwgMCwgMC41NCkpICFpbXBvcnRhbnQ7IH1cblxuLm1kYy10aGVtZS0tdGV4dC1oaW50LW9uLWJhY2tncm91bmQge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KSAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtaGludC1vbi1iYWNrZ3JvdW5kLCByZ2JhKDAsIDAsIDAsIDAuMzgpKSAhaW1wb3J0YW50OyB9XG5cbi5tZGMtdGhlbWUtLXRleHQtZGlzYWJsZWQtb24tYmFja2dyb3VuZCB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1kaXNhYmxlZC1vbi1iYWNrZ3JvdW5kLCByZ2JhKDAsIDAsIDAsIDAuMzgpKSAhaW1wb3J0YW50OyB9XG5cbi5tZGMtdGhlbWUtLXRleHQtaWNvbi1vbi1iYWNrZ3JvdW5kIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCkgIWltcG9ydGFudDtcbiAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LWljb24tb24tYmFja2dyb3VuZCwgcmdiYSgwLCAwLCAwLCAwLjM4KSkgIWltcG9ydGFudDsgfVxuXG4ubWRjLXRoZW1lLS10ZXh0LXByaW1hcnktb24tbGlnaHQge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KSAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjg3KSkgIWltcG9ydGFudDsgfVxuXG4ubWRjLXRoZW1lLS10ZXh0LXNlY29uZGFyeS1vbi1saWdodCB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1zZWNvbmRhcnktb24tbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC41NCkpICFpbXBvcnRhbnQ7IH1cblxuLm1kYy10aGVtZS0tdGV4dC1oaW50LW9uLWxpZ2h0IHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCkgIWltcG9ydGFudDtcbiAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LWhpbnQtb24tbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC4zOCkpICFpbXBvcnRhbnQ7IH1cblxuLm1kYy10aGVtZS0tdGV4dC1kaXNhYmxlZC1vbi1saWdodCB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1kaXNhYmxlZC1vbi1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjM4KSkgIWltcG9ydGFudDsgfVxuXG4ubWRjLXRoZW1lLS10ZXh0LWljb24tb24tbGlnaHQge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KSAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtaWNvbi1vbi1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjM4KSkgIWltcG9ydGFudDsgfVxuXG4ubWRjLXRoZW1lLS10ZXh0LXByaW1hcnktb24tZGFyayB7XG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1kYXJrLCB3aGl0ZSkgIWltcG9ydGFudDsgfVxuXG4ubWRjLXRoZW1lLS10ZXh0LXNlY29uZGFyeS1vbi1kYXJrIHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtc2Vjb25kYXJ5LW9uLWRhcmssIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSkgIWltcG9ydGFudDsgfVxuXG4ubWRjLXRoZW1lLS10ZXh0LWhpbnQtb24tZGFyayB7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgIWltcG9ydGFudDtcbiAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LWhpbnQtb24tZGFyaywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpKSAhaW1wb3J0YW50OyB9XG5cbi5tZGMtdGhlbWUtLXRleHQtZGlzYWJsZWQtb24tZGFyayB7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgIWltcG9ydGFudDtcbiAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LWRpc2FibGVkLW9uLWRhcmssIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSkgIWltcG9ydGFudDsgfVxuXG4ubWRjLXRoZW1lLS10ZXh0LWljb24tb24tZGFyayB7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgIWltcG9ydGFudDtcbiAgY29sb3I6IHZhcigtLW1kYy10aGVtZS10ZXh0LWljb24tb24tZGFyaywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpKSAhaW1wb3J0YW50OyB9XG5cbi8qIENTUyBydWxlcyBmb3IgdXNpbmcgcHJpbWFyeSBhbmQgYWNjZW50IGFzIGJhY2tncm91bmQgY29sb3JzLiAqL1xuLm1kYy10aGVtZS0tcHJpbWFyeS1iZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzZjUxYjUgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnksICMzZjUxYjUpICFpbXBvcnRhbnQ7IH1cblxuLm1kYy10aGVtZS0tYWNjZW50LWJnIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNDA4MSAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtYWNjZW50LCAjZmY0MDgxKSAhaW1wb3J0YW50OyB9XG5cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogVE9ETyhzZ29tZXMpOiBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gYWJvdXQgZGVza3RvcCBmb250IHNpemVzLiAqL1xuLyogVE9ETyhzZ29tZXMpOiBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gYWJvdXQgaTE4biBhbmQgaTE4biBmb250IHNpemVzLiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiBUT0RPKHNnb21lcyk6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyBhYm91dCBkZXNrdG9wIGZvbnQgc2l6ZXMuICovXG4vKiBUT0RPKHNnb21lcyk6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyBhYm91dCBpMThuIGFuZCBpMThuIGZvbnQgc2l6ZXMuICovXG4ubWRjLXR5cG9ncmFwaHkge1xuICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsgfVxuXG4ubWRjLXR5cG9ncmFwaHktLWRpc3BsYXk0IHtcbiAgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIGZvbnQtc2l6ZTogN3JlbTtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjA0ZW07XG4gIGxpbmUtaGVpZ2h0OiA3cmVtOyB9XG5cbi5tZGMtdHlwb2dyYXBoeS0tYWRqdXN0LW1hcmdpbi5tZGMtdHlwb2dyYXBoeS0tZGlzcGxheTQge1xuICBtYXJnaW46IC0xcmVtIDAgMy41cmVtIC0wLjA4NWVtOyB9XG5cbi5tZGMtdHlwb2dyYXBoeS0tZGlzcGxheTMge1xuICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgZm9udC1zaXplOiAzLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICBsaW5lLWhlaWdodDogMy41cmVtOyB9XG5cbi5tZGMtdHlwb2dyYXBoeS0tYWRqdXN0LW1hcmdpbi5tZGMtdHlwb2dyYXBoeS0tZGlzcGxheTMge1xuICBtYXJnaW46IC04cHggMCA2NHB4IC0wLjA3ZW07IH1cblxuLm1kYy10eXBvZ3JhcGh5LS1kaXNwbGF5MiB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICBmb250LXNpemU6IDIuODEzcmVtO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogM3JlbTsgfVxuXG4ubWRjLXR5cG9ncmFwaHktLWFkanVzdC1tYXJnaW4ubWRjLXR5cG9ncmFwaHktLWRpc3BsYXkyIHtcbiAgbWFyZ2luOiAtMC41cmVtIDAgNHJlbSAtMC4wN2VtOyB9XG5cbi5tZGMtdHlwb2dyYXBoeS0tZGlzcGxheTEge1xuICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgZm9udC1zaXplOiAyLjEyNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6IDIuNXJlbTsgfVxuXG4ubWRjLXR5cG9ncmFwaHktLWFkanVzdC1tYXJnaW4ubWRjLXR5cG9ncmFwaHktLWRpc3BsYXkxIHtcbiAgbWFyZ2luOiAtMC41cmVtIDAgNHJlbSAtMC4wN2VtOyB9XG5cbi5tZGMtdHlwb2dyYXBoeS0taGVhZGxpbmUge1xuICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgZm9udC1zaXplOiAxLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAycmVtOyB9XG5cbi5tZGMtdHlwb2dyYXBoeS0tYWRqdXN0LW1hcmdpbi5tZGMtdHlwb2dyYXBoeS0taGVhZGxpbmUge1xuICBtYXJnaW46IC0wLjVyZW0gMCAxcmVtIC0wLjA2ZW07IH1cblxuLm1kYy10eXBvZ3JhcGh5LS10aXRsZSB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG4gIGxpbmUtaGVpZ2h0OiAycmVtOyB9XG5cbi5tZGMtdHlwb2dyYXBoeS0tYWRqdXN0LW1hcmdpbi5tZGMtdHlwb2dyYXBoeS0tdGl0bGUge1xuICBtYXJnaW46IC0wLjVyZW0gMCAxcmVtIC0wLjA1ZW07IH1cblxuLm1kYy10eXBvZ3JhcGh5LS1zdWJoZWFkaW5nMiB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjc1cmVtOyB9XG5cbi5tZGMtdHlwb2dyYXBoeS0tYWRqdXN0LW1hcmdpbi5tZGMtdHlwb2dyYXBoeS0tc3ViaGVhZGluZzIge1xuICBtYXJnaW46IC0wLjVyZW0gMCAxcmVtIC0wLjA2ZW07IH1cblxuLm1kYy10eXBvZ3JhcGh5LS1zdWJoZWFkaW5nMSB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICBmb250LXNpemU6IDAuOTM4cmVtO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICBsaW5lLWhlaWdodDogMS41cmVtOyB9XG5cbi5tZGMtdHlwb2dyYXBoeS0tYWRqdXN0LW1hcmdpbi5tZGMtdHlwb2dyYXBoeS0tc3ViaGVhZGluZzEge1xuICBtYXJnaW46IC0wLjMxM3JlbSAwIDAuODEzcmVtIC0wLjA2ZW07IH1cblxuLm1kYy10eXBvZ3JhcGh5LS1ib2R5MiB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBmb250LXdlaWdodDogNTAwO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICBsaW5lLWhlaWdodDogMS41cmVtOyB9XG5cbi5tZGMtdHlwb2dyYXBoeS0tYWRqdXN0LW1hcmdpbi5tZGMtdHlwb2dyYXBoeS0tYm9keTIge1xuICBtYXJnaW46IC0wLjI1cmVtIDAgMC43NXJlbSAwOyB9XG5cbi5tZGMtdHlwb2dyYXBoeS0tYm9keTEge1xuICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07IH1cblxuLm1kYy10eXBvZ3JhcGh5LS1hZGp1c3QtbWFyZ2luLm1kYy10eXBvZ3JhcGh5LS1ib2R5MSB7XG4gIG1hcmdpbjogLTAuMjVyZW0gMCAwLjc1cmVtIDA7IH1cblxuLm1kYy10eXBvZ3JhcGh5LS1jYXB0aW9uIHtcbiAgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07IH1cblxuLm1kYy10eXBvZ3JhcGh5LS1hZGp1c3QtbWFyZ2luLm1kYy10eXBvZ3JhcGh5LS1jYXB0aW9uIHtcbiAgbWFyZ2luOiAtMC41cmVtIDAgMXJlbSAtMC4wNGVtOyB9XG4iLCIuY29udGFpbmVyIHtcbiAgbWFyZ2luLWxlZnQ6YXV0bztcbiAgbWFyZ2luLXJpZ2h0OmF1dG87XG4gIHBhZGRpbmc6IDAgMTVweDtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6MTAwJTtcbiAgQGluY2x1ZGUgZGVza3RvcCB7XG4gICAgd2lkdGg6IGNhbGMoI3skc2NyZWVuLWxnfSAtICN7JGNvbnRhaW5lci1saW1pdGVyfSk7XG4gIH1cbiAgQGluY2x1ZGUgZGVza3RvcC1sZyB7XG4gICAgd2lkdGg6IGNhbGMoI3skc2NyZWVuLWxnfSAtICN7JGNvbnRhaW5lci1saW1pdGVyfSk7XG4gIH1cbn1cblxuLmNvbnRhaW5lci0tcGFkZGVkIHtcbiAgQGV4dGVuZCAuY29udGFpbmVyO1xuICBwYWRkaW5nOiAwIDM1cHg7XG4gIEBpbmNsdWRlIGRlc2t0b3Age1xuICAgIHBhZGRpbmc6IDAgMTVweDtcbiAgfVxufVxuXG4ucm93IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi1sZWZ0OiAtMTVweDtcbiAgbWFyZ2luLXJpZ2h0OiAtMTVweDtcbiAgd2lkdGg6IGNhbGMoMTAwJSArICN7JGNvbnRhaW5lci1saW1pdGVyfSk7XG59IiwiOmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbn1cblxuOjpzZWxlY3Rpb24ge1xuICAvL2JhY2tncm91bmQ6ICRoaWdobGlnaHQtY29sb3I7XG4gIC8vY29sb3I6ICRsaWdodC1jb2xvcjtcbn1cbjo6LW1vei1zZWxlY3Rpb24ge1xuICAvL2JhY2tncm91bmQ6ICRoaWdobGlnaHQtY29sb3I7XG4gIC8vY29sb3I6ICRsaWdodC1jb2xvcjtcbn1cblxuOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsgLyogV2ViS2l0LCBCbGluaywgRWRnZSAqL1xuICAgIGNvbG9yOiAkcGxhY2Vob2xkZXI7XG59XG46LW1vei1wbGFjZWhvbGRlciB7IC8qIE1vemlsbGEgRmlyZWZveCA0IHRvIDE4ICovXG4gICBjb2xvcjogJHBsYWNlaG9sZGVyO1xuICAgb3BhY2l0eTogMTtcbn1cbjo6LW1vei1wbGFjZWhvbGRlciB7IC8qIE1vemlsbGEgRmlyZWZveCAxOSsgKi9cbiAgIGNvbG9yOiAkcGxhY2Vob2xkZXI7XG4gICBvcGFjaXR5OiAxO1xufVxuOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IC8qIEludGVybmV0IEV4cGxvcmVyIDEwLTExICovXG4gICBjb2xvcjogJHBsYWNlaG9sZGVyO1xufVxuOnBsYWNlaG9sZGVyLXNob3duIHsgLyogU3RhbmRhcmQgKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9zZWxlY3RvcnMtNC8jcGxhY2Vob2xkZXIpICovXG4gIGNvbG9yOiAkcGxhY2Vob2xkZXI7XG59XG5cbioge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG5ib2R5LCBkaXYsIGRsLCBkdCwgZGQsIHVsLCBvbCwgbGksIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHByZSwgZm9ybSwgZmllbGRzZXQsIGlucHV0LCB0ZXh0YXJlYSwgcCwgYmxvY2txdW90ZSwgdGgsIHRkIHtcbiAgbWFyZ2luOiAwcHg7XG4gIHBhZGRpbmc6IDBweDtcbn1cblxuLy8gSFRNTDUgZGlzcGxheS1yb2xlIHJlc2V0IGZvciBvbGRlciBicm93c2Vyc1xuYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSxcbmZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1lbnUsIG5hdiwgc2VjdGlvbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG5ib2R5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJvZHktYmFja2dyb3VuZC1jb2xvcjtcbiAgY29sb3I6ICRib2R5LXRleHQtY29sb3I7XG4gIGZvbnQtZmFtaWx5OiAkYmFzZS1mb250LWZhbWlseTtcbiAgZm9udC1zaXplOiAkYmFzZS1mb250LXNpemU7XG4gIGxpbmUtaGVpZ2h0OiAkYmFzZS1saW5lLWhlaWdodDtcbiAgJi5tb2RhbC1vcGVuIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG59XG5cbmgxIHtcbiAgQGluY2x1ZGUgdGV4dC1sZygpO1xuICBAaW5jbHVkZSB0YWJsZXQge1xuICAgIEBpbmNsdWRlIHRleHQtbGcoJG11bHRpcGxpZXI6IDMuMzMsICRsZXR0ZXItc3BhY2luZzoxLjVweCk7XG4gIH1cbn1cblxuaDIge1xuICBAaW5jbHVkZSB0ZXh0LWxnKCRtdWx0aXBsaWVyOiAyKTtcbn1cblxuaDMge1xuICBAaW5jbHVkZSB0ZXh0LW1kKCk7XG59XG5cbmg0IHtcbiAgQGluY2x1ZGUgdGV4dC1tZCgkbXVsdGlwbGllcjogMC45KTtcbn1cblxuaDUge1xuICBAaW5jbHVkZSB0ZXh0LXNtKCRtdWx0aXBsaWVyOiAwLjc4KTtcbn1cblxuaDYge1xuICBAaW5jbHVkZSB0ZXh0LXNtKCRtdWx0aXBsaWVyOiAwLjY3KTtcbn1cblxucCB7XG4gIGZvbnQtZmFtaWx5OiAkYm9keS10ZXh0LWNvbG9yO1xuICBmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZTtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cblxuYSB7XG4gIGNvbG9yOiAkY2FsbC10by1hY3Rpb24taGlnaGxpZ2h0O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuICBib3JkZXI6IG5vbmU7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbmE6aG92ZXIsIGE6Zm9jdXMsIGE6YWN0aXZlIHtcbiAgY29sb3I6ICRjYWxsLXRvLWFjdGlvbi1oaWdobGlnaHQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZSFpbXBvcnRhbnQ7XG4gIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuICBvdXRsaW5lOiBub25lO1xufVxuXG50YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwO1xufVxuXG5maWVsZHNldCwgaW1nIHtcbiAgYm9yZGVyOiAwO1xufVxuXG51bCB7XG4gIHBhZGRpbmctbGVmdDogMjBweDtcbn1cblxuY2FwdGlvbiwgdGgge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG5ibG9ja3F1b3RlLCBxIHtcbiAgcXVvdGVzOiBub25lO1xufVxuXG5ibG9ja3F1b3RlOmJlZm9yZSwgYmxvY2txdW90ZTphZnRlcixcbnE6YmVmb3JlLCBxOmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIGNvbnRlbnQ6IG5vbmU7XG59XG5cbi5pbWdfX2Z1bGwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiBhdXRvO1xuICBtYXJnaW46IDBweCBhdXRvIDQwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBAaW5jbHVkZSBkZXNrdG9wIHtcbiAgICB3aWR0aDogJHNjcmVlbi1tZCAtICRjb250YWluZXItbGltaXRlcjtcbiAgfVxufVxuXG5zdmcge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG59IiwiLmJsb2ctcGFnZSB7XG4gIC5pbmxpbmUtdGVzdGltb25pYWwgaDEge1xuICAgIGZvbnQtc2l6ZTogMjVweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tbGVmdDogNTBweDtcbiAgfVxuICAuaW5saW5lLXRlc3RpbW9uaWFsIHtcbiAgICBwYWRkaW5nOiAxMHB4IDBweCAxMHB4IDEwcHghaW1wb3J0YW50O1xuICAgIHdpZHRoOiAxMDAlIWltcG9ydGFudDtcbiAgfVxuICBpbWcge1xuICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gIH1cbn1cblxuLmJsb2ctaGVhZGluZyB7XG4gIEBpbmNsdWRlIHRleHQtbWQoJGNvbG9yOiAkYm9keS10ZXh0LWNvbG9yLCAkd2VpZ2h0OiA1MDAsICRsZXR0ZXItc3BhY2luZzogMC43NSk7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG4gIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgfVxufVxuXG4uYmxvZy1wYXJhZ3JhcGgge1xuICAmX19pbnRybyB7XG4gICAgQGluY2x1ZGUgdGV4dC1tZCgkY29sb3I6ICRib2R5LXRleHQtY29sb3IsICR3ZWlnaHQ6IDUwMCwgJGxldHRlci1zcGFjaW5nOiAwLjc1KTtcbiAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xuICAgIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgICBAaW5jbHVkZSB0ZXh0LW1kKCRjb2xvcjogJGJvZHktdGV4dC1jb2xvciwgJHdlaWdodDogNTAwLCAkbGV0dGVyLXNwYWNpbmc6IDAuOSwgJG11bHRpcGxpZXI6IDEuNjYpO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgICB9XG4gIH1cbiAgJl9fdGV4dCB7XG4gICAgcCB7XG4gICAgICBAaW5jbHVkZSB0ZXh0LXNtKCRsZXR0ZXItc3BhY2luZzogMC42cHgsICRtdWx0aXBsaWVyOiAxLjEyLCAkbGluZS1oZWlnaHQ6IDEuMzMpO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDtcbiAgICAgIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHVsIGxpIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXNtKCRtdWx0aXBsaWVyOiAxLjEyLCAkd2VpZ2h0OiAzMDAsICRsaW5lLWhlaWdodDogMS43NSwgJGxldHRlci1zcGFjaW5nOiAwLjZweCk7XG4gIH1cbiAgdWwge1xuICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gIH1cbn0iLCIuYnV0dG9uIHtcbiAgbWluLXdpZHRoOiAyODBweDtcbiAgcGFkZGluZzogMTdweCA1MHB4O1xuICBAaW5jbHVkZSB0ZXh0LXNtKCR3ZWlnaHQ6IDUwMCwgJG11bHRpcGxpZXI6IDEuMTIsICRsZXR0ZXItc3BhY2luZzogMnB4LCAkY29sb3I6IHdoaXRlKTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2FsbC10by1hY3Rpb24taGlnaGxpZ2h0O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbigkY2FsbC10by1hY3Rpb24taGlnaGxpZ2h0LCAxMCUpXG4gIH1cbiAgJi0tc20ge1xuICAgIG1pbi13aWR0aDogMTY0cHg7XG4gICAgcGFkZGluZy10b3A6IDEzcHg7XG4gICAgcGFkZGluZy1ib3R0b206IDEzcHg7XG4gICAgQGluY2x1ZGUgdGV4dC1zbSgkd2VpZ2h0OiA1MDAsICRtdWx0aXBsaWVyOiAwLjkyLCAkbGV0dGVyLXNwYWNpbmc6IDAuNXB4LCAkY29sb3I6IHdoaXRlKTtcbiAgICBib3JkZXI6IG5vbmU7XG4gIH1cbn0iLCJbaWQ9JzYyJ10ge1xuICAucGFyYWdyYXBoIHtcbiAgICAucGFyYWdyYXBoX19pbnRybyB7XG4gICAgICBjb2xvcjogYmxhY2s7XG4gICAgICBmb250LXdlaWdodDogNDAwO1xuICAgIH1cbiAgICBwIHtcbiAgICAgIEBpbmNsdWRlIHRleHQtc20oKTtcbiAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5wYWdlc19fc2lkZS1tZW51LWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIHRhYmxldC1sZyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIH1cbn1cblxuLnBhZ2VzX19zaWRlLW1lbnUtY29udGFpbmVyLmFjdGl2ZSB7XG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMzE1cHg7XG4gICAgaGVpZ2h0OjFweDtcbiAgICBmbGV4LXNocmluazogMDtcbiAgfVxufVxuXG4ucGFnZXNfX3NpZGUtbWVudV93aWRnZXRzIHtcbiAgbWFyZ2luOiBhdXRvO1xuICAuaGVhZGluZywgLnBhcmFncmFwaCwgLmFjY29yZGlvbl9fY29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDg0OHB4O1xuICAgIEBpbmNsdWRlIGRlc2t0b3AtbGcge1xuICAgICAgbWF4LXdpZHRoOjEyMDBweDtcbiAgICB9XG4gIH1cbn0iLCIuZm9vdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGZvb3Rlci1iYWNrZ3JvdW5kLWNvbG9yO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICZfX2xpbmtzIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIEBleHRlbmQgLmNvbnRhaW5lci0tcGFkZGVkO1xuICAgIEBpbmNsdWRlIHRhYmxldC1sZyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgcGFkZGluZzogMzBweCAzNXB4O1xuICAgIH1cbiAgICBAaW5jbHVkZSB0YWJsZXQtbGcge1xuICAgICAgcGFkZGluZzogNTBweCAzNXB4O1xuICAgIH1cbiAgICBAaW5jbHVkZSBkZXNrdG9wIHtcbiAgICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7XG4gICAgfVxuICAgICZfc2VjdGlvbiB7XG5cbiAgICB9XG4gICAgJl90aXRsZSB7XG4gICAgICBAaW5jbHVkZSB0ZXh0LXNtKCRjb2xvcjogJGZvb3Rlci10ZXh0LWNvbG9yLCAkd2VpZ2h0OiA3MDApO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgICAmX2xpbmsge1xuICAgICAgQGluY2x1ZGUgdGV4dC1zbSgkY29sb3I6IHdoaXRlKTtcbiAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cbiAgJl9fZm9vdGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYm9keS10ZXh0LWNvbG9yO1xuICAgIHBhZGRpbmc6IDM2cHggMjBweDtcbiAgICBAaW5jbHVkZSB0YWJsZXQtbGcge1xuICAgICAgcGFkZGluZzogMzBweCAyMHB4IDM4cHg7XG4gICAgfVxuICAgICZfY29udGFpbmVyIHtcbiAgICAgIG1heC13aWR0aDogMTI2MHB4O1xuICAgICAgbWFyZ2luOiBhdXRvO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG4gICAgJl9sZWZ0IHtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIH1cbiAgICAmX3JpZ2h0IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIH1cbiAgICB9XG4gICAgJl9sb2dvIHtcbiAgICAgIHdpZHRoOiAxNTRweDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAycHg7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMXB4O1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgdGFibGV0LWxnIHtcbiAgICAgICAgd2lkdGg6IDIzOHB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogNHB4O1xuICAgICAgfVxuICAgIH1cbiAgICAmX3JpZ2h0cyB7XG4gICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBsZWZ0OiAycHg7XG4gICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgQGluY2x1ZGUgdGFibGV0LWxnIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBsZWZ0OiA1OXB4O1xuICAgICAgfVxuICAgICAgYSB7XG4gICAgICAgIGNvbG9yOiAjOWI5YjliO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGxlZnQ6IDNweDtcbiAgICAgIH1cbiAgICB9XG4gICAgJl9ibHVyYiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgbWF4LXdpZHRoOiAyNzhweDtcbiAgICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgIEBpbmNsdWRlIHRhYmxldC1sZyB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbGVmdDogNTlweDtcbiAgICAgIH1cbiAgICB9XG4gICAgJl9tb3JlLWJsdXJiIHtcbiAgICAgIG1heC13aWR0aDogMjc4cHg7XG4gICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIEBpbmNsdWRlIHRhYmxldC1sZyB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbGVmdDogNTlweDtcbiAgICAgIH1cbiAgICB9XG4gICAgJl90aXRsZSB7XG4gICAgICBAaW5jbHVkZSB0ZXh0LXNtKCRtdWx0aXBsaWVyOiAxLjEyLCAkd2VpZ2h0OiA3MDAsICRjb2xvcjogJGZvb3Rlci10ZXh0LWNvbG9yLCAkbGluZS1oZWlnaHQ6IDEuMyk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxNHB4O1xuICAgIH1cbiAgICAmX3NvY2lhbC1saW5rIHtcbiAgICAgIEBpbmNsdWRlIHRleHQtc20oJGNvbG9yOiAkZm9vdGVyLXRleHQtY29sb3IpO1xuICAgICAgaSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuICAgICAgfVxuICAgICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAzMHB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIiIsIi5oZWFkZXIge1xuICBoZWlnaHQ6IDgwcHg7XG4gIEBpbmNsdWRlIHRhYmxldC1sZyB7XG4gICAgaGVpZ2h0OiAxMDBweDtcbiAgfVxuICBAaW5jbHVkZSBkZXNrdG9wIHtcbiAgICBoZWlnaHQ6IDEyMHB4O1xuICB9XG4gICZfX2NvbnRhaW5lciB7XG4gICAgcGFkZGluZzogMjBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1heC13aWR0aDogMTMwMHB4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IGF1dG87XG4gIH1cbiAgJl9fbG9nbyB7XG4gICAgQGluY2x1ZGUgdGFibGV0LWxnIHtcbiAgICAgIHdpZHRoOiAyMzBweDtcbiAgICB9XG4gICAgQGluY2x1ZGUgZGVza3RvcCB7XG4gICAgICB3aWR0aDogMzE3cHg7XG4gICAgfVxuICB9XG4gICZfX21lbnUtbGluayB7XG4gICAgY29sb3I6ICRoZWFkZXItdGV4dC1jb2xvcjtcbiAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcbiAgICBwYWRkaW5nOiAwIDE1cHg7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIEBpbmNsdWRlIGRlc2t0b3Age1xuICAgICAgcGFkZGluZzogMCAyMHB4O1xuICAgIH1cbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkY2FsbC10by1hY3Rpb24taGlnaGxpZ2h0O1xuICAgIH1cbiAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIH1cbiAgICAmLS1kcm9wZG93biB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICRoZWFkZXItdGV4dC1jb2xvcjtcbiAgICAgICAgLmhlYWRlcl9fbWVudS1saW5rX19kcm9wZG93biB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAmX19kcm9wZG93biB7XG4gICAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgICAgIGJvcmRlcjogc29saWQgMC41cHggI2U2ZTZlNjtcbiAgICAgIHdpZHRoOiAxNThweDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgei1pbmRleDogMjA7XG4gICAgICAmX2NvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB9XG4gICAgICBhIHtcbiAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgY29sb3I6ICRib2R5LXRleHQtY29sb3I7XG4gICAgICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2FsbC10by1hY3Rpb24taGlnaGxpZ2h0O1xuICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYTpsYXN0LW9mLXR5cGUge1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAmX19jbG9zZS1tZW51IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gICZfX21lbnUtaWNvbiB7XG4gICAgQGluY2x1ZGUgdGFibGV0LWxnIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG4gICZfX21lbnUtLWRlc2t0b3Age1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgQGluY2x1ZGUgdGFibGV0LWxnIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuICAmLm9wZW4ge1xuICAgIC5oZWFkZXJfX2Nsb3NlLW1lbnUge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICAgIC5oZWFkZXJfX21lbnUtaWNvbiB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICAubW9iaWxlLW1lbnUge1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gICAgfVxuICB9XG59XG5cbi5oZWFkZXJfX3NlY29uZGFyeSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogbm9uZTtcbiAgaGVpZ2h0OiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3aWR0aDogMTAwJTtcbiAgQGluY2x1ZGUgdGFibGV0LWxnIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHRvcDogMTAwcHg7XG4gICAgbGVmdDogMDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGEge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjYWxsLXRvLWFjdGlvbi1oaWdobGlnaHQ7XG4gICAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcbiAgICAgIGhlaWdodDoxMDAlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBAaW5jbHVkZSB0ZXh0LXNtKCRjb2xvcjogd2hpdGUsICR3ZWlnaHQ6IDQwMCwgJG11bHRpcGxpZXI6IDEuMTIsICRsZXR0ZXItc3BhY2luZzogMC42cHgpO1xuICAgICAgJjpob3ZlciwgJi5hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYm9keS10ZXh0LWNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBkZXNrdG9wIHtcbiAgICB0b3A6IDEyMHB4O1xuICB9XG4gICYuYWN0aXZlIHtcbiAgICBAaW5jbHVkZSB0YWJsZXQtbGcge1xuICAgICAgaGVpZ2h0OiA3MHB4O1xuICAgIH1cbiAgICBAaW5jbHVkZSBkZXNrdG9wIHtcbiAgICAgIGhlaWdodDogODBweDtcbiAgICB9XG4gIH1cbn1cblxuLnRoZS1yZWFsLWhlYWRlci1jb250YWluZXIge1xuICBAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHtcbiAgICBoZWlnaHQ6IDgwcHg7XG4gICAgbWFyZ2luLXRvcDogODBweDtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAtODBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICB6LWluZGV4OiAxMDA7XG4gIH1cbiAgQGluY2x1ZGUgdGFibGV0LWxnIHtcbiAgICBoZWlnaHQ6IDEwMHB4O1xuICB9XG4gIEBpbmNsdWRlIGRlc2t0b3Age1xuICAgIGhlaWdodDogMTIwcHg7XG4gIH1cbn0iLCIuaGVybyB7XG4gIGhlaWdodDogNTYwcHg7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgQGluY2x1ZGUgaW1hZ2VfYmFja2dyb3VuZDtcbiAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICBoZWlnaHQ6IDcwMHB4O1xuICB9XG4gICZfX292ZXJsYXkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjcsIDMyLCA0NCwgMC43KTtcbiAgICBoZWlnaHQ6MTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBwYWRkaW5nOiAwIDE1cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG4gICZfX3RleHQtd3JhcCB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIEBleHRlbmQgLmNvbnRhaW5lcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IGF1dG87XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgfVxuICAmX19oZWFkaW5nIHtcbiAgICBAaW5jbHVkZSB0ZXh0LWxnKCRtdWx0aXBsaWVyOiAyLjc3LCAkbGV0dGVyLXNwYWNpbmc6IDApO1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgbWF4LXdpZHRoOiA4MDBweDtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgd2lkdGg6MTAwJTtcbiAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgQGluY2x1ZGUgdGV4dC1sZygkbXVsdGlwbGllcjogMy44OCk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgfVxuICAmX19zdWItaGVhZGluZyB7XG4gICAgQGluY2x1ZGUgdGV4dC1zbSgkY29sb3I6IHdoaXRlLCAkd2VpZ2h0OiA0MDApO1xuICAgIG1heC13aWR0aDogODAwcHg7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIEBpbmNsdWRlIG1vYmlsZSB7XG4gICAgICB3aWR0aDogOTAlO1xuICAgIH1cbiAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgQGluY2x1ZGUgdGV4dC1tZCgkd2VpZ2h0OiA0MDAsICRjb2xvcjogaW5oZXJpdCk7XG4gICAgICBtYXJnaW4tYm90dG9tOiA2MHB4O1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB9XG4gIH1cbiAgJl9fc2Nyb2xsLWljb24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG4gIH1cbiAgJl9fYmFubmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI3LCAzMywgNDUsIDAuOCk7XG4gICAgcGFkZGluZzogMzFweCA0MHB4O1xuICAgIG1hcmdpbjogMCAtMTVweDtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgMzBweCk7XG4gICAgJl9jb250ZW50LXdyYXAge1xuICAgICAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBtYXgtd2lkdGg6IDk1MnB4O1xuICAgICAgICBtYXJnaW46IGF1dG87XG4gICAgICB9XG4gICAgfVxuICAgICZfdGV4dCB7XG4gICAgICBAaW5jbHVkZSB0ZXh0LXNtKCRjb2xvcjogaW5oZXJpdCwgJHdlaWdodDogNDAwLCAkbXVsdGlwbGllcjogMS4xMik7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1tZCgkY29sb3I6IGluaGVyaXQsICR3ZWlnaHQ6IDcwMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gICYuaGVyby0tbWVudSB7XG4gICAgLmhlcm8ge1xuICAgICAgJl9fbWVudS0tZGVza3RvcCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIEBpbmNsdWRlIHRhYmxldC1sZyB7XG4gICAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJl9fbWVudS1pdGVtIHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGhlaWdodDogMjUwcHg7XG4gICAgICAgIGZsZXg6IDEgMCAyMjRweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTQsIDI1NCwgMjU0LCAwLjE1KTtcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1sZygkbGluZS1oZWlnaHQ6IDEsICR3ZWlnaHQ6IDUwMCwgJGxldHRlci1zcGFjaW5nOiAxLjJweCwgJG11bHRpcGxpZXI6IDIuMjIpO1xuICAgICAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcbiAgICAgICAgcGFkZGluZzogMjdweDtcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNlY29uZGFyeS1jYWxsLXRvLWFjdGlvbi1oaWdobGlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgfVxuICAgICAgJl9faGVhZGluZyB7XG4gICAgICAgIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgICAgICAgIEBpbmNsdWRlIHRleHQtbGcoJGxldHRlci1zcGFjaW5nOiAxLjlweCwgJG11bHRpcGxpZXI6IDMuMzMpO1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHRhYmxldC1sZyB7XG4gICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJl9fc3ViLWhlYWRpbmcge1xuICAgICAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDY1cHg7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICAgICAgICBtYXgtd2lkdGg6IDk4M3B4O1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSB0YWJsZXQtbGcge1xuICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgJi0tc21hbGwge1xuICAgIGhlaWdodDogMzUwcHg7XG4gICAgLnJvdyB7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAuaGVybyB7XG4gICAgICAgICZfX2hlYWRpbmcge1xuICAgICAgICAgIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICZfX3N1Yi1oZWFkaW5nIHtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjhweDtcbiAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gICYtLWJhbm5lciB7XG4gICAgLnJvdyB7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIH1cbiAgICAuaGVyb19fc3ViLWhlYWRpbmcge1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgfVxufVxuXG4uaGVyby1tZW51LS1tb2JpbGUge1xuICAuaGVybyB7XG4gICAgJl9fdGV4dC13cmFwIHtcbiAgICAgIEBpbmNsdWRlIHRhYmxldC1sZyB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB9XG4gICAgfVxuICAgICZfX2hlYWRpbmcge1xuICAgICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICB9XG4gICAgJl9fbWVudSB7XG4gICAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcbiAgICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRib2R5LXRleHQtY29sb3I7XG4gICAgICBoZWlnaHQ6NzBweDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAmLm9wZW4ge1xuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHtcbiAgICAgICAgICAuaGVyb19fbWVudS1pdGVtOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNlY29uZGFyeS1jYWxsLXRvLWFjdGlvbi1oaWdobGlnaHQhaW1wb3J0YW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJi1pdGVtIHtcbiAgICAgICAgaGVpZ2h0OiA3MHB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMCAxNXB4O1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCRib2R5LXRleHQtY29sb3IsIDE1JSk7XG4gICAgICAgIH1cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICAgICZfdGV4dCB7XG4gICAgICAgICAgQGluY2x1ZGUgdGV4dC1zbSgkbXVsdGlwbGllcjogMS4xMiwgJHdlaWdodDogNTAwLCAkbGV0dGVyLXNwYWNpbmc6IDAuNXB4LCAkY29sb3I6IHdoaXRlKTtcbiAgICAgICAgfVxuICAgICAgICAmOmZpcnN0LW9mLXR5cGUgaW1nIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBAaW5jbHVkZSB0YWJsZXQtbGcge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmY2JmNjE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgdGFibGV0LWxnIHtcbiAgICB3aWR0aDogMzE1cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIC5oZXJvIHtcbiAgICAgICZfX21lbnUge1xuICAgICAgICBoZWlnaHQ6MTAwJSFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuICAgICYuYWN0aXZlIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB0b3A6IDA7XG4gICAgICBoZWlnaHQ6MTAwJTtcbiAgICAgIC5oZXJvIHtcbiAgICAgICAgJl9fbWVudSB7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIiIsIi8qIFNsaWRlciAqL1xuXG4uc2xpY2stc2xpZGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1zLXRvdWNoLWFjdGlvbjogcGFuLXk7XG4gIHRvdWNoLWFjdGlvbjogcGFuLXk7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uc2xpY2stbGlzdCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJi5kcmFnZ2luZyB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGN1cnNvcjogaGFuZDtcbiAgfVxufVxuLnNsaWNrLXNsaWRlciAuc2xpY2stdHJhY2ssXG4uc2xpY2stc2xpZGVyIC5zbGljay1saXN0IHtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xufVxuXG4uc2xpY2stdHJhY2sge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgZGlzcGxheTogYmxvY2s7XG5cbiAgJjpiZWZvcmUsXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gIH1cblxuICAmOmFmdGVyIHtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuXG4gIC5zbGljay1sb2FkaW5nICYge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgfVxufVxuLnNsaWNrLXNsaWRlIHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIGhlaWdodDogMTAwJTtcbiAgbWluLWhlaWdodDogMXB4O1xuICBbZGlyPVwicnRsXCJdICYge1xuICAgIGZsb2F0OiByaWdodDtcbiAgfVxuICBpbWcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG4gICYuc2xpY2stbG9hZGluZyBpbWcge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICBkaXNwbGF5OiBub25lO1xuXG4gICYuZHJhZ2dpbmcgaW1nIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuXG4gIC5zbGljay1pbml0aWFsaXplZCAmIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIC5zbGljay1sb2FkaW5nICYge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgfVxuXG4gIC5zbGljay12ZXJ0aWNhbCAmIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIH1cbn1cblxuLnNsaWNrLWFycm93LnNsaWNrLWhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5zbGlkZXMge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHVsIGxpIHtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmUhaW1wb3J0YW50O1xuICB9XG59XG5cbi5zbGljay12aWRlbyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gICZfX292ZXJsYXkge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gIH1cbn1cblxuLy8gRGVmYXVsdCBpbWFnZSBzZXR0aW5ncyB3aGVuIHVzZWQgYXMgYSBjc3MgYmFja2dyb3VuZFxuQG1peGluIGltYWdlX2JhY2tncm91bmQge1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xufVxuXG4uc2xpZGUge1xuICBwYWRkaW5nOjBweDtcbiAgcG9zaXRpb246cmVsYXRpdmU7XG4gIHRleHQtYWxpZ246Y2VudGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG4gIEBpbmNsdWRlIGltYWdlX2JhY2tncm91bmQ7XG4gIGJhY2tncm91bmQtc2l6ZTogY29udGFpbiFpbXBvcnRhbnQ7XG4gIGltYWdlLXJlbmRlcmluZzogLXdlYmtpdC1vcHRpbWl6ZS1jb250cmFzdDtcbiAgaGVpZ2h0OiA0MDBweDtcbn1cblxuLmhvbWUgLnNsaWNrLXRyYWNrLCAuaG9tZSAuc2xpY2stbGlzdCB7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuYS5zbGljay1wcmV2LFxuYS5zbGljay1uZXh0IHtcbiAgYmFja2dyb3VuZC1zaXplOjQwcHg7XG4gIGhlaWdodDoxMDAlO1xuICBtYXJnaW46MHB4O1xuICBvcGFjaXR5OjAuNjtcbiAgb3V0bGluZTpub25lO1xuICBkaXNwbGF5OmJsb2NrO1xuICBjdXJzb3I6cG9pbnRlcjtcbiAgYm9yZGVyOm5vbmU7XG4gIHBhZGRpbmc6MHB4O1xuICB0ZXh0LWluZGVudDotOTk5OXB4O1xuICBwb3NpdGlvbjphYnNvbHV0ZTtcblxuICB0b3A6MHB4O1xuICB0cmFuc2l0aW9uOjAuMXM7XG4gIHdpZHRoOjQwMHB4O1xuICB6LWluZGV4OjEwMDtcbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtcbiAgICBvcGFjaXR5OjE7XG4gICAgb3V0bGluZTpub25lO1xuICB9XG59XG4uc2xpY2stZG90cyB7XG4gIGxpbmUtaGVpZ2h0OjIwcHg7XG4gIHBvc2l0aW9uOmFic29sdXRlO1xuICBtYXJnaW4tcmlnaHQ6IDMycHg7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGxlZnQ6IDUwJTtcbiAgYm90dG9tOiAtMTIwcHg7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKSB0cmFuc2xhdGVZKC03cHgpO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpIHRyYW5zbGF0ZVkoLTdweCk7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICBib3R0b206IDQwcHg7XG4gIH1cbiAgJiBsaSB7XG4gICAgcGFkZGluZy1ib3R0b206IDZweDtcbiAgICBwYWRkaW5nLXRvcDogNnB4O1xuICAgICYgYnV0dG9uIHtcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyO1xuICAgICAgYm9yZGVyLXJhZGl1czoxNXB4O1xuICAgICAgY29sb3I6dHJhbnNwYXJlbnQ7XG4gICAgICBjdXJzb3I6cG9pbnRlcjtcbiAgICAgIHdpZHRoOiAxNXB4O1xuICAgICAgaGVpZ2h0OiAxNXB4O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2JkYmRiZDtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxubGkuc2xpY2stYWN0aXZlIGJ1dHRvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3MzczNzM7XG59XG5cbi5zbGljay1wcmV2IHtcbiAgbGVmdDogLTEwcHg7XG4gIGN1cnNvcjpwb2ludGVyO1xuICBib3JkZXI6bm9uZTtcbiAgcGFkZGluZzowcHg7XG4gIHRleHQtaW5kZW50Oi05OTk5cHg7XG4gIGJhY2tncm91bmQ6dXJsKCcvbWVkaWEvYXJyb3ctcHJldmlvdXMtYmxhY2suc3ZnJykgbm8tcmVwZWF0IDEwJSA1MCU7XG4gIGJhY2tncm91bmQtc2l6ZTogMTZweDtcbiAgaGVpZ2h0OiA1MHB4O1xuICB6LWluZGV4OjEwMDtcbiAgd2lkdGg6IDIwcHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIG1hcmdpbi10b3A6IC0yNXB4O1xuICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICBtYXJnaW4tbGVmdDogLTIwcHg7XG4gIH1cbn1cblxuLnNsaWNrLW5leHQge1xuICByaWdodDogLTEwcHg7XG4gIGN1cnNvcjpwb2ludGVyO1xuICBib3JkZXI6bm9uZTtcbiAgcGFkZGluZzowcHg7XG4gIHRleHQtaW5kZW50Oi05OTk5cHg7XG4gIGJhY2tncm91bmQ6dXJsKCcvbWVkaWEvYXJyb3ctbmV4dC1ibGFjay5zdmcnKSBuby1yZXBlYXQgOTAlIDUwJTtcbiAgYmFja2dyb3VuZC1zaXplOiAxNnB4O1xuICB6LWluZGV4OjEwMDtcbiAgaGVpZ2h0OiA1MHB4O1xuICB3aWR0aDogMjBweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgbWFyZ2luLXRvcDogLTI1cHg7XG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIG1hcmdpbi1yaWdodDogLTIwcHg7XG4gIH1cbn0iLCIuaGVhZGluZyB7XG4gIEBleHRlbmQgLmNvbnRhaW5lci0tcGFkZGVkO1xuICAucm93IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB9XG4gIG1hcmdpbi10b3A6IDgwcHg7XG4gIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgbWFyZ2luLXRvcDogMTAwcHg7XG4gIH1cbiAgaDEge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gIH1cbiAgaDIge1xuICAgIEBpbmNsdWRlIHRleHQtbWQoJG11bHRpcGxpZXI6IDEuNjYsICRsZXR0ZXItc3BhY2luZzogMC44cHgpO1xuICAgIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgICBmb250LXNpemU6IDUwcHg7XG4gICAgfVxuICB9XG59XG5cbi5wYXJhZ3JhcGgge1xuICBAZXh0ZW5kIC5jb250YWluZXItLXBhZGRlZDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgJl9faW50cm8ge1xuICAgIEBpbmNsdWRlIHRleHQtbWQoJGxldHRlci1zcGFjaW5nOiAwLjhweCk7XG4gICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgQGluY2x1ZGUgdGV4dC1tZCgkbXVsdGlwbGllcjogMS42NiwgJGxldHRlci1zcGFjaW5nOiAwLjlweCk7XG4gICAgfVxuICB9XG4gICZfX3RleHQge1xuICAgIHAge1xuICAgICAgQGluY2x1ZGUgdGV4dC1tZCgkbGV0dGVyLXNwYWNpbmc6IDAuOHB4LCAkbXVsdGlwbGllcjogMS4xMiwgJGxpbmUtaGVpZ2h0OiAxLjMzKTtcbiAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gICAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgICBAaW5jbHVkZSB0ZXh0LW1kKCRsZXR0ZXItc3BhY2luZzogMC45cHgsICRsaW5lLWhlaWdodDogMS4zMyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHVsIGxpIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXNtKCRtdWx0aXBsaWVyOiAxLjEyLCAkd2VpZ2h0OiAzMDAsICRsaW5lLWhlaWdodDogMS43NSwgJGxldHRlci1zcGFjaW5nOiAwLjZweCk7XG4gIH1cbiAgdWwge1xuICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gIH1cbiAgJi0tc2VwYXJhdG9yIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogODBweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgcGFkZGluZy1ib3R0b206IDEwMHB4O1xuICAgIH1cbiAgfVxufVxuXG4ubWVudS1zcXVhcmVzIHtcbiAgQGV4dGVuZCAuY29udGFpbmVyO1xuICBwYWRkaW5nLWJvdHRvbTogODBweDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBAaW5jbHVkZSB0YWJsZXQge1xuICAgIHBhZGRpbmctYm90dG9tOiAxMDBweDtcbiAgICBwYWRkaW5nLXRvcDogNDBweDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICB9XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRDhEOEQ4O1xuICAmX19pdGVtIHtcbiAgICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjVweCAkYm9yZGVyLWNvbG9yO1xuICAgIGhlaWdodDoxMDBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMCAxOXB4O1xuICAgIEBpbmNsdWRlIHRleHQtbWQoJGNvbG9yOiAkY2FsbC10by1hY3Rpb24taGlnaGxpZ2h0LCAkd2VpZ2h0OiA0MDApO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6MTAwJTtcbiAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgaGVpZ2h0OiAzNTBweDtcbiAgICAgIGZsZXg6IDEgMCAzNTBweDtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgcGFkZGluZzogMzBweDtcbiAgICB9XG4gICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgIGJvcmRlci10b3A6IHNvbGlkIDAuNXB4ICRib3JkZXItY29sb3I7XG4gICAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgICBib3JkZXItdG9wOiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgICAmOm50aC1vZi10eXBlKG4gKyA1KSB7XG4gICAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgICAmOm50aC1vZi10eXBlKG4gKyA0KSB7XG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogMTA5NXB4KSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICAgICY6bnRoLW9mLXR5cGUob2RkKSB7XG4gICAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgICBib3JkZXItcmlnaHQ6IHNvbGlkIDAuNXB4ICRib3JkZXItY29sb3I7XG4gICAgICB9XG4gICAgfVxuICAgICY6bnRoLW9mLXR5cGUobiArIDApIHtcbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAxMDk1cHgpIHtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiBzb2xpZCAwLjVweCAkYm9yZGVyLWNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgICAmOm50aC1vZi10eXBlKDNuICsgMCkge1xuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDEwOTVweCkge1xuICAgICAgICBib3JkZXItcmlnaHQ6IG5vbmVcbiAgICAgIH1cbiAgICB9XG4gICAgJl90ZXh0IHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1heC13aWR0aDogMzEwcHg7XG4gICAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIEBpbmNsdWRlIHRleHQtbGcoJGNvbG9yOiBpbmhlcml0LCAkbGluZS1oZWlnaHQ6IDEuMjUsICR3ZWlnaHQ6IDQwMCwgJGxldHRlci1zcGFjaW5nOiAwLjlweCk7XG4gICAgICB9XG4gICAgfVxuICAgICZfaWNvbiB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgICAmOmhvdmVyIHtcbiAgICAgIC5tZW51LXNxdWFyZXNfX2hvdmVyIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICAgIC5tZW51LXNxdWFyZXNfX2l0ZW1fdGV4dCB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIH1cbiAgICAgIC5tZW51LXNxdWFyZXNfX2l0ZW1faWNvbiBzdmcgZyBnIHtcbiAgICAgICAgc3Ryb2tlOiAjZmZmIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgJl9faG92ZXIge1xuICAgIEBpbmNsdWRlIGltYWdlX2JhY2tncm91bmQoKTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNpdGlvbjogJHRyYW5zaXRpb247XG4gICAgJi1vdmVybGF5IHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cbiAgfVxufVxuXG4udGhyZWUtc3RlcC1tZW51IHtcbiAgQGV4dGVuZCAuY29udGFpbmVyLS1wYWRkZWQ7XG4gIHBhZGRpbmctdG9wOiAzNXB4O1xuICBwYWRkaW5nLWJvdHRvbTogODBweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgcGFkZGluZy1ib3R0b206IDEwMHB4O1xuICB9XG4gICZfX2l0ZW0ge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMzUwcHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBwYWRkaW5nOiAzNXB4IDI3cHggMDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgZmxleDogMSAwIDM1MHB4O1xuICAgICAgcGFkZGluZzogMzVweCAzMHB4IDA7XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgLnRocmVlLXN0ZXAtbWVudV9fYmFja2dyb3VuZC1vdmVybGF5IHtcbiAgICAgICAgLy9iYWNrZ3JvdW5kLWNvbG9yOiAjNGE5MGUyO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAmX19iYWNrZ3JvdW5kIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgdG9wOiAwO1xuICAgIEBpbmNsdWRlIGltYWdlX2JhY2tncm91bmQ7XG4gIH1cbiAgJl9fYmFja2dyb3VuZC1vdmVybGF5IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzgwYzNmMywgIzQ5OTBlMik7XG4gICAgb3BhY2l0eTogMC44O1xuICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuICB9XG4gICZfX251bWJlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpbmNsdWRlIHRleHQtbGcoJG11bHRpcGxpZXI6IDMuMzMsICR3ZWlnaHQ6IDkwMCk7XG4gICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICBjb2xvcjogd2hpdGUhaW1wb3J0YW50O1xuICB9XG4gICZfX2hlYWRpbmcge1xuICAgIEBpbmNsdWRlIHRleHQtbGcoJG11bHRpcGxpZXI6IDIuMjIsICR3ZWlnaHQ6IDUwMCwgJGxldHRlci1zcGFjaW5nOiAxLjJweCwgJGxpbmUtaGVpZ2h0OiAxLjI1KTtcbiAgICBjb2xvcjogd2hpdGUhaW1wb3J0YW50O1xuICAgIG1hcmdpbi1ib3R0b206IDMycHg7XG4gICAgbWF4LXdpZHRoOiAzMTBweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cbiAgJl9fZm9vdGVyIHtcbiAgICBoZWlnaHQ6IDg3cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNhbGwtdG8tYWN0aW9uLWhpZ2hsaWdodDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNTRweCk7XG4gICAgbWFyZ2luLWxlZnQ6IC0yN3B4O1xuICAgIG1hcmdpbi1yaWdodDogLTI3cHg7XG4gICAgcGFkZGluZzogMCAyN3B4O1xuICAgIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgICB3aWR0aDogY2FsYygxMDAlICsgNjBweCk7XG4gICAgICBtYXJnaW4tbGVmdDogLTMwcHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IC0zMHB4O1xuICAgICAgcGFkZGluZzogMCAzMHB4O1xuICAgIH1cbiAgICBkaXYge1xuICAgICAgQGluY2x1ZGUgdGV4dC1zbSgkd2VpZ2h0OiA0MDAsICRsZXR0ZXItc3BhY2luZzogMC43cHgsICRsaW5lLWhlaWdodDogMS4yNSk7XG4gICAgICBtYXgtd2lkdGg6IDI3MHB4O1xuICAgICAgY29sb3I6IHdoaXRlIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cblxuLnBhcnRuZXJzIHtcbiAgQGV4dGVuZCAuY29udGFpbmVyLS1wYWRkZWQ7XG4gIHBhZGRpbmctdG9wOiA0MHB4O1xuICBAaW5jbHVkZSB0YWJsZXQge1xuICAgIHBhZGRpbmctdG9wOiA5MHB4O1xuICB9XG4gIC5yb3cge1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgfVxuICB9XG4gICZfX2xvZ28td3JhcCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1heC13aWR0aDogMjMwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgICB3aWR0aDogMjMwcHg7XG4gICAgfVxuICAgICY6bnRoLW9mLXR5cGUobiArIDUpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG4gICZfX2xvZ28ge1xuICAgIG1hcmdpbi1ib3R0b206IDYwcHg7XG4gICAgbWF4LXdpZHRoOjEwMCU7XG4gICAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDkwcHg7XG4gICAgfVxuICAgIEBpbmNsdWRlIHRhYmxldC1sZyB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxMjVweDtcbiAgICB9XG4gICAgQGluY2x1ZGUgZGVza3RvcCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxNTBweDtcbiAgICB9XG4gIH1cbiAgJi5hY3RpdmUtMSB7XG4gICAgLnBhcnRuZXJzX19sb2dvLXdyYXA6bnRoLW9mLXR5cGUobiArIDUpIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuICB9XG59XG5cbi5iYW5uZXIge1xuICBoZWlnaHQ6IDUwMHB4O1xuICBAaW5jbHVkZSBpbWFnZV9iYWNrZ3JvdW5kO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogd2hpdGU7XG4gIHBhZGRpbmc6IDAgMTVweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAmX19vdmVybGF5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjcsIDMyLCA0NCwgMC43KTtcbiAgfVxuICAmX190b3AtaGVhZGluZyB7XG4gICAgQGluY2x1ZGUgdGV4dC1sZygkbXVsdGlwbGllcjogMS42NiwgJGxldHRlci1zcGFjaW5nOiAwLjlweCwgJHdlaWdodDogNDAwKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgIEBpbmNsdWRlIG1vYmlsZSB7XG4gICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICBAaW5jbHVkZSB0ZXh0LWxnKCRtdWx0aXBsaWVyOiAyLjIyLCAkbGV0dGVyLXNwYWNpbmc6IDEuMnB4LCAkd2VpZ2h0OiA0MDApO1xuICAgIH1cbiAgfVxuICAmX19ib3R0b20taGVhZGluZyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpbmNsdWRlIHRleHQtbGcoJG11bHRpcGxpZXI6IDIuNzcsICRsZXR0ZXItc3BhY2luZzogMS4ycHgsICR3ZWlnaHQ6IDMwMCk7XG4gICAgbWFyZ2luLWJvdHRvbTogNzBweDtcbiAgfVxuICAmX19idXR0b24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxufVxuXG4uYWNjb3JkaW9uIHtcbiAgJi5yb3cge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gIH1cbiAgJl9fY29udGFpbmVyIHtcbiAgICBAZXh0ZW5kIC5jb250YWluZXItLXBhZGRlZDtcbiAgICBwYWRkaW5nLWJvdHRvbTogODBweDtcbiAgICBwYWRkaW5nLXRvcDogMjBweDtcbiAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgcGFkZGluZy1ib3R0b206IDEwMHB4O1xuICAgIH1cbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgfVxuICAmX190aXRsZSB7XG4gICAgcGFkZGluZzogMTdweCAyMnB4IDE4cHggMDtcbiAgICBAaW5jbHVkZSB0ZXh0LXNtKCRjb2xvcjogIzAwMCwgJHdlaWdodDogNzAwKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgICB9XG4gIH1cbiAgJl9fY29udGVudCB7XG4gICAgcCB7XG4gICAgICBAaW5jbHVkZSB0ZXh0LXNtKCRjb2xvcjogIzAwMCwgJHdlaWdodDogMzAwKTtcbiAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgfVxuICAgIHA6bGFzdC1vZi10eXBlIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiA2MHB4O1xuICAgIH1cbiAgfVxuICAmX19pY29uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgdHJhbnNpdGlvbjogJHRyYW5zaXRpb247XG4gICAgbWFyZ2luLXRvcDogM3B4O1xuICB9XG4gIC51aS1zdGF0ZS1hY3RpdmUgLmFjY29yZGlvbl9faWNvbiB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLTE4MGRlZyk7XG4gIH1cbn1cblxuLnNlcnZpY2VzIHtcbiAgQGV4dGVuZCAuY29udGFpbmVyLS1wYWRkZWQ7XG4gIHBhZGRpbmctdG9wOiA1MHB4O1xuICBwYWRkaW5nLWJvdHRvbTogNDBweDtcbiAgLnNlcnZpY2Uge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleDogMSAwIDUwJTtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgfVxuICAgICY6bnRoLW9mLXR5cGUob2RkKSB7XG4gICAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuICAgICAgfVxuICAgIH1cbiAgICAmOm50aC1vZi10eXBlKGV2ZW4pIHtcbiAgICAgIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICAgIH1cbiAgICB9XG4gICAgJl9faGVhZGluZyB7XG4gICAgICBAaW5jbHVkZSB0ZXh0LWxnKCRtdWx0aXBsaWVyOiAxLjk0LCAkbGV0dGVyLXNwYWNpbmc6IDEuMSwgJGNvbG9yOiAkc2VydmljZXMtdGV4dC1jb2xvcik7XG4gICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgIH1cbiAgICAmX19pbnRybyB7XG4gICAgICBAaW5jbHVkZSB0ZXh0LXNtKCk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuXG4gICAgfVxuICAgICZfX2xpbmsge1xuICAgICAgQGluY2x1ZGUgdGV4dC1zbSgkY29sb3I6ICRjYWxsLXRvLWFjdGlvbi1oaWdobGlnaHQsICR3ZWlnaHQ6IDcwMCk7XG4gICAgICBtYXJnaW4tYm90dG9tOiA2MHB4O1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gICAgICB9XG4gICAgICBpbWcge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRvcDogMnB4O1xuICAgICAgfVxuICAgIH1cbiAgICAmX19idXR0b24ge1xuICAgICAgZmxleC1ncm93OiAwO1xuICAgICAgbWF4LXdpZHRoOiAyODBweDtcbiAgICAgIG1hcmdpbjogMCAwIDYwcHg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIH1cbiAgfVxufVxuXG4uc2VydmljZV9fbW9kYWwge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHotaW5kZXg6IDEwMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0NiwgNTMsIDY2LCAwLjgpO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuICAmX2NvbnRlbnQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDMwcHg7XG4gICAgbWF4LXdpZHRoOiA3NjVweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICAgIHBhZGRpbmc6IDcycHg7XG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgICAgYm94LXNoYWRvdzogMCA2cHggMjVweCAwIHJnYmEoMCwgMCwgMCwgMC4yNyk7XG4gICAgICBtYXJnaW4tdG9wOiA2MHB4O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgbWFyZ2luLWJvdHRvbTogNTBweDtcbiAgICB9XG4gIH1cbiAgJl9zY3JvbGwge1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGhlaWdodDoxMDAlO1xuICB9XG4gICYub3BlbiB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG4gIC5jbG9zZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMzBweDtcbiAgICByaWdodDogMzBweDtcbiAgfVxuICAuZGVza3RvcC1jYWxjdWxhdG9yIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gICAgfVxuICB9XG4gIC5tb2JpbGUtY2FsY3VsYXRvciB7XG4gICAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgIH1cbiAgfVxufVxuXG4udGVhbS1tZW1iZXJzIHtcbiAgQGV4dGVuZCAuY29udGFpbmVyLS1wYWRkZWQ7XG4gIHBhZGRpbmctdG9wOiAzMHB4O1xuICBwYWRkaW5nLWJvdHRvbTogODBweDtcbiAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICBwYWRkaW5nLXRvcDogNTBweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMTAwcHg7XG4gIH1cbiAgLnRlYW0tbWVtYmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXg6IDEgMCAzMy4zMyU7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIH1cbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgJjpub3QoOm50aC1vZi10eXBlKDNuKSkge1xuICAgICAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHRhYmxldC1sZyB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDMwcHg7XG4gICAgICB9XG4gICAgfVxuICAgICZfX2ltYWdlIHtcbiAgICAgIEBpbmNsdWRlIGltYWdlX2JhY2tncm91bmQoKTtcbiAgICAgIGhlaWdodDogMzYwcHg7XG4gICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgICAgQGluY2x1ZGUgbW9iaWxlIHtcbiAgICAgICAgaGVpZ2h0OiA0MDBweDtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgICAgIGhlaWdodDogNDAwcHg7XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSB0YWJsZXQtbGcge1xuICAgICAgICBoZWlnaHQ6IDUwMHB4O1xuICAgICAgfVxuICAgIH1cbiAgICAmX19mdWxsLW5hbWUge1xuICAgICAgQGluY2x1ZGUgdGV4dC1sZygkbXVsdGlwbGllcjogMS45NCwgJGxldHRlci1zcGFjaW5nOiAxLjFweCwgJGNvbG9yOiAkc2VydmljZXMtdGV4dC1jb2xvcik7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICAgICAgcGFkZGluZy1yaWdodDogMjBweDtcbiAgICB9XG4gICAgJl9fcm9sZSB7XG4gICAgICBAaW5jbHVkZSB0ZXh0LW1kKCRjb2xvcjogIzAwMCwgJGxldHRlci1zcGFjaW5nOiAwLjhweCk7XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICAgICAgcGFkZGluZy1yaWdodDogMjBweDtcbiAgICB9XG4gICAgJl9faW50cm8ge1xuICAgICAgQGluY2x1ZGUgdGV4dC1zbSgkbXVsdGlwbGllcjogMS4xMiwgJGNvbG9yOiAjMDAwKTtcbiAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuICAgICAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLmlubGluZS10ZXN0aW1vbmlhbCB7XG4gIEBleHRlbmQgLmNvbnRhaW5lci0tcGFkZGVkO1xuICBjb2xvcjogJHNlY29uZGFyeS1jYWxsLXRvLWFjdGlvbi1oaWdobGlnaHQ7XG4gIHBhZGRpbmctdG9wOiAxNXB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTVweDtcbiAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICBwYWRkaW5nLXRvcDogMzBweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMzBweDtcbiAgfVxuICBoMSB7XG4gICAgQGluY2x1ZGUgdGV4dC1sZygkbXVsdGlwbGllcjogMS45NCwgJGxldHRlci1zcGFjaW5nOiAxLjFweCwgJHdlaWdodDogNTAwLCAkbGluZS1oZWlnaHQ6IDEuMik7XG4gICAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICAgIG1hcmdpbi1sZWZ0OiA0MHB4O1xuICAgIH1cbiAgICBAaW5jbHVkZSB0YWJsZXQtbGcge1xuICAgICAgbWFyZ2luLWxlZnQ6IDcwcHg7XG4gICAgfVxuICAgIEBpbmNsdWRlIGRlc2t0b3Age1xuICAgICAgbWFyZ2luLWxlZnQ6IDk1cHg7XG4gICAgfVxuICB9XG59XG5cbi5pbWFnZSB7XG4gICYuY29udGFpbmVkIHtcbiAgICBAZXh0ZW5kIC5jb250YWluZXItLXBhZGRlZDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuICBwYWRkaW5nLXRvcDogMTVweCFpbXBvcnRhbnQ7XG4gIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgcGFkZGluZy10b3A6IDMwcHghaW1wb3J0YW50O1xuICAgIHBhZGRpbmctYm90dG9tOiAzMHB4IWltcG9ydGFudDtcbiAgfVxuICAmX19pbWFnZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG59XG5cbi50ZXN0aW1vbmlhbC1zbGlkZXIge1xuICBtYXJnaW4tYm90dG9tOiAxMDBweDtcbiAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuICBtYXgtd2lkdGg6IDExNDBweDtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgcGFkZGluZy1ib3R0b206IDE2MHB4O1xuICBib3JkZXItYm90dG9tOiBzb2xpZCAxcHggJGJvcmRlci1jb2xvcjtcbiAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgfVxuICAudGVzdGltb25pYWwge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1pbi1oZWlnaHQ6IDYwMHB4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAzcHg7XG4gICAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICAgIG1pbi1oZWlnaHQ6IDYzMHB4O1xuICAgIH1cbiAgICAmX19jb250ZW50IHtcbiAgICAgIG1heC13aWR0aDogNDIwcHg7XG4gICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgIGJveC1zaGFkb3c6IDAgMCA1cHggMCByZ2JhKDEyOCwgMTI4LCAxMjgsIDAuNSk7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgbWFyZ2luLXRvcDogMHB4O1xuICAgICAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgbWF4LXdpZHRoOiA3NTBweDtcbiAgICAgICAgbWFyZ2luLXRvcDogNTBweDtcbiAgICAgICAgaGVpZ2h0OiA0MDBweDtcbiAgICAgIH1cbiAgICB9XG4gICAgJl9faW1hZ2Uge1xuICAgICAgaGVpZ2h0OiAyNTBweDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgQGluY2x1ZGUgaW1hZ2VfYmFja2dyb3VuZDtcbiAgICAgIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgd2lkdGg6IDI2NHB4O1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIH1cbiAgICB9XG4gICAgJl9fdGV4dCB7XG4gICAgICBwYWRkaW5nOiA0MnB4O1xuICAgICAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICAgICAgcGFkZGluZzogNzVweCA0MnB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgICAmX190ZXN0aW1vbmlhbCB7XG4gICAgICBAaW5jbHVkZSB0ZXh0LW1kKCRjb2xvcjogJGJvZHktdGV4dC1jb2xvciwgJGxldHRlci1zcGFjaW5nOiAxcHgpO1xuICAgICAgbWFyZ2luLWJvdHRvbTogNDJweDtcbiAgICB9XG4gICAgJl9fZnVsbC1uYW1lIHtcbiAgICAgIEBpbmNsdWRlIHRleHQtbWQoJGNvbG9yOiAkYm9keS10ZXh0LWNvbG9yLCAkbGV0dGVyLXNwYWNpbmc6IDFweCwgJHdlaWdodDogNjAwKTtcbiAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgfVxuICAgICZfX2pvYi10aXRsZSB7XG4gICAgICBAaW5jbHVkZSB0ZXh0LXNtKCRtdWx0aXBsaWVyOiAxLjEyLCAkbGV0dGVyLXNwYWNpbmc6IDFweCk7XG4gICAgfVxuICB9XG59XG5cbi5jYWxjdWxhdG9yIHtcbiAgQGV4dGVuZCAuY29udGFpbmVyLS1wYWRkZWQ7XG4gIHBhZGRpbmctYm90dG9tOiA4MHB4O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgcGFkZGluZy10b3A6IDgwcHg7XG4gIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgcGFkZGluZy1ib3R0b206IDEwMHB4O1xuICAgIHBhZGRpbmctdG9wOiAxMDBweDtcbiAgfVxuICAucm93IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIH1cbiAgfVxuICAmX19oZWFkaW5nIHtcbiAgICBAaW5jbHVkZSB0ZXh0LWxnKCRtdWx0aXBsaWVyOiAyLjc3LCAkbGluZS1oZWlnaHQ6IDEsICRsZXR0ZXItc3BhY2luZzogMS4xcHgsICRjb2xvcjogIzJlMzU0Mik7XG4gICAgbWFyZ2luLWJvdHRvbTogMzNweDtcbiAgICBtYXgtd2lkdGg6IDg1MHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB9XG4gIH1cbiAgJl9faWNvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMzVweDtcbiAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgIH1cbiAgfVxuICAuYnV0dG9uIHtcbiAgICBtYXJnaW46IGF1dG87XG4gICAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cbiAgfVxuICAmX19sZWZ0IHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxuICB9XG4gICZfX2ludHJvIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWF4LXdpZHRoOiA2NTBweDtcbiAgICBtYXJnaW4tYm90dG9tOiA1MHB4O1xuICAgIEBpbmNsdWRlIHRleHQtbWQoJGxldHRlci1zcGFjaW5nOiAwLjkpO1xuICAgIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIH1cbiAgfVxufVxuXG4uYm9va2luZ2pzIHtcbiAgbWFyZ2luLXRvcDogMzBweCFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1ib3R0b206IDQwcHghaW1wb3J0YW50O1xufSIsIi5tb2JpbGUtbWVudSB7XG4gIHotaW5kZXg6IDE7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGhlaWdodDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogJHRyYW5zaXRpb247XG4gIEBpbmNsdWRlIHRhYmxldC1sZyB7XG4gICAgZGlzcGxheTogbm9uZSFpbXBvcnRhbnQ7XG4gIH1cbiAgJl9fbGluayB7XG4gICAgcGFkZGluZzogMTlweCAzM3B4IDE5cHggNTVweDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDY0cHg7XG4gICAgY29sb3I6ICRoZWFkZXItdGV4dC1jb2xvcjtcbiAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkYm9yZGVyLWNvbG9yLCAwLjUpO1xuICAgIH1cbiAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gICAgfVxuICAgICYuZHJvcGRvd24ge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cbiAgICBpbWcge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgcmlnaHQ6IDMzcHg7XG4gICAgICBib3R0b206IDI1cHg7XG4gICAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcbiAgICB9XG4gICAgLm1vYmlsZS1tZW51X19taW5pbWl6ZSB7XG4gICAgICBib3R0b206IDMwcHg7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICAmLmFjdGl2ZSB7XG4gICAgICAubW9iaWxlLW1lbnVfX21pbmltaXplIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICAgIC5tb2JpbGUtbWVudV9fZXhwYW5kIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuICAmX19mb290ZXIge1xuICAgIHBhZGRpbmc6IDcycHggMjBweCAzMHB4IDIwcHg7XG4gICAgJl90aXRsZSB7XG4gICAgICBAaW5jbHVkZSB0ZXh0LXNtKCRtdWx0aXBsaWVyOiAxLjEyLCAkd2VpZ2h0OiA3MDApO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICB9XG4gIH1cbiAgJl9fc29jaWFsLWxpbmsge1xuICAgIEBpbmNsdWRlIHRleHQtc20oKTtcbiAgICBpIHtcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgIG1hcmdpbi1yaWdodDogMTJweDtcbiAgICB9XG4gICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMzBweDtcbiAgICB9XG4gIH1cbiAgJl9fc2Vjb25kYXJ5IHtcbiAgICBoZWlnaHQ6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcbiAgICAmX2xpbmsge1xuICAgICAgQGV4dGVuZCAubW9iaWxlLW1lbnVfX2xpbms7XG4gICAgICBjb2xvcjogd2hpdGU7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2FsbC10by1hY3Rpb24taGlnaGxpZ2h0O1xuICAgICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICAgIH1cbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB3aGl0ZTtcbiAgICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiLmJsb2cge1xuICBAZXh0ZW5kIC5jb250YWluZXItLXBhZGRlZDtcbiAgLnJvdyB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgfVxuICAmX190YWdzIHtcbiAgICBtYXJnaW4tdG9wOiA2MHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDUwcHg7XG4gICAgJl90aXRsZSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAzM3B4O1xuICAgICAgQGluY2x1ZGUgdGV4dC1zbSgkY29sb3I6ICRzZXJ2aWNlcy10ZXh0LWNvbG9yLCAkd2VpZ2h0OiA3MDAsICRtdWx0aXBsaWVyOiAxLjEyKTtcbiAgICB9XG4gIH1cbiAgJl9fdGFnIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXNtKCRjb2xvcjogIzAwMCwgJG11bHRpcGxpZXI6IDEuMTIpO1xuICAgIGJvcmRlcjogc29saWQgMXB4ICNkOGQ4ZDg7XG4gICAgcGFkZGluZzogOHB4IDEycHggMTBweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgJi5hY3RpdmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XG4gICAgfVxuICB9XG4gICZfX3Bvc3RzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgfVxufVxuXG4ucG9zdCB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBtYXJnaW4tYm90dG9tOiA4MHB4O1xuICBAaW5jbHVkZSB0YWJsZXQge1xuICAgIGZsZXg6IDEgMCAzNTBweDtcbiAgfVxuICAmOm50aC1vZi10eXBlKG9kZCkge1xuICAgIG1hcmdpbi1yaWdodDogMzBweDtcbiAgfVxuICAmX19pbWFnZS13cmFwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAzNXB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAvL0BpbmNsdWRlIHRhYmxldCB7XG4gICAgLy8gIG1hcmdpbi1ib3R0b206IDM1cHg7XG4gICAgLy99XG4gIH1cbiAgJl9faW1hZ2Uge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG4gICZfX2RhdGUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMzBweDtcbiAgICBwYWRkaW5nOiA3cHggMjJweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2FsbC10by1hY3Rpb24taGlnaGxpZ2h0O1xuICAgIEBpbmNsdWRlIHRleHQtc20oJG11bHRpcGxpZXI6IDEuMTIsICR3ZWlnaHQ6IDcwMCwgJGxldHRlci1zcGFjaW5nOiAwLjZweCwgJGNvbG9yOiAjZmZmKTtcbiAgfVxuICAmX190aXRsZSB7XG4gICAgQGluY2x1ZGUgdGV4dC1sZygkY29sb3I6ICRzZXJ2aWNlcy10ZXh0LWNvbG9yLCAkbXVsdGlwbGllcjogMS45NCwgJGxldHRlci1zcGFjaW5nOiAwLjlweCk7XG4gICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgICAvL0BpbmNsdWRlIHRhYmxldCB7XG4gICAgLy8gIEBpbmNsdWRlIHRleHQtbGcoJGNvbG9yOiAkc2VydmljZXMtdGV4dC1jb2xvciwgJG11bHRpcGxpZXI6IDEuOTQsICRsZXR0ZXItc3BhY2luZzogMS4xcHgpO1xuICAgIC8vfVxuICB9XG4gICZfX2F1dGhvciB7XG4gICAgQGluY2x1ZGUgdGV4dC1zbSgkbXVsdGlwbGllcjogMS4xMiwgJGNvbG9yOiAjMDAwKTtcbiAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICB9XG4gICZfX29wZW5pbmctcGFyYWdyYXBoIHtcbiAgICBAaW5jbHVkZSB0ZXh0LW1kKCRjb2xvcjogIzAwMCwgJGxldHRlci1zcGFjaW5nOiAwLjhweCk7XG4gIH1cbiAgJl9fcmVhZC1tb3JlIHtcbiAgICBAaW5jbHVkZSB0ZXh0LW1kKCRjb2xvcjogJGNhbGwtdG8tYWN0aW9uLWhpZ2hsaWdodCwgJHdlaWdodDogNTAwLCAkbGV0dGVyLXNwYWNpbmc6IDAuOHB4KTtcbiAgfVxufVxuXG4uYmxvZy1wYWdlIHtcbiAgQGV4dGVuZCAuY29udGFpbmVyLS1wYWRkZWQ7XG4gICZfX2ltYWdlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAzNXB4O1xuICAgIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiA3MHB4O1xuICAgIH1cbiAgfVxuICAmX19pbnRybyB7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gICAgd2lkdGg6MTAwJTtcbiAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogNjBweDtcbiAgICB9XG4gIH1cbiAgJl9fdGl0bGUge1xuICAgIEBpbmNsdWRlIHRleHQtbGcoJGNvbG9yOiAkc2VydmljZXMtdGV4dC1jb2xvciwgJG11bHRpcGxpZXI6IDEuOTQpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXgtd2lkdGg6IDgyNnB4O1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiAyMnB4O1xuICAgIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgICBAaW5jbHVkZSB0ZXh0LWxnKCRjb2xvcjogJHNlcnZpY2VzLXRleHQtY29sb3IsICRtdWx0aXBsaWVyOiAzLjMzKTtcbiAgICAgIG1hcmdpbi1ib3R0b206IDQzcHg7XG4gICAgfVxuICB9XG4gICZfX2RldGFpbHMge1xuICAgIEBpbmNsdWRlIHRleHQtc20oJG11bHRpcGxpZXI6IDEuMTIsICRjb2xvcjogJGJvZHktdGV4dC1jb2xvciwgJGxldHRlci1zcGFjaW5nOiAwLjZweCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1heC13aWR0aDogNjYxcHg7XG4gICAgbWFyZ2luOiAwIGF1dG8gMzBweDtcbiAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogNjBweDtcbiAgICB9XG4gIH1cbiAgJl9fb3BlbmluZy1wYXJhZ3JhcGgge1xuICAgIEBpbmNsdWRlIHRleHQtbWQoJGNvbG9yOiAkYm9keS10ZXh0LWNvbG9yLCAkd2VpZ2h0OiA1MDAsICRsZXR0ZXItc3BhY2luZzogMC43NSk7XG4gICAgbWFyZ2luLWJvdHRvbTogMjVweDtcbiAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgICB9XG4gIH1cbiAgJl9fY29udGVudCB7XG4gICAgbWF4LXdpZHRoOiA3NTBweDtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cbn0iLCIuY29udGFjdCB7XG4gICZfX3JvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIH1cbiAgJl9fY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZsZXg6IDEgMCAzMDBweDtcbiAgICAmX2NvbnRhaW5lciB7XG4gICAgICBAZXh0ZW5kIC5jb250YWluZXItLXBhZGRlZDtcbiAgICAgIHBhZGRpbmctdG9wOiA4MHB4O1xuICAgICAgcGFkZGluZy1ib3R0b206IDgwcHg7XG4gICAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgICBwYWRkaW5nLXRvcDogMTIwcHg7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxMDBweDtcbiAgICAgIH1cbiAgICB9XG4gICAgJl9oZWFkaW5nIHtcbiAgICAgIEBpbmNsdWRlIHRleHQtbWQoJHdlaWdodDogNTAwLCAkY29sb3I6ICMwMDAsICRsZXR0ZXItc3BhY2luZzogMC44cHgpO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICB9XG4gICAgICBtYXgtd2lkdGg6IDM3MHB4O1xuICAgIH1cbiAgICAmX3N1Yi1oZWFkaW5nIHtcbiAgICAgIEBpbmNsdWRlIHRleHQtc20oJHdlaWdodDogNDAwLCAkY29sb3I6ICMwMDAsICRsZXR0ZXItc3BhY2luZzogMC44cHgpO1xuICAgICAgbWFyZ2luLWJvdHRvbTogNDBweDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICB9XG4gICAgICBtYXgtd2lkdGg6IDM3MHB4O1xuICAgIH1cbiAgICAmX2luZm8tcm93IHtcbiAgICAgIEBpbmNsdWRlIHRleHQtc20oJG11bHRpcGxpZXI6IDEuMTIsICRsaW5lLWhlaWdodDogMi41LCAkbGV0dGVyLXNwYWNpbmc6IDAuNnB4LCAkY29sb3I6ICMwMDAsICR3ZWlnaHQ6IDQwMCk7XG4gICAgICBtYXgtd2lkdGg6IDI3NHB4O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIH1cbiAgICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNDBweDtcbiAgICAgICAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gICZfX2Zvcm0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBAaW5jbHVkZSB0YWJsZXQge1xuICAgICAgZmxleDogMSAwIDMwMHB4O1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxuICAgIGlucHV0LCB0ZXh0YXJlYSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogNjBweDtcbiAgICAgIGJvcmRlcjogc29saWQgMC41cHggI2QzZDNkMztcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgICAgcGFkZGluZzogMTdweCAyOHB4O1xuICAgICAgQGluY2x1ZGUgdGV4dC1zbSgkbXVsdGlwbGllcjogMS4xMiwgJGNvbG9yOiAkYm9keS10ZXh0LWNvbG9yKTtcbiAgICB9XG4gICAgdGV4dGFyZWEge1xuICAgICAgaGVpZ2h0OiAxMjBweDtcbiAgICB9XG4gICAgLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2wge1xuICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gICAgJl9zdWJtaXQtd3JhcCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIEBpbmNsdWRlIHRhYmxldCB7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgIH1cbiAgICB9XG4gICAgJl91cGRhdGVzLXdyYXAge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgQGluY2x1ZGUgdGFibGV0IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgIH1cbiAgICAgIC5tZGMtY2hlY2tib3gge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgbWFyZ2luLXRvcDogLTFweDtcbiAgICAgIH1cbiAgICB9XG4gICAgc3BhbiB7XG4gICAgICBAaW5jbHVkZSB0ZXh0LXNtKCRtdWx0aXBsaWVyOiAwLjgzMywgJGxldHRlci1zcGFjaW5nOiAwLjVweCwgJHdlaWdodDogNDAwLCAkY29sb3I6ICMwMDApO1xuICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgfVxuICB9XG5cbiAgJl9fc3VibWl0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgc3ZnIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMTJweDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICByaWdodDogMDtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuICAgICAgcmVjdCB7XG4gICAgICAgIGZpbGw6IHdoaXRlO1xuICAgICAgfVxuICAgIH1cbiAgICAmLmFjdGl2ZSB7XG4gICAgICBjb2xvcjogdHJhbnNwYXJlbnQhaW1wb3J0YW50O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZjYmY2MTtcbiAgICAgIHN2ZyB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgfVxuICAgICYuc3VjY2VzcyB7XG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICAmLmVycm9yIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZjU1Mzc7XG4gICAgfVxuICB9XG59IiwiIl0sIm1hcHBpbmdzIjoiO0FDK0J1QixrQ0FBa0M7QUUvQnpEOzs7R0FHRztBR0hIO2dDQUNnQztBQUVoQyxVQUFVO0VBQ1IsV0FBVyxFQUFFLGFBQWM7RUFDM0IsR0FBRyxFQUFFLG9EQUFHO0VBQ1IsR0FBRyxFQUFFLDJEQUFHLENBQXFFLDJCQUFNLEVBQ2pGLHNEQUFHLENBQWdFLGVBQU0sRUFDekUscURBQUcsQ0FBK0QsY0FBTSxFQUN4RSxvREFBRyxDQUE4RCxrQkFBTSxFQUN2RSx1RUFBRyxDQUFpRixhQUFNO0VBRTVGLFdBQVcsRUFBRSxNQUFPO0VBQ3BCLFVBQVUsRUFBRSxNQUFPOzs7QUNWckIsQUFBQSxHQUFHLENBQUg7RUFDRSxPQUFPLEVBQUUsWUFBYTtFQUN0QixJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQXVCLE1BQXVCLENBQUMsV0FBVztFQUNwRixTQUFTLEVBQUUsT0FBUTtFQUNuQixjQUFjLEVBQUUsSUFBSztFQUNyQixzQkFBc0IsRUFBRSxXQUFZO0VBQ3BDLHVCQUF1QixFQUFFLFNBQVU7Q0FFcEM7O0FDUkQsOERBQThEO0FBQzlELEFBQUEsTUFBTSxDQUFOO0VBQ0UsU0FBUyxFQUFHLFNBQUc7RUFDZixXQUFXLEVBQUcsTUFBRztFQUNqQixjQUFjLEVBQUUsSUFBSztDQUN0Qjs7QUFDRCxBQUFBLE1BQU0sQ0FBTjtFQUFFLFNBQVMsRUFBRSxHQUFJO0NBQUk7O0FBQ3JCLEFBQUEsTUFBTSxDQUFOO0VBQUUsU0FBUyxFQUFFLEdBQUk7Q0FBSTs7QUFDckIsQUFBQSxNQUFNLENBQU47RUFBRSxTQUFTLEVBQUUsR0FBSTtDQUFJOztBQUNyQixBQUFBLE1BQU0sQ0FBTjtFQUFFLFNBQVMsRUFBRSxHQUFJO0NBQUk7O0FDVnJC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LEVBQUMsSUFBSztDQU9aOztBaEJRQyxNQUFNLEVBQUwsU0FBUyxFQUFFLE1BQU07RWdCcEJwQixBQUFBLFVBQVUsRUFjVixBQWRBLGtCQWNrQixFS2RsQixBTEFBLGNLQU8sRU1BUCxBWEFBLFFXQVEsRUFxQlIsQVhyQkEsVVdxQlUsRUFzSVYsQVgzSkEsZ0JXMkpnQixFQWlGaEIsQVg1T0EsU1c0T1MsRUFvRlQsQVhoVUEscUJXZ1VVLEVBeUNWLEFYeldBLFNXeVdTLEVBa0hULEFYM2RBLGFXMmRhLEVBK0RiLEFYMWhCQSxtQlcwaEJtQixFQXVCbkIsQVhqakJBLE1XaWpCTSxBQUNILFVBQVUsRUFnRmIsQVhsb0JBLFdXa29CVyxFRWxvQlgsQWJBQSxLYUFLLEVBNEVMLEFiNUVBLFVhNEVVLEVDNUVWLEFkQUEsMkJjQVEsRU5BUixBUkFBLGdCUUFLLEVHdURMLEFYdkRBLGFXdURhLENYdkRGO0lBT1AsS0FBSyxFQUFFLG1CQUFJO0dBS2Q7OztBaEJjQyxNQUFNLEVBQUwsU0FBUyxFQUFFLE1BQU07RWdCMUJwQixBQUFBLFVBQVUsRUFjVixBQWRBLGtCQWNrQixFS2RsQixBTEFBLGNLQU8sRU1BUCxBWEFBLFFXQVEsRUFxQlIsQVhyQkEsVVdxQlUsRUFzSVYsQVgzSkEsZ0JXMkpnQixFQWlGaEIsQVg1T0EsU1c0T1MsRUFvRlQsQVhoVUEscUJXZ1VVLEVBeUNWLEFYeldBLFNXeVdTLEVBa0hULEFYM2RBLGFXMmRhLEVBK0RiLEFYMWhCQSxtQlcwaEJtQixFQXVCbkIsQVhqakJBLE1XaWpCTSxBQUNILFVBQVUsRUFnRmIsQVhsb0JBLFdXa29CVyxFRWxvQlgsQWJBQSxLYUFLLEVBNEVMLEFiNUVBLFVhNEVVLEVDNUVWLEFkQUEsMkJjQVEsRU5BUixBUkFBLGdCUUFLLEVHdURMLEFYdkRBLGFXdURhLENYdkRGO0lBVVAsS0FBSyxFQUFFLG1CQUFJO0dBRWQ7OztBQUVELEFBQUEsa0JBQWtCLEVLZGxCLEFMY0EsY0tkTyxFTUFQLEFYY0EsUVdkUSxFQXFCUixBWFBBLFVXT1UsRUFzSVYsQVg3SUEsZ0JX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 */
