/********************************************************* {COPYRIGHT-TOP} ***
* Licensed Materials - Property of IBM
* 5725-Z22, 5725-Z63, 5725-U33, 5725-Z63
*
* (C) Copyright IBM Corporation 2017
*
* All Rights Reserved.
* US Government Users Restricted Rights - Use, duplication or disclosure
* restricted by GSA ADP Schedule Contract with IBM Corp.
********************************************************** {COPYRIGHT-END} **/
.bx--search {
  border-right: none;
  height: 100%;
}
.bx--search input[type=search] {
  padding-left: 45px;
}
.bx--search[role=search] > input[type=search] {
  border-right: none;
}
.bx--search[role=search] > button[type=reset].iconOnlyButton {
  background-color: rgba(61,112,178,0.1);
  padding: 0;
  position: relative;
  width: 40px;
}
.bx--search.bx--search--sm input[type=search] {
  padding-left: 10px;
}
.bx--number__arrow--up {
  top: 0.5rem;
}
.bx--number__arrow--down {
  top: 1.5rem;
}
.bx--number__input {
  min-width: auto;
}
.bx--text__input {
  padding: 0 0.825rem;
}
.bx--number__arrow,
.bx--number__arrow--up,
.bx--number__arrow--down {
  padding-right: 0.5rem;
}
button.bx--notification__close-button:hover {
  background-color: transparent;
}
.ng-dirty .bx--text__input.ng-invalid,
.ng-dirty .bx--textarea__input.ng-invalid {
  -webkit-box-shadow: 0 2px 0 0 #ff5050;
  box-shadow: 0 2px 0 0 #ff5050;
}
.bx--text__input.ng-invalid.ng-dirty {
  -webkit-box-shadow: 0 2px 0 0 #ff5050;
  box-shadow: 0 2px 0 0 #ff5050;
}
.bx--text__input.ng-invalid.ng-dirty ~ bx--form__requirements {
  max-height: 12.5rem;
}
.bx--form__label-required.bx--form__label:after {
  content: ' *';
  vertical-align: top;
}
.horizontalScrollPadBottom {
  padding-bottom: 20px;
}
.bx--global-light-ui {
  background-color: #f0f0f0;
}
.bx--global-light-ui a.bx--link {
  text-decoration: underline;
}
div .bx--responsive-table-container {
  display: table;
}
.sectionTitleBanner.bx--inner__title {
  height: 50px;
}
.searchBanner.bx--inner__search__banner {
  height: 70px;
}
.searchBanner.bx--inner__search__banner_short {
  height: 50px;
}
.stickyNote.bx--sticky__note {
  position: static;
}
.bx--form__dialog {
  width: 400px;
}
.bx--form__row-item:last-of-type {
  margin-bottom: 1rem;
}
td .bx--form__row-item:last-of-type {
  margin-bottom: 0;
}
.bx--form__row-item {
  width: 100%;
}
.bx--form-group {
  padding: 28px;
}
.bx--sets-of-buttons {
  -webkit-justify-content: flex-end;
  -webkit-box-pack: end;
  -moz-box-pack: end;
  -o-box-pack: end;
  -ms-flex-pack: end;
  -webkit-justify-content: flex-end;
  justify-content: flex-end;
  margin-top: 2rem;
}
.bx--sets-of-buttons .bx--modal__buttons {
  margin-top: 0;
}
.bx--form__requirements {
  font-size: 0.8rem;
  overflow: inherit;
}
.bx--form__dialog_large {
  width: 575px;
}
.checkbox_padding > .md-primary {
  margin: 10px;
}
.labeledSelect .bx--select__arrow {
  float: right;
  position: relative;
  top: -3.5em;
}
.not-labeledSelect .bx--select__arrow {
  float: right;
  position: relative;
  top: 0;
}
.bx--table-select {
  min-width: 9.375rem;
}
.bx--table-select .bx--select__input {
  margin-bottom: 0;
}
.bx--table-select .bx--select__arrow {
  float: right;
  top: 1em;
}
.productSettingsRateLimit .bx--select .bx--select__arrow,
.apiOperation .bx--select .bx--select__arrow {
  top: 1.2rem;
}
.bx--form_dialog-medium-height {
  height: 350px;
}
.bx--form__row {
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  -o-box-flex: 1;
  box-flex: 1;
  -webkit-flex: 1;
  -ms-flex: 1;
  flex: 1;
}
.bx--form__row .bx--form__row-item:last-of-type {
  margin-right: 0;
}
.bx--form__row .bx--form__row-item {
  margin-right: 1.25rem;
}
.apis button.iconOnlyButton,
.products button.iconOnlyButton {
  width: 1.15em;
}
.modal-open .bx--modal {
  opacity: 1;
  -ms-filter: none;
  filter: none;
  visibility: visible;
  z-index: 9000;
}
.bx--modal .bx--modal-inner.bx-modal-lg {
  width: 70%;
}
.bx--modal .bx--modal-inner.bx-modal-xlg {
  width: 85%;
}
.webapiFormRow.layout {
  display: block;
}
.bx--button-group .bx--radio__label {
  margin-bottom: 5px;
  margin-top: 5px;
}
.floatLeft {
  float: left;
}
.modal-content .bx--form__row-item:last-of-type {
  margin-bottom: 0;
  margin-right: 1rem;
}
.modal-content .bx--form__row-item {
  margin-bottom: 1rem;
}
.webapiFormRow.topMargin.layout > .md-primary {
  display: inline;
}
.addRegistry-header {
  margin: 3px 0 87px 20px;
}
._md.md-transition-in {
  overflow: hidden;
}
.icon-position.iconOnlyButton {
  padding: 0;
  position: relative;
  vertical-align: text-top;
}
.icon-position.iconOnlyButton div.infoIcon {
  vertical-align: top;
}
.infoIconTopMargin {
  margin-top: -2px;
}
.navigate-visibility .bx--select,
.model-editor .bx--select,
apim-api-editor .bx--select {
  width: 100%;
}
.navigate-visibility .bx--select-sm,
.model-editor .bx--select-sm,
apim-api-editor .bx--select-sm {
  width: 35%;
}
.roles-admin-editor {
  min-width: 904px;
}
.bx--module__overflow {
  display: table;
  width: 100%;
}
.bx--module__header .bx--form__legend {
  margin-bottom: 0;
}
.bx--textarea__limit {
  min-height: 5%;
  resize: vertical;
}
.discovery-list {
  padding-bottom: 65px;
}
.bx--modal-inner.bx-modal-lg .modal-body,
.bx--modal-inner.bx-modal-lg .bx--modal-content {
  height: 387px;
  overflow: auto;
  overflow-x: hidden;
}
.bx--modal-inner.bx-modal-lg .modal-body .productApiList,
.bx--modal-inner.bx-modal-lg .bx--modal-content .productApiList {
  height: 60%;
  overflow: auto;
  overflow-x: hidden;
}
.bx--modal-inner.bx-modal-xlg .modal-body {
  height: 400px;
  overflow: scroll;
  overflow-x: hidden;
}
.bx--modal-content {
  overflow-x: hidden;
}
.bx--modal-content .modal-body .bx--datasource-modal,
.bx--modal-content .modal-body .bx--add-loopback-modal {
  height: auto;
  max-height: 387px;
}
.bx--modal-content .modal-body .bx--add-openapi-modal .bx--select__input,
.bx--modal-content .modal-body .bx--add-loopback-modal .bx--select__input {
  margin-bottom: 0;
}
.bx--form__row-item.indentedRow {
  display: block;
  margin-right: 0;
  width: auto;
}
.install-connector-modal .bx--modal-content {
  margin-bottom: 50px;
}
.bx--definitions-properties {
  display: table;
}
.bx--definitions-properties .bx--table-row {
  display: table-row;
}
.bx--definitions-properties .bx--table-row>span {
  display: table-cell;
  padding: 10px;
  vertical-align: middle;
  white-space: nowrap;
}
.bx--definitions-properties .bx--table-row>span.bxTablePaddingLeft {
  padding-left: 25px;
}
.bx--definitions-properties .bx--table-row>span.bxTablePaddingRight {
  padding-right: 25px;
}
.bx--definitions-properties .bx--table-head {
  display: table-header-group;
}
.bx--definitions-properties .bx--table-body {
  display: table-row-group;
}
.bx--definitions-properties .bx--table-header {
  display: table-cell;
}
.bx--definitions-properties .bx--number {
  top: 4px;
}
.bx--definitions-properties .bx--select:not(.bx--table-select) {
  position: relative;
  top: 12px;
}
apim-environment-roles .detailsPage {
  margin-left: 280px;
}
apim-environment-roles .dijitInline {
  margin-bottom: 10px;
}
.environmentsCollection .leftColumnSize.whiteBackground.stretch {
  margin-left: 60px;
}
.makeSpaceForNav .environmentDetails .environmentsCollection .leftColumnSize.whiteBackground.stretch {
  margin-left: 0;
}
.bx--left-nav-roles {
  margin-top: -25px;
}
.bx--right-nav-roles {
  background-color: #fff;
}
.bx--notification--new button.bx--notification__close-button:hover,
.bx--notification--new button.bx--notification__close-button:focus {
  background-color: transparent;
}
.bx--registry-modal {
  overflow-x: hidden;
}
.bx--modal-content .fileSelector .fileSelect.btn,
div.detailsSection .horizSpace .fileSelector .fileSelect.btn {
  border: 2px solid #3d70b2;
  padding: 8px 1rem;
}
.bx--modal-content .fileSelector .fileSelect:hover,
div.detailsSection .horizSpace .fileSelector .fileSelect:hover {
  background-color: #3d70b2;
}
.bx--responsive-table td:last-child {
  padding-right: 14px;
  text-align: right;
}
.bx--table-body .bx--table-row .table-empty {
  text-align: center;
}
.bx--table-sort--ascending:not(.bx--table-sort-active) svg,
.bx--table-sort:not(.bx--table-sort-active) svg {
  visibility: hidden;
}
@-moz-document url-prefix() {
  .bx--overflow-menu__options.bx--overflow-menu--open {
    right: -20px;
    width: 300px;
  }
  .bx--table-overflow .bx--overflow-menu__options::before {
    right: 1.7rem;
  }
}
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
  .apim .detailsEditor .bx--form__row-item .tagContainer {
    display: block;
  }
  .bx--responsive-table-container {
    overflow: auto;
  }
  .bx--table-overflow .bx--overflow-menu__options::before {
    right: 2em;
  }
}
@supports (-ms-ime-align: auto) {
  .bx--responsive-table-container {
    overflow: auto;
  }
  .bx--overflow-menu__icon {
    width: 32px;
  }
  .bx--overflow-menu__options::before {
    right: 2em;
  }
}
.bx--no-label-checkbox .bx--checkbox__appearance {
  margin: auto;
}
.bx--space_table {
  padding-top: 20px;
}
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
  .bx--modal-tall.bx--modal .bx--modal-content {
    height: calc(100vh - 300px);
  }
}
.apim bx-notification-container {
  pointer-events: none;
}
.apim bx-notification-generic {
  pointer-events: auto;
}
.bx--new-lb-modal .bx--form__requirements,
.bx--add-openapi-modal .bx--form__requirements,
.bx--new-project-modal .bx--form__requirements {
  padding-bottom: 0.5rem;
}
.bx--modal-content.filepicker.add-existing {
  padding: 0 1rem;
}
.bx--flex-table {
  width: 100%;
}
.bx--flex-table .bx--flex-table-row {
  display: -webkit-box;
  display: -moz-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: box;
  display: flex;
}
.bx--flex-table .bx--flex-table-row span {
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  -o-box-flex: 1;
  -ms-box-flex: 1;
  box-flex: 1;
  -webkit-flex-grow: 1;
  flex-grow: 1;
  padding: 10px;
}
.bx--field-label {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 1px;
  text-align: left;
  text-transform: uppercase;
}
.bx--flex-grid {
  display: -webkit-box;
  display: -moz-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: box;
  display: flex;
}
.bx--flex-grid-item {
  -webkit-align-self: center;
  align-self: center;
  -ms-flex-item-align: center;
}
.bx--pad-sm {
  padding: 5px;
}
.bx--h-pad-sm {
  padding: 0 5px;
}
.bx--v-pad-sm {
  padding: 0 5px;
}
.bx--pad-right-sm {
  padding-right: 5px;
}
.bx--inline-notification {
  display: -webkit-inline-box;
  display: -moz-inline-box;
  display: -webkit-inline-flex;
  display: -ms-inline-flexbox;
  display: inline-box;
  display: inline-flex;
  width: 100%;
  min-height: 40px;
  margin-bottom: 18px;
  padding-top: 12px;
  padding-bottom: 12px;
  padding-left: 18px;
  padding-right: 18px;
}
.bx--inline-notification__details {
  display: -webkit-box;
  display: -moz-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: box;
  display: flex;
  flex-glow: 1;
  width: 100%;
}
.bx--inline-notification--warning {
  border: 1px solid #efc100;
  border-left: 6px solid #efc100;
}
.bx--inline-notification__text-wrapper {
  margin-left: 16px;
  width: 100%;
  display: -webkit-inline-box;
}
.bx--inline-notification__non-text-wrapper {
  margin-left: 16px;
  width: 100%;
}
.bx--inline-notification__title {
  color: #152935;
  margin-right: 4px;
}
.bx--inline-notification__subtitle {
  color: #5a6872;
}
.bx--inline-notification__close-icon {
  height: 10px;
  width: 10px;
}
.bx--inline-notification__icon {
  fill: #efc100;
}
.bx--inline-down {
  margin-left: auto;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwaW0vY3NzL2J4LWNvbXBvbmVudHMuc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi92ZW5kb3Iuc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi9mbGV4LnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvb3ZlcmZsb3cuc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi9ib3JkZXIuc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi9zaXplLnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvc3R5bHVzL2xpYi9mdW5jdGlvbnMvaW5kZXguc3R5bCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztBQVVBO0VBQ0UsY0FBYyxLQUFkO0VBQ0EsUUFBUSxLQUFSOztBQUVBO0VBQ0UsY0FBYyxLQUFkOztBQUdBO0VBQ0UsY0FBYyxLQUFkOztBQUVGO0VBQ0Usa0JBQWtCLHFCQUFsQjtFQUNBLFNBQVMsRUFBVDtFQUNBLFVBQVUsU0FBVjtFQUNBLE9BQU8sS0FBUDs7QUFHSjtFQUNFLGNBQWMsS0FBZDs7QUFFSjtFQUNFLEtBQUssT0FBTDs7QUFFRjtFQUNFLEtBQUssT0FBTDs7QUFFRjtFQUNFLFdBQVcsS0FBWDs7QUFFRjtFQUNFLFNBQVMsV0FBVDs7QUFFRjtBQUFvQjtBQUF3QjtFQUMxQyxlQUFlLE9BQWY7O0FBR0E7RUFDRSxrQkFBa0IsWUFBbEI7O0FBR0Y7QUFDQTtFQ1RnQixvQkFBRyxrQkFBSDtFQVJILFlBQUcsa0JBQUg7O0FEb0JmO0VDWmtCLG9CQUFHLGtCQUFIO0VBUkgsWUFBRyxrQkFBSDs7QUR1QmI7RUFDRSxZQUFZLFFBQVo7O0FBRUo7RUFDRSxTQUFTLEtBQVQ7RUFDQSxnQkFBZ0IsSUFBaEI7O0FBRUY7RUFDRSxnQkFBZ0IsS0FBaEI7O0FBRUY7RUFDRSxrQkFBa0IsUUFBbEI7O0FBRUE7RUFDRSxpQkFBaUIsVUFBakI7O0FBRUo7RUVwREksU0FBUyxNQUFU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U0R5UGI7RUFBQSxTQ3pQYSxhRHlQYjtFSHBmWCxTQUFTLFlBQVQ7RUFDQSxTQUFTLElBQVQ7RUFLRixTQUFTLEtBQVQ7RUYrY0osV0FBVyxFQUFYO0VBQ0EsT0FBTyxLQUFQOztBQUVGO0VJN2RJLFFBQVEsa0JBQVI7RUorZEYsYUFBYSxrQkFBYjs7QUFFRjtFQUNFLGFBQWEsS0FBYjtFQUNBLE9BQU8sS0FBUDtFRXRkRSxTQUFTLG1CQUFUOztBRnlkSjtFQUNFLGFBQWEsS0FBYjtFQUNBLE9BQU8sS0FBUDs7QUFFRjtFQUNFLE9BQU8sUUFBUDtFQUNBLGNBQWMsSUFBZDs7QUFFRjtFQUNFLE9BQU8sUUFBUDs7QUFFRjtFQUNFLFFBQVEsS0FBUjtFQUNBLE9BQU8sS0FBUDs7QUFFRjtFQUNFLE1BQU0sUUFBTjs7QUFFRjtFQUNFLGFBQWEsS0FBYiIsImZpbGUiOiJhcGltL2Nzcy9ieC1jb21wb25lbnRzLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioge0NPUFlSSUdIVC1UT1B9ICoqKlxuKiBMaWNlbnNlZCBNYXRlcmlhbHMgLSBQcm9wZXJ0eSBvZiBJQk1cbiogNTcyNS1aMjIsIDU3MjUtWjYzLCA1NzI1LVUzMywgNTcyNS1aNjNcbipcbiogKEMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAxN1xuKlxuKiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuKiBVUyBHb3Zlcm5tZW50IFVzZXJzIFJlc3RyaWN0ZWQgUmlnaHRzIC0gVXNlLCBkdXBsaWNhdGlvbiBvciBkaXNjbG9zdXJlXG4qIHJlc3RyaWN0ZWQgYnkgR1NBIEFEUCBTY2hlZHVsZSBDb250cmFjdCB3aXRoIElCTSBDb3JwLlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiB7Q09QWVJJR0hULUVORH0gKiovXG4uYngtLXNlYXJjaFxuICBib3JkZXItcmlnaHQ6IG5vbmVcbiAgaGVpZ2h0OiAxMDAlXG5cbiAgaW5wdXRbdHlwZT1zZWFyY2hdXG4gICAgcGFkZGluZy1sZWZ0OiA0NXB4XG5cbiAgJltyb2xlPXNlYXJjaF1cbiAgICA+IGlucHV0W3R5cGU9c2VhcmNoXVxuICAgICAgYm9yZGVyLXJpZ2h0OiBub25lXG5cbiAgICA+IGJ1dHRvblt0eXBlPXJlc2V0XS5pY29uT25seUJ1dHRvblxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg2MSwgMTEyLCAxNzgsIC4xKVxuICAgICAgcGFkZGluZzogMFxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlXG4gICAgICB3aWR0aDogNDBweFxuXG4uYngtLXNlYXJjaC5ieC0tc2VhcmNoLS1zbVxuICBpbnB1dFt0eXBlPXNlYXJjaF1cbiAgICBwYWRkaW5nLWxlZnQ6IDEwcHhcblxuLmJ4LS1udW1iZXJfX2Fycm93LS11cFxuICB0b3A6IC41cmVtXG5cbi5ieC0tbnVtYmVyX19hcnJvdy0tZG93blxuICB0b3A6IDEuNXJlbVxuXG4uYngtLW51bWJlcl9faW5wdXRcbiAgbWluLXdpZHRoOiBhdXRvXG5cbi5ieC0tdGV4dF9faW5wdXRcbiAgcGFkZGluZzogMCAuODI1cmVtXG5cbi5ieC0tbnVtYmVyX19hcnJvdywgLmJ4LS1udW1iZXJfX2Fycm93LS11cCwgLmJ4LS1udW1iZXJfX2Fycm93LS1kb3duXG4gIHBhZGRpbmctcmlnaHQ6IC41cmVtXG5cbmJ1dHRvbi5ieC0tbm90aWZpY2F0aW9uX19jbG9zZS1idXR0b25cbiAgJjpob3ZlclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50XG5cbi5uZy1kaXJ0eVxuICAuYngtLXRleHRfX2lucHV0Lm5nLWludmFsaWRcbiAgLmJ4LS10ZXh0YXJlYV9faW5wdXQubmctaW52YWxpZFxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDAgMCAjZmY1MDUwXG5cbi5ieC0tdGV4dF9faW5wdXQubmctaW52YWxpZC5uZy1kaXJ0eVxuICBib3gtc2hhZG93OiAwIDJweCAwIDAgI2ZmNTA1MFxuXG4gIH4gYngtLWZvcm1fX3JlcXVpcmVtZW50c1xuICAgIG1heC1oZWlnaHQ6IDEyLjVyZW1cblxuLmJ4LS1mb3JtX19sYWJlbC1yZXF1aXJlZC5ieC0tZm9ybV9fbGFiZWw6YWZ0ZXJcbiAgY29udGVudDogJyAqJ1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wXG5cbi5ob3Jpem9udGFsU2Nyb2xsUGFkQm90dG9tXG4gIHBhZGRpbmctYm90dG9tOiAyMHB4XG5cbi5ieC0tZ2xvYmFsLWxpZ2h0LXVpXG4gIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjBcblxuICBhLmJ4LS1saW5rXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmVcblxuZGl2IC5ieC0tcmVzcG9uc2l2ZS10YWJsZS1jb250YWluZXJcbiAgZGlzcGxheTogdGFibGVcblxuLnNlY3Rpb25UaXRsZUJhbm5lci5ieC0taW5uZXJfX3RpdGxlXG4gIGhlaWdodDogNTBweFxuXG4uc2VhcmNoQmFubmVyLmJ4LS1pbm5lcl9fc2VhcmNoX19iYW5uZXJcbiAgaGVpZ2h0OiA3MHB4XG5cbi5zZWFyY2hCYW5uZXIuYngtLWlubmVyX19zZWFyY2hfX2Jhbm5lcl9zaG9ydFxuICBoZWlnaHQ6IDUwcHhcblxuLnN0aWNreU5vdGUuYngtLXN0aWNreV9fbm90ZVxuICBwb3NpdGlvbjogc3RhdGljXG5cbi5ieC0tZm9ybV9fZGlhbG9nXG4gIHdpZHRoOiA0MDBweFxuXG4uYngtLWZvcm1fX3Jvdy1pdGVtOmxhc3Qtb2YtdHlwZVxuICBtYXJnaW4tYm90dG9tOiAxcmVtXG5cbnRkXG4gIC5ieC0tZm9ybV9fcm93LWl0ZW06bGFzdC1vZi10eXBlXG4gICAgbWFyZ2luLWJvdHRvbTogMFxuXG4uYngtLWZvcm1fX3Jvdy1pdGVtXG4gIHdpZHRoOiAxMDAlXG5cbi5ieC0tZm9ybS1ncm91cFxuICBwYWRkaW5nOiAyOHB4XG5cbi5ieC0tc2V0cy1vZi1idXR0b25zXG4gIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kXG4gIG1hcmdpbi10b3A6IDJyZW1cblxuICAuYngtLW1vZGFsX19idXR0b25zXG4gICAgbWFyZ2luLXRvcDogMFxuXG4uYngtLWZvcm1fX3JlcXVpcmVtZW50c1xuICBmb250LXNpemU6IC44cmVtXG4gIG92ZXJmbG93OiBpbmhlcml0XG5cbi5ieC0tZm9ybV9fZGlhbG9nX2xhcmdlXG4gIHdpZHRoOiA1NzVweFxuXG4uY2hlY2tib3hfcGFkZGluZyA+IC5tZC1wcmltYXJ5XG4gIG1hcmdpbjogMTBweFxuXG4ubGFiZWxlZFNlbGVjdFxuICAuYngtLXNlbGVjdF9fYXJyb3dcbiAgICBmbG9hdDogcmlnaHRcbiAgICBwb3NpdGlvbjogcmVsYXRpdmVcbiAgICB0b3A6IC0zLjVlbVxuXG4ubm90LWxhYmVsZWRTZWxlY3RcbiAgLmJ4LS1zZWxlY3RfX2Fycm93XG4gICAgZmxvYXQ6IHJpZ2h0XG4gICAgcG9zaXRpb246IHJlbGF0aXZlXG4gICAgdG9wOiAwXG5cbi5ieC0tdGFibGUtc2VsZWN0XG4gIG1pbi13aWR0aDogOS4zNzVyZW1cblxuICAuYngtLXNlbGVjdF9faW5wdXRcbiAgICBtYXJnaW4tYm90dG9tOiAwXG5cbiAgLmJ4LS1zZWxlY3RfX2Fycm93XG4gICAgZmxvYXQ6IHJpZ2h0XG4gICAgdG9wOiAxZW1cblxuXG4ucHJvZHVjdFNldHRpbmdzUmF0ZUxpbWl0XG4uYXBpT3BlcmF0aW9uXG4gIC5ieC0tc2VsZWN0XG4gICAgLmJ4LS1zZWxlY3RfX2Fycm93XG4gICAgICB0b3A6IDEuMnJlbVxuXG4uYngtLWZvcm1fZGlhbG9nLW1lZGl1bS1oZWlnaHRcbiAgaGVpZ2h0OiAzNTBweFxuXG4uYngtLWZvcm1fX3Jvd1xuICBmbGV4OiAxXG5cbiAgLmJ4LS1mb3JtX19yb3ctaXRlbTpsYXN0LW9mLXR5cGVcbiAgICBtYXJnaW4tcmlnaHQ6IDBcblxuICAuYngtLWZvcm1fX3Jvdy1pdGVtXG4gICAgbWFyZ2luLXJpZ2h0OiAxLjI1cmVtXG5cbi5hcGlzXG4ucHJvZHVjdHNcbiAgYnV0dG9uXG4gICAgJi5pY29uT25seUJ1dHRvblxuICAgICAgd2lkdGg6IDEuMTVlbVxuXG4ubW9kYWwtb3BlblxuICAuYngtLW1vZGFsXG4gICAgb3BhY2l0eTogMVxuICAgIHZpc2liaWxpdHk6IHZpc2libGVcbiAgICB6LWluZGV4OiA5MDAwXG5cbi5ieC0tbW9kYWxcbiAgLmJ4LS1tb2RhbC1pbm5lci5ieC1tb2RhbC1sZ1xuICAgIHdpZHRoOiA3MCVcbiAgLmJ4LS1tb2RhbC1pbm5lci5ieC1tb2RhbC14bGdcbiAgICB3aWR0aDogODUlXG5cbi53ZWJhcGlGb3JtUm93LmxheW91dFxuICBkaXNwbGF5OiBibG9ja1xuXG4uYngtLWJ1dHRvbi1ncm91cCAuYngtLXJhZGlvX19sYWJlbFxuICBtYXJnaW4tYm90dG9tOiA1cHhcbiAgbWFyZ2luLXRvcDogNXB4XG5cbi5mbG9hdExlZnRcbiAgZmxvYXQ6bGVmdFxuXG4ubW9kYWwtY29udGVudFxuICAuYngtLWZvcm1fX3Jvdy1pdGVtOmxhc3Qtb2YtdHlwZVxuICAgIG1hcmdpbi1ib3R0b206IDBcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW1cblxuICAuYngtLWZvcm1fX3Jvdy1pdGVtXG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbVxuXG4ud2ViYXBpRm9ybVJvdy50b3BNYXJnaW4ubGF5b3V0ID4gLm1kLXByaW1hcnlcbiAgZGlzcGxheTogaW5saW5lXG5cbi5hZGRSZWdpc3RyeS1oZWFkZXJcbiAgbWFyZ2luOiAzcHggMCA4N3B4IDIwcHhcblxuLl9tZC5tZC10cmFuc2l0aW9uLWluXG4gIG92ZXJmbG93OiBoaWRkZW5cblxuLmljb24tcG9zaXRpb24uaWNvbk9ubHlCdXR0b25cbiAgcGFkZGluZzogMFxuICBwb3NpdGlvbjogcmVsYXRpdmVcbiAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wXG5cbiAgZGl2LmluZm9JY29uXG4gICAgdmVydGljYWwtYWxpZ246IHRvcFxuXG4uaW5mb0ljb25Ub3BNYXJnaW5cbiAgbWFyZ2luLXRvcDogLTJweFxuXG4ubmF2aWdhdGUtdmlzaWJpbGl0eVxuLm1vZGVsLWVkaXRvclxuYXBpbS1hcGktZWRpdG9yIC8vIEBzdHlsaW50IGlnbm9yZSB2YWxpZFxuICAuYngtLXNlbGVjdFxuICAgIHdpZHRoOiAxMDAlXG4gIC5ieC0tc2VsZWN0LXNtXG4gICAgd2lkdGg6IDM1JVxuXG4ucm9sZXMtYWRtaW4tZWRpdG9yXG4gIG1pbi13aWR0aDogOTA0cHhcblxuLmJ4LS1tb2R1bGVfX292ZXJmbG93XG4gIGRpc3BsYXk6IHRhYmxlXG4gIHdpZHRoOiAxMDAlXG5cbi5ieC0tbW9kdWxlX19oZWFkZXJcbiAgLmJ4LS1mb3JtX19sZWdlbmRcbiAgICBtYXJnaW4tYm90dG9tOiAwXG5cbi5ieC0tdGV4dGFyZWFfX2xpbWl0XG4gIG1pbi1oZWlnaHQ6IDUlXG4gIHJlc2l6ZTogdmVydGljYWxcblxuLmRpc2NvdmVyeS1saXN0XG4gIHBhZGRpbmctYm90dG9tOiA2NXB4XG5cbi5ieC0tbW9kYWwtaW5uZXIuYngtbW9kYWwtbGdcbiAgLm1vZGFsLWJvZHlcbiAgLmJ4LS1tb2RhbC1jb250ZW50XG4gICAgaGVpZ2h0OiAzODdweFxuICAgIG92ZXJmbG93OiBhdXRvXG4gICAgb3ZlcmZsb3cteDogaGlkZGVuXG5cbiAgICAucHJvZHVjdEFwaUxpc3RcbiAgICAgIGhlaWdodDogNjAlXG4gICAgICBvdmVyZmxvdzogYXV0b1xuICAgICAgb3ZlcmZsb3cteDogaGlkZGVuXG5cbi5ieC0tbW9kYWwtaW5uZXIuYngtbW9kYWwteGxnIC5tb2RhbC1ib2R5XG4gIGhlaWdodDogNDAwcHhcbiAgb3ZlcmZsb3c6IHNjcm9sbFxuICBvdmVyZmxvdy14OiBoaWRkZW5cblxuLmJ4LS1tb2RhbC1jb250ZW50XG4gIG92ZXJmbG93LXg6IGhpZGRlblxuXG4gIC5tb2RhbC1ib2R5XG4gICAgLmJ4LS1kYXRhc291cmNlLW1vZGFsXG4gICAgLmJ4LS1hZGQtbG9vcGJhY2stbW9kYWxcbiAgICAgIGhlaWdodDogYXV0b1xuICAgICAgbWF4LWhlaWdodDogMzg3cHhcblxuICAgIC5ieC0tYWRkLW9wZW5hcGktbW9kYWxcbiAgICAuYngtLWFkZC1sb29wYmFjay1tb2RhbFxuICAgICAgLmJ4LS1zZWxlY3RfX2lucHV0XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDBcblxuLmJ4LS1mb3JtX19yb3ctaXRlbS5pbmRlbnRlZFJvd1xuICBkaXNwbGF5OiBibG9ja1xuICBtYXJnaW4tcmlnaHQ6IDBcbiAgd2lkdGg6IGF1dG9cblxuLmluc3RhbGwtY29ubmVjdG9yLW1vZGFsXG4gIC5ieC0tbW9kYWwtY29udGVudFxuICAgIG1hcmdpbi1ib3R0b206IDUwcHhcblxuLmJ4LS1kZWZpbml0aW9ucy1wcm9wZXJ0aWVzXG4gIGRpc3BsYXk6IHRhYmxlXG5cbiAgLmJ4LS10YWJsZS1yb3dcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3dcbiAgICAmPnNwYW5cbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGxcbiAgICAgIHBhZGRpbmc6IDEwcHhcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGVcbiAgICAgIHdoaXRlLXNwYWNlOiBuby13cmFwXG4gICAgJj5zcGFuLmJ4VGFibGVQYWRkaW5nTGVmdFxuICAgICAgcGFkZGluZy1sZWZ0OiAyNXB4XG4gICAgJj5zcGFuLmJ4VGFibGVQYWRkaW5nUmlnaHRcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDI1cHhcblxuXG4gIC5ieC0tdGFibGUtaGVhZFxuICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cFxuXG4gIC5ieC0tdGFibGUtYm9keVxuICAgIGRpc3BsYXk6IHRhYmxlLXJvdy1ncm91cFxuXG4gIC5ieC0tdGFibGUtaGVhZGVyXG4gICAgZGlzcGxheTogdGFibGUtY2VsbFxuXG4gIC5ieC0tbnVtYmVyXG4gICAgdG9wOiA0cHhcblxuICAuYngtLXNlbGVjdDpub3QoLmJ4LS10YWJsZS1zZWxlY3QpXG4gICAgcG9zaXRpb246IHJlbGF0aXZlXG4gICAgdG9wOiAxMnB4XG5cbmFwaW0tZW52aXJvbm1lbnQtcm9sZXMgLy8gQHN0eWxpbnQgaWdub3JlIHZhbGlkXG4gIC5kZXRhaWxzUGFnZVxuICAgIG1hcmdpbi1sZWZ0OiAyODBweFxuICAuZGlqaXRJbmxpbmVcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4XG5cbi5lbnZpcm9ubWVudHNDb2xsZWN0aW9uXG4gIC5sZWZ0Q29sdW1uU2l6ZS53aGl0ZUJhY2tncm91bmQuc3RyZXRjaFxuICAgIG1hcmdpbi1sZWZ0OiA2MHB4XG5cbi5tYWtlU3BhY2VGb3JOYXZcbiAgLmVudmlyb25tZW50RGV0YWlsc1xuICAgIC5lbnZpcm9ubWVudHNDb2xsZWN0aW9uXG4gICAgICAubGVmdENvbHVtblNpemUud2hpdGVCYWNrZ3JvdW5kLnN0cmV0Y2hcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDBcblxuLmJ4LS1sZWZ0LW5hdi1yb2xlc1xuICBtYXJnaW4tdG9wOiAtMjVweFxuXG4uYngtLXJpZ2h0LW5hdi1yb2xlc1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZVxuXG4uYngtLW5vdGlmaWNhdGlvbi0tbmV3XG4gIGJ1dHRvbi5ieC0tbm90aWZpY2F0aW9uX19jbG9zZS1idXR0b25cbiAgICAmOmhvdmVyXG4gICAgJjpmb2N1c1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnRcblxuLmJ4LS1yZWdpc3RyeS1tb2RhbFxuICBvdmVyZmxvdy14OiBoaWRkZW5cblxuLmJ4LS1tb2RhbC1jb250ZW50IC8vIEBzdHlsaW50IGlnbm9yZSBkdXBsaWNhdGVcbmRpdi5kZXRhaWxzU2VjdGlvbiAuaG9yaXpTcGFjZVxuICAuZmlsZVNlbGVjdG9yXG4gICAgLmZpbGVTZWxlY3RcbiAgICAgICYuYnRuXG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICMzZDcwYjJcbiAgICAgICAgcGFkZGluZzogOHB4IDFyZW1cblxuICAgICAgJjpob3ZlclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Q3MGIyXG5cbi5ieC0tcmVzcG9uc2l2ZS10YWJsZSB0ZDpsYXN0LWNoaWxkXG4gIHBhZGRpbmctcmlnaHQ6IDE0cHhcbiAgdGV4dC1hbGlnbjogcmlnaHRcblxuLmJ4LS10YWJsZS1ib2R5XG4gIC5ieC0tdGFibGUtcm93XG4gICAgLnRhYmxlLWVtcHR5XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXJcblxuLmJ4LS10YWJsZS1zb3J0LS1hc2NlbmRpbmdcbi5ieC0tdGFibGUtc29ydFxuICAmOm5vdCguYngtLXRhYmxlLXNvcnQtYWN0aXZlKVxuICAgIHN2Z1xuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuXG5cbkAtbW96LWRvY3VtZW50IHVybC1wcmVmaXgoKVxuICAuYngtLW92ZXJmbG93LW1lbnVfX29wdGlvbnMuYngtLW92ZXJmbG93LW1lbnUtLW9wZW5cbiAgICByaWdodDogLTIwcHhcbiAgICB3aWR0aDogMzAwcHhcblxuICAuYngtLXRhYmxlLW92ZXJmbG93IC5ieC0tb3ZlcmZsb3ctbWVudV9fb3B0aW9uczo6YmVmb3JlXG4gICAgcmlnaHQ6IDEuN3JlbVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSksICgtbXMtaGlnaC1jb250cmFzdDogbm9uZSlcbiAgLmFwaW1cbiAgICAuZGV0YWlsc0VkaXRvclxuICAgICAgLmJ4LS1mb3JtX19yb3ctaXRlbVxuICAgICAgICAudGFnQ29udGFpbmVyXG4gICAgICAgICAgZGlzcGxheTogYmxvY2tcblxuICAuYngtLXJlc3BvbnNpdmUtdGFibGUtY29udGFpbmVyXG4gICAgb3ZlcmZsb3c6IGF1dG9cblxuICAuYngtLXRhYmxlLW92ZXJmbG93XG4gICAgLmJ4LS1vdmVyZmxvdy1tZW51X19vcHRpb25zOjpiZWZvcmVcbiAgICAgIHJpZ2h0OiAyZW1cblxuQHN1cHBvcnRzICgtbXMtaW1lLWFsaWduOmF1dG8pXG4gIC5ieC0tcmVzcG9uc2l2ZS10YWJsZS1jb250YWluZXJcbiAgICBvdmVyZmxvdzogYXV0b1xuXG4gIC5ieC0tb3ZlcmZsb3ctbWVudV9faWNvblxuICAgIHdpZHRoOiAzMnB4XG5cbiAgLmJ4LS1vdmVyZmxvdy1tZW51X19vcHRpb25zOjpiZWZvcmVcbiAgICByaWdodDogMmVtXG5cbi5ieC0tbm8tbGFiZWwtY2hlY2tib3hcbiAgLmJ4LS1jaGVja2JveF9fYXBwZWFyYW5jZVxuICAgIG1hcmdpbjogYXV0b1xuXG4uYngtLXNwYWNlX3RhYmxlXG4gIHBhZGRpbmctdG9wOiAyMHB4XG5cbi8vIEZpeCBmb3Igb3ZlcmZsb3cgbWVudSBmb3IgSUUxMCtcbkBtZWRpYSBhbGwgYW5kICgtbXMtaGlnaC1jb250cmFzdDogbm9uZSksICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKVxuICAuYngtLW1vZGFsLXRhbGwuYngtLW1vZGFsXG4gICAgLmJ4LS1tb2RhbC1jb250ZW50XG4gICAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSAzMDBweClcblxuLmFwaW1cbiAgYngtbm90aWZpY2F0aW9uLWNvbnRhaW5lclxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lXG5cbiAgYngtbm90aWZpY2F0aW9uLWdlbmVyaWNcbiAgICBwb2ludGVyLWV2ZW50czogYXV0b1xuXG4uYngtLW5ldy1sYi1tb2RhbFxuLmJ4LS1hZGQtb3BlbmFwaS1tb2RhbFxuLmJ4LS1uZXctcHJvamVjdC1tb2RhbFxuICAuYngtLWZvcm1fX3JlcXVpcmVtZW50c1xuICAgIHBhZGRpbmctYm90dG9tOiAuNXJlbVxuXG4uYngtLW1vZGFsLWNvbnRlbnQuZmlsZXBpY2tlci5hZGQtZXhpc3RpbmdcbiAgcGFkZGluZzogMCAxcmVtXG5cbi5ieC0tZmxleC10YWJsZVxuICB3aWR0aDogMTAwJVxuXG4gIC5ieC0tZmxleC10YWJsZS1yb3dcbiAgICBkaXNwbGF5OiBmbGV4XG5cbiAgICBzcGFuXG4gICAgICBmbGV4LWdyb3c6IDFcbiAgICAgIHBhZGRpbmc6IDEwcHhcblxuLmJ4LS1maWVsZC1sYWJlbFxuICBmb250LXNpemU6IC43NXJlbVxuICBmb250LXdlaWdodDogNzAwXG4gIGxldHRlci1zcGFjaW5nOiAxcHhcbiAgdGV4dC1hbGlnbjogbGVmdFxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlXG5cbi5ieC0tZmxleC1ncmlkXG4gIGRpc3BsYXk6IGZsZXhcblxuLmJ4LS1mbGV4LWdyaWQtaXRlbVxuICBhbGlnbi1zZWxmOiBjZW50ZXJcblxuLmJ4LS1wYWQtc21cbiAgcGFkZGluZzogNXB4XG5cbi5ieC0taC1wYWQtc21cbiAgcGFkZGluZzogMCA1cHhcblxuLmJ4LS12LXBhZC1zbVxuICBwYWRkaW5nOiAwIDVweFxuXG4uYngtLXBhZC1yaWdodC1zbVxuICBwYWRkaW5nLXJpZ2h0OiA1cHhcblxuLmJ4LS1pbmxpbmUtbm90aWZpY2F0aW9uXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4XG4gIHdpZHRoOiAxMDAlXG4gIG1pbi1oZWlnaHQ6IDQwcHhcbiAgbWFyZ2luLWJvdHRvbTogMThweFxuICBwYWRkaW5nLXRvcDogMTJweFxuICBwYWRkaW5nLWJvdHRvbTogMTJweFxuICBwYWRkaW5nLWxlZnQ6IDE4cHhcbiAgcGFkZGluZy1yaWdodDogMThweFxuXG4uYngtLWlubGluZS1ub3RpZmljYXRpb25fX2RldGFpbHNcbiAgZGlzcGxheTogZmxleFxuICBmbGV4LWdsb3c6IDFcbiAgd2lkdGg6IDEwMCVcblxuLmJ4LS1pbmxpbmUtbm90aWZpY2F0aW9uLS13YXJuaW5nXG4gIGJvcmRlcjogMXB4IHNvbGlkICNlZmMxMDBcbiAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCAjZWZjMTAwXG5cbi5ieC0taW5saW5lLW5vdGlmaWNhdGlvbl9fdGV4dC13cmFwcGVyXG4gIG1hcmdpbi1sZWZ0OiAxNnB4XG4gIHdpZHRoOiAxMDAlXG4gIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveFxuXG4uYngtLWlubGluZS1ub3RpZmljYXRpb25fX25vbi10ZXh0LXdyYXBwZXJcbiAgbWFyZ2luLWxlZnQ6IDE2cHhcbiAgd2lkdGg6IDEwMCVcblxuLmJ4LS1pbmxpbmUtbm90aWZpY2F0aW9uX190aXRsZVxuICBjb2xvcjogIzE1MjkzNVxuICBtYXJnaW4tcmlnaHQ6IDRweFxuXG4uYngtLWlubGluZS1ub3RpZmljYXRpb25fX3N1YnRpdGxlXG4gIGNvbG9yOiAjNWE2ODcyXG5cbi5ieC0taW5saW5lLW5vdGlmaWNhdGlvbl9fY2xvc2UtaWNvblxuICBoZWlnaHQ6IDEwcHhcbiAgd2lkdGg6IDEwcHhcblxuLmJ4LS1pbmxpbmUtbm90aWZpY2F0aW9uX19pY29uXG4gIGZpbGw6ICNlZmMxMDBcblxuLmJ4LS1pbmxpbmUtZG93blxuICBtYXJnaW4tbGVmdDogYXV0b1xuIiwidXNlKCcuLi9ub2Rlcy92ZW5kb3ItaGVscGVycy5qcycpXG5AaW1wb3J0ICdjb25maWcnXG5cbi8qXG4gKiBBbGlhcyBcIm5vd3JhcFwiIGFzIFwibm8td3JhcFwiLlxuICovXG5cbm5vLXdyYXAgPSB1bnF1b3RlKCdub3dyYXAnKVxuXG4vKlxuICogSGVscGVyIHRvIGZpbmQgb3V0IGlmIGEgZ2l2ZW4gdmFsdWUgaXMgYSB3aWR0aFxuICovXG5cbmlzLXdpZHRoKHZhbClcbiAgaWYgYXV0byA9PSB2YWxcbiAgICByZXR1cm4gdHJ1ZVxuICBlbHNlIGlmIHZhbCAmJiAndW5pdCcgPT0gdHlwZSh2YWwpXG4gICAgLy8gU3R5bHVzIGRvZXMgbm90IHNob3J0IGNpcmN1aXQgc28gd2UgbmVlZCB0byBwZXJmb3JtIHRoaXMgYXMgYSBkaXN0aW5jdFxuICAgIC8vIG9wZXJhdGlvbiB0byBwcmV2ZW50IGVycm9yc1xuICAgIHJldHVybiAnJyAhPSB1bml0KHZhbClcbiAgcmV0dXJuIGZhbHNlXG5cbi8qXG4gKiBWZW5kb3Igc3VwcG9ydCBmb3IgdGhlIGdpdmVuIHByb3AgLyBhcmd1bWVudHMsIG9wdGlvbmFsbHkgc3BlY2lmeWluZyB0aGVcbiAqIG9ubHkgcHJlZml4ZXMgdG8gdXRpbGl6ZSwgb3IgdGhvc2Ugd2hpY2ggc2hvdWxkIGJlIGlnbm9yZWQuXG4gKi9cblxudmVuZG9yKHByb3AsIGFyZ3MsIG9ubHkgPSBudWxsLCBpZ25vcmUgPSBudWxsLCB2ZW5kb3ItcHJvcGVydHkgPSB0cnVlKVxuICBuZWVkX25vcm1hbGl6ZSA9ICF2ZW5kb3ItcHJvcGVydHkgb3IgcHJvcCBpbiAoJ3RyYW5zaXRpb24nICd0cmFuc2l0aW9uLXByb3BlcnR5JyAnYm9yZGVyLWltYWdlJyAnYm9yZGVyLWltYWdlLXNsaWNlJylcbiAgZm9yIHByZWZpeCBpbiB2ZW5kb3ItcHJlZml4ZXNcbiAgICB1bmxlc3MgKG9ubHkgYW5kICEocHJlZml4IGluIG9ubHkpKSBvciAoaWdub3JlIGFuZCBwcmVmaXggaW4gaWdub3JlKVxuICAgICAgaWYgb2ZmaWNpYWwgPT0gcHJlZml4XG4gICAgICAgIGlmIG5lZWRfbm9ybWFsaXplXG4gICAgICAgICAge3Byb3B9OiBub3JtYWxpemUocHJvcCwoJyVzJyAlIGFyZ3MpKVxuICAgICAgICBlbHNlXG4gICAgICAgICAge3Byb3B9OiBhcmdzXG4gICAgICBlbHNlXG4gICAgICAgIG5ld3Byb3AgPSBwcm9wXG4gICAgICAgIG5ld3Byb3AgPSAnLScgKyBwcmVmaXggKyAnLScgKyBwcm9wIGlmIHZlbmRvci1wcm9wZXJ0eVxuXG4gICAgICAgIGlmIG5lZWRfbm9ybWFsaXplXG4gICAgICAgICAge25ld3Byb3B9OiBub3JtYWxpemUocHJvcCwoJyVzJyAlIGFyZ3MpLHByZWZpeClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHtuZXdwcm9wfTogYXJnc1xuLypcbiAqIFZlbmRvcml6ZSB0aGUgZ2l2ZW4gdmFsdWUuXG4gKi9cblxudmVuZG9yLXZhbHVlKGFyZywgb25seSA9IG51bGwsIGlnbm9yZSA9IG51bGwpXG4gIHByb3AgPSBjdXJyZW50LXByb3BlcnR5WzBdXG4gIGZvciBwcmVmaXggaW4gdmVuZG9yLXByZWZpeGVzXG4gICAgdW5sZXNzIChvbmx5IGFuZCAhKHByZWZpeCBpbiBvbmx5KSkgb3IgKGlnbm9yZSBhbmQgcHJlZml4IGluIGlnbm9yZSkgb3Igb2ZmaWNpYWwgPT0gcHJlZml4XG4gICAgICBhZGQtcHJvcGVydHkocHJvcCwgJy0lcy0lcycgJSAocHJlZml4IGFyZykpXG4gIGFyZ1xuXG4vKlxuICogVmVuZG9yIFwiYm94LXNoYWRvd1wiIHN1cHBvcnQuXG4gKi9cblxuYm94LXNoYWRvdygpXG4gIHZlbmRvcignYm94LXNoYWRvdycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwidXNlci1zZWxlY3RcIiBzdXBwb3J0LlxuICovXG5cbnVzZXItc2VsZWN0KClcbiAgdmVuZG9yKCd1c2VyLXNlbGVjdCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1jb3VudFwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLWNvdW50KClcbiAgdmVuZG9yKCdjb2x1bW4tY291bnQnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tZ2FwXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tZ2FwKClcbiAgdmVuZG9yKCdjb2x1bW4tZ2FwJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLXJ1bGVcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1ydWxlKClcbiAgdmVuZG9yKCdjb2x1bW4tcnVsZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1ydWxlLWNvbG9yXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tcnVsZS1jb2xvcigpXG4gIHZlbmRvcignY29sdW1uLXJ1bGUtY29sb3InLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tcnVsZS13aWR0aFwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXJ1bGUtd2lkdGgoKVxuICB2ZW5kb3IoJ2NvbHVtbi1ydWxlLXdpZHRoJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLXJ1bGUtc3R5bGVcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1ydWxlLXN0eWxlKClcbiAgdmVuZG9yKCdjb2x1bW4tcnVsZS1zdHlsZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi13aWR0aFwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXdpZHRoKClcbiAgdmVuZG9yKCdjb2x1bW4td2lkdGgnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tc3BhblwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXNwYW4oKVxuICB2ZW5kb3IoJ2NvbHVtbi1zcGFuJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tZmlsbFwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLWZpbGwoKVxuICB2ZW5kb3IoJ2NvbHVtbi1maWxsJywgYXJndW1lbnRzLCBvbmx5OiBtb3opXG5cbi8qXG4gKiBMZWdhY3kgc3ludGF4IHN1cHBvcnQgZm9yIGJhY2tncm91bmQtY2xpcCBhbmQgYmFja2dyb3VuZC1vcmlnaW5cbiAqL1xuXG5sZWdhY3ktYmctdmFsdWVzKHByb3BlcnR5LCBhcmdzKVxuICBsZWdhY3lfYXJncyA9ICgpXG4gIGltcG9ydGFuY2UgPSB1bnF1b3RlKCcnKVxuICBmb3Igc3ViYXJncyBpbiBhcmdzXG4gICAgZm9yIGFyZyBpbiBzdWJhcmdzXG4gICAgICBpZiBhcmcgaW4gKGJvcmRlci1ib3ggcGFkZGluZy1ib3ggY29udGVudC1ib3gpXG4gICAgICAgIGFyZyA9IHVucXVvdGUoJ2JvcmRlcicpICBpZiBhcmcgPT0gYm9yZGVyLWJveFxuICAgICAgICBhcmcgPSB1bnF1b3RlKCdwYWRkaW5nJykgaWYgYXJnID09IHBhZGRpbmctYm94XG4gICAgICAgIGFyZyA9IHVucXVvdGUoJ2NvbnRlbnQnKSBpZiBhcmcgPT0gY29udGVudC1ib3hcbiAgICAgIGlmIGFyZyAhPSAnIWltcG9ydGFudCdcbiAgICAgICAgcHVzaChsZWdhY3lfYXJncyxhcmcpXG4gICAgICBlbHNlXG4gICAgICAgIGltcG9ydGFuY2UgPSAhaW1wb3J0YW50XG4gIHZlbmRvcihwcm9wZXJ0eSwgdW5xdW90ZShqb2luKCcsICcsbGVnYWN5X2FyZ3MpKSBpbXBvcnRhbmNlLCBvbmx5OiBtb3ogd2Via2l0KVxuXG4vKlxuICogVmVuZG9yIFwiYmFja2dyb3VuZC1jbGlwXCIgc3VwcG9ydC5cbiAqL1xuXG5iYWNrZ3JvdW5kLWNsaXAoKVxuICBpZiBhcmd1bWVudHNbMF0gPT0gdGV4dFxuICAgIHZlbmRvcignYmFja2dyb3VuZC1jbGlwJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQpXG4gIGVsc2VcbiAgICBsZWdhY3ktYmctdmFsdWVzKCdiYWNrZ3JvdW5kLWNsaXAnLCBhcmd1bWVudHMpXG4gICAgYmFja2dyb3VuZC1jbGlwOiBhcmd1bWVudHNcblxuLypcbiAqIFZlbmRvciBcImJhY2tncm91bmQtb3JpZ2luXCIgc3VwcG9ydC5cbiAqL1xuXG5iYWNrZ3JvdW5kLW9yaWdpbigpXG4gIGxlZ2FjeS1iZy12YWx1ZXMoJ2JhY2tncm91bmQtb3JpZ2luJywgYXJndW1lbnRzKVxuICBiYWNrZ3JvdW5kLW9yaWdpbjogYXJndW1lbnRzXG5cbi8qXG4gKiBWZW5kb3IgXCJiYWNrZ3JvdW5kLXNpemVcIiBzdXBwb3J0LlxuICovXG5cbmJhY2tncm91bmQtc2l6ZSgpXG4gIHZlbmRvcignYmFja2dyb3VuZC1zaXplJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNmb3JtXCIgc3VwcG9ydC5cbiAqL1xuXG50cmFuc2Zvcm0oKVxuICB2ZW5kb3IoJ3RyYW5zZm9ybScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zZm9ybS1vcmlnaW5cIiBzdXBwb3J0LlxuICovXG50cmFuc2Zvcm0tb3JpZ2luKClcbiAgICB2ZW5kb3IoJ3RyYW5zZm9ybS1vcmlnaW4nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2Zvcm0tc3R5bGVcIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zZm9ybS1zdHlsZSgpXG4gIHZlbmRvcigndHJhbnNmb3JtLXN0eWxlJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYm9yZGVyLWltYWdlXCIgc3VwcG9ydC5cbiAqL1xuXG5ib3JkZXItaW1hZ2UoKVxuICB2ZW5kb3IoJ2JvcmRlci1pbWFnZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNpdGlvblwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNpdGlvbigpXG4gIHZlbmRvcigndHJhbnNpdGlvbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zaXRpb24tcHJvcGVydHlcIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zaXRpb24tcHJvcGVydHkoKVxuICB2ZW5kb3IoJ3RyYW5zaXRpb24tcHJvcGVydHknLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2l0aW9uLWR1cmF0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG50cmFuc2l0aW9uLWR1cmF0aW9uKClcbiAgdmVuZG9yKCd0cmFuc2l0aW9uLWR1cmF0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb25cIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKClcbiAgdmVuZG9yKCd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zaXRpb24tZGVsYXlcIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zaXRpb24tZGVsYXkoKVxuICB2ZW5kb3IoJ3RyYW5zaXRpb24tZGVsYXknLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJiYWNrZmFjZS12aXNpYmlsaXR5XCIgc3VwcG9ydC5cbiAqL1xuXG5iYWNrZmFjZS12aXNpYmlsaXR5KClcbiAgdmVuZG9yKCdiYWNrZmFjZS12aXNpYmlsaXR5JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwicGVyc3BlY3RpdmVcIiBzdXBwb3J0LlxuICovXG5cbnBlcnNwZWN0aXZlKClcbiAgaWYgbWl4aW5cbiAgICB2ZW5kb3IoJ3BlcnNwZWN0aXZlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuICBlbHNlXG4gICAgJ3BlcnNwZWN0aXZlKCVzKScgJSBhcmd1bWVudHNcblxuLypcbiAqIFZlbmRvciBcInBlcnNwZWN0aXZlLW9yaWdpblwiIHN1cHBvcnQuXG4gKi9cblxucGVyc3BlY3RpdmUtb3JpZ2luKClcbiAgdmVuZG9yKCdwZXJzcGVjdGl2ZS1vcmlnaW4nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBPcGFjaXR5IHdpdGggY29uZGl0aW9uYWwgSUUgc3VwcG9ydC5cbiAqL1xuXG5vcGFjaXR5KG4sIGFyZ3MuLi4pXG4gIG9wYWNpdHk6IG4gYXJnc1xuICBpZiBzdXBwb3J0LWZvci1pZVxuICAgIGlmIG4gPT0gaW5oZXJpdCBvciBuID09IGluaXRpYWxcbiAgICAgIC1tcy1maWx0ZXI6IG4gYXJnc1xuICAgICAgZmlsdGVyOiBuIGFyZ3NcbiAgICBlbHNlXG4gICAgICB2YWwgPSByb3VuZChuICogMTAwKVxuICAgICAgaWYgdmFsID09IDEwMFxuICAgICAgICAtbXMtZmlsdGVyOiBub25lIGFyZ3NcbiAgICAgICAgZmlsdGVyOiBub25lIGFyZ3NcbiAgICAgIGVsc2VcbiAgICAgICAgLW1zLWZpbHRlcjogJ1wicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9JXMpXCInICUgdmFsIGFyZ3NcbiAgICAgICAgZmlsdGVyOiAnYWxwaGEob3BhY2l0eT0lcyknICUgdmFsIGFyZ3NcblxuLypcbiAqIFZlbmRvciBcInRleHQtc2l6ZS1hZGp1c3RcIlxuICovXG5cbnRleHQtc2l6ZS1hZGp1c3QoKVxuICB2ZW5kb3IoJ3RleHQtc2l6ZS1hZGp1c3QnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBBbGlhcyB0aGUgXCJ3aGl0ZS1zcGFjZVwiIHByb3BlcnR5LlxuICovXG5cbndoaXRlc3BhY2UoKVxuICB3aGl0ZS1zcGFjZTogYXJndW1lbnRzXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtc2l6aW5nXCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtc2l6aW5nKClcbiAgdmVuZG9yKCdib3gtc2l6aW5nJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiYm94LW9yaWVudFwiIHN1cHBvcnQuXG4gKi9cblxuYm94LW9yaWVudCgpXG4gIHZlbmRvcignYm94LW9yaWVudCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImJveC1mbGV4LWdyb3VwXCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtZmxleC1ncm91cCgpXG4gIHZlbmRvcignYm94LWZsZXgtZ3JvdXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtb3JkaW5hbC1ncm91cFwiIHN1cHBvcnQuXG4gKi9cblxuYm94LW9yZGluYWwtZ3JvdXAoKVxuICB2ZW5kb3IoJ2JveC1vcmRpbmFsLWdyb3VwJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtYWxpZ25cIiBzdXBwb3J0LlxuICovXG5cbmJveC1hbGlnbigpXG4gIHZlbmRvcignYm94LWFsaWduJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiYm94LXBhY2tcIiBzdXBwb3J0LlxuICovXG5cbmJveC1wYWNrKClcbiAgdmVuZG9yKCdib3gtcGFjaycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImJveC1kaXJlY3Rpb25cIiBzdXBwb3J0LlxuICovXG5cbmJveC1kaXJlY3Rpb24oKVxuICB2ZW5kb3IoJ2JveC1kaXJlY3Rpb24nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb25cIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbigpXG4gIHZlbmRvcignYW5pbWF0aW9uJywgYXJndW1lbnRzKVxuXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tbmFtZVwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLW5hbWUoKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1uYW1lJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLWR1cmF0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tZHVyYXRpb24oKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1kdXJhdGlvbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi1kZWxheVwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLWRlbGF5KClcbiAgdmVuZG9yKCdhbmltYXRpb24tZGVsYXknLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tZGlyZWN0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tZGlyZWN0aW9uKClcbiAgdmVuZG9yKCdhbmltYXRpb24tZGlyZWN0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudFwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCgpXG4gIHZlbmRvcignYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCcsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb25cIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24oKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tcGxheS1zdGF0ZVwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLXBsYXktc3RhdGUoKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1wbGF5LXN0YXRlJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLWZpbGwtbW9kZVwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLWZpbGwtbW9kZSgpXG4gIHZlbmRvcignYW5pbWF0aW9uLWZpbGwtbW9kZScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImh5cGhlbnNcIiBzdXBwb3J0LlxuICovXG5cbmh5cGhlbnMoKVxuICB2ZW5kb3IoJ2h5cGhlbnMnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJhcHBlYXJhbmNlXCIgc3VwcG9ydC5cbiAqL1xuXG5hcHBlYXJhbmNlKClcbiAgdmVuZG9yKCdhcHBlYXJhbmNlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwidGFiLXNpemVcIiBzdXBwb3J0LlxuICovXG5cbnRhYi1zaXplKClcbiAgdmVuZG9yKCd0YWItc2l6ZScsIGFyZ3VtZW50cywgb25seTogbW96IG8gb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJvdmVyZmxvdy1zY3JvbGxpbmdcIiBzdXBwb3J0LlxuICovXG5cbm92ZXJmbG93LXNjcm9sbGluZygpXG4gIHZlbmRvcignb3ZlcmZsb3ctc2Nyb2xsaW5nJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0ZXh0LW92ZXJmbG93XCIgc3VwcG9ydCwgLCAtby0gZm9yIG9wZXJhIDkuKiAtIDEwLipcbiAqL1xuXG50ZXh0LW92ZXJmbG93KClcbiAgdmVuZG9yKCd0ZXh0LW92ZXJmbG93JywgYXJndW1lbnRzLCBvbmx5OiBvZmZpY2lhbCBvKVxuXG4vKlxuICogVmVuZG9yIFwidGV4dC1zaXplLWFkanVzdFwiIHN1cHBvcnQuXG4gKi9cbnRleHQtc2l6ZS1hZGp1c3QoKVxuICB2ZW5kb3IoJ3RleHQtc2l6ZS1hZGp1c3QnLCBhcmd1bWVudHMsIG9ubHk6IG9mZmljaWFsIHdlYmtpdCBtcylcblxuLypcbiAqIFZlbmRvciBcImZvbnQtc21vb3RoaW5nXCIgc3VwcG9ydCwgd2Via2l0IG9ubHkuXG4gKi9cbmZvbnQtc21vb3RoaW5nKClcbiAgdmVuZG9yKCdmb250LXNtb290aGluZycsIGFyZ3VtZW50cywgb25seTogd2Via2l0KVxuXG5cbi8qKlxuICogVmVuZG9yIGlucHV0LXBsYWNlaG9sZGVyL3BsYWNlaG9sZGVyIHN1cHBvcnQuXG4gKlxuICogRXhhbXBsZXM6XG4gKiAgICAvLyBEZWZhdWx0IHN5bnRheFxuICogICAgYm9keVxuICogICAgICBwbGFjZWhvbGRlcihjb2xvciAjMzMzLCBmb250LXdlaWdodCBub3JtYWwpXG4gKlxuICogICAgLy8gVGhlIGNvbW1hIGlzIGltcG9ydGFudFxuICogICAgLnBsYWNlaG9sZGVyLXJlZFxuICogICAgICBwbGFjZWhvbGRlcihjb2xvciByZWQsKVxuICpcbiAqICAgIC8vIFdlIGNhbiBwYXNzIGEgZnVuY3Rpb25cbiAqICAgIGdyZWVuLXBsYWNlaG9sZGVyKClcbiAqICAgICAgY29sb3IgZ3JlZW5cbiAqICAgIC5wbGFjZWhvbGRlci1ncmVlblxuICogICAgICBwbGFjZWhvbGRlcihncmVlbi1wbGFjZWhvbGRlcilcbiAqXG4gKiAgICAvLyBXZSBjYW4gcGFzcyBhIGhhc2hcbiAqICAgIHRleHRhcmVhXG4gKiAgICAgIHBsYWNlaG9sZGVyKChmb250LXN0eWxlIGl0YWxpYykgKGZvbnQtd2VpZ2h0IGJvbGQpIChwYWRkaW5nICc0cHggMTBweCcpKVxuICovXG5wbGFjZWhvbGRlcigpXG4gIGZvciB2IGluICc6LXdlYmtpdC1pbnB1dCcgJy1tb3onICc6LW1veicgJy1tcy1pbnB1dCdcbiAgICAmOnt2fS1wbGFjZWhvbGRlclxuICAgICAgZm9yIHBhaXIgaW4gYXJndW1lbnRzXG4gICAgICAgIGlmIHR5cGVvZihwYWlyKSA9PSAnZnVuY3Rpb24nXG4gICAgICAgICAgcGFpcigpXG4gICAgICAgIGVsc2UgaWYgcGFpciBpcyBub3QgbnVsbCAmJiBwYWlyWzBdIGlzIG5vdCBudWxsXG4gICAgICAgICAge3BhaXJbMF19OiB0eXBlKHBhaXJbMV0pID09ICdzdHJpbmcnID8gcyhwYWlyWzFdKSA6IHBhaXJbMV1cbmlucHV0LXBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXJcblxuLypcbiAqIFZlbmRvciBiYWNrZ3JvdW5kIHN1cHBvcnQgKGdyYWRpZW50cykuXG4gKi9cblxuYmFja2dyb3VuZCgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdiYWNrZ3JvdW5kJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgYmFja2dyb3VuZCBhcmd1bWVudHNcblxuYmFja2dyb3VuZC1pbWFnZSgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdiYWNrZ3JvdW5kLWltYWdlJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgYmFja2dyb3VuZC1pbWFnZSBhcmd1bWVudHNcblxuY3Vyc29yKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2N1cnNvcicsIGFyZ3VtZW50cywgdmVuZG9yLXByb3BlcnR5OiBmYWxzZSlcbiAgZWxzZVxuICAgIGN1cnNvciBhcmd1bWVudHNcblxubGlzdC1zdHlsZSgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdsaXN0LXN0eWxlJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgbGlzdC1zdHlsZSBhcmd1bWVudHNcblxubGlzdC1zdHlsZS1pbWFnZSgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdsaXN0LXN0eWxlLWltYWdlJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgbGlzdC1zdHlsZS1pbWFnZSBhcmd1bWVudHNcbiIsIi8qXG4gKiBWZW5kb3IgXCJkaXNwbGF5OiBmbGV4XCIgc3VwcG9ydCB3aXRoIGZhbGxiYWNrIHRvIG9ic29sZXRlIHZlcnNpb25zLlxuICovXG5cbmZsZXgtdmVyc2lvbiA/PSBib3ggZmxleFxuXG4vL1xuLy8gMS4gRGlzcGxheSB2YWx1ZXNcbi8vICAgIC0gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1mbGV4Ym94LyNmbGV4LWNvbnRhaW5lcnNcbi8vXG5kaXNwbGF5KHR5cGUsIGFyZ3MuLi4pXG4gIGlmIGZsZXggPT0gdHlwZSB8fCBpbmxpbmUtZmxleCA9PSB0eXBlXG4gICAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgICAgaWYgZmxleCA9PSB0eXBlXG4gICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94IGFyZ3NcbiAgICAgICAgZGlzcGxheTogdmVuZG9yLXZhbHVlKGJveCBhcmdzLCBvbmx5OiBtb3ogd2Via2l0KVxuICAgICAgZWxzZVxuICAgICAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggYXJnc1xuICAgICAgICBkaXNwbGF5OiB2ZW5kb3ItdmFsdWUoaW5saW5lLWJveCBhcmdzLCBvbmx5OiBtb3ogd2Via2l0KVxuICAgIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgICBkaXNwbGF5OiB2ZW5kb3ItdmFsdWUoYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpIC8vIG92ZXJ3cml0ZXMgb2xkIHdlYmtpdFxuICBlbHNlXG4gICAgZGlzcGxheTogYXJndW1lbnRzXG5cbi8qXG4gKiBOZXcgc3ludGF4IGZvciBicm93c2VycyBsaWtlIEdvb2dsZSBDaHJvbWUuXG4gKiBQbHVzIGEgdHJhbnNsYXRpb24gdG8gdGhlIG9sZCBzeW50YXgsIGlmIHBvc3NpYmxlLlxuICovXG5cblxuLy9cbi8vIDUuIE9yZGVyaW5nIGFuZCBPcmllbnRhdGlvblxuLy8gICAgLSBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWZsZXhib3gvI29yZGVyaW5nLWFuZC1vcmllbnRhdGlvblxuLy9cbi1mbGV4LW9ic29sZXRlLWRpcmVjdGlvbihkaXJlY3Rpb24pXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICBpZiByb3ctcmV2ZXJzZSA9PSBkaXJlY3Rpb24gfHwgY29sdW1uLXJldmVyc2UgPT0gZGlyZWN0aW9uXG4gICAgICB2ZW5kb3IoJ2JveC1kaXJlY3Rpb24nLCByZXZlcnNlLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuXG4gICAgaWYgcm93ID09IGRpcmVjdGlvbiB8fCByb3ctcmV2ZXJzZSA9PSBkaXJlY3Rpb25cbiAgICAgIHZlbmRvcignYm94LW9yaWVudCcsIGhvcml6b250YWwsIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG4gICAgZWxzZSBpZiBjb2x1bW4gPT0gZGlyZWN0aW9uIHx8IGNvbHVtbi1yZXZlcnNlID09IGRpcmVjdGlvblxuICAgICAgdmVuZG9yKCdib3gtb3JpZW50JywgdmVydGljYWwsIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG5cbi1mbGV4LW9ic29sZXRlLXdyYXAodmFsdWUpXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICAvLyBXQVJOOiB3cmFwLXJldmVyc2UgZG9lcyBub3QgaGF2ZSBhIGJveCBlcXVpdmFsZW50LiBUaGlzIHdpbGwgcmVuZGVyIGluIGRpZmZlcmVudCBtYW5uZXJzXG4gICAgLy8gICAgb24gYm94IHZzLiBmbGV4IHZhbHVlcy5cbiAgICBpZiAnd3JhcCcgPT0gdmFsdWUgfHwgd3JhcC1yZXZlcnNlID09IHZhbHVlXG4gICAgICB2ZW5kb3IoJ2JveC1saW5lcycsIG11bHRpcGxlLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuICAgIGVsc2UgaWYgbm93cmFwID09IHZhbHVlXG4gICAgICB2ZW5kb3IoJ2JveC1saW5lcycsIHNpbmdsZSwgaWdub3JlOiBtcyBvZmZpY2lhbClcblxuZmxleC1kaXJlY3Rpb24oZGlyZWN0aW9uKVxuICAvLyBvYnNvbGV0ZVxuICAtZmxleC1vYnNvbGV0ZS1kaXJlY3Rpb24oZGlyZWN0aW9uKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1kaXJlY3Rpb24nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtcyBvZmZpY2lhbClcblxuZmxleC13cmFwKHZhbHVlKVxuICAvLyBvYnNvbGV0ZVxuICAtZmxleC1vYnNvbGV0ZS13cmFwKHZhbHVlKVxuXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LXdyYXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtcyBvZmZpY2lhbClcblxuZmxleC1mbG93KClcbiAgLy8gb2Jzb2xldGVcbiAgLWZsZXgtb2Jzb2xldGUtZGlyZWN0aW9uKGFyZ3VtZW50c1swXSlcbiAgLWZsZXgtb2Jzb2xldGUtZGlyZWN0aW9uKGFyZ3VtZW50c1sxXSlcbiAgLWZsZXgtb2Jzb2xldGUtd3JhcChhcmd1bWVudHNbMF0pXG4gIC1mbGV4LW9ic29sZXRlLXdyYXAoYXJndW1lbnRzWzFdKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1mbG93JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbXMgb2ZmaWNpYWwpXG5cblxub3JkZXIoKVxuICAvLyBvYnNvbGV0ZVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdib3gtb3JkaW5hbC1ncm91cCcsIGFyZ3VtZW50cywgaWdub3JlOiBtcyBvZmZpY2lhbClcblxuICAvLyBuZXdcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtb3JkZXInLCBhcmd1bWVudHMsIG9ubHk6IG1zKVxuICAgIHZlbmRvcignb3JkZXInLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuXG4vL1xuLy8gNy4gRmxleGliaWxpdHlcbi8vICAgIC0gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1mbGV4Ym94LyNmbGV4aWJpbGl0eVxuLy9cbmZsZXgtZ3Jvdyhncm93dGgpXG4gIC8vIG9ic29sZXRlXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2JveC1mbGV4JywgZ3Jvd3RoKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1ncm93JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbmZsZXgtYmFzaXMoKVxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1iYXNpcycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG5mbGV4LXNocmluaygpXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LXNocmluaycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG5mbGV4KGdyb3d0aClcblxuICAvLyBvYnNvbGV0ZVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgc2hyaW5rID0gMVxuXG4gICAgaWYgbm9uZSA9PSBncm93dGggfHwgaW5pdGlhbCA9PSBncm93dGhcbiAgICAgIC8vIFdlbGwga25vd24gdmFsdWVzXG4gICAgICBzaHJpbmsgPSAwIGlmIG5vbmUgPT0gZ3Jvd3RoXG4gICAgICBncm93dGggPSAwXG4gICAgZWxzZSBpZiBpcy13aWR0aChncm93dGgpID09IHRydWVcbiAgICAgIC8vIEJhc2lzIGlzIGRlZmluZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlclxuICAgICAgZ3Jvd3RoID0gYXJndW1lbnRzWzFdIHx8IDBcbiAgICAgIHNocmluayA9IGFyZ3VtZW50c1syXSBpZiAzIDw9IGxlbmd0aChhcmd1bWVudHMpXG4gICAgZWxzZSBpZiBhcmd1bWVudHNbMV0gJiYgaXMtd2lkdGgoYXJndW1lbnRzWzFdKSA9PSBmYWxzZVxuICAgICAgLy8gR3Jvd3RoIGlzIGZpcnN0IGFuZCBzaHJpbmsgaXMgc2Vjb25kXG4gICAgICBzaHJpbmsgPSBhcmd1bWVudHNbMV1cblxuICAgIC8vIFNpbmNlIHdlIGNhbid0IG1ha2UgdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gZ3Jvd2luZyBhbmQgc2hyaW5raW5nIGluIHRoZSBib3ggbW9kZWwsIHRha2VcbiAgICAvLyB0aGUgb25lIHRoYXQgcHJvdmlkZXMgdGhlIG1vc3QgZmxleGliaWxpdHkuXG4gICAgdmVuZG9yKCdib3gtZmxleCcsIG1heChncm93dGgsIHNocmluayksIGlnbm9yZTogbXMpXG5cbiAgLy8gbmV3XG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbXMgb2ZmaWNpYWwpXG5cblxuLy8gY29udmVydHMgdGhlIGp1c3RpZmljYXRpb24gYWxpZ25tZW50XG4tY29udmVydC1qdXN0aWZ5KGFsaWduKVxuICBpZiBmbGV4LXN0YXJ0ID09IGFsaWduXG4gICAgcmV0dXJuIHN0YXJ0XG4gIGVsc2UgaWYgZmxleC1lbmQgPT0gYWxpZ25cbiAgICByZXR1cm4gZW5kXG4gIGVsc2UgaWYgc3BhY2UtYXJvdW5kID09IGFsaWduXG4gICAgcmV0dXJuIGRpc3RyaWJ1dGVcbiAgZWxzZSBpZiBzcGFjZS1iZXR3ZWVuID09IGFsaWduXG4gICAgcmV0dXJuIGp1c3RpZnlcbiAgZWxzZVxuICAgIHJldHVybiBhbGlnblxuXG4vL1xuLy8gOC4gQWxpZ25tZW50XG4vLyAgICAtIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtZmxleGJveC8jYWxpZ25tZW50XG4vL1xuanVzdGlmeS1jb250ZW50KGFsaWduKVxuICAvLyBvYnNvbGV0ZVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdib3gtcGFjaycsIC1jb252ZXJ0LWp1c3RpZnkoYWxpZ24pLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1wYWNrJywgLWNvbnZlcnQtanVzdGlmeShhbGlnbiksIG9ubHk6IG1zKVxuICAgIHZlbmRvcignanVzdGlmeS1jb250ZW50JywgYWxpZ24sIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuYWxpZ24tY29udGVudChhbGlnbilcbiAgLy8gV0FSTjogT2Jzb2xldGUgc3BlYyBkb2VzIG5vdCBhbGxvdyBmb3IgYWRqdXN0bWVudCBoZXJlXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LWxpbmUtcGFjaycsIC1jb252ZXJ0LWp1c3RpZnkoYWxpZ24pLCBvbmx5OiBtcylcbiAgICB2ZW5kb3IoJ2FsaWduLWNvbnRlbnQnLCBhbGlnbiwgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG4vLyBjb252ZXJ0cyBhbGlnbm1lbnQgZnJvbSAnZmxleCcgdG8gbm9ybWFsIHZhbHVlXG4tY29udmVydC1hbGlnbm1lbnQoYWxpZ24pXG4gIGlmIGZsZXgtc3RhcnQgPT0gYWxpZ25cbiAgICByZXR1cm4gc3RhcnRcbiAgZWxzZSBpZiBmbGV4LWVuZCA9PSBhbGlnblxuICAgIHJldHVybiBlbmRcbiAgZWxzZVxuICAgIHJldHVybiBhbGlnblxuXG5hbGlnbi1pdGVtcyhhbGlnbilcbiAgLy8gb2Jzb2xldGVcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignYm94LWFsaWduJywgLWNvbnZlcnQtYWxpZ25tZW50KGFsaWduKSwgaWdub3JlOiBtcyBvZmZpY2lhbClcblxuICAvLyBuZXdcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtYWxpZ24nLCAtY29udmVydC1hbGlnbm1lbnQoYWxpZ24pLCBvbmx5OiBtcylcbiAgICB2ZW5kb3IoJ2FsaWduLWl0ZW1zJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbmFsaWduLXNlbGYoYWxpZ24pXG4gIC8vIFdBUk46IE9ic29sZXRlIHNwZWMgZG9lcyBub3QgYWxsb3cgZm9yIG92ZXJyaWRpbmcgYWxpZ25tZW50IG9uIGluZGl2aWR1YWwgaXRlbXMuXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdhbGlnbi1zZWxmJywgYWxpZ24sIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcbiAgICB2ZW5kb3IoJ2ZsZXgtaXRlbS1hbGlnbicsIC1jb252ZXJ0LWFsaWdubWVudChhbGlnbiksIG9ubHk6IG1zKVxuIiwiLypcbiAqIE92ZXJmbG93IHV0aWxpdHkuIE1hcHMgdG8gcmVndWxhciBvdmVyZmxvdywgYW5kIGFkZHMgYW4gZWxsaXBzaXMgdmFsdWUuXG4gKlxuICogU3lub3BzaXM6XG4gKlxuICogICBvdmVyZmxvdzogPHR5cGU+XG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgIG92ZXJmbG93OiBhdXRvXG4gKiAgICAgb3ZlcmZsb3c6IGhpZGRlblxuICogICAgIG92ZXJmbG93OiBlbGxpcHNpc1xuICpcbiAqL1xuXG5vdmVyZmxvdygpXG4gIGlmIGFyZ3VtZW50c1swXSA9PSBlbGxpcHNpc1xuICAgIGVsbGlwc2lzKClcbiAgZWxzZVxuICAgIG92ZXJmbG93OiBhcmd1bWVudHNcbiIsIi8qXG4gKiBib3JkZXI6IDxjb2xvcj5cbiAqIGJvcmRlcjogLi4uXG4gKi9cblxuYm9yZGVyKGNvbG9yLCBhcmdzLi4uKVxuICBpZiBjb2xvciBpcyBhICdjb2xvcidcbiAgICBib3JkZXI6IDFweCBzb2xpZCBjb2xvciBhcmdzXG4gIGVsc2VcbiAgICBib3JkZXI6IGFyZ3VtZW50c1xuIiwiLypcbiAqIFNpemUgdXRpbGl0eS5cbiAqXG4gKiBTeW5vcHNpczpcbiAqXG4gKiAgIHNpemU6IDx3aWR0aD4gPGhlaWdodD4gfCA8d2lkdGggJiBoZWlnaHQ+XG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgIHNpemU6IDEwMCUgMzBweFxuICogICAgICAgeWllbGRzOlxuICogICAgICAgICB3aWR0aDogMTAwJVxuICogICAgICAgICBoZWlnaHQ6IDMwcHhcbiAqXG4gKiAgICAgc2l6ZTogNXB4XG4gKiAgICAgICB5aWVsZHM6XG4gKiAgICAgICAgIHdpZHRoOiA1cHhcbiAqICAgICAgICAgaGVpZ2h0OiA1cHhcbiAqXG4gKi9cblxuc2l6ZSgpXG4gIGlmIGxlbmd0aChhcmd1bWVudHMpID09IDFcbiAgICB3aWR0aDogYXJndW1lbnRzWzBdXG4gICAgaGVpZ2h0OiBhcmd1bWVudHNbMF1cbiAgZWxzZVxuICAgIHdpZHRoOiBhcmd1bWVudHNbMF1cbiAgICBoZWlnaHQ6IGFyZ3VtZW50c1sxXVxuIiwiY2FsbGVkLWZyb20gPSAoKVxuXG52ZW5kb3JzID0gbW96IHdlYmtpdCBvIG1zIG9mZmljaWFsXG5cbi8vIHN0cmluZ2lmeSB0aGUgZ2l2ZW4gYXJnXG5cbi1zdHJpbmcoYXJnKVxuICB0eXBlKGFyZykgKyAnICcgKyBhcmdcblxuLy8gcmVxdWlyZSBhIGNvbG9yXG5cbnJlcXVpcmUtY29sb3IoY29sb3IpXG4gIHVubGVzcyBjb2xvciBpcyBhICdjb2xvcidcbiAgICBlcnJvcignUkdCIG9yIEhTTCB2YWx1ZSBleHBlY3RlZCwgZ290IGEgJyArIC1zdHJpbmcoY29sb3IpKVxuXG4vLyByZXF1aXJlIGEgdW5pdFxuXG5yZXF1aXJlLXVuaXQobilcbiAgdW5sZXNzIG4gaXMgYSAndW5pdCdcbiAgICBlcnJvcigndW5pdCBleHBlY3RlZCwgZ290IGEgJyArIC1zdHJpbmcobikpXG5cbi8vIHJlcXVpcmUgYSBzdHJpbmdcblxucmVxdWlyZS1zdHJpbmcoc3RyKVxuICB1bmxlc3Mgc3RyIGlzIGEgJ3N0cmluZycgb3Igc3RyIGlzIGEgJ2lkZW50J1xuICAgIGVycm9yKCdzdHJpbmcgZXhwZWN0ZWQsIGdvdCBhICcgKyAtc3RyaW5nKHN0cikpXG5cbi8vIE1hdGggZnVuY3Rpb25zXG5cbmFicyhuKSB7IG1hdGgobiwgJ2FicycpIH1cbm1pbihhLCBiKSB7IGEgPCBiID8gYSA6IGIgfVxubWF4KGEsIGIpIHsgYSA+IGIgPyBhIDogYiB9XG5cbi8vIFRyaWdvbm9tZXRyaWNzXG5QSSA9IC1tYXRoLXByb3AoJ1BJJylcblxucmFkaWFucy10by1kZWdyZWVzKGFuZ2xlKVxuICBhbmdsZSAqICgxODAgLyBQSSlcblxuZGVncmVlcy10by1yYWRpYW5zKGFuZ2xlKVxuICBhbmdsZSAqIChQSSAvIDE4MClcblxuc2luKG4pXG4gIG4gPSB1bml0KG4pID09ICdkZWcnID8gZGVncmVlcy10by1yYWRpYW5zKHVuaXQobiwgJycpKSA6IHVuaXQobiwgJycpXG4gIHJvdW5kKG1hdGgobiwgJ3NpbicpLCA5KVxuXG5jb3MobilcbiAgbiA9IHVuaXQobikgPT0gJ2RlZycgPyBkZWdyZWVzLXRvLXJhZGlhbnModW5pdChuLCAnJykpIDogdW5pdChuLCAnJylcbiAgcm91bmQobWF0aChuLCAnY29zJyksIDkpXG5cbi8vIFJvdW5kaW5nIE1hdGggZnVuY3Rpb25zXG5cbmNlaWwobiwgcHJlY2lzaW9uID0gMClcbiAgbXVsdGlwbGllciA9IDEwICoqIHByZWNpc2lvblxuICBtYXRoKG4gKiBtdWx0aXBsaWVyLCAnY2VpbCcpIC8gbXVsdGlwbGllclxuXG5mbG9vcihuLCBwcmVjaXNpb24gPSAwKVxuICBtdWx0aXBsaWVyID0gMTAgKiogcHJlY2lzaW9uXG4gIG1hdGgobiAqIG11bHRpcGxpZXIsICdmbG9vcicpIC8gbXVsdGlwbGllclxuXG5yb3VuZChuLCBwcmVjaXNpb24gPSAwKVxuICBtdWx0aXBsaWVyID0gMTAgKiogcHJlY2lzaW9uXG4gIG1hdGgobiAqIG11bHRpcGxpZXIsICdyb3VuZCcpIC8gbXVsdGlwbGllclxuXG4vLyByZXR1cm4gdGhlIHN1bSBvZiB0aGUgZ2l2ZW4gbnVtYmVyc1xuXG5zdW0obnVtcylcbiAgc3VtID0gMFxuICBzdW0gKz0gbiBmb3IgbiBpbiBudW1zXG5cbi8vIHJldHVybiB0aGUgYXZlcmFnZSBvZiB0aGUgZ2l2ZW4gbnVtYmVyc1xuXG5hdmcobnVtcylcbiAgc3VtKG51bXMpIC8gbGVuZ3RoKG51bXMpXG5cbi8vIHJldHVybiBhIHVuaXRsZXNzIG51bWJlciwgb3IgcGFzcyB0aHJvdWdoXG5cbnJlbW92ZS11bml0KG4pXG4gIGlmIHR5cGVvZihuKSBpcyBcInVuaXRcIlxuICAgIHVuaXQobiwgXCJcIilcbiAgZWxzZVxuICAgIG5cblxuLy8gY29udmVydCBhIHBlcmNlbnQgdG8gYSBkZWNpbWFsLCBvciBwYXNzIHRocm91Z2hcblxucGVyY2VudC10by1kZWNpbWFsKG4pXG4gIGlmIHVuaXQobikgaXMgXCIlXCJcbiAgICByZW1vdmUtdW5pdChuKSAvIDEwMFxuICBlbHNlXG4gICAgblxuXG4vLyBjaGVjayBpZiBuIGlzIGFuIG9kZCBudW1iZXJcblxub2RkKG4pXG4gIDEgPT0gbiAlIDJcblxuLy8gY2hlY2sgaWYgbiBpcyBhbiBldmVuIG51bWJlclxuXG5ldmVuKG4pXG4gIDAgPT0gbiAlIDJcblxuLy8gY2hlY2sgaWYgY29sb3IgaXMgbGlnaHRcblxubGlnaHQoY29sb3IpXG4gIGxpZ2h0bmVzcyhjb2xvcikgPj0gNTAlXG5cbi8vIGNoZWNrIGlmIGNvbG9yIGlzIGRhcmtcblxuZGFyayhjb2xvcilcbiAgbGlnaHRuZXNzKGNvbG9yKSA8IDUwJVxuXG4vLyBkZXNhdHVyYXRlIGNvbG9yIGJ5IGFtb3VudFxuXG5kZXNhdHVyYXRlKGNvbG9yLCBhbW91bnQpXG4gIGFkanVzdChjb2xvciwgJ3NhdHVyYXRpb24nLCAtIGFtb3VudClcblxuLy8gc2F0dXJhdGUgY29sb3IgYnkgYW1vdW50XG5cbnNhdHVyYXRlKGNvbG9yID0gJycsIGFtb3VudCA9IDEwMCUpXG4gIGlmIGNvbG9yIGlzIGEgJ2NvbG9yJ1xuICAgIGFkanVzdChjb2xvciwgJ3NhdHVyYXRpb24nLCBhbW91bnQpXG4gIGVsc2VcbiAgICB1bnF1b3RlKCBcInNhdHVyYXRlKFwiICsgY29sb3IgKyBcIilcIiApXG5cbi8vIGRhcmtlbiBieSB0aGUgZ2l2ZW4gYW1vdW50XG5cbmRhcmtlbihjb2xvciwgYW1vdW50KVxuICBhZGp1c3QoY29sb3IsICdsaWdodG5lc3MnLCAtIGFtb3VudClcblxuLy8gbGlnaHRlbiBieSB0aGUgZ2l2ZW4gYW1vdW50XG5cbmxpZ2h0ZW4oY29sb3IsIGFtb3VudClcbiAgYWRqdXN0KGNvbG9yLCAnbGlnaHRuZXNzJywgYW1vdW50KVxuXG4vLyBkZWNyZWFzZSBvcGFjaXR5IGJ5IGFtb3VudFxuXG5mYWRlLW91dChjb2xvciwgYW1vdW50KVxuICBjb2xvciAtIHJnYmEoYmxhY2ssIHBlcmNlbnQtdG8tZGVjaW1hbChhbW91bnQpKVxuXG4vLyBpbmNyZWFzZSBvcGFjaXR5IGJ5IGFtb3VudFxuXG5mYWRlLWluKGNvbG9yLCBhbW91bnQpXG4gIGNvbG9yICsgcmdiYShibGFjaywgcGVyY2VudC10by1kZWNpbWFsKGFtb3VudCkpXG5cbi8vIHNwaW4gaHVlIGJ5IGEgZ2l2ZW4gYW1vdW50XG5cbnNwaW4oY29sb3IsIGFtb3VudClcbiAgY29sb3IgKyB1bml0KGFtb3VudCwgZGVnKVxuXG4vLyBtaXggdHdvIGNvbG9ycyBieSBhIGdpdmVuIGFtb3VudFxuXG5taXgoY29sb3IxLCBjb2xvcjIsIHdlaWdodCA9IDUwJSlcbiAgdW5sZXNzIHdlaWdodCBpbiAwLi4xMDBcbiAgICBlcnJvcihcIldlaWdodCBtdXN0IGJlIGJldHdlZW4gMCUgYW5kIDEwMCVcIilcblxuICBpZiBsZW5ndGgoY29sb3IxKSA9PSAyXG4gICAgd2VpZ2h0ID0gY29sb3IxWzBdXG4gICAgY29sb3IxID0gY29sb3IxWzFdXG5cbiAgZWxzZSBpZiBsZW5ndGgoY29sb3IyKSA9PSAyXG4gICAgd2VpZ2h0ID0gMTAwIC0gY29sb3IyWzBdXG4gICAgY29sb3IyID0gY29sb3IyWzFdXG5cbiAgcmVxdWlyZS1jb2xvcihjb2xvcjEpXG4gIHJlcXVpcmUtY29sb3IoY29sb3IyKVxuXG4gIHAgPSB1bml0KHdlaWdodCAvIDEwMCwgJycpXG4gIHcgPSBwICogMiAtIDFcblxuICBhID0gYWxwaGEoY29sb3IxKSAtIGFscGhhKGNvbG9yMilcblxuICB3MSA9ICgoKHcgKiBhID09IC0xKSA/IHcgOiAodyArIGEpIC8gKDEgKyB3ICogYSkpICsgMSkgLyAyXG4gIHcyID0gMSAtIHcxXG5cbiAgY2hhbm5lbHMgPSAocmVkKGNvbG9yMSkgcmVkKGNvbG9yMikpIChncmVlbihjb2xvcjEpIGdyZWVuKGNvbG9yMikpIChibHVlKGNvbG9yMSkgYmx1ZShjb2xvcjIpKVxuICByZ2IgPSAoKVxuXG4gIGZvciBwYWlyIGluIGNoYW5uZWxzXG4gICAgcHVzaChyZ2IsIGZsb29yKHBhaXJbMF0gKiB3MSArIHBhaXJbMV0gKiB3MikpXG5cbiAgYTEgPSBhbHBoYShjb2xvcjEpICogcFxuICBhMiA9IGFscGhhKGNvbG9yMikgKiAoMSAtIHApXG4gIGFscGhhID0gYTEgKyBhMlxuXG4gIHJnYmEocmdiWzBdLCByZ2JbMV0sIHJnYlsyXSwgYWxwaGEpXG5cbi8vIGludmVydCBjb2xvcnMsIGxlYXZlIGFscGhhIGludGFjdFxuXG5pbnZlcnQoY29sb3IgPSAnJylcbiAgaWYgY29sb3IgaXMgYSAnY29sb3InXG4gICAgcmdiYSgjZmZmIC0gY29sb3IsIGFscGhhKGNvbG9yKSlcbiAgZWxzZVxuICAgIHVucXVvdGUoIFwiaW52ZXJ0KFwiICsgY29sb3IgKyBcIilcIiApXG5cbi8vIGdpdmUgY29tcGxlbWVudCBvZiB0aGUgZ2l2ZW4gY29sb3JcblxuY29tcGxlbWVudCggY29sb3IgKVxuICBzcGluKCBjb2xvciwgMTgwIClcblxuLy8gZ2l2ZSBncmF5c2NhbGUgb2YgdGhlIGdpdmVuIGNvbG9yXG5cbmdyYXlzY2FsZSggY29sb3IgPSAnJyApXG4gIGlmIGNvbG9yIGlzIGEgJ2NvbG9yJ1xuICAgIGRlc2F0dXJhdGUoIGNvbG9yLCAxMDAlIClcbiAgZWxzZVxuICAgIHVucXVvdGUoIFwiZ3JheXNjYWxlKFwiICsgY29sb3IgKyBcIilcIiApXG5cbi8vIG1peCB0aGUgZ2l2ZW4gY29sb3Igd2l0aCB3aGl0ZVxuXG50aW50KCBjb2xvciwgcGVyY2VudCApXG4gIG1peCggd2hpdGUsIGNvbG9yLCBwZXJjZW50IClcblxuLy8gbWl4IHRoZSBnaXZlbiBjb2xvciB3aXRoIGJsYWNrXG5cbnNoYWRlKCBjb2xvciwgcGVyY2VudCApXG4gIG1peCggYmxhY2ssIGNvbG9yLCBwZXJjZW50IClcblxuLy8gcmV0dXJuIHRoZSBsYXN0IHZhbHVlIGluIHRoZSBnaXZlbiBleHByXG5cbmxhc3QoZXhwcilcbiAgZXhwcltsZW5ndGgoZXhwcikgLSAxXVxuXG4vLyByZXR1cm4ga2V5cyBpbiB0aGUgZ2l2ZW4gcGFpcnMgb3Igb2JqZWN0XG5cbmtleXMocGFpcnMpXG4gIHJldCA9ICgpXG4gIGlmIHR5cGUocGFpcnMpID09ICdvYmplY3QnXG4gICAgZm9yIGtleSBpbiBwYWlyc1xuICAgICAgcHVzaChyZXQsIGtleSlcbiAgZWxzZVxuICAgIGZvciBwYWlyIGluIHBhaXJzXG4gICAgICBwdXNoKHJldCwgcGFpclswXSk7XG4gIHJldFxuXG4vLyByZXR1cm4gdmFsdWVzIGluIHRoZSBnaXZlbiBwYWlycyBvciBvYmplY3RcblxudmFsdWVzKHBhaXJzKVxuICByZXQgPSAoKVxuICBpZiB0eXBlKHBhaXJzKSA9PSAnb2JqZWN0J1xuICAgIGZvciBrZXksIHZhbCBpbiBwYWlyc1xuICAgICAgcHVzaChyZXQsIHZhbClcbiAgZWxzZVxuICAgIGZvciBwYWlyIGluIHBhaXJzXG4gICAgICBwdXNoKHJldCwgcGFpclsxXSk7XG4gIHJldFxuXG4vLyBqb2luIHZhbHVlcyB3aXRoIHRoZSBnaXZlbiBkZWxpbWl0ZXJcblxuam9pbihkZWxpbSwgdmFscy4uLilcbiAgYnVmID0gJydcbiAgdmFscyA9IHZhbHNbMF0gaWYgbGVuZ3RoKHZhbHMpID09IDFcbiAgZm9yIHZhbCwgaSBpbiB2YWxzXG4gICAgYnVmICs9IGkgPyBkZWxpbSArIHZhbCA6IHZhbFxuXG4vLyBhZGQgYSBDU1MgcnVsZSB0byB0aGUgY29udGFpbmluZyBibG9ja1xuXG4vLyAtIFRoaXMgZGVmaW5pdGlvbiBhbGxvd3MgYWRkLXByb3BlcnR5IHRvIGJlIHVzZWQgYXMgYSBtaXhpblxuLy8gLSBJdCBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIGludGVycG9sYXRpb24gYnV0IGFsbG93cyB1c2Vyc1xuLy8gICB0byBvcHQgZm9yIGEgZnVuY3Rpb25hbCBzdHlsZVxuXG5hZGQtcHJvcGVydHktZnVuY3Rpb24gPSBhZGQtcHJvcGVydHlcbmFkZC1wcm9wZXJ0eShuYW1lLCBleHByKVxuICBpZiBtaXhpblxuICAgIHtuYW1lfSBleHByXG4gIGVsc2VcbiAgICBhZGQtcHJvcGVydHktZnVuY3Rpb24obmFtZSwgZXhwcilcblxucHJlZml4LWNsYXNzZXMocHJlZml4KVxuICAtcHJlZml4LWNsYXNzZXMocHJlZml4LCBibG9jaylcblxuLy8gQ2FjaGluZyBtaXhpbiwgdXNlIGluc2lkZSB5b3VyIGZ1bmN0aW9ucyB0byBlbmFibGUgY2FjaGluZyBieSBleHRlbmRpbmcuXG5cbiRzdHlsdXNfbWl4aW5fY2FjaGUgPSB7fVxuY2FjaGUoKVxuICAka2V5ID0gKGN1cnJlbnQtbWVkaWEoKSBvciAnbm8tbWVkaWEnKSArICdfXycgKyBjYWxsZWQtZnJvbVswXSArICdfXycgKyBhcmd1bWVudHNcbiAgaWYgJGtleSBpbiAkc3R5bHVzX21peGluX2NhY2hlXG4gICAgQGV4dGVuZCB7XCIkY2FjaGVfcGxhY2Vob2xkZXJfZm9yX1wiICsgJHN0eWx1c19taXhpbl9jYWNoZVska2V5XX1cbiAgZWxzZSBpZiAnY2FjaGUnIGluIGNhbGxlZC1mcm9tXG4gICAge2Jsb2NrfVxuICBlbHNlXG4gICAgJGlkID0gbGVuZ3RoKCRzdHlsdXNfbWl4aW5fY2FjaGUpXG5cbiAgICAmLFxuICAgIC8kY2FjaGVfcGxhY2Vob2xkZXJfZm9yX3skaWR9XG4gICAgICAkc3R5bHVzX21peGluX2NhY2hlWyRrZXldID0gJGlkXG4gICAgICB7YmxvY2t9XG5cbi8vIFBlcmNlbnRhZ2UgZnVuY3Rpb24gdG8gY29udmVydCBhIG51bWJlciwgZS5nLiBcIi40NVwiLCBpbnRvIGEgcGVyY2VudGFnZSwgZS5nLiBcIjQ1JVwiXG5cbnBlcmNlbnRhZ2UobnVtKVxuICByZXR1cm4gdW5pdChudW0gKiAxMDAsICclJylcblxuLy8gUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgYSBgdmFsdWVgIHdpdGhpbiBhIGBsaXN0YFxuXG5pbmRleChsaXN0LCB2YWx1ZSlcbiAgZm9yIHZhbCwgaSBpbiBsaXN0XG4gICAgcmV0dXJuIGkgaWYgdmFsID09IHZhbHVlXG4iXX0= */
