/* ==========================================================================
   Form
   ========================================================================== */
/**
 * Settings
 */
/* ==========================================================================
   Settings.Defaults
   ========================================================================== */
/**
 * Breakpoints
 */
/**
 * Fonts
 */
/**
 * Project basic vars
 */
/**
 * Tools
 */
/* ==========================================================================
   Tools.Functions
   ========================================================================== */
/**
 * Function for rem mixin which removes units.
 */
/**
 * Basic fractions:
 */
/* ==========================================================================
   Tools.Mixins
   ========================================================================== */
/**
 * Generates column classes based on the defined breakpoints,
 * named with the convention `.u-sizexofy@breakpoint`, where
 * `x` is a subdivision of `y`.
 *
 * @include columns(3, 4);
 *
 * Generates:
 *  .u-size1of3@smallOnly
 *  .u-size1of3@smallUp
 *  .u-size1of3@smallDown
 *  .u-size1of3@mediumOnly
 *  .u-size1of3@mediumUp
 *  .u-size1of3@mediumDown
 *  .u-size1of3@largeUp
 *  .u-size1of3@largeDown
 *  .u-size2of3@smallOnly
 *  .u-size2of3@smallUp
 *  .u-size2of3@smallDown
 *  .u-size2of3@mediumOnly
 *  .u-size2of3@mediumUp
 *  .u-size2of3@mediumDown
 *  .u-size2of3@largeUp
 *  .u-size2of3@largeDown
 *
 *  (...)
 */
/**
 * Mixin for rem units within px fallback.
 * http://css-tricks.com/snippets/css/less-mixin-for-rem-font-sizing/
 *
 * .foo {
 *     @include rem(margin, 10, 20, 30, 40);
 * }
 *
 * .foo {
 *     margin: 160px 320px 480px 640px;
 *     margin: 10rem 20rem 30rem 40rem;
 * }
 *
 */
@media (min-width: 480px) {
  body::after {
    content: '{"small":{"value": "480px", "active": true}, "medium":{"value": "768px", "active": false}, "large":{"value": "1220px", "active": false}}';
    display: block;
    height: 0;
    overflow: hidden;
    width: 0;
  }
}

@media (min-width: 768px) {
  body::after {
    content: '{"small":{"value": "480px", "active": true}, "medium":{"value": "768px", "active": true}, "large":{"value": "1220px", "active": false}}';
    display: block;
    height: 0;
    overflow: hidden;
    width: 0;
  }
}

@media (min-width: 1220px) {
  body::after {
    content: '{"small":{"value": "480px", "active": true}, "medium":{"value": "768px", "active": true}, "large":{"value": "1220px", "active": true}}';
    display: block;
    height: 0;
    overflow: hidden;
    width: 0;
  }
}

/**
 * Components
 */
/* ==========================================================================
   Components.Form
   ========================================================================== */
.c-Form {
  position: relative;
  z-index: 10;
}

.c-Form-legend {
  font-size: 16px;
  font-size: 1rem;
  margin-bottom: 20px;
  font-weight: 600;
}

@media (min-width: 768px) {
  .c-Form-legend {
    font-size: 18px;
    font-size: 1.125rem;
  }
}

.c-Form-item {
  margin-bottom: 20px;
}

@media (min-width: 768px) {
  .c-Form-item {
    margin-bottom: 30px;
  }
}

.c-Form-label {
  display: block;
  margin-bottom: 5px;
  margin-left: 10px;
  font-weight: normal;
}

.c-Form-label--inline {
  position: relative;
  padding-left: 45px;
  margin: 0;
}

.c-Form-radio ~ .c-Form-label--inline:before, .c-Form-radio ~ .c-Form-label--inline:after,
.c-Form-checkbox ~ .c-Form-label--inline:before,
.c-Form-checkbox ~ .c-Form-label--inline:after {
  position: absolute;
}

.c-Form-radio ~ .c-Form-label--inline:before,
.c-Form-checkbox ~ .c-Form-label--inline:before {
  content: "";
  top: -11px;
  left: 0;
  width: 38px;
  height: 38px;
  border: 1px solid #d7d7d7;
}

.c-Form-radio ~ .c-Form-label--inline:before, .c-Form-radio ~ .c-Form-label--inline:after {
  border-radius: 50%;
}

.c-Form-radio ~ .c-Form-label--inline:after {
  top: -3px;
  left: 8px;
  width: 22px;
  height: 22px;
  background-color: #666;
}

.c-Form-checkbox ~ .c-Form-label--inline:after {
  top: -2px;
  left: 6px;
  width: 27px;
  height: 21px;
  background: url("../images/icons/check.svg") no-repeat 0 0;
  background-size: 100% 100%;
}

html.no-svg .c-Form-checkbox ~ .c-Form-label--inline:after {
  background-image: url("../images/icons/check.png");
}

.c-Form-radio:checked ~ .c-Form-label--inline:after,
.c-Form-checkbox:checked ~ .c-Form-label--inline:after {
  content: "";
}

@media (min-width: 768px) {
  .c-Form-label--inline {
    padding-left: 60px;
  }
  .c-Form-radio ~ .c-Form-label--inline:before,
  .c-Form-checkbox ~ .c-Form-label--inline:before {
    top: -6px;
  }
  .c-Form-radio ~ .c-Form-label--inline:after {
    top: 2px;
  }
  .c-Form-checkbox ~ .c-Form-label--inline:after {
    top: 3px;
  }
}

.c-Form-label--alt {
  font-size: 12px;
  font-size: 0.75rem;
  margin-left: 0;
  text-align: center;
}

@media (min-width: 768px) {
  .c-Form-label--alt {
    font-size: 14px;
    font-size: 0.875rem;
  }
}

.c-Form-input,
.c-Form-textarea {
  width: 100%;
  padding: 10px;
  margin: 0;
  border: 1px solid #d7d7d7;
  background-color: #fff;
}

.c-Form-block {
  position: relative;
  margin-bottom: 30px;
}

.c-Form-labelblock {
  display: block;
  padding: 60px 50% 30px 30px;
  cursor: pointer;
  font-weight: 600;
}

.c-Form-block--sprava .c-Form-labelblock {
  background-color: #f0f0f0;
}

.c-Form-block--aktivity .c-Form-labelblock {
  background-color: #c2e0bf;
}

.c-Form-block--helpdesk .c-Form-labelblock {
  background-color: #f7e3b0;
}

.c-Form-labelblock > span {
  position: relative;
}

@media (min-width: 768px) and (max-width: 1023px) {
  .c-Form-labelblock {
    padding: 30px 30px 100px;
  }
  .c-Form-labelblock > span {
    display: block;
  }
}

.c-Form-blockInput {
  position: absolute;
  bottom: 20px;
  right: 30px;
  width: 45%;
}

@media (min-width: 768px) and (max-width: 1023px) {
  .c-Form-blockInput {
    width: 80%;
    right: 10%;
  }
}

.c-Form-table {
  min-height: .01%;
  margin-bottom: 40px;
  overflow-x: auto;
}

.c-Form-table table {
  width: 100%;
  max-width: 100%;
  margin-bottom: 0;
  border-collapse: collapse;
  border-spacing: 0;
  overflow-x: auto;
}

.c-Form-table table th,
.c-Form-table table td {
  padding: 10px;
  border: 1px solid #d7d7d7;
  text-align: left;
}

.c-Form-table table td {
  vertical-align: top;
}

.c-Form-table table tbody tr:nth-child(odd) td {
  background-color: #f4f4f4;
}

.c-Form-table table tbody tr:hover td {
  background-color: #e9e7e7;
}

@media (min-width: 768px) {
  .c-Form-table {
    margin-bottom: 50px;
  }
  .c-Form-table table {
    table-layout: fixed;
  }
  .c-Form-table table th,
  .c-Form-table table td {
    padding: 15px 20px;
  }
  .c-Form-table table th {
    font-size: 18px;
    font-size: 1.125rem;
  }
}

.c-Form-button {
  padding: 10px 15px;
  border: 1px solid #51b048;
  background-color: #51b048;
  cursor: pointer;
}

.c-Form-button > span {
  display: inline-block;
  color: #fff;
  text-decoration: underline;
  vertical-align: middle;
}

.c-Form-button:hover {
  border-color: #333;
  background-color: transparent;
}

.c-Form-button:hover > span {
  color: #333;
  text-decoration: none;
}

@media (min-width: 768px) {
  .c-Form-button {
    padding: 20px 30px 20px 25px;
  }
}

@media (min-width: 1220px) {
  .c-Form-button {
    padding: 20px 30px 20px 25px;
  }
}

.c-Form-icon.icon-submit {
  width: 44px;
  height: 38px;
  margin-right: 5px;
  color: #fff;
}

.c-Form-button:hover .c-Form-icon.icon-submit {
  color: #333;
}

.c-Form-icon.icon-check {
  position: absolute;
  bottom: 100%;
  left: 50%;
  display: none;
  width: 44px;
  height: 35px;
  margin-bottom: 5px;
  margin-left: -22px;
}

.c-Form-checkblock:checked ~ .c-Form-labelblock .c-Form-icon.icon-check {
  display: block;
}

.c-Form-block--sprava .c-Form-icon.icon-check {
  color: #33addf;
}

.c-Form-block--aktivity .c-Form-icon.icon-check {
  color: #51b048;
}

.c-Form-block--helpdesk .c-Form-icon.icon-check {
  color: #f59c10;
}

@media (min-width: 768px) {
  .c-Form-icon.icon-submit {
    margin-right: 15px;
  }
}

@media (min-width: 768px) and (max-width: 1023px) {
  .c-Form-icon.icon-check {
    bottom: 50%;
    right: 0;
    left: auto;
    margin-bottom: -17px;
  }
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZvcm0uc2NzcyIsInNldHRpbmdzL19kZWZhdWx0cy5zY3NzIiwidG9vbHMvX2Z1bmN0aW9ucy5zY3NzIiwidG9vbHMvX21peGlucy5zY3NzIiwiLi4vLi4vLi4vYm93ZXJfY29tcG9uZW50cy9pbmNsdWRlLW1lZGlhL2Rpc3QvX2luY2x1ZGUtbWVkaWEuc2NzcyIsIi4uLy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvaW5jbHVkZS1tZWRpYS1leHBvcnQvZGlzdC9faW5jbHVkZS1tZWRpYS1leHBvcnQuc2NzcyIsImZvcm0uY3NzIiwiY29tcG9uZW50cy9fZm9ybS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztnRkFFZ0Y7QUFFaEY7O0dBRUc7QUNOSDs7Z0ZBRWdGO0FBRWhGOztHQUVHO0FBV0g7O0dBRUc7QUFTSDs7R0FFRztBRGxCSDs7R0FFRztBRWRIOztnRkFFZ0Y7QUFFaEY7O0dBRUc7QUFRSDs7R0FFRztBQ2hCSDs7Z0ZBRWdGO0FBRWhGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQXNESDs7Ozs7Ozs7Ozs7OztHQWFHO0FDZ2RDO0VDbGhCRTtJQUNFLG9KQVowQjtJQWExQixlQUFlO0lBQ2YsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixTQUFTO0dBQ1Y7Q0M2Q047O0FGK2RHO0VDbGhCRTtJQUNFLG1KQVowQjtJQWExQixlQUFlO0lBQ2YsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixTQUFTO0dBQ1Y7Q0N1RE47O0FGcWRHO0VDbGhCRTtJQUNFLGtKQVowQjtJQWExQixlQUFlO0lBQ2YsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixTQUFTO0dBQ1Y7Q0NpRU47O0FOOUVEOztHQUVHO0FPMUJIOztnRkFFZ0Y7QUFFaEY7RUFDSSxtQkFBbUI7RUFDbkIsWUFBWTtDQUNmOztBQUVEO0VKa0hJLGdCQWhCYztFQWlCZCxnQkFSZTtFSXpHZixvQk40Q2tDO0VNM0NsQyxpQkFBaUI7Q0FLcEI7O0FIZ2lCRztFR3hpQko7SUprSEksZ0JBaEJjO0lBaUJkLG9CQVJlO0dJbkdsQjtDRDhHQTs7QUM1R0Q7RUFDSSxvQk5tQ2tDO0NNOUJyQzs7QUh3aEJHO0VHOWhCSjtJQUlRLG9CQUFrQjtHQUV6QjtDRGdIQTs7QUM5R0Q7RUFDSSxlQUFlO0VBQ2YsbUJMVmE7RUtXYixrQkFBa0I7RUFDbEIsb0JBQW9CO0NBQ3ZCOztBQUVEO0VBQ0ksbUJBQW1CO0VBQ25CLG1CQUFtQjtFQUNuQixVQUFVO0NBOEViOztBQWpGRDs7O0VBU1ksbUJBQW1CO0NBQ3RCOztBQVZUOztFQWFZLFlBQVk7RUFDWixXQUFXO0VBQ1gsUUFBUTtFQUNSLFlBQVk7RUFDWixhQUFhO0VBQ2IsMEJBQTBCO0NBQzdCOztBQW5CVDtFQXlCWSxtQkFBbUI7Q0FDdEI7O0FBMUJUO0VBNkJZLFVBQVU7RUFDVixVQUFVO0VBQ1YsWUFBWTtFQUNaLGFBQWE7RUFDYix1QkFBdUI7Q0FDMUI7O0FBbENUO0VBdUNZLFVBQVU7RUFDVixVQUFVO0VBQ1YsWUFBWTtFQUNaLGFBQWE7RUFDYiwyREFBMEQ7RUFDMUQsMkJBQTJCO0NBSzlCOztBQWpEVDtFQStDZ0IsbURBQXFCO0NBQ3hCOztBQWhEYjs7RUF1RFksWUFBWTtDQUNmOztBSHVkTDtFRy9nQko7SUE0RFEsbUJBQW1CO0dBcUIxQjtFQWpGRDs7SUFpRWdCLFVBQVU7R0FDYjtFQWxFYjtJQXVFZ0IsU0FBUztHQUNaO0VBeEViO0lBNkVnQixTQUFTO0dBQ1o7Q0RvR1o7O0FDL0ZEO0VKTUksZ0JBaEJjO0VBaUJkLG1CQVJlO0VJR2YsZUFBZTtFQUNmLG1CQUFtQjtDQUt0Qjs7QUhvYkc7RUc1Yko7SUpNSSxnQkFoQmM7SUFpQmQsb0JBUmU7R0lTbEI7Q0RxR0E7O0FDbkdEOztFQUVJLFlBQVk7RUFDWixjQUFjO0VBQ2QsVUFBVTtFQUNWLDBCQUEwQjtFQUMxQix1QkFBdUI7Q0FDMUI7O0FBRUQ7RUFDSSxtQkFBbUI7RUFDbkIsb0JBQWtCO0NBQ3JCOztBQUVEO0VBQ0ksZUFBZTtFQUNmLDRCQUE0QjtFQUM1QixnQkFBZ0I7RUFDaEIsaUJBQWlCO0NBeUJwQjs7QUE3QkQ7RUFPUSwwQkFBMEI7Q0FDN0I7O0FBUkw7RUFXUSwwQkFBMEI7Q0FDN0I7O0FBWkw7RUFlUSwwQkFBMEI7Q0FDN0I7O0FBaEJMO0VBbUJRLG1CQUFtQjtDQUN0Qjs7QUhnWkQ7RUdwYUo7SUF1QlEseUJBQXlCO0dBTWhDO0VBN0JEO0lBMEJZLGVBQWU7R0FDbEI7Q0R3R1I7O0FDcEdEO0VBQ0ksbUJBQW1CO0VBQ25CLGFBQWE7RUFDYixZQUFZO0VBQ1osV0FBVztDQU1kOztBSDJYRztFR3JZSjtJQU9RLFdBQVc7SUFDWCxXQUFXO0dBRWxCO0NEd0dBOztBQ3RHRDtFQUNJLGlCQUFpQjtFQUNqQixvQkwzSmE7RUs0SmIsaUJBQWlCO0NBZ0RwQjs7QUFuREQ7RUFNUSxZQUFZO0VBQ1osZ0JBQWdCO0VBQ2hCLGlCQUFpQjtFQUNqQiwwQkFBMEI7RUFDMUIsa0JBQWtCO0VBQ2xCLGlCQUFpQjtDQXNCcEI7O0FBakNMOztFQWVZLGNBQWM7RUFDZCwwQkFBMEI7RUFDMUIsaUJBQWlCO0NBQ3BCOztBQWxCVDtFQXFCWSxvQkFBb0I7Q0FDdkI7O0FBdEJUO0VBMEJnQiwwQkFBMEI7Q0FDN0I7O0FBM0JiO0VBOEJnQiwwQkFBMEI7Q0FDN0I7O0FIMFZUO0VHelhKO0lBb0NRLG9CQUEyQjtHQWVsQztFQW5ERDtJQXVDWSxvQkFBb0I7R0FVdkI7RUFqRFQ7O0lBMkNnQixtQkFBbUI7R0FDdEI7RUE1Q2I7SUo3REksZ0JBaEJjO0lBaUJkLG9CQVJlO0dJb0hOO0NEeUdaOztBQ3BHRDtFQUNJLG1CQUFtQjtFQUNuQiwwQk43TXFDO0VNOE1yQywwQk45TXFDO0VNK01yQyxnQkFBZ0I7Q0EwQm5COztBQTlCRDtFQU9RLHNCQUFzQjtFQUN0QixZQUFZO0VBQ1osMkJBQTJCO0VBQzNCLHVCQUF1QjtDQUMxQjs7QUFYTDtFQWNRLG1CQUFtQjtFQUNuQiw4QkFBOEI7Q0FNakM7O0FBckJMO0VBa0JZLFlBQVk7RUFDWixzQkFBc0I7Q0FDekI7O0FIZ1RMO0VHcFVKO0lBd0JRLDZCQUE2QjtHQU1wQztDRG9HQTs7QUZrTUc7RUdwVUo7SUE0QlEsNkJBQTZCO0dBRXBDO0NEMEdBOztBQ3hHRDtFQUVRLFlBQVk7RUFDWixhQUFhO0VBQ2Isa0JBQWtCO0VBQ2xCLFlBQVk7Q0FLZjs7QUFWTDtFQVFZLFlBQVk7Q0FDZjs7QUFUVDtFQWFRLG1CQUFtQjtFQUNuQixhQUFhO0VBQ2IsVUFBVTtFQUNWLGNBQWM7RUFDZCxZQUFZO0VBQ1osYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixtQkFBbUI7Q0FpQnRCOztBQXJDTDtFQXVCWSxlQUFlO0NBQ2xCOztBQXhCVDtFQTJCWSxlTnhRNkI7Q015UWhDOztBQTVCVDtFQStCWSxlTjFRNkI7Q00yUWhDOztBQWhDVDtFQW1DWSxlTi9RNkI7Q01nUmhDOztBSGdRTDtFR3BTSjtJQXlDWSxtQkFBbUI7R0FDdEI7Q0QwR1I7O0FGZ0pHO0VHcFNKO0lBK0NZLFlBQVk7SUFDWixTQUFTO0lBQ1QsV0FBVztJQUNYLHFCQUFxQjtHQUN4QjtDRDBHUiIsImZpbGUiOiJmb3JtLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBGb3JtXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFNldHRpbmdzXG4gKi9cblxuQGltcG9ydCBcInNldHRpbmdzL2RlZmF1bHRzXCI7XG5cblxuXG4vKipcbiAqIFRvb2xzXG4gKi9cblxuQGltcG9ydCBcInRvb2xzL2Z1bmN0aW9uc1wiO1xuQGltcG9ydCBcInRvb2xzL21peGluc1wiO1xuXG5AaW1wb3J0IFwiYm93ZXJfY29tcG9uZW50cy9pbmNsdWRlLW1lZGlhL2Rpc3QvaW5jbHVkZS1tZWRpYVwiO1xuQGltcG9ydCBcImJvd2VyX2NvbXBvbmVudHMvaW5jbHVkZS1tZWRpYS1leHBvcnQvZGlzdC9pbmNsdWRlLW1lZGlhLWV4cG9ydFwiO1xuXG5cblxuLyoqXG4gKiBDb21wb25lbnRzXG4gKi9cblxuQGltcG9ydCBcImNvbXBvbmVudHMvZm9ybVwiO1xuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFNldHRpbmdzLkRlZmF1bHRzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEJyZWFrcG9pbnRzXG4gKi9cblxuJGJyZWFrcG9pbnRzOiAoXG4gICAgc21hbGw6IDQ4MHB4LFxuICAgIG1lZGl1bTogNzY4cHgsXG4gICAgbGFyZ2U6IDEyMjBweFxuKTtcbiRicmVha3BvaW50c0xlbmd0aDogbGVuZ3RoKCRicmVha3BvaW50cyk7XG5cblxuXG4vKipcbiAqIEZvbnRzXG4gKi9cblxuJEZvbnQtZGVmYXVsdFNhbnM6ICAgICAgICAgICAgICAgIEFyaWFsLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG4kRm9udC1kZWZhdWx0U2VyaWY6ICAgICAgICAgICAgICAgVGltZXMsIEdlb3JnaWEsICdUaW1lcyBOZXcgUm9tYW4nLCBzZXJpZjtcblxuJEZvbnQtYWxwaGE6ICAgICAgICAgICAgICAgICAgICAgICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjtcblxuXG5cbi8qKlxuICogUHJvamVjdCBiYXNpYyB2YXJzXG4gKi9cblxuJEJhc2UtY29sb3JBbHBoYTogICAgICAgICAgICAgICAgICMzM2FkZGY7XG4kQmFzZS1jb2xvckJldGE6ICAgICAgICAgICAgICAgICAgI2Y1OWMxMDtcbiRCYXNlLWNvbG9yR2FtbWE6ICAgICAgICAgICAgICAgICAjNTFiMDQ4O1xuXG4kQmFzZS1jb2xvckJhY2tncm91bmQ6ICAgICAgICAgICAgI2ZmZjtcbiRCYXNlLWNvbG9yVGV4dDogICAgICAgICAgICAgICAgICAjMDAwO1xuJEJhc2UtY29sb3JMaW5rczogICAgICAgICAgICAgICAgIGluaGVyaXQ7XG5cbiRCYXNlLXNlbGVjdGlvbkJhY2tncm91bmQ6ICAgICAgICAkQmFzZS1jb2xvclRleHQ7XG4kQmFzZS1zZWxlY3Rpb25UZXh0OiAgICAgICAgICAgICAgJEJhc2UtY29sb3JCYWNrZ3JvdW5kO1xuXG4kQmFzZS1mb250RmFtaWx5OiAgICAgICAgICAgICAgICAgJEZvbnQtYWxwaGE7XG4kQmFzZS1mb250U2l6ZTogICAgICAgICAgICAgICAgICAgMTRweDtcbiRCYXNlLWZvbnRTaXplTWVkaXVtVXA6ICAgICAgICAgICAxNnB4O1xuJEJhc2UtZm9udFNpemVMYXJnZVVwOiAgICAgICAgICAgIDE2cHg7XG5cbiRCYXNlLWxpbmVIZWlnaHQ6ICAgICAgICAgICAgICAgICAxLjUgKiAkQmFzZS1mb250U2l6ZTtcbiRCYXNlLWxpbmVIZWlnaHRNZWRpdW1VcDogICAgICAgICAxLjUgKiAkQmFzZS1mb250U2l6ZU1lZGl1bVVwO1xuJEJhc2UtbGluZUhlaWdodExhcmdlVXA6ICAgICAgICAgIDEuNSAqICRCYXNlLWZvbnRTaXplTGFyZ2VVcDtcblxuJEJhc2Utbm9ybWFsV2VpZ2h0OiAgICAgICAgICAgICAgIDMwMDtcbiRCYXNlLXN0cm9uZ1dlaWdodDogICAgICAgICAgICAgICA2MDA7XG5cbiRCYXNlLXVuaXRWOiAgICAgICAgICAgICAgICAgICAgICAyMHB4O1xuJEJhc2UtdW5pdEg6ICAgICAgICAgICAgICAgICAgICAgIDIwcHg7XG5cbiRCYXNlLWNvbnRhaW5lcldpZHRoOiAgICAgICAgICAgICAxMTgwcHg7XG4kQmFzZS1jb250YWluZXJQYWRkaW5nOiAgICAgICAgICAgMjBweDtcbiRCYXNlLWNvbnRhaW5lclBhZGRpbmdNZWRpdW1VcDogICAyMHB4O1xuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFRvb2xzLkZ1bmN0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBGdW5jdGlvbiBmb3IgcmVtIG1peGluIHdoaWNoIHJlbW92ZXMgdW5pdHMuXG4gKi9cblxuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJE51bSkge1xuICAgIEByZXR1cm4gJE51bSAvICgkTnVtICogMCArIDEpO1xufVxuXG5cblxuLyoqXG4gKiBCYXNpYyBmcmFjdGlvbnM6XG4gKi9cblxuQGZ1bmN0aW9uIHF1YXJ0ZXIoJE51bSkge1xuICAgIEByZXR1cm4gcm91bmQoJE51bSAvIDQpO1xufVxuXG5AZnVuY3Rpb24gdGhpcmQoJE51bSkge1xuICAgIEByZXR1cm4gcm91bmQoJE51bSAvIDMpO1xufVxuXG5AZnVuY3Rpb24gaGFsdmUoJE51bSkge1xuICAgIEByZXR1cm4gcm91bmQoJE51bSAvIDIpO1xufVxuXG5AZnVuY3Rpb24gZG91YmxlKCROdW0pIHtcbiAgICBAcmV0dXJuIHJvdW5kKCROdW0gKiAyKTtcbn1cblxuQGZ1bmN0aW9uIHRyZWJsZSgkTnVtKSB7XG4gICAgQHJldHVybiByb3VuZCgkTnVtICogMyk7XG59XG5cbkBmdW5jdGlvbiBxdWFkcnVwbGUoJE51bSkge1xuICAgIEByZXR1cm4gcm91bmQoJE51bSAqIDQpO1xufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFRvb2xzLk1peGluc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBHZW5lcmF0ZXMgY29sdW1uIGNsYXNzZXMgYmFzZWQgb24gdGhlIGRlZmluZWQgYnJlYWtwb2ludHMsXG4gKiBuYW1lZCB3aXRoIHRoZSBjb252ZW50aW9uIGAudS1zaXpleG9meUBicmVha3BvaW50YCwgd2hlcmVcbiAqIGB4YCBpcyBhIHN1YmRpdmlzaW9uIG9mIGB5YC5cbiAqXG4gKiBAaW5jbHVkZSBjb2x1bW5zKDMsIDQpO1xuICpcbiAqIEdlbmVyYXRlczpcbiAqICAudS1zaXplMW9mM0BzbWFsbE9ubHlcbiAqICAudS1zaXplMW9mM0BzbWFsbFVwXG4gKiAgLnUtc2l6ZTFvZjNAc21hbGxEb3duXG4gKiAgLnUtc2l6ZTFvZjNAbWVkaXVtT25seVxuICogIC51LXNpemUxb2YzQG1lZGl1bVVwXG4gKiAgLnUtc2l6ZTFvZjNAbWVkaXVtRG93blxuICogIC51LXNpemUxb2YzQGxhcmdlVXBcbiAqICAudS1zaXplMW9mM0BsYXJnZURvd25cbiAqICAudS1zaXplMm9mM0BzbWFsbE9ubHlcbiAqICAudS1zaXplMm9mM0BzbWFsbFVwXG4gKiAgLnUtc2l6ZTJvZjNAc21hbGxEb3duXG4gKiAgLnUtc2l6ZTJvZjNAbWVkaXVtT25seVxuICogIC51LXNpemUyb2YzQG1lZGl1bVVwXG4gKiAgLnUtc2l6ZTJvZjNAbWVkaXVtRG93blxuICogIC51LXNpemUyb2YzQGxhcmdlVXBcbiAqICAudS1zaXplMm9mM0BsYXJnZURvd25cbiAqXG4gKiAgKC4uLilcbiAqL1xuXG5AbWl4aW4gY29sdW1ucygkY29sdW1ucy4uLikge1xuICAgIEBlYWNoICRpIGluICRjb2x1bW5zIHtcbiAgICAgICAgQGZvciAkbiBmcm9tIDEgdGhyb3VnaCAkaSB7XG4gICAgICAgICAgICAudS1zaXplI3skbn1vZiN7JGl9IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogKCRuIC8gJGkpICogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkYnJlYWtwb2ludHNMZW5ndGgge1xuICAgICAgICAkYnJlYWtwb2ludDogbnRoKCRicmVha3BvaW50cywgJGkpO1xuICAgICAgICAkYnJlYWtwb2ludE5hbWU6IG50aCgkYnJlYWtwb2ludCwgMSk7XG5cbiAgICAgICAgQGlmICRpIDwgJGJyZWFrcG9pbnRzTGVuZ3RoIHtcbiAgICAgICAgICAgICRicmVha3BvaW50TmV4dDogbnRoKCRicmVha3BvaW50cywgJGkgKyAxKTtcbiAgICAgICAgICAgICRicmVha3BvaW50TmFtZU5leHQ6IG50aCgkYnJlYWtwb2ludE5leHQsIDEpO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgjeyc+PScgKyAkYnJlYWtwb2ludE5hbWV9LCAjeyc8JyArICRicmVha3BvaW50TmFtZU5leHR9KSB7XG4gICAgICAgICAgICAgICAgQGVhY2ggJGkgaW4gJGNvbHVtbnMge1xuICAgICAgICAgICAgICAgICAgICBAZm9yICRuIGZyb20gMSB0aHJvdWdoICRpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC51LXNpemUjeyRufW9mI3skaX1cXEAjeyRicmVha3BvaW50TmFtZX1Pbmx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogKCRuIC8gJGkpICogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoI3snPj0nICsgJGJyZWFrcG9pbnROYW1lfSkge1xuICAgICAgICAgICAgQGVhY2ggJGkgaW4gJGNvbHVtbnMge1xuICAgICAgICAgICAgICAgIEBmb3IgJG4gZnJvbSAxIHRocm91Z2ggJGkge1xuICAgICAgICAgICAgICAgICAgICAudS1zaXplI3skbn1vZiN7JGl9XFxAI3skYnJlYWtwb2ludE5hbWV9VXAge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICgkbiAvICRpKSAqIDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCN7JzwnICsgJGJyZWFrcG9pbnROYW1lfSkge1xuICAgICAgICAgICAgQGVhY2ggJGkgaW4gJGNvbHVtbnMge1xuICAgICAgICAgICAgICAgIEBmb3IgJG4gZnJvbSAxIHRocm91Z2ggJGkge1xuICAgICAgICAgICAgICAgICAgICAudS1zaXplI3skbn1vZiN7JGl9XFxAI3skYnJlYWtwb2ludE5hbWV9RG93biB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogKCRuIC8gJGkpICogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5cblxuLyoqXG4gKiBNaXhpbiBmb3IgcmVtIHVuaXRzIHdpdGhpbiBweCBmYWxsYmFjay5cbiAqIGh0dHA6Ly9jc3MtdHJpY2tzLmNvbS9zbmlwcGV0cy9jc3MvbGVzcy1taXhpbi1mb3ItcmVtLWZvbnQtc2l6aW5nL1xuICpcbiAqIC5mb28ge1xuICogICAgIEBpbmNsdWRlIHJlbShtYXJnaW4sIDEwLCAyMCwgMzAsIDQwKTtcbiAqIH1cbiAqXG4gKiAuZm9vIHtcbiAqICAgICBtYXJnaW46IDE2MHB4IDMyMHB4IDQ4MHB4IDY0MHB4O1xuICogICAgIG1hcmdpbjogMTByZW0gMjByZW0gMzByZW0gNDByZW07XG4gKiB9XG4gKlxuICovXG5cbkBtaXhpbiByZW0oJHByb3BlcnR5LCAkdmFsdWVzLi4uKSB7XG4gICAgJG1heDogbGVuZ3RoKCR2YWx1ZXMpO1xuICAgICRiYXNpY1NpemU6IHN0cmlwLXVuaXQoMTZweCk7XG4gICAgJHB4VmFsdWVzOiAnJztcbiAgICAkcmVtVmFsdWVzOiAnJztcblxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJG1heCB7XG4gICAgICAgICR2YWx1ZTogc3RyaXAtdW5pdChudGgoJHZhbHVlcywgJGkpKTtcbiAgICAgICAgJHB4VmFsdWVzOiAjeyRweFZhbHVlcyArICR2YWx1ZX1weDtcblxuICAgICAgICBAaWYgJGkgPCAkbWF4IHtcbiAgICAgICAgICAgICRweFZhbHVlczogI3skcHhWYWx1ZXMgKyBcIiBcIn07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRtYXgge1xuICAgICAgICAkdmFsdWU6IHN0cmlwLXVuaXQobnRoKCR2YWx1ZXMsICRpKSk7XG4gICAgICAgICRyZW1WYWx1ZXM6ICN7JHJlbVZhbHVlcyArICR2YWx1ZS8kYmFzaWNTaXplfXJlbTtcblxuICAgICAgICBAaWYgJGkgPCAkbWF4IHtcbiAgICAgICAgICAgICRyZW1WYWx1ZXM6ICN7JHJlbVZhbHVlcyArIFwiIFwifTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICN7JHByb3BlcnR5fTogJHB4VmFsdWVzO1xuICAgICN7JHByb3BlcnR5fTogJHJlbVZhbHVlcztcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8gICAgIF8gICAgICAgICAgICBfICAgICAgICAgICBfICAgICAgICAgICAgICAgICAgICAgICAgICAgXyBfXG4vLyAgICAoXykgICAgICAgICAgfCB8ICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF8pXG4vLyAgICAgXyBfIF9fICAgX19ffCB8XyAgIF8gIF9ffCB8IF9fXyAgIF8gX18gX19fICAgX19fICBfX3wgfF8gIF9fIF9cbi8vICAgIHwgfCAnXyBcXCAvIF9ffCB8IHwgfCB8LyBfYCB8LyBfIFxcIHwgJ18gYCBfIFxcIC8gXyBcXC8gX2AgfCB8LyBfYCB8XG4vLyAgICB8IHwgfCB8IHwgKF9ffCB8IHxffCB8IChffCB8ICBfXy8gfCB8IHwgfCB8IHwgIF9fLyAoX3wgfCB8IChffCB8XG4vLyAgICB8X3xffCB8X3xcXF9fX3xffFxcX18sX3xcXF9fLF98XFxfX198IHxffCB8X3wgfF98XFxfX198XFxfXyxffF98XFxfXyxffFxuLy9cbi8vICAgICAgU2ltcGxlLCBlbGVnYW50IGFuZCBtYWludGFpbmFibGUgbWVkaWEgcXVlcmllcyBpbiBTYXNzXG4vLyAgICAgICAgICAgICAgICAgICAgICAgIHYxLjQuOVxuLy9cbi8vICAgICAgICAgICAgICAgIGh0dHA6Ly9pbmNsdWRlLW1lZGlhLmNvbVxuLy9cbi8vICAgICAgICAgQXV0aG9yczogRWR1YXJkbyBCb3VjYXMgKEBlZHVhcmRvYm91Y2FzKVxuLy8gICAgICAgICAgICAgICAgICBIdWdvIEdpcmF1ZGVsIChAaHVnb2dpcmF1ZGVsKVxuLy9cbi8vICAgICAgVGhpcyBwcm9qZWN0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUIGxpY2Vuc2VcblxuXG4vLy8vXG4vLy8gaW5jbHVkZS1tZWRpYSBsaWJyYXJ5IHB1YmxpYyBjb25maWd1cmF0aW9uXG4vLy8gQGF1dGhvciBFZHVhcmRvIEJvdWNhc1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8vXG5cblxuLy8vXG4vLy8gQ3JlYXRlcyBhIGxpc3Qgb2YgZ2xvYmFsIGJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3JlYXRlcyBhIHNpbmdsZSBicmVha3BvaW50IHdpdGggdGhlIGxhYmVsIGBwaG9uZWBcbi8vLyAgJGJyZWFrcG9pbnRzOiAoJ3Bob25lJzogMzIwcHgpO1xuLy8vXG4kYnJlYWtwb2ludHM6IChcbiAgJ3Bob25lJzogMzIwcHgsXG4gICd0YWJsZXQnOiA3NjhweCxcbiAgJ2Rlc2t0b3AnOiAxMDI0cHhcbikgIWRlZmF1bHQ7XG5cblxuLy8vXG4vLy8gQ3JlYXRlcyBhIGxpc3Qgb2Ygc3RhdGljIGV4cHJlc3Npb25zIG9yIG1lZGlhIHR5cGVzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3JlYXRlcyBhIHNpbmdsZSBtZWRpYSB0eXBlIChzY3JlZW4pXG4vLy8gICRtZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nOiAnc2NyZWVuJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3JlYXRlcyBhIHN0YXRpYyBleHByZXNzaW9uIHdpdGggbG9naWNhbCBkaXNqdW5jdGlvbiAoT1Igb3BlcmF0b3IpXG4vLy8gICRtZWRpYS1leHByZXNzaW9uczogKFxuLy8vICAgICdyZXRpbmEyeCc6ICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpJ1xuLy8vICApO1xuLy8vXG4kbWVkaWEtZXhwcmVzc2lvbnM6IChcbiAgJ3NjcmVlbic6ICdzY3JlZW4nLFxuICAncHJpbnQnOiAncHJpbnQnLFxuICAnaGFuZGhlbGQnOiAnaGFuZGhlbGQnLFxuICAnbGFuZHNjYXBlJzogJyhvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICdwb3J0cmFpdCc6ICcob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICdyZXRpbmEyeCc6ICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpLCAobWluLXJlc29sdXRpb246IDJkcHB4KScsXG4gICdyZXRpbmEzeCc6ICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAzKSwgKG1pbi1yZXNvbHV0aW9uOiAzNTBkcGkpLCAobWluLXJlc29sdXRpb246IDNkcHB4KSdcbikgIWRlZmF1bHQ7XG5cblxuLy8vXG4vLy8gRGVmaW5lcyBhIG51bWJlciB0byBiZSBhZGRlZCBvciBzdWJ0cmFjdGVkIGZyb20gZWFjaCB1bml0IHdoZW4gZGVjbGFyaW5nIGJyZWFrcG9pbnRzIHdpdGggZXhjbHVzaXZlIGludGVydmFsc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEludGVydmFsIGZvciBwaXhlbHMgaXMgZGVmaW5lZCBhcyBgMWAgYnkgZGVmYXVsdFxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPjEyOHB4Jykge31cbi8vL1xuLy8vICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiAxMjlweCkge31cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBJbnRlcnZhbCBmb3IgZW1zIGlzIGRlZmluZWQgYXMgYDAuMDFgIGJ5IGRlZmF1bHRcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz4yMGVtJykge31cbi8vL1xuLy8vICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiAyMC4wMWVtKSB7fVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEludGVydmFsIGZvciByZW1zIGlzIGRlZmluZWQgYXMgYDAuMWAgYnkgZGVmYXVsdCwgdG8gYmUgdXNlZCB3aXRoIGBmb250LXNpemU6IDYyLjUlO2Bcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz4yLjByZW0nKSB7fVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IDIuMXJlbSkge31cbi8vL1xuJHVuaXQtaW50ZXJ2YWxzOiAoXG4gICdweCc6IDEsXG4gICdlbSc6IDAuMDEsXG4gICdyZW0nOiAwLjEsXG4gICcnOiAwXG4pICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBEZWZpbmVzIHdoZXRoZXIgc3VwcG9ydCBmb3IgbWVkaWEgcXVlcmllcyBpcyBhdmFpbGFibGUsIHVzZWZ1bCBmb3IgY3JlYXRpbmcgc2VwYXJhdGUgc3R5bGVzaGVldHNcbi8vLyBmb3IgYnJvd3NlcnMgdGhhdCBkb24ndCBzdXBwb3J0IG1lZGlhIHF1ZXJpZXMuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRGlzYWJsZXMgc3VwcG9ydCBmb3IgbWVkaWEgcXVlcmllc1xuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICAuZm9vIHtcbi8vLyAgICBjb2xvcjogdG9tYXRvO1xuLy8vICB9XG4vLy9cbiRpbS1tZWRpYS1zdXBwb3J0OiB0cnVlICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBTZWxlY3RzIHdoaWNoIGJyZWFrcG9pbnQgdG8gZW11bGF0ZSB3aGVuIHN1cHBvcnQgZm9yIG1lZGlhIHF1ZXJpZXMgaXMgZGlzYWJsZWQuIE1lZGlhIHF1ZXJpZXMgdGhhdCBzdGFydCBhdCBvclxuLy8vIGludGVyY2VwdCB0aGUgYnJlYWtwb2ludCB3aWxsIGJlIGRpc3BsYXllZCwgYW55IG90aGVycyB3aWxsIGJlIGlnbm9yZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludFxuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCc7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICAuZm9vIHtcbi8vLyAgICBjb2xvcjogdG9tYXRvO1xuLy8vICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIE5PVCBzaG93IGJlY2F1c2UgaXQgZG9lcyBub3QgaW50ZXJjZXB0IHRoZSBkZXNrdG9wIGJyZWFrcG9pbnRcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ3RhYmxldCc7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIC8qIE5vIG91dHB1dCAqL1xuLy8vXG4kaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBTZWxlY3RzIHdoaWNoIG1lZGlhIGV4cHJlc3Npb25zIGFyZSBhbGxvd2VkIGluIGFuIGV4cHJlc3Npb24gZm9yIGl0IHRvIGJlIHVzZWQgd2hlbiBtZWRpYSBxdWVyaWVzXG4vLy8gYXJlIG5vdCBzdXBwb3J0ZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludCBhbmQgY29udGFpbnMgb25seSBhY2NlcHRlZCBtZWRpYSBleHByZXNzaW9uc1xuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCc7XG4vLy8gICRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nKTtcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0JywgJ3NjcmVlbicpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgIC5mb28ge1xuLy8vICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBOT1Qgc2hvdyBiZWNhdXNlIGl0IGludGVyY2VwdHMgdGhlIHN0YXRpYyBicmVha3BvaW50IGJ1dCBjb250YWlucyBhIG1lZGlhIGV4cHJlc3Npb24gdGhhdCBpcyBub3QgYWNjZXB0ZWRcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnO1xuLy8vICAkaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJyk7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcsICdyZXRpbmEyeCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogTm8gb3V0cHV0ICovXG4vLy9cbiRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nLCAncG9ydHJhaXQnLCAnbGFuZHNjYXBlJykgIWRlZmF1bHQ7XG5cbi8vLy9cbi8vLyBDcm9zcy1lbmdpbmUgbG9nZ2luZyBlbmdpbmVcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLy9cblxuXG4vLy9cbi8vLyBMb2cgYSBtZXNzYWdlIGVpdGhlciB3aXRoIGBAZXJyb3JgIGlmIHN1cHBvcnRlZFxuLy8vIGVsc2Ugd2l0aCBgQHdhcm5gLCB1c2luZyBgZmVhdHVyZS1leGlzdHMoJ2F0LWVycm9yJylgXG4vLy8gdG8gZGV0ZWN0IHN1cHBvcnQuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG1lc3NhZ2UgLSBNZXNzYWdlIHRvIGxvZ1xuLy8vXG5AZnVuY3Rpb24gaW0tbG9nKCRtZXNzYWdlKSB7XG4gIEBpZiBmZWF0dXJlLWV4aXN0cygnYXQtZXJyb3InKSB7XG4gICAgQGVycm9yICRtZXNzYWdlO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAkbWVzc2FnZTtcbiAgICAkXzogbm9vcCgpO1xuICB9XG5cbiAgQHJldHVybiAkbWVzc2FnZTtcbn1cblxuXG4vLy9cbi8vLyBXcmFwcGVyIG1peGluIGZvciB0aGUgbG9nIGZ1bmN0aW9uIHNvIGl0IGNhbiBiZSB1c2VkIHdpdGggYSBtb3JlIGZyaWVuZGx5XG4vLy8gQVBJIHRoYW4gYEBpZiBpbS1sb2coJy4uJykge31gIG9yIGAkXzogaW0tbG9nKCcuLicpYC4gQmFzaWNhbGx5LCB1c2UgdGhlIGZ1bmN0aW9uXG4vLy8gd2l0aGluIGZ1bmN0aW9ucyBiZWNhdXNlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBpbmNsdWRlIGEgbWl4aW4gaW4gYSBmdW5jdGlvblxuLy8vIGFuZCB1c2UgdGhlIG1peGluIGV2ZXJ5d2hlcmUgZWxzZSBiZWNhdXNlIGl0J3MgbXVjaCBtb3JlIGVsZWdhbnQuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG1lc3NhZ2UgLSBNZXNzYWdlIHRvIGxvZ1xuLy8vXG5AbWl4aW4gbG9nKCRtZXNzYWdlKSB7XG4gIEBpZiBpbS1sb2coJG1lc3NhZ2UpIHt9XG59XG5cblxuLy8vXG4vLy8gRnVuY3Rpb24gd2l0aCBubyBgQHJldHVybmAgY2FsbGVkIG5leHQgdG8gYEB3YXJuYCBpbiBTYXNzIDMuM1xuLy8vIHRvIHRyaWdnZXIgYSBjb21waWxpbmcgZXJyb3IgYW5kIHN0b3AgdGhlIHByb2Nlc3MuXG4vLy9cbkBmdW5jdGlvbiBub29wKCkge31cblxuLy8vXG4vLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGEgbGlzdCBvZiBjb25kaXRpb25zIGlzIGludGVyY2VwdGVkIGJ5IHRoZSBzdGF0aWMgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gICAkY29uZGl0aW9ucyAgLSBNZWRpYSBxdWVyeSBjb25kaXRpb25zXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29uZGl0aW9ucyBhcmUgaW50ZXJjZXB0ZWQgYnkgdGhlIHN0YXRpYyBicmVha3BvaW50XG4vLy9cbkBmdW5jdGlvbiBpbS1pbnRlcmNlcHRzLXN0YXRpYy1icmVha3BvaW50KCRjb25kaXRpb25zLi4uKSB7XG4gICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQpO1xuXG4gIEBpZiBub3QgJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWUge1xuICAgIEBpZiBpbS1sb2coJ2AjeyRpbS1uby1tZWRpYS1icmVha3BvaW50fWAgaXMgbm90IGEgdmFsaWQgYnJlYWtwb2ludC4nKSB7fVxuICB9XG5cbiAgQGVhY2ggJGNvbmRpdGlvbiBpbiAkY29uZGl0aW9ucyB7XG4gICAgQGlmIG5vdCBtYXAtaGFzLWtleSgkbWVkaWEtZXhwcmVzc2lvbnMsICRjb25kaXRpb24pIHtcbiAgICAgICRvcGVyYXRvcjogZ2V0LWV4cHJlc3Npb24tb3BlcmF0b3IoJGNvbmRpdGlvbik7XG4gICAgICAkcHJlZml4OiBnZXQtZXhwcmVzc2lvbi1wcmVmaXgoJG9wZXJhdG9yKTtcbiAgICAgICR2YWx1ZTogZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGNvbmRpdGlvbiwgJG9wZXJhdG9yKTtcblxuICAgICAgLy8gc2Nzcy1saW50OmRpc2FibGUgU3BhY2VBcm91bmRPcGVyYXRvclxuICAgICAgQGlmICgkcHJlZml4ID09ICdtYXgnIGFuZCAkdmFsdWUgPD0gJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWUpIG9yXG4gICAgICAgICAgKCRwcmVmaXggPT0gJ21pbicgYW5kICR2YWx1ZSA+ICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlKSB7XG4gICAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiBub3QgaW5kZXgoJGltLW5vLW1lZGlhLWV4cHJlc3Npb25zLCAkY29uZGl0aW9uKSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vL1xuLy8vIFBhcnNpbmcgZW5naW5lXG4vLy8gQGF1dGhvciBIdWdvIEdpcmF1ZGVsXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8vXG5cblxuLy8vXG4vLy8gR2V0IG9wZXJhdG9yIG9mIGFuIGV4cHJlc3Npb25cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCBvcGVyYXRvciBmcm9tXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gQW55IG9mIGA+PWAsIGA+YCwgYDw9YCwgYDxgLCBg4omlYCwgYOKJpGBcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLW9wZXJhdG9yKCRleHByZXNzaW9uKSB7XG4gIEBlYWNoICRvcGVyYXRvciBpbiAoJz49JywgJz4nLCAnPD0nLCAnPCcsICfiiaUnLCAn4omkJykge1xuICAgIEBpZiBzdHItaW5kZXgoJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xuICAgICAgQHJldHVybiAkb3BlcmF0b3I7XG4gICAgfVxuICB9XG5cbiAgLy8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbnNpZGUgYSBmdW5jdGlvbiwgc28gd2UgaGF2ZSB0b1xuICAvLyByZWx5IG9uIHRoZSBgaW0tbG9nKC4uKWAgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIGBsb2coLi4pYCBtaXhpbi4gQmVjYXVzZVxuICAvLyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBhbnl3aGVyZSBpbiBTYXNzLCB3ZSBuZWVkIHRvIGhhY2sgdGhlIGNhbGwgaW5cbiAgLy8gYSBkdW1teSB2YXJpYWJsZSwgc3VjaCBhcyBgJF9gLiBJZiBhbnlib2R5IGV2ZXIgcmFpc2UgYSBzY29waW5nIGlzc3VlIHdpdGhcbiAgLy8gU2FzcyAzLjMsIGNoYW5nZSB0aGlzIGxpbmUgaW4gYEBpZiBpbS1sb2coLi4pIHt9YCBpbnN0ZWFkLlxuICAkXzogaW0tbG9nKCdObyBvcGVyYXRvciBmb3VuZCBpbiBgI3skZXhwcmVzc2lvbn1gLicpO1xufVxuXG5cbi8vL1xuLy8vIEdldCBkaW1lbnNpb24gb2YgYW4gZXhwcmVzc2lvbiwgYmFzZWQgb24gYSBmb3VuZCBvcGVyYXRvclxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBleHRyYWN0IGRpbWVuc2lvbiBmcm9tXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yIGZyb20gYCRleHByZXNzaW9uYFxuLy8vXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIGB3aWR0aGAgb3IgYGhlaWdodGAgKG9yIHBvdGVudGlhbGx5IGFueXRoaW5nIGVsc2UpXG4vLy9cbkBmdW5jdGlvbiBnZXQtZXhwcmVzc2lvbi1kaW1lbnNpb24oJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xuICAkb3BlcmF0b3ItaW5kZXg6IHN0ci1pbmRleCgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHBhcnNlZC1kaW1lbnNpb246IHN0ci1zbGljZSgkZXhwcmVzc2lvbiwgMCwgJG9wZXJhdG9yLWluZGV4IC0gMSk7XG4gICRkaW1lbnNpb246ICd3aWR0aCc7XG5cbiAgQGlmIHN0ci1sZW5ndGgoJHBhcnNlZC1kaW1lbnNpb24pID4gMCB7XG4gICAgJGRpbWVuc2lvbjogJHBhcnNlZC1kaW1lbnNpb247XG4gIH1cblxuICBAcmV0dXJuICRkaW1lbnNpb247XG59XG5cblxuLy8vXG4vLy8gR2V0IGRpbWVuc2lvbiBwcmVmaXggYmFzZWQgb24gYW4gb3BlcmF0b3Jcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3BlcmF0b3IgLSBPcGVyYXRvclxuLy8vXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIGBtaW5gIG9yIGBtYXhgXG4vLy9cbkBmdW5jdGlvbiBnZXQtZXhwcmVzc2lvbi1wcmVmaXgoJG9wZXJhdG9yKSB7XG4gIEByZXR1cm4gaWYoaW5kZXgoKCc8JywgJzw9JywgJ+KJpCcpLCAkb3BlcmF0b3IpLCAnbWF4JywgJ21pbicpO1xufVxuXG5cbi8vL1xuLy8vIEdldCB2YWx1ZSBvZiBhbiBleHByZXNzaW9uLCBiYXNlZCBvbiBhIGZvdW5kIG9wZXJhdG9yXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGV4cHJlc3Npb24gLSBFeHByZXNzaW9uIHRvIGV4dHJhY3QgdmFsdWUgZnJvbVxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3BlcmF0b3IgLSBPcGVyYXRvciBmcm9tIGAkZXhwcmVzc2lvbmBcbi8vL1xuLy8vIEByZXR1cm4ge051bWJlcn0gLSBBIG51bWVyaWMgdmFsdWVcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLXZhbHVlKCRleHByZXNzaW9uLCAkb3BlcmF0b3IpIHtcbiAgJG9wZXJhdG9yLWluZGV4OiBzdHItaW5kZXgoJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XG4gICR2YWx1ZTogc3RyLXNsaWNlKCRleHByZXNzaW9uLCAkb3BlcmF0b3ItaW5kZXggKyBzdHItbGVuZ3RoKCRvcGVyYXRvcikpO1xuXG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICR2YWx1ZSkge1xuICAgICR2YWx1ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICR2YWx1ZSk7XG4gIH0gQGVsc2Uge1xuICAgICR2YWx1ZTogdG8tbnVtYmVyKCR2YWx1ZSk7XG4gIH1cblxuICAkaW50ZXJ2YWw6IG1hcC1nZXQoJHVuaXQtaW50ZXJ2YWxzLCB1bml0KCR2YWx1ZSkpO1xuXG4gIEBpZiBub3QgJGludGVydmFsIHtcbiAgICAvLyBJdCBpcyBub3QgcG9zc2libGUgdG8gaW5jbHVkZSBhIG1peGluIGluc2lkZSBhIGZ1bmN0aW9uLCBzbyB3ZSBoYXZlIHRvXG4gICAgLy8gcmVseSBvbiB0aGUgYGltLWxvZyguLilgIGZ1bmN0aW9uIHJhdGhlciB0aGFuIHRoZSBgbG9nKC4uKWAgbWl4aW4uIEJlY2F1c2VcbiAgICAvLyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBhbnl3aGVyZSBpbiBTYXNzLCB3ZSBuZWVkIHRvIGhhY2sgdGhlIGNhbGwgaW5cbiAgICAvLyBhIGR1bW15IHZhcmlhYmxlLCBzdWNoIGFzIGAkX2AuIElmIGFueWJvZHkgZXZlciByYWlzZSBhIHNjb3BpbmcgaXNzdWUgd2l0aFxuICAgIC8vIFNhc3MgMy4zLCBjaGFuZ2UgdGhpcyBsaW5lIGluIGBAaWYgaW0tbG9nKC4uKSB7fWAgaW5zdGVhZC5cbiAgICAkXzogaW0tbG9nKCdVbmtub3duIHVuaXQgYCN7dW5pdCgkdmFsdWUpfWAuJyk7XG4gIH1cblxuICBAaWYgJG9wZXJhdG9yID09ICc+JyB7XG4gICAgJHZhbHVlOiAkdmFsdWUgKyAkaW50ZXJ2YWw7XG4gIH0gQGVsc2UgaWYgJG9wZXJhdG9yID09ICc8JyB7XG4gICAgJHZhbHVlOiAkdmFsdWUgLSAkaW50ZXJ2YWw7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuXG4vLy9cbi8vLyBQYXJzZSBhbiBleHByZXNzaW9uIHRvIHJldHVybiBhIHZhbGlkIG1lZGlhLXF1ZXJ5IGV4cHJlc3Npb25cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gcGFyc2Vcbi8vL1xuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBWYWxpZCBtZWRpYSBxdWVyeVxuLy8vXG5AZnVuY3Rpb24gcGFyc2UtZXhwcmVzc2lvbigkZXhwcmVzc2lvbikge1xuICAvLyBJZiBpdCBpcyBwYXJ0IG9mICRtZWRpYS1leHByZXNzaW9ucywgaXQgaGFzIG5vIG9wZXJhdG9yXG4gIC8vIHRoZW4gdGhlcmUgaXMgbm8gbmVlZCB0byBnbyBhbnkgZnVydGhlciwganVzdCByZXR1cm4gdGhlIHZhbHVlXG4gIEBpZiBtYXAtaGFzLWtleSgkbWVkaWEtZXhwcmVzc2lvbnMsICRleHByZXNzaW9uKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRtZWRpYS1leHByZXNzaW9ucywgJGV4cHJlc3Npb24pO1xuICB9XG5cbiAgJG9wZXJhdG9yOiBnZXQtZXhwcmVzc2lvbi1vcGVyYXRvcigkZXhwcmVzc2lvbik7XG4gICRkaW1lbnNpb246IGdldC1leHByZXNzaW9uLWRpbWVuc2lvbigkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHByZWZpeDogZ2V0LWV4cHJlc3Npb24tcHJlZml4KCRvcGVyYXRvcik7XG4gICR2YWx1ZTogZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XG5cbiAgQHJldHVybiAnKCN7JHByZWZpeH0tI3skZGltZW5zaW9ufTogI3skdmFsdWV9KSc7XG59XG5cbi8vL1xuLy8vIFNsaWNlIGAkbGlzdGAgYmV0d2VlbiBgJHN0YXJ0YCBhbmQgYCRlbmRgIGluZGV4ZXNcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkbGlzdCAtIExpc3QgdG8gc2xpY2Vcbi8vLyBAcGFyYW0ge051bWJlcn0gJHN0YXJ0IFsxXSAtIFN0YXJ0IGluZGV4XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRlbmQgW2xlbmd0aCgkbGlzdCldIC0gRW5kIGluZGV4XG4vLy9cbi8vLyBAcmV0dXJuIHtMaXN0fSBTbGljZWQgbGlzdFxuLy8vXG5AZnVuY3Rpb24gc2xpY2UoJGxpc3QsICRzdGFydDogMSwgJGVuZDogbGVuZ3RoKCRsaXN0KSkge1xuICBAaWYgbGVuZ3RoKCRsaXN0KSA8IDEgb3IgJHN0YXJ0ID4gJGVuZCB7XG4gICAgQHJldHVybiAoKTtcbiAgfVxuXG4gICRyZXN1bHQ6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAkc3RhcnQgdGhyb3VnaCAkZW5kIHtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgbnRoKCRsaXN0LCAkaSkpO1xuICB9XG5cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG4vLy8vXG4vLy8gU3RyaW5nIHRvIG51bWJlciBjb252ZXJ0ZXJcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLy9cblxuXG4vLy9cbi8vLyBDYXN0cyBhIHN0cmluZyBpbnRvIGEgbnVtYmVyXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJHZhbHVlIC0gVmFsdWUgdG8gYmUgcGFyc2VkXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9XG4vLy9cbkBmdW5jdGlvbiB0by1udW1iZXIoJHZhbHVlKSB7XG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gJ251bWJlcicge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHZhbHVlKSAhPSAnc3RyaW5nJyB7XG4gICAgJF86IGltLWxvZygnVmFsdWUgZm9yIGB0by1udW1iZXJgIHNob3VsZCBiZSBhIG51bWJlciBvciBhIHN0cmluZy4nKTtcbiAgfVxuXG4gICRmaXJzdC1jaGFyYWN0ZXI6IHN0ci1zbGljZSgkdmFsdWUsIDEsIDEpO1xuICAkcmVzdWx0OiAwO1xuICAkZGlnaXRzOiAwO1xuICAkbWludXM6ICgkZmlyc3QtY2hhcmFjdGVyID09ICctJyk7XG4gICRudW1iZXJzOiAoJzAnOiAwLCAnMSc6IDEsICcyJzogMiwgJzMnOiAzLCAnNCc6IDQsICc1JzogNSwgJzYnOiA2LCAnNyc6IDcsICc4JzogOCwgJzknOiA5KTtcblxuICAvLyBSZW1vdmUgKy8tIHNpZ24gaWYgcHJlc2VudCBhdCBmaXJzdCBjaGFyYWN0ZXJcbiAgQGlmICgkZmlyc3QtY2hhcmFjdGVyID09ICcrJyBvciAkZmlyc3QtY2hhcmFjdGVyID09ICctJykge1xuICAgICR2YWx1ZTogc3RyLXNsaWNlKCR2YWx1ZSwgMik7XG4gIH1cblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIHN0ci1sZW5ndGgoJHZhbHVlKSB7XG4gICAgJGNoYXJhY3Rlcjogc3RyLXNsaWNlKCR2YWx1ZSwgJGksICRpKTtcblxuICAgIEBpZiBub3QgKGluZGV4KG1hcC1rZXlzKCRudW1iZXJzKSwgJGNoYXJhY3Rlcikgb3IgJGNoYXJhY3RlciA9PSAnLicpIHtcbiAgICAgIEByZXR1cm4gdG8tbGVuZ3RoKGlmKCRtaW51cywgLSRyZXN1bHQsICRyZXN1bHQpLCBzdHItc2xpY2UoJHZhbHVlLCAkaSkpXG4gICAgfVxuXG4gICAgQGlmICRjaGFyYWN0ZXIgPT0gJy4nIHtcbiAgICAgICRkaWdpdHM6IDE7XG4gICAgfSBAZWxzZSBpZiAkZGlnaXRzID09IDAge1xuICAgICAgJHJlc3VsdDogJHJlc3VsdCAqIDEwICsgbWFwLWdldCgkbnVtYmVycywgJGNoYXJhY3Rlcik7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZGlnaXRzOiAkZGlnaXRzICogMTA7XG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICsgbWFwLWdldCgkbnVtYmVycywgJGNoYXJhY3RlcikgLyAkZGlnaXRzO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gaWYoJG1pbnVzLCAtJHJlc3VsdCwgJHJlc3VsdCk7XG59XG5cblxuLy8vXG4vLy8gQWRkIGAkdW5pdGAgdG8gYCR2YWx1ZWBcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBWYWx1ZSB0byBhZGQgdW5pdCB0b1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdW5pdCAtIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdW5pdFxuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIGAkdmFsdWVgIGV4cHJlc3NlZCBpbiBgJHVuaXRgXG4vLy9cbkBmdW5jdGlvbiB0by1sZW5ndGgoJHZhbHVlLCAkdW5pdCkge1xuICAkdW5pdHM6ICgncHgnOiAxcHgsICdjbSc6IDFjbSwgJ21tJzogMW1tLCAnJSc6IDElLCAnY2gnOiAxY2gsICdwYyc6IDFwYywgJ2luJzogMWluLCAnZW0nOiAxZW0sICdyZW0nOiAxcmVtLCAncHQnOiAxcHQsICdleCc6IDFleCwgJ3Z3JzogMXZ3LCAndmgnOiAxdmgsICd2bWluJzogMXZtaW4sICd2bWF4JzogMXZtYXgpO1xuXG4gIEBpZiBub3QgaW5kZXgobWFwLWtleXMoJHVuaXRzKSwgJHVuaXQpIHtcbiAgICAkXzogaW0tbG9nKCdJbnZhbGlkIHVuaXQgYCN7JHVuaXR9YC4nKTtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlICogbWFwLWdldCgkdW5pdHMsICR1bml0KTtcbn1cblxuLy8vXG4vLy8gVGhpcyBtaXhpbiBhaW1zIGF0IHJlZGVmaW5pbmcgdGhlIGNvbmZpZ3VyYXRpb24ganVzdCBmb3IgdGhlIHNjb3BlIG9mXG4vLy8gdGhlIGNhbGwuIEl0IGlzIGhlbHBmdWwgd2hlbiBoYXZpbmcgYSBjb21wb25lbnQgbmVlZGluZyBhbiBleHRlbmRlZFxuLy8vIGNvbmZpZ3VyYXRpb24gc3VjaCBhcyBjdXN0b20gYnJlYWtwb2ludHMgKHJlZmVycmVkIHRvIGFzIHR3ZWFrcG9pbnRzKVxuLy8vIGZvciBpbnN0YW5jZS5cbi8vL1xuLy8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICR0d2Vha3BvaW50cyBbKCldIC0gTWFwIG9mIHR3ZWFrcG9pbnRzIHRvIGJlIG1lcmdlZCB3aXRoIGAkYnJlYWtwb2ludHNgXG4vLy8gQHBhcmFtIHtNYXB9ICR0d2Vhay1tZWRpYS1leHByZXNzaW9ucyBbKCldIC0gTWFwIG9mIHR3ZWFrZWQgbWVkaWEgZXhwcmVzc2lvbnMgdG8gYmUgbWVyZ2VkIHdpdGggYCRtZWRpYS1leHByZXNzaW9uYFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEV4dGVuZCB0aGUgZ2xvYmFsIGJyZWFrcG9pbnRzIHdpdGggYSB0d2Vha3BvaW50XG4vLy8gIEBpbmNsdWRlIG1lZGlhLWNvbnRleHQoKCdjdXN0b20nOiA2NzhweCkpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIEBpbmNsdWRlIG1lZGlhKCc+cGhvbmUnLCAnPD1jdXN0b20nKSB7XG4vLy8gICAgICAgLy8gLi4uXG4vLy8gICAgICB9XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRXh0ZW5kIHRoZSBnbG9iYWwgbWVkaWEgZXhwcmVzc2lvbnMgd2l0aCBhIGN1c3RvbSBvbmVcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgkdHdlYWstbWVkaWEtZXhwcmVzc2lvbnM6ICgnYWxsJzogJ2FsbCcpKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBAaW5jbHVkZSBtZWRpYSgnYWxsJywgJz5waG9uZScpIHtcbi8vLyAgICAgICAvLyAuLi5cbi8vLyAgICAgIH1cbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBFeHRlbmQgYm90aCBjb25maWd1cmF0aW9uIG1hcHNcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgoJ2N1c3RvbSc6IDY3OHB4KSwgKCdhbGwnOiAnYWxsJykpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIEBpbmNsdWRlIG1lZGlhKCdhbGwnLCAnPnBob25lJywgJzw9Y3VzdG9tJykge1xuLy8vICAgICAgIC8vIC4uLlxuLy8vICAgICAgfVxuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG5AbWl4aW4gbWVkaWEtY29udGV4dCgkdHdlYWtwb2ludHM6ICgpLCAkdHdlYWstbWVkaWEtZXhwcmVzc2lvbnM6ICgpKSB7XG4gIC8vIFNhdmUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cbiAgJGdsb2JhbC1icmVha3BvaW50czogJGJyZWFrcG9pbnRzO1xuICAkZ2xvYmFsLW1lZGlhLWV4cHJlc3Npb25zOiAkbWVkaWEtZXhwcmVzc2lvbnM7XG5cbiAgLy8gVXBkYXRlIGdsb2JhbCBjb25maWd1cmF0aW9uXG4gICRicmVha3BvaW50czogbWFwLW1lcmdlKCRicmVha3BvaW50cywgJHR3ZWFrcG9pbnRzKSAhZ2xvYmFsO1xuICAkbWVkaWEtZXhwcmVzc2lvbnM6IG1hcC1tZXJnZSgkbWVkaWEtZXhwcmVzc2lvbnMsICR0d2Vhay1tZWRpYS1leHByZXNzaW9ucykgIWdsb2JhbDtcblxuICBAY29udGVudDtcblxuICAvLyBSZXN0b3JlIGdsb2JhbCBjb25maWd1cmF0aW9uXG4gICRicmVha3BvaW50czogJGdsb2JhbC1icmVha3BvaW50cyAhZ2xvYmFsO1xuICAkbWVkaWEtZXhwcmVzc2lvbnM6ICRnbG9iYWwtbWVkaWEtZXhwcmVzc2lvbnMgIWdsb2JhbDtcbn1cblxuLy8vL1xuLy8vIGluY2x1ZGUtbWVkaWEgcHVibGljIGV4cG9zZWQgQVBJXG4vLy8gQGF1dGhvciBFZHVhcmRvIEJvdWNhc1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8vXG5cblxuLy8vXG4vLy8gR2VuZXJhdGVzIGEgbWVkaWEgcXVlcnkgYmFzZWQgb24gYSBsaXN0IG9mIGNvbmRpdGlvbnNcbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gICAkY29uZGl0aW9ucyAgLSBNZWRpYSBxdWVyeSBjb25kaXRpb25zXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBhIHNpbmdsZSBzZXQgYnJlYWtwb2ludFxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPnBob25lJykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCB0d28gc2V0IGJyZWFrcG9pbnRzXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+cGhvbmUnLCAnPD10YWJsZXQnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIGN1c3RvbSB2YWx1ZXNcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49MzU4cHgnLCAnPDg1MHB4JykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBzZXQgYnJlYWtwb2ludHMgd2l0aCBjdXN0b20gdmFsdWVzXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+ZGVza3RvcCcsICc8PTEzNTBweCcpIHsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggYSBzdGF0aWMgZXhwcmVzc2lvblxuLy8vICBAaW5jbHVkZSBtZWRpYSgncmV0aW5hMngnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBNaXhpbmcgZXZlcnl0aGluZ1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj0zNTBweCcsICc8dGFibGV0JywgJ3JldGluYTN4JykgeyB9XG4vLy9cbkBtaXhpbiBtZWRpYSgkY29uZGl0aW9ucy4uLikge1xuICAvLyBzY3NzLWxpbnQ6ZGlzYWJsZSBTcGFjZUFyb3VuZE9wZXJhdG9yXG4gIEBpZiAoJGltLW1lZGlhLXN1cHBvcnQgYW5kIGxlbmd0aCgkY29uZGl0aW9ucykgPT0gMCkgb3JcbiAgICAgIChub3QgJGltLW1lZGlhLXN1cHBvcnQgYW5kIGltLWludGVyY2VwdHMtc3RhdGljLWJyZWFrcG9pbnQoJGNvbmRpdGlvbnMuLi4pKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2UgaWYgKCRpbS1tZWRpYS1zdXBwb3J0IGFuZCBsZW5ndGgoJGNvbmRpdGlvbnMpID4gMCkge1xuICAgIEBtZWRpYSAje3VucXVvdGUocGFyc2UtZXhwcmVzc2lvbihudGgoJGNvbmRpdGlvbnMsIDEpKSl9IHtcbiAgICAgIC8vIFJlY3Vyc2l2ZSBjYWxsXG4gICAgICBAaW5jbHVkZSBtZWRpYShzbGljZSgkY29uZGl0aW9ucywgMikuLi4pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLy9cbi8vLyBHZW5lcmF0ZXMgYSBKU09OIHN0cmluZyB3aXRoIGVhY2ggYnJlYWtwb2ludCdzIHZhbHVlIGFuZCBpbmZvcm1hdGlvbiBhYm91dFxuLy8vIHdoaWNoIG9mIHRoZSBicmVha3BvaW50cyBhcmUgY3VycmVudGx5IGFjdGl2ZSAoaS5lLiB2aWV3cG9ydCB3aWR0aCA+PSBicmVha3BvaW50KVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR0YXJnZXQtbmFtZSAtIE5hbWUgb2YgYnJlYWtwb2ludCB0byBldmFsdWF0ZVxuLy8vXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIFJlc3VsdGluZyBKU09OIHN0cmluZ1xuLy8vXG4vLy8gQGV4YW1wbGUganNvbiAtIEZvciBhIHdpZHRoIG9mIDkwMHB4XG4vLy8gICd7XCJwaG9uZVwiOntcInZhbHVlXCI6IFwiMzIwcHhcIiwgXCJhY3RpdmVcIjogdHJ1ZX0sIFwidGFibGV0XCI6e1widmFsdWVcIjogXCI3NjhweFwiLCBcImFjdGl2ZVwiOiB0cnVlfSwgXCJkZXNrdG9wXCI6e1widmFsdWVcIjogXCIxMDI0cHhcIiwgXCJhY3RpdmVcIjogZmFsc2V9fSdcbi8vL1xuQGZ1bmN0aW9uIGltLWJyZWFrcG9pbnRzLXRvLWpzb24oJHRhcmdldC1uYW1lKSB7XG4gICRicmVha3BvaW50cy1qc29uOiAoKTtcbiAgJHRhcmdldC12YWx1ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICR0YXJnZXQtbmFtZSk7XG5cbiAgQGVhY2ggJG5hbWUsICR2YWx1ZSBpbiAkYnJlYWtwb2ludHMge1xuICAgICRicmVha3BvaW50OiAnXCIjeyRuYW1lfVwiOntcInZhbHVlXCI6IFwiI3skdmFsdWV9XCIsIFwiYWN0aXZlXCI6ICN7JHRhcmdldC12YWx1ZSA+PSAkdmFsdWV9fSc7XG4gICAgJGJyZWFrcG9pbnRzLWpzb246IGFwcGVuZCgkYnJlYWtwb2ludHMtanNvbiwgJGJyZWFrcG9pbnQsICdjb21tYScpO1xuICB9XG5cbiAgQHJldHVybiAneyN7JGJyZWFrcG9pbnRzLWpzb259fSc7XG59XG5cbi8vL1xuLy8vIEdlbmVyYXRlcyB0aGUgbWVkaWEgcXVlcmllcyBuZWNlc3NhcnkgdG8gZXhwb3J0IGJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGVsZW1lbnQgLSBFbGVtZW50IHRvIGFwcGVuZCBKU09OIGRhdGEgdG9cbi8vL1xuQG1peGluIGltLWV4cG9ydCgkZWxlbWVudCkge1xuICBAZWFjaCAkbmFtZSwgJHZhbHVlIGluICRicmVha3BvaW50cyB7XG4gICAgQGluY2x1ZGUgbWVkaWEoJz49I3skbmFtZX0nKSB7XG4gICAgICAjeyRlbGVtZW50fSB7XG4gICAgICAgIGNvbnRlbnQ6IGltLWJyZWFrcG9pbnRzLXRvLWpzb24oJG5hbWUpO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB3aWR0aDogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQGluY2x1ZGUgaW0tZXhwb3J0KGlmKHZhcmlhYmxlLWV4aXN0cygnaW0tZXhwb3J0LWVsZW1lbnQnKSwgJGltLWV4cG9ydC1lbGVtZW50ICsgJzo6YWZ0ZXInLCAnYm9keTo6YWZ0ZXInKSk7XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRm9ybVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogU2V0dGluZ3NcbiAqL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFNldHRpbmdzLkRlZmF1bHRzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBCcmVha3BvaW50c1xuICovXG4vKipcbiAqIEZvbnRzXG4gKi9cbi8qKlxuICogUHJvamVjdCBiYXNpYyB2YXJzXG4gKi9cbi8qKlxuICogVG9vbHNcbiAqL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFRvb2xzLkZ1bmN0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogRnVuY3Rpb24gZm9yIHJlbSBtaXhpbiB3aGljaCByZW1vdmVzIHVuaXRzLlxuICovXG4vKipcbiAqIEJhc2ljIGZyYWN0aW9uczpcbiAqL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFRvb2xzLk1peGluc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogR2VuZXJhdGVzIGNvbHVtbiBjbGFzc2VzIGJhc2VkIG9uIHRoZSBkZWZpbmVkIGJyZWFrcG9pbnRzLFxuICogbmFtZWQgd2l0aCB0aGUgY29udmVudGlvbiBgLnUtc2l6ZXhvZnlAYnJlYWtwb2ludGAsIHdoZXJlXG4gKiBgeGAgaXMgYSBzdWJkaXZpc2lvbiBvZiBgeWAuXG4gKlxuICogQGluY2x1ZGUgY29sdW1ucygzLCA0KTtcbiAqXG4gKiBHZW5lcmF0ZXM6XG4gKiAgLnUtc2l6ZTFvZjNAc21hbGxPbmx5XG4gKiAgLnUtc2l6ZTFvZjNAc21hbGxVcFxuICogIC51LXNpemUxb2YzQHNtYWxsRG93blxuICogIC51LXNpemUxb2YzQG1lZGl1bU9ubHlcbiAqICAudS1zaXplMW9mM0BtZWRpdW1VcFxuICogIC51LXNpemUxb2YzQG1lZGl1bURvd25cbiAqICAudS1zaXplMW9mM0BsYXJnZVVwXG4gKiAgLnUtc2l6ZTFvZjNAbGFyZ2VEb3duXG4gKiAgLnUtc2l6ZTJvZjNAc21hbGxPbmx5XG4gKiAgLnUtc2l6ZTJvZjNAc21hbGxVcFxuICogIC51LXNpemUyb2YzQHNtYWxsRG93blxuICogIC51LXNpemUyb2YzQG1lZGl1bU9ubHlcbiAqICAudS1zaXplMm9mM0BtZWRpdW1VcFxuICogIC51LXNpemUyb2YzQG1lZGl1bURvd25cbiAqICAudS1zaXplMm9mM0BsYXJnZVVwXG4gKiAgLnUtc2l6ZTJvZjNAbGFyZ2VEb3duXG4gKlxuICogICguLi4pXG4gKi9cbi8qKlxuICogTWl4aW4gZm9yIHJlbSB1bml0cyB3aXRoaW4gcHggZmFsbGJhY2suXG4gKiBodHRwOi8vY3NzLXRyaWNrcy5jb20vc25pcHBldHMvY3NzL2xlc3MtbWl4aW4tZm9yLXJlbS1mb250LXNpemluZy9cbiAqXG4gKiAuZm9vIHtcbiAqICAgICBAaW5jbHVkZSByZW0obWFyZ2luLCAxMCwgMjAsIDMwLCA0MCk7XG4gKiB9XG4gKlxuICogLmZvbyB7XG4gKiAgICAgbWFyZ2luOiAxNjBweCAzMjBweCA0ODBweCA2NDBweDtcbiAqICAgICBtYXJnaW46IDEwcmVtIDIwcmVtIDMwcmVtIDQwcmVtO1xuICogfVxuICpcbiAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDQ4MHB4KSB7XG4gIGJvZHk6OmFmdGVyIHtcbiAgICBjb250ZW50OiAne1wic21hbGxcIjp7XCJ2YWx1ZVwiOiBcIjQ4MHB4XCIsIFwiYWN0aXZlXCI6IHRydWV9LCBcIm1lZGl1bVwiOntcInZhbHVlXCI6IFwiNzY4cHhcIiwgXCJhY3RpdmVcIjogZmFsc2V9LCBcImxhcmdlXCI6e1widmFsdWVcIjogXCIxMjIwcHhcIiwgXCJhY3RpdmVcIjogZmFsc2V9fSc7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgd2lkdGg6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIGJvZHk6OmFmdGVyIHtcbiAgICBjb250ZW50OiAne1wic21hbGxcIjp7XCJ2YWx1ZVwiOiBcIjQ4MHB4XCIsIFwiYWN0aXZlXCI6IHRydWV9LCBcIm1lZGl1bVwiOntcInZhbHVlXCI6IFwiNzY4cHhcIiwgXCJhY3RpdmVcIjogdHJ1ZX0sIFwibGFyZ2VcIjp7XCJ2YWx1ZVwiOiBcIjEyMjBweFwiLCBcImFjdGl2ZVwiOiBmYWxzZX19JztcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aWR0aDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIyMHB4KSB7XG4gIGJvZHk6OmFmdGVyIHtcbiAgICBjb250ZW50OiAne1wic21hbGxcIjp7XCJ2YWx1ZVwiOiBcIjQ4MHB4XCIsIFwiYWN0aXZlXCI6IHRydWV9LCBcIm1lZGl1bVwiOntcInZhbHVlXCI6IFwiNzY4cHhcIiwgXCJhY3RpdmVcIjogdHJ1ZX0sIFwibGFyZ2VcIjp7XCJ2YWx1ZVwiOiBcIjEyMjBweFwiLCBcImFjdGl2ZVwiOiB0cnVlfX0nO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdpZHRoOiAwO1xuICB9XG59XG5cbi8qKlxuICogQ29tcG9uZW50c1xuICovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQ29tcG9uZW50cy5Gb3JtXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmMtRm9ybSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTA7XG59XG5cbi5jLUZvcm0tbGVnZW5kIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXNpemU6IDFyZW07XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuYy1Gb3JtLWxlZ2VuZCB7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gIH1cbn1cblxuLmMtRm9ybS1pdGVtIHtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jLUZvcm0taXRlbSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgfVxufVxuXG4uYy1Gb3JtLWxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IDVweDtcbiAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbi5jLUZvcm0tbGFiZWwtLWlubGluZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1sZWZ0OiA0NXB4O1xuICBtYXJnaW46IDA7XG59XG5cbi5jLUZvcm0tcmFkaW8gfiAuYy1Gb3JtLWxhYmVsLS1pbmxpbmU6YmVmb3JlLCAuYy1Gb3JtLXJhZGlvIH4gLmMtRm9ybS1sYWJlbC0taW5saW5lOmFmdGVyLFxuLmMtRm9ybS1jaGVja2JveCB+IC5jLUZvcm0tbGFiZWwtLWlubGluZTpiZWZvcmUsXG4uYy1Gb3JtLWNoZWNrYm94IH4gLmMtRm9ybS1sYWJlbC0taW5saW5lOmFmdGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuXG4uYy1Gb3JtLXJhZGlvIH4gLmMtRm9ybS1sYWJlbC0taW5saW5lOmJlZm9yZSxcbi5jLUZvcm0tY2hlY2tib3ggfiAuYy1Gb3JtLWxhYmVsLS1pbmxpbmU6YmVmb3JlIHtcbiAgY29udGVudDogXCJcIjtcbiAgdG9wOiAtMTFweDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDM4cHg7XG4gIGhlaWdodDogMzhweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2Q3ZDdkNztcbn1cblxuLmMtRm9ybS1yYWRpbyB+IC5jLUZvcm0tbGFiZWwtLWlubGluZTpiZWZvcmUsIC5jLUZvcm0tcmFkaW8gfiAuYy1Gb3JtLWxhYmVsLS1pbmxpbmU6YWZ0ZXIge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG59XG5cbi5jLUZvcm0tcmFkaW8gfiAuYy1Gb3JtLWxhYmVsLS1pbmxpbmU6YWZ0ZXIge1xuICB0b3A6IC0zcHg7XG4gIGxlZnQ6IDhweDtcbiAgd2lkdGg6IDIycHg7XG4gIGhlaWdodDogMjJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY2Njtcbn1cblxuLmMtRm9ybS1jaGVja2JveCB+IC5jLUZvcm0tbGFiZWwtLWlubGluZTphZnRlciB7XG4gIHRvcDogLTJweDtcbiAgbGVmdDogNnB4O1xuICB3aWR0aDogMjdweDtcbiAgaGVpZ2h0OiAyMXB4O1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIuLi9pbWFnZXMvaWNvbnMvY2hlY2suc3ZnXCIpIG5vLXJlcGVhdCAwIDA7XG4gIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xufVxuXG5odG1sLm5vLXN2ZyAuYy1Gb3JtLWNoZWNrYm94IH4gLmMtRm9ybS1sYWJlbC0taW5saW5lOmFmdGVyIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1hZ2VzL2ljb25zL2NoZWNrLnBuZ1wiKTtcbn1cblxuLmMtRm9ybS1yYWRpbzpjaGVja2VkIH4gLmMtRm9ybS1sYWJlbC0taW5saW5lOmFmdGVyLFxuLmMtRm9ybS1jaGVja2JveDpjaGVja2VkIH4gLmMtRm9ybS1sYWJlbC0taW5saW5lOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jLUZvcm0tbGFiZWwtLWlubGluZSB7XG4gICAgcGFkZGluZy1sZWZ0OiA2MHB4O1xuICB9XG4gIC5jLUZvcm0tcmFkaW8gfiAuYy1Gb3JtLWxhYmVsLS1pbmxpbmU6YmVmb3JlLFxuICAuYy1Gb3JtLWNoZWNrYm94IH4gLmMtRm9ybS1sYWJlbC0taW5saW5lOmJlZm9yZSB7XG4gICAgdG9wOiAtNnB4O1xuICB9XG4gIC5jLUZvcm0tcmFkaW8gfiAuYy1Gb3JtLWxhYmVsLS1pbmxpbmU6YWZ0ZXIge1xuICAgIHRvcDogMnB4O1xuICB9XG4gIC5jLUZvcm0tY2hlY2tib3ggfiAuYy1Gb3JtLWxhYmVsLS1pbmxpbmU6YWZ0ZXIge1xuICAgIHRvcDogM3B4O1xuICB9XG59XG5cbi5jLUZvcm0tbGFiZWwtLWFsdCB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBtYXJnaW4tbGVmdDogMDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmMtRm9ybS1sYWJlbC0tYWx0IHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgfVxufVxuXG4uYy1Gb3JtLWlucHV0LFxuLmMtRm9ybS10ZXh0YXJlYSB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAxMHB4O1xuICBtYXJnaW46IDA7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkN2Q3ZDc7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5cbi5jLUZvcm0tYmxvY2sge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDMwcHg7XG59XG5cbi5jLUZvcm0tbGFiZWxibG9jayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiA2MHB4IDUwJSAzMHB4IDMwcHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLmMtRm9ybS1ibG9jay0tc3ByYXZhIC5jLUZvcm0tbGFiZWxibG9jayB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7XG59XG5cbi5jLUZvcm0tYmxvY2stLWFrdGl2aXR5IC5jLUZvcm0tbGFiZWxibG9jayB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjMmUwYmY7XG59XG5cbi5jLUZvcm0tYmxvY2stLWhlbHBkZXNrIC5jLUZvcm0tbGFiZWxibG9jayB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmN2UzYjA7XG59XG5cbi5jLUZvcm0tbGFiZWxibG9jayA+IHNwYW4ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAuYy1Gb3JtLWxhYmVsYmxvY2sge1xuICAgIHBhZGRpbmc6IDMwcHggMzBweCAxMDBweDtcbiAgfVxuICAuYy1Gb3JtLWxhYmVsYmxvY2sgPiBzcGFuIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG4uYy1Gb3JtLWJsb2NrSW5wdXQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMjBweDtcbiAgcmlnaHQ6IDMwcHg7XG4gIHdpZHRoOiA0NSU7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAuYy1Gb3JtLWJsb2NrSW5wdXQge1xuICAgIHdpZHRoOiA4MCU7XG4gICAgcmlnaHQ6IDEwJTtcbiAgfVxufVxuXG4uYy1Gb3JtLXRhYmxlIHtcbiAgbWluLWhlaWdodDogLjAxJTtcbiAgbWFyZ2luLWJvdHRvbTogNDBweDtcbiAgb3ZlcmZsb3cteDogYXV0bztcbn1cblxuLmMtRm9ybS10YWJsZSB0YWJsZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwO1xuICBvdmVyZmxvdy14OiBhdXRvO1xufVxuXG4uYy1Gb3JtLXRhYmxlIHRhYmxlIHRoLFxuLmMtRm9ybS10YWJsZSB0YWJsZSB0ZCB7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkN2Q3ZDc7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi5jLUZvcm0tdGFibGUgdGFibGUgdGQge1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG4uYy1Gb3JtLXRhYmxlIHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZChvZGQpIHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZjRmNDtcbn1cblxuLmMtRm9ybS10YWJsZSB0YWJsZSB0Ym9keSB0cjpob3ZlciB0ZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWU3ZTc7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuYy1Gb3JtLXRhYmxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiA1MHB4O1xuICB9XG4gIC5jLUZvcm0tdGFibGUgdGFibGUge1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gIH1cbiAgLmMtRm9ybS10YWJsZSB0YWJsZSB0aCxcbiAgLmMtRm9ybS10YWJsZSB0YWJsZSB0ZCB7XG4gICAgcGFkZGluZzogMTVweCAyMHB4O1xuICB9XG4gIC5jLUZvcm0tdGFibGUgdGFibGUgdGgge1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICB9XG59XG5cbi5jLUZvcm0tYnV0dG9uIHtcbiAgcGFkZGluZzogMTBweCAxNXB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjNTFiMDQ4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTFiMDQ4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5jLUZvcm0tYnV0dG9uID4gc3BhbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY29sb3I6ICNmZmY7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uYy1Gb3JtLWJ1dHRvbjpob3ZlciB7XG4gIGJvcmRlci1jb2xvcjogIzMzMztcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5jLUZvcm0tYnV0dG9uOmhvdmVyID4gc3BhbiB7XG4gIGNvbG9yOiAjMzMzO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuYy1Gb3JtLWJ1dHRvbiB7XG4gICAgcGFkZGluZzogMjBweCAzMHB4IDIwcHggMjVweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIyMHB4KSB7XG4gIC5jLUZvcm0tYnV0dG9uIHtcbiAgICBwYWRkaW5nOiAyMHB4IDMwcHggMjBweCAyNXB4O1xuICB9XG59XG5cbi5jLUZvcm0taWNvbi5pY29uLXN1Ym1pdCB7XG4gIHdpZHRoOiA0NHB4O1xuICBoZWlnaHQ6IDM4cHg7XG4gIG1hcmdpbi1yaWdodDogNXB4O1xuICBjb2xvcjogI2ZmZjtcbn1cblxuLmMtRm9ybS1idXR0b246aG92ZXIgLmMtRm9ybS1pY29uLmljb24tc3VibWl0IHtcbiAgY29sb3I6ICMzMzM7XG59XG5cbi5jLUZvcm0taWNvbi5pY29uLWNoZWNrIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDEwMCU7XG4gIGxlZnQ6IDUwJTtcbiAgZGlzcGxheTogbm9uZTtcbiAgd2lkdGg6IDQ0cHg7XG4gIGhlaWdodDogMzVweDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICBtYXJnaW4tbGVmdDogLTIycHg7XG59XG5cbi5jLUZvcm0tY2hlY2tibG9jazpjaGVja2VkIH4gLmMtRm9ybS1sYWJlbGJsb2NrIC5jLUZvcm0taWNvbi5pY29uLWNoZWNrIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5jLUZvcm0tYmxvY2stLXNwcmF2YSAuYy1Gb3JtLWljb24uaWNvbi1jaGVjayB7XG4gIGNvbG9yOiAjMzNhZGRmO1xufVxuXG4uYy1Gb3JtLWJsb2NrLS1ha3Rpdml0eSAuYy1Gb3JtLWljb24uaWNvbi1jaGVjayB7XG4gIGNvbG9yOiAjNTFiMDQ4O1xufVxuXG4uYy1Gb3JtLWJsb2NrLS1oZWxwZGVzayAuYy1Gb3JtLWljb24uaWNvbi1jaGVjayB7XG4gIGNvbG9yOiAjZjU5YzEwO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmMtRm9ybS1pY29uLmljb24tc3VibWl0IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5jLUZvcm0taWNvbi5pY29uLWNoZWNrIHtcbiAgICBib3R0b206IDUwJTtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1ib3R0b206IC0xN3B4O1xuICB9XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQ29tcG9uZW50cy5Gb3JtXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uYy1Gb3JtIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTA7XG59XG5cbi5jLUZvcm0tbGVnZW5kIHtcbiAgICBAaW5jbHVkZSByZW0oZm9udC1zaXplLCAxNnB4KTtcbiAgICBtYXJnaW4tYm90dG9tOiAkQmFzZS11bml0VjtcbiAgICBmb250LXdlaWdodDogNjAwO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEoXCI+PW1lZGl1bVwiKSB7XG4gICAgICAgIEBpbmNsdWRlIHJlbShmb250LXNpemUsIDE4cHgpO1xuICAgIH1cbn1cblxuLmMtRm9ybS1pdGVtIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkQmFzZS11bml0VjtcblxuICAgIEBpbmNsdWRlIG1lZGlhKFwiPj1tZWRpdW1cIikge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxLjUgKiAkQmFzZS11bml0VjtcbiAgICB9XG59XG5cbi5jLUZvcm0tbGFiZWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbi1ib3R0b206IHF1YXJ0ZXIoJEJhc2UtdW5pdFYpO1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbi5jLUZvcm0tbGFiZWwtLWlubGluZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmctbGVmdDogNDVweDtcbiAgICBtYXJnaW46IDA7XG5cbiAgICAuYy1Gb3JtLXJhZGlvIH4gJixcbiAgICAuYy1Gb3JtLWNoZWNrYm94IH4gJiB7XG4gICAgICAgICY6YmVmb3JlLFxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICB0b3A6IC0xMXB4O1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAzOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAzOHB4O1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2Q3ZDdkNztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jLUZvcm0tcmFkaW8gfiAmIHtcbiAgICAgICAgJjpiZWZvcmUsXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICB9XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICB0b3A6IC0zcHg7XG4gICAgICAgICAgICBsZWZ0OiA4cHg7XG4gICAgICAgICAgICB3aWR0aDogMjJweDtcbiAgICAgICAgICAgIGhlaWdodDogMjJweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM2NjY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYy1Gb3JtLWNoZWNrYm94IH4gJiB7XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgdG9wOiAtMnB4O1xuICAgICAgICAgICAgbGVmdDogNnB4O1xuICAgICAgICAgICAgd2lkdGg6IDI3cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDIxcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoJy4uL2ltYWdlcy9pY29ucy9jaGVjay5zdmcnKSBuby1yZXBlYXQgMCAwO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XG5cbiAgICAgICAgICAgIGh0bWwubm8tc3ZnICYge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1hZ2VzL2ljb25zL2NoZWNrLnBuZycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmMtRm9ybS1yYWRpbzpjaGVja2VkIH4gJixcbiAgICAuYy1Gb3JtLWNoZWNrYm94OmNoZWNrZWQgfiAmIHtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEoXCI+PW1lZGl1bVwiKSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogNjBweDtcblxuICAgICAgICAuYy1Gb3JtLXJhZGlvIH4gJixcbiAgICAgICAgLmMtRm9ybS1jaGVja2JveCB+ICYge1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIHRvcDogLTZweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jLUZvcm0tcmFkaW8gfiAmIHtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIHRvcDogMnB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmMtRm9ybS1jaGVja2JveCB+ICYge1xuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgdG9wOiAzcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jLUZvcm0tbGFiZWwtLWFsdCB7XG4gICAgQGluY2x1ZGUgcmVtKGZvbnQtc2l6ZSwgMTJweCk7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEoXCI+PW1lZGl1bVwiKSB7XG4gICAgICAgIEBpbmNsdWRlIHJlbShmb250LXNpemUsIDE0cHgpO1xuICAgIH1cbn1cblxuLmMtRm9ybS1pbnB1dCxcbi5jLUZvcm0tdGV4dGFyZWEge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgbWFyZ2luOiAwO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkN2Q3ZDc7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbn1cblxuLmMtRm9ybS1ibG9jayB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbi1ib3R0b206IDEuNSAqICRCYXNlLXVuaXRWO1xufVxuXG4uYy1Gb3JtLWxhYmVsYmxvY2sge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDYwcHggNTAlIDMwcHggMzBweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcblxuICAgIC5jLUZvcm0tYmxvY2stLXNwcmF2YSAmIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDtcbiAgICB9XG5cbiAgICAuYy1Gb3JtLWJsb2NrLS1ha3Rpdml0eSAmIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2MyZTBiZjtcbiAgICB9XG5cbiAgICAuYy1Gb3JtLWJsb2NrLS1oZWxwZGVzayAmIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZTNiMDtcbiAgICB9XG5cbiAgICA+IHNwYW4ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEoXCI+PW1lZGl1bVwiLCBcIjwxMDI0cHhcIikge1xuICAgICAgICBwYWRkaW5nOiAzMHB4IDMwcHggMTAwcHg7XG5cbiAgICAgICAgPiBzcGFuIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYy1Gb3JtLWJsb2NrSW5wdXQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDIwcHg7XG4gICAgcmlnaHQ6IDMwcHg7XG4gICAgd2lkdGg6IDQ1JTtcblxuICAgIEBpbmNsdWRlIG1lZGlhKFwiPj1tZWRpdW1cIiwgXCI8MTAyNHB4XCIpIHtcbiAgICAgICAgd2lkdGg6IDgwJTtcbiAgICAgICAgcmlnaHQ6IDEwJTtcbiAgICB9XG59XG5cbi5jLUZvcm0tdGFibGUge1xuICAgIG1pbi1oZWlnaHQ6IC4wMSU7XG4gICAgbWFyZ2luLWJvdHRvbTogZG91YmxlKCRCYXNlLXVuaXRWKTtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuXG4gICAgdGFibGUge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICAgICAgICBib3JkZXItc3BhY2luZzogMDtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcblxuICAgICAgICB0aCxcbiAgICAgICAgdGQge1xuICAgICAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkN2Q3ZDc7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgdGQge1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRib2R5IHtcbiAgICAgICAgICAgIHRyOm50aC1jaGlsZChvZGQpIHRkIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0cjpob3ZlciB0ZCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZTdlNztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIG1lZGlhKFwiPj1tZWRpdW1cIikge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAoJEJhc2UtdW5pdFYgKiAxLjUpICsgJEJhc2UtdW5pdFY7XG5cbiAgICAgICAgdGFibGUge1xuICAgICAgICAgICAgdGFibGUtbGF5b3V0OiBmaXhlZDtcblxuICAgICAgICAgICAgdGgsXG4gICAgICAgICAgICB0ZCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMTVweCAyMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVtKGZvbnQtc2l6ZSwgMThweCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jLUZvcm0tYnV0dG9uIHtcbiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJEJhc2UtY29sb3JHYW1tYTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkQmFzZS1jb2xvckdhbW1hO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6ICMzMzM7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gICAgICAgID4gc3BhbiB7XG4gICAgICAgICAgICBjb2xvcjogIzMzMztcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIG1lZGlhKFwiPj1tZWRpdW1cIikge1xuICAgICAgICBwYWRkaW5nOiAyMHB4IDMwcHggMjBweCAyNXB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIG1lZGlhKFwiPj1sYXJnZVwiKSB7XG4gICAgICAgIHBhZGRpbmc6IDIwcHggMzBweCAyMHB4IDI1cHg7XG4gICAgfVxufVxuXG4uYy1Gb3JtLWljb24ge1xuICAgICYuaWNvbi1zdWJtaXQge1xuICAgICAgICB3aWR0aDogNDRweDtcbiAgICAgICAgaGVpZ2h0OiAzOHB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICAgICAgY29sb3I6ICNmZmY7XG5cbiAgICAgICAgLmMtRm9ybS1idXR0b246aG92ZXIgJiB7XG4gICAgICAgICAgICBjb2xvcjogIzMzMztcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuaWNvbi1jaGVjayB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm90dG9tOiAxMDAlO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIHdpZHRoOiA0NHB4O1xuICAgICAgICBoZWlnaHQ6IDM1cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC0yMnB4O1xuXG4gICAgICAgIC5jLUZvcm0tY2hlY2tibG9jazpjaGVja2VkIH4gLmMtRm9ybS1sYWJlbGJsb2NrICYge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICAuYy1Gb3JtLWJsb2NrLS1zcHJhdmEgJiB7XG4gICAgICAgICAgICBjb2xvcjogJEJhc2UtY29sb3JBbHBoYTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jLUZvcm0tYmxvY2stLWFrdGl2aXR5ICYge1xuICAgICAgICAgICAgY29sb3I6ICRCYXNlLWNvbG9yR2FtbWE7XG4gICAgICAgIH1cblxuICAgICAgICAuYy1Gb3JtLWJsb2NrLS1oZWxwZGVzayAmIHtcbiAgICAgICAgICAgIGNvbG9yOiAkQmFzZS1jb2xvckJldGE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYShcIj49bWVkaXVtXCIpIHtcbiAgICAgICAgJi5pY29uLXN1Ym1pdCB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYShcIj49bWVkaXVtXCIsIFwiPDEwMjRweFwiKSB7XG4gICAgICAgICYuaWNvbi1jaGVjayB7XG4gICAgICAgICAgICBib3R0b206IDUwJTtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IC0xN3B4O1xuICAgICAgICB9XG4gICAgfVxufVxuIl19 */
