/**
 * Foundation for Sites
 * Version 6.7.5
 * https://get.foundation
 * Licensed under MIT Open Source
 */
.blocker {
  width: 100%;
  height: 100%;
  padding: 20px;
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  overflow: auto;
  background-color: rgba(0, 0, 0, 0.3);
  text-align: center;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1000000; }
  @media screen and (min-width: 93.75em) {
    .blocker {
      padding: 108px; } }
  .blocker::before {
    display: inline-block;
    height: 100%;
    margin-right: -0.05em;
    content: "";
    vertical-align: middle; }
  .blocker.behind {
    background-color: transparent; }
  .blocker .modal.left {
    left: 0; }

.modal {
  display: none;
  width: 100%;
  max-width: 580px;
  padding: 20px;
  border-radius: 4px;
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  background-color: #FFFFFF;
  text-align: left;
  -webkit-box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.1);
          box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.1);
  vertical-align: middle;
  position: relative;
  z-index: 1000001; }
  @media print, screen and (min-width: 48em) {
    .modal {
      padding: 60px; } }
  .modal a.close-modal {
    display: block;
    width: 48px;
    height: 48px;
    text-indent: -9999px;
    background-image: url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' width='18px' height='18px' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='%230D0D0D' d='M31.995 2.005c0-0.397-0.119-0.785-0.34-1.114s-0.537-0.586-0.904-0.735c-0.368-0.15-0.773-0.186-1.161-0.104-0.389 0.081-0.745 0.277-1.022 0.562l-12.563 12.563-12.563-12.563c-0.184-0.192-0.405-0.345-0.649-0.45-0.243-0.105-0.505-0.161-0.771-0.163-0.266-0.004-0.529 0.047-0.775 0.147s-0.47 0.249-0.658 0.437c-0.187 0.188-0.335 0.411-0.436 0.656-0.101 0.247-0.151 0.51-0.148 0.775 0.004 0.266 0.059 0.528 0.164 0.773 0.105 0.243 0.259 0.464 0.45 0.648l12.563 12.563-12.563 12.563c-0.192 0.184-0.345 0.405-0.45 0.648-0.105 0.244-0.161 0.507-0.164 0.773-0.002 0.265 0.048 0.528 0.148 0.775 0.101 0.246 0.249 0.468 0.436 0.656 0.188 0.188 0.412 0.337 0.658 0.437s0.509 0.151 0.775 0.148c0.266-0.004 0.528-0.059 0.771-0.164 0.244-0.105 0.465-0.259 0.649-0.45l12.563-12.563 12.563 12.563c0.28 0.289 0.642 0.485 1.036 0.565s0.804 0.038 1.174-0.119c0.37-0.157 0.685-0.422 0.902-0.759 0.218-0.339 0.327-0.735 0.315-1.138-0.016-0.519-0.231-1.011-0.604-1.373l-12.564-12.563 12.564-12.563c0.19-0.187 0.343-0.408 0.447-0.654 0.104-0.247 0.157-0.51 0.157-0.777z'%3E%3C/path%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: center;
    background-color: transparent;
    border-radius: 50%;
    position: absolute;
    top: 12px;
    right: 8px;
    -webkit-transition: background 0.3s;
    transition: background 0.3s;
    border: 1px solid rgba(0, 0, 0, 0.1); }
    @media print, screen and (min-width: 48em) {
      .modal a.close-modal {
        width: 60px;
        height: 60px;
        top: 40px;
        right: 40px; } }
    .modal a.close-modal:hover {
      background-image: url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' width='18px' height='18px' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='%23FFFFFF' d='M31.995 2.005c0-0.397-0.119-0.785-0.34-1.114s-0.537-0.586-0.904-0.735c-0.368-0.15-0.773-0.186-1.161-0.104-0.389 0.081-0.745 0.277-1.022 0.562l-12.563 12.563-12.563-12.563c-0.184-0.192-0.405-0.345-0.649-0.45-0.243-0.105-0.505-0.161-0.771-0.163-0.266-0.004-0.529 0.047-0.775 0.147s-0.47 0.249-0.658 0.437c-0.187 0.188-0.335 0.411-0.436 0.656-0.101 0.247-0.151 0.51-0.148 0.775 0.004 0.266 0.059 0.528 0.164 0.773 0.105 0.243 0.259 0.464 0.45 0.648l12.563 12.563-12.563 12.563c-0.192 0.184-0.345 0.405-0.45 0.648-0.105 0.244-0.161 0.507-0.164 0.773-0.002 0.265 0.048 0.528 0.148 0.775 0.101 0.246 0.249 0.468 0.436 0.656 0.188 0.188 0.412 0.337 0.658 0.437s0.509 0.151 0.775 0.148c0.266-0.004 0.528-0.059 0.771-0.164 0.244-0.105 0.465-0.259 0.649-0.45l12.563-12.563 12.563 12.563c0.28 0.289 0.642 0.485 1.036 0.565s0.804 0.038 1.174-0.119c0.37-0.157 0.685-0.422 0.902-0.759 0.218-0.339 0.327-0.735 0.315-1.138-0.016-0.519-0.231-1.011-0.604-1.373l-12.564-12.563 12.564-12.563c0.19-0.187 0.343-0.408 0.447-0.654 0.104-0.247 0.157-0.51 0.157-0.777z'%3E%3C/path%3E%3C/svg%3E");
      background-color: #A8AD00;
      border: none; }
  .modal .modal-title {
    margin-bottom: 12px; }
    @media print, screen and (min-width: 48em) {
      .modal .modal-title {
        margin-bottom: 16px; } }
  .modal .modal-content > *:last-child {
    margin-bottom: 0; }
  .modal.slideout {
    max-width: 100%;
    height: 80%;
    position: absolute;
    border-radius: 16px 16px 0 0;
    bottom: 0;
    left: 0;
    -webkit-animation: slideout-up 0.5s forwards;
            animation: slideout-up 0.5s forwards; }
    @media print, screen and (min-width: 48em) {
      .modal.slideout {
        height: 100%;
        max-width: 800px;
        border-radius: unset;
        top: 0;
        bottom: unset;
        -webkit-animation: slideout 0.5s forwards;
                animation: slideout 0.5s forwards; } }
    .modal.slideout .modal-content {
      height: 100%; }
    .modal.slideout .slideout-grid {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-orient: vertical;
      -webkit-box-direction: normal;
          -ms-flex-direction: column;
              flex-direction: column;
      max-height: 100%; }
      .modal.slideout .slideout-grid .slideout-title {
        -ms-flex-negative: 0;
            flex-shrink: 0;
        -webkit-box-flex: 0;
            -ms-flex-positive: 0;
                flex-grow: 0;
        -ms-flex-preferred-size: auto;
            flex-basis: auto; }
      .modal.slideout .slideout-grid .slideout-content {
        -ms-flex-negative: 1;
            flex-shrink: 1;
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
        -ms-flex-preferred-size: 100%;
            flex-basis: 100%;
        margin-right: -16px;
        padding-right: 16px;
        overflow-y: auto; }
        @media print, screen and (min-width: 48em) {
          .modal.slideout .slideout-grid .slideout-content {
            margin-right: -52px;
            padding-right: 52px; } }
        .modal.slideout .slideout-grid .slideout-content::-webkit-scrollbar {
          width: 4px; }
          @media print, screen and (min-width: 48em) {
            .modal.slideout .slideout-grid .slideout-content::-webkit-scrollbar {
              width: 6px; } }
        .modal.slideout .slideout-grid .slideout-content::-webkit-scrollbar-thumb {
          background: rgba(0, 0, 0, 0.4);
          border-radius: 2px; }
          @media print, screen and (min-width: 48em) {
            .modal.slideout .slideout-grid .slideout-content::-webkit-scrollbar-thumb {
              border-radius: 3px; } }
  .modal.color-white a.close-modal {
    background-image: url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' width='18px' height='18px' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='%23FFFFFF' d='M31.995 2.005c0-0.397-0.119-0.785-0.34-1.114s-0.537-0.586-0.904-0.735c-0.368-0.15-0.773-0.186-1.161-0.104-0.389 0.081-0.745 0.277-1.022 0.562l-12.563 12.563-12.563-12.563c-0.184-0.192-0.405-0.345-0.649-0.45-0.243-0.105-0.505-0.161-0.771-0.163-0.266-0.004-0.529 0.047-0.775 0.147s-0.47 0.249-0.658 0.437c-0.187 0.188-0.335 0.411-0.436 0.656-0.101 0.247-0.151 0.51-0.148 0.775 0.004 0.266 0.059 0.528 0.164 0.773 0.105 0.243 0.259 0.464 0.45 0.648l12.563 12.563-12.563 12.563c-0.192 0.184-0.345 0.405-0.45 0.648-0.105 0.244-0.161 0.507-0.164 0.773-0.002 0.265 0.048 0.528 0.148 0.775 0.101 0.246 0.249 0.468 0.436 0.656 0.188 0.188 0.412 0.337 0.658 0.437s0.509 0.151 0.775 0.148c0.266-0.004 0.528-0.059 0.771-0.164 0.244-0.105 0.465-0.259 0.649-0.45l12.563-12.563 12.563 12.563c0.28 0.289 0.642 0.485 1.036 0.565s0.804 0.038 1.174-0.119c0.37-0.157 0.685-0.422 0.902-0.759 0.218-0.339 0.327-0.735 0.315-1.138-0.016-0.519-0.231-1.011-0.604-1.373l-12.564-12.563 12.564-12.563c0.19-0.187 0.343-0.408 0.447-0.654 0.104-0.247 0.157-0.51 0.157-0.777z'%3E%3C/path%3E%3C/svg%3E");
    border: 1px solid rgba(255, 255, 255, 0.4); }
  .modal.color-white .slideout-grid .slideout-content::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.6); }

.modal-spinner {
  display: none;
  height: 20px;
  padding: 12px 16px;
  border-radius: 5px;
  background-color: #000000;
  -webkit-transform: translateY(-50%) translateX(-50%);
          transform: translateY(-50%) translateX(-50%);
  position: fixed;
  top: 50%;
  left: 50%; }
  .modal-spinner > div {
    display: inline-block;
    height: 20px;
    width: 2px;
    margin: 0 1px;
    border-radius: 100px;
    background-color: #FFFFFF;
    -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;
            animation: sk-stretchdelay 1.2s infinite ease-in-out; }
  .modal-spinner .rect2 {
    -webkit-animation-delay: -1.1s;
            animation-delay: -1.1s; }
  .modal-spinner .rect3 {
    -webkit-animation-delay: -1s;
            animation-delay: -1s; }
  .modal-spinner .rect4 {
    -webkit-animation-delay: -0.9s;
            animation-delay: -0.9s; }

@-webkit-keyframes sk-stretchdelay {
  0%,
  40%,
  100% {
    -webkit-transform: scaleY(0.5);
            transform: scaleY(0.5); }
  20% {
    -webkit-transform: scaleY(1);
            transform: scaleY(1); } }

@keyframes sk-stretchdelay {
  0%,
  40%,
  100% {
    -webkit-transform: scaleY(0.5);
            transform: scaleY(0.5); }
  20% {
    -webkit-transform: scaleY(1);
            transform: scaleY(1); } }

@-webkit-keyframes slideout {
  from {
    left: -100%; }
  to {
    left: 0; } }

@keyframes slideout {
  from {
    left: -100%; }
  to {
    left: 0; } }

@-webkit-keyframes slideout-up {
  from {
    bottom: -100%; }
  to {
    bottom: 0; } }

@keyframes slideout-up {
  from {
    bottom: -100%; }
  to {
    bottom: 0; } }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm91bmRhdGlvbi5zY3NzIiwic3RhbmRhbG9uZS9vdmVybGF5cy5jc3MiLCJzdGFuZGFsb25lL292ZXJsYXlzLnNjc3MiLCJfY29sb3JzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2JyZWFrcG9pbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7RUNLRTtBQ0dGO0VBQ0MsV0FBVztFQUNYLFlBQVk7RUFDWixhQUFTO0VBRVQsOEJBQXNCO1VBQXRCLHNCQUFzQjtFQUN0QixjQUFjO0VBRWQsb0NDQ2M7RURBZCxrQkFBa0I7RUFFbEIsZUFBZTtFQUNmLE1BQU07RUFDTixRQUFRO0VBQ1IsU0FBUztFQUNULE9BQU87RUFDUCxnQkFBZ0IsRUFBQTtFRWdLVDtJRmhMUjtNQW1CRSxjQUFTLEVBQUEsRUF1QlY7RUExQ0Q7SUF1QkUscUJBQXFCO0lBQ3JCLFlBQVk7SUFDWixxQkFBcUI7SUFFckIsV0FBVztJQUVYLHNCQUFzQixFQUFBO0VBN0J4QjtJQWlDRSw2QkFBNkIsRUFBQTtFQWpDL0I7SUFzQ0csT0FBTyxFQUFBOztBQU1WO0VBQ0MsYUFBYTtFQUNiLFdBQVc7RUFDWCxnQkFBZ0I7RUFDaEIsYUFBYTtFQUViLGtCQUFrQjtFQUVsQiw4QkFBc0I7VUFBdEIsc0JBQXNCO0VBQ3RCLHlCQzdCaUI7RUQ4QmpCLGdCQUFnQjtFQUVoQixzREMvQ2M7VUQrQ2QsOENDL0NjO0VEaURkLHNCQUFzQjtFQUN0QixrQkFBa0I7RUFDbEIsZ0JBQWdCLEVBQUE7RUUrR1Q7SUYvSFI7TUFtQkUsYUFBYSxFQUFBLEVBc0lkO0VBekpEO0lBeUJFLGNBQWM7SUFDZCxXQUFXO0lBQ1gsWUFBWTtJQUVaLG9CQUFvQjtJQUVwQix3dUNBQTREO0lBQzVELDRCQUE0QjtJQUM1QiwyQkFBMkI7SUFDM0IsNkJBQTZCO0lBQzdCLGtCQUFrQjtJQUVsQixrQkFBa0I7SUFDbEIsU0FBUztJQUNULFVBQVU7SUFFVixtQ0FBMkI7SUFBM0IsMkJBQTJCO0lBQzNCLG9DQzdFYSxFQUFBO0lDa0tQO01GL0hSO1FBNkNHLFdBQVc7UUFDWCxZQUFZO1FBQ1osU0FBUztRQUNULFdBQVcsRUFBQSxFQVFaO0lBeERGO01Bb0RHLHd1Q0FBeUQ7TUFDekQseUJDbEdnQjtNRG1HaEIsWUFBWSxFQUFBO0VBdERmO0lBMkRFLG1CQUFtQixFQUFBO0lFb0ViO01GL0hSO1FBNkRHLG1CQUFtQixFQUFBLEVBRXBCO0VBL0RGO0lBbUVHLGdCQUFnQixFQUFBO0VBbkVuQjtJQXdFRSxlQUFlO0lBQ2YsV0FBVztJQUNYLGtCQUFrQjtJQUVsQiw0QkFBNEI7SUFDNUIsU0FBUztJQUNULE9BQU87SUFFUCw0Q0FBb0M7WUFBcEMsb0NBQW9DLEVBQUE7SUUrQzlCO01GL0hSO1FBbUZHLFlBQVk7UUFDWixnQkFBZ0I7UUFDaEIsb0JBQW9CO1FBQ3BCLE1BQU07UUFDTixhQUFhO1FBRWIseUNBQWlDO2dCQUFqQyxpQ0FBaUMsRUFBQSxFQWlEbEM7SUExSUY7TUE2RkcsWUFBWSxFQUFBO0lBN0ZmO01BaUdHLG9CQUFhO01BQWIsb0JBQWE7TUFBYixhQUFhO01BQ2IsNEJBQXNCO01BQXRCLDZCQUFzQjtVQUF0QiwwQkFBc0I7Y0FBdEIsc0JBQXNCO01BQ3RCLGdCQUFnQixFQUFBO01BbkduQjtRQXNHSSxvQkFBYztZQUFkLGNBQWM7UUFDZCxtQkFBWTtZQUFaLG9CQUFZO2dCQUFaLFlBQVk7UUFDWiw2QkFBZ0I7WUFBaEIsZ0JBQWdCLEVBQUE7TUF4R3BCO1FBNEdJLG9CQUFjO1lBQWQsY0FBYztRQUNkLG1CQUFZO1lBQVosb0JBQVk7Z0JBQVosWUFBWTtRQUNaLDZCQUFnQjtZQUFoQixnQkFBZ0I7UUFDaEIsbUJBQW1CO1FBQ25CLG1CQUFtQjtRQUNuQixnQkFBZ0IsRUFBQTtRRWNaO1VGL0hSO1lBb0hLLG1CQUFtQjtZQUNuQixtQkFBbUIsRUFBQSxFQW1CcEI7UUF4SUo7VUF5SEssVUFBVSxFQUFBO1VFTVA7WUYvSFI7Y0E0SE0sVUFBVSxFQUFBLEVBRVg7UUE5SEw7VUFpSUssOEJDcEtVO1VEcUtWLGtCQUFrQixFQUFBO1VFSGY7WUYvSFI7Y0FxSU0sa0JBQWtCLEVBQUEsRUFFbkI7RUF2SUw7SUE4SUcsd3VDQUF5RDtJQUN6RCwwQ0NuS2UsRUFBQTtFRG9CbEI7SUFvSkssb0NDeEthLEVBQUE7O0FEK0tsQjtFQUNDLGFBQWE7RUFDYixZQUFZO0VBQ1osa0JBQWtCO0VBRWxCLGtCQUFrQjtFQUNsQix5QkNwTWM7RURzTWQsb0RBQTRDO1VBQTVDLDRDQUE0QztFQUU1QyxlQUFlO0VBQ2YsUUFBUTtFQUNSLFNBQVMsRUFBQTtFQVpWO0lBZUUscUJBQXFCO0lBQ3JCLFlBQVk7SUFDWixVQUFVO0lBQ1YsYUFBYTtJQUViLG9CQUFvQjtJQUNwQix5QkNwTWdCO0lEc01oQiw0REFBb0Q7WUFBcEQsb0RBQW9ELEVBQUE7RUF2QnREO0lBMkJFLDhCQUFzQjtZQUF0QixzQkFBc0IsRUFBQTtFQTNCeEI7SUErQkUsNEJBQW9CO1lBQXBCLG9CQUFvQixFQUFBO0VBL0J0QjtJQW1DRSw4QkFBc0I7WUFBdEIsc0JBQXNCLEVBQUE7O0FBSXhCO0VBQ0M7OztJQUdDLDhCQUFzQjtZQUF0QixzQkFBc0IsRUFBQTtFQUV2QjtJQUNDLDRCQUFvQjtZQUFwQixvQkFBb0IsRUFBQSxFQUFBOztBQVB0QjtFQUNDOzs7SUFHQyw4QkFBc0I7WUFBdEIsc0JBQXNCLEVBQUE7RUFFdkI7SUFDQyw0QkFBb0I7WUFBcEIsb0JBQW9CLEVBQUEsRUFBQTs7QUFJdEI7RUFDQztJQUNDLFdBQVcsRUFBQTtFQUVaO0lBQ0MsT0FBTyxFQUFBLEVBQUE7O0FBTFQ7RUFDQztJQUNDLFdBQVcsRUFBQTtFQUVaO0lBQ0MsT0FBTyxFQUFBLEVBQUE7O0FBSVQ7RUFDQztJQUNDLGFBQWEsRUFBQTtFQUVkO0lBQ0MsU0FBUyxFQUFBLEVBQUE7O0FBTFg7RUFDQztJQUNDLGFBQWEsRUFBQTtFQUVkO0lBQ0MsU0FBUyxFQUFBLEVBQUEiLCJmaWxlIjoic3RhbmRhbG9uZS9vdmVybGF5cy5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4gKiBWZXJzaW9uIDYuNy41XG4gKiBodHRwczovL2dldC5mb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcbiAqL1xuXG4vLyAtLS0gRGVwZW5kZW5jaWVzIC0tLVxuQGltcG9ydCAndmVuZG9yL25vcm1hbGl6ZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2hlbHBlcnMvbWlzc2luZy1kZXBlbmRlbmNpZXMnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL3RydWUnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvY29udGFpbic7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9wdXJnZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9yZW1vdmUnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvcmVwbGFjZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy90by1saXN0JztcblxuLy8gLS0tIFNldHRpbmdzIC0tLVxuLy8gaW1wb3J0IHlvdXIgb3duIGBzZXR0aW5nc2AgaGVyZSBvclxuLy8gaW1wb3J0IGFuZCBtb2RpZnkgdGhlIGRlZmF1bHQgc2V0dGluZ3MgdGhyb3VnaFxuLy8gQGltcG9ydCAnc2V0dGluZ3Mvc2V0dGluZ3MnO1xuXG4vLyAtLS0gQ29tcG9uZW50cyAtLS1cbi8vIFV0aWxpdGllc1xuQGltcG9ydCAndXRpbC91dGlsJztcbi8vIEdsb2JhbCBzdHlsZXNcbkBpbXBvcnQgJ2dsb2JhbCc7XG5AaW1wb3J0ICdmb3Jtcy9mb3Jtcyc7XG5AaW1wb3J0ICd0eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuXG4vLyBHcmlkc1xuQGltcG9ydCAnZ3JpZC9ncmlkJztcbkBpbXBvcnQgJ3h5LWdyaWQveHktZ3JpZCc7XG4vLyBHZW5lcmljIGNvbXBvbmVudHNcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnV0dG9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnV0dG9uLWdyb3VwJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvY2xvc2UtYnV0dG9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbGFiZWwnO1xuQGltcG9ydCAnY29tcG9uZW50cy9wcm9ncmVzcy1iYXInO1xuQGltcG9ydCAnY29tcG9uZW50cy9zbGlkZXInO1xuQGltcG9ydCAnY29tcG9uZW50cy9zd2l0Y2gnO1xuQGltcG9ydCAnY29tcG9uZW50cy90YWJsZSc7XG4vLyBCYXNpYyBjb21wb25lbnRzXG5AaW1wb3J0ICdjb21wb25lbnRzL2JhZGdlJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnJlYWRjcnVtYnMnO1xuQGltcG9ydCAnY29tcG9uZW50cy9jYWxsb3V0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvY2FyZCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2Ryb3Bkb3duJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcGFnaW5hdGlvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Rvb2x0aXAnO1xuXG4vLyBDb250YWluZXJzXG5AaW1wb3J0ICdjb21wb25lbnRzL2FjY29yZGlvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL21lZGlhLW9iamVjdCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL29yYml0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcmVzcG9uc2l2ZS1lbWJlZCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RhYnMnO1xuQGltcG9ydCAnY29tcG9uZW50cy90aHVtYm5haWwnO1xuLy8gTWVudS1iYXNlZCBjb250YWluZXJzXG5AaW1wb3J0ICdjb21wb25lbnRzL21lbnUnO1xuQGltcG9ydCAnY29tcG9uZW50cy9tZW51LWljb24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9hY2NvcmRpb24tbWVudSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2RyaWxsZG93bic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2Ryb3Bkb3duLW1lbnUnO1xuXG4vLyBMYXlvdXQgY29tcG9uZW50c1xuQGltcG9ydCAnY29tcG9uZW50cy9vZmYtY2FudmFzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcmV2ZWFsJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvc3RpY2t5JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGl0bGUtYmFyJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdG9wLWJhcic7XG5cbi8vIEhlbHBlcnNcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZmxvYXQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9mbGV4JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdmlzaWJpbGl0eSc7XG5AaW1wb3J0ICdwcm90b3R5cGUvcHJvdG90eXBlJztcblxuXG5AbWl4aW4gZm91bmRhdGlvbi1ldmVyeXRoaW5nKFxuICAkZmxleDogdHJ1ZSxcbiAgJHByb3RvdHlwZTogZmFsc2UsXG4gICR4eS1ncmlkOiAkeHktZ3JpZFxuKSB7XG4gIEBpZiAkZmxleCB7XG4gICAgJGdsb2JhbC1mbGV4Ym94OiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBAaWYgJHh5LWdyaWQge1xuICAgICR4eS1ncmlkOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICAvLyBHbG9iYWwgc3R5bGVzXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZ2xvYmFsLXN0eWxlcztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtcztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10eXBvZ3JhcGh5O1xuXG4gIC8vIEdyaWRzXG4gIEBpZiBub3QgJGZsZXgge1xuICAgIEBpbmNsdWRlIGZvdW5kYXRpb24tZ3JpZDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICR4eS1ncmlkIHtcbiAgICAgIEBpbmNsdWRlIGZvdW5kYXRpb24teHktZ3JpZC1jbGFzc2VzO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZsZXgtZ3JpZDtcbiAgICB9XG4gIH1cblxuICAvLyBHZW5lcmljIGNvbXBvbmVudHNcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1idXR0b247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYnV0dG9uLWdyb3VwO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWNsb3NlLWJ1dHRvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1sYWJlbDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm9ncmVzcy1iYXI7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tc2xpZGVyO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXN3aXRjaDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10YWJsZTtcbiAgLy8gQmFzaWMgY29tcG9uZW50c1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJhZGdlO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJyZWFkY3J1bWJzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWNhbGxvdXQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tY2FyZDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1kcm9wZG93bjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wYWdpbmF0aW9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRvb2x0aXA7XG5cbiAgLy8gQ29udGFpbmVyc1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWFjY29yZGlvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1tZWRpYS1vYmplY3Q7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tb3JiaXQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcmVzcG9uc2l2ZS1lbWJlZDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10YWJzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRodW1ibmFpbDtcbiAgLy8gTWVudS1iYXNlZCBjb250YWluZXJzXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbWVudTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1tZW51LWljb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYWNjb3JkaW9uLW1lbnU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZHJpbGxkb3duLW1lbnU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZHJvcGRvd24tbWVudTtcblxuICAvLyBMYXlvdXQgY29tcG9uZW50c1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW9mZi1jYW52YXM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcmV2ZWFsO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXN0aWNreTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10aXRsZS1iYXI7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdG9wLWJhcjtcblxuICAvLyBIZWxwZXJzXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZmxvYXQtY2xhc3NlcztcbiAgQGlmICRmbGV4IHsgQGluY2x1ZGUgZm91bmRhdGlvbi1mbGV4LWNsYXNzZXM7IH1cbiAgQGluY2x1ZGUgZm91bmRhdGlvbi12aXNpYmlsaXR5LWNsYXNzZXM7XG4gIEBpZiAkcHJvdG90eXBlIHsgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtY2xhc3NlczsgfVxufVxuIiwiLyoqXG4gKiBGb3VuZGF0aW9uIGZvciBTaXRlc1xuICogVmVyc2lvbiA2LjcuNVxuICogaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG4gKi9cbi5ibG9ja2VyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgcGFkZGluZzogMjBweDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTAwMDAwMDsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5My43NWVtKSB7XG4gICAgLmJsb2NrZXIge1xuICAgICAgcGFkZGluZzogMTA4cHg7IH0gfVxuICAuYmxvY2tlcjo6YmVmb3JlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbi1yaWdodDogLTAuMDVlbTtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cbiAgLmJsb2NrZXIuYmVoaW5kIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICAuYmxvY2tlciAubW9kYWwubGVmdCB7XG4gICAgbGVmdDogMDsgfVxuXG4ubW9kYWwge1xuICBkaXNwbGF5OiBub25lO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiA1ODBweDtcbiAgcGFkZGluZzogMjBweDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBib3gtc2hhZG93OiAwcHggMnB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDEwMDAwMDE7IH1cbiAgQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgICAubW9kYWwge1xuICAgICAgcGFkZGluZzogNjBweDsgfSB9XG4gIC5tb2RhbCBhLmNsb3NlLW1vZGFsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogNDhweDtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB2ZXJzaW9uPScxLjEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzE4cHgnIGhlaWdodD0nMThweCcgZmlsbD0nbm9uZScgdmlld0JveD0nMCAwIDMyIDMyJyUzRSUzQ3BhdGggZmlsbD0nJTIzMEQwRDBEJyBkPSdNMzEuOTk1IDIuMDA1YzAtMC4zOTctMC4xMTktMC43ODUtMC4zNC0xLjExNHMtMC41MzctMC41ODYtMC45MDQtMC43MzVjLTAuMzY4LTAuMTUtMC43NzMtMC4xODYtMS4xNjEtMC4xMDQtMC4zODkgMC4wODEtMC43NDUgMC4yNzctMS4wMjIgMC41NjJsLTEyLjU2MyAxMi41NjMtMTIuNTYzLTEyLjU2M2MtMC4xODQtMC4xOTItMC40MDUtMC4zNDUtMC42NDktMC40NS0wLjI0My0wLjEwNS0wLjUwNS0wLjE2MS0wLjc3MS0wLjE2My0wLjI2Ni0wLjAwNC0wLjUyOSAwLjA0Ny0wLjc3NSAwLjE0N3MtMC40NyAwLjI0OS0wLjY1OCAwLjQzN2MtMC4xODcgMC4xODgtMC4zMzUgMC40MTEtMC40MzYgMC42NTYtMC4xMDEgMC4yNDctMC4xNTEgMC41MS0wLjE0OCAwLjc3NSAwLjAwNCAwLjI2NiAwLjA1OSAwLjUyOCAwLjE2NCAwLjc3MyAwLjEwNSAwLjI0MyAwLjI1OSAwLjQ2NCAwLjQ1IDAuNjQ4bDEyLjU2MyAxMi41NjMtMTIuNTYzIDEyLjU2M2MtMC4xOTIgMC4xODQtMC4zNDUgMC40MDUtMC40NSAwLjY0OC0wLjEwNSAwLjI0NC0wLjE2MSAwLjUwNy0wLjE2NCAwLjc3My0wLjAwMiAwLjI2NSAwLjA0OCAwLjUyOCAwLjE0OCAwLjc3NSAwLjEwMSAwLjI0NiAwLjI0OSAwLjQ2OCAwLjQzNiAwLjY1NiAwLjE4OCAwLjE4OCAwLjQxMiAwLjMzNyAwLjY1OCAwLjQzN3MwLjUwOSAwLjE1MSAwLjc3NSAwLjE0OGMwLjI2Ni0wLjAwNCAwLjUyOC0wLjA1OSAwLjc3MS0wLjE2NCAwLjI0NC0wLjEwNSAwLjQ2NS0wLjI1OSAwLjY0OS0wLjQ1bDEyLjU2My0xMi41NjMgMTIuNTYzIDEyLjU2M2MwLjI4IDAuMjg5IDAuNjQyIDAuNDg1IDEuMDM2IDAuNTY1czAuODA0IDAuMDM4IDEuMTc0LTAuMTE5YzAuMzctMC4xNTcgMC42ODUtMC40MjIgMC45MDItMC43NTkgMC4yMTgtMC4zMzkgMC4zMjctMC43MzUgMC4zMTUtMS4xMzgtMC4wMTYtMC41MTktMC4yMzEtMS4wMTEtMC42MDQtMS4zNzNsLTEyLjU2NC0xMi41NjMgMTIuNTY0LTEyLjU2M2MwLjE5LTAuMTg3IDAuMzQzLTAuNDA4IDAuNDQ3LTAuNjU0IDAuMTA0LTAuMjQ3IDAuMTU3LTAuNTEgMC4xNTctMC43Nzd6JyUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRVwiKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMTJweDtcbiAgICByaWdodDogOHB4O1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4zcztcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7IH1cbiAgICBAbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDhlbSkge1xuICAgICAgLm1vZGFsIGEuY2xvc2UtbW9kYWwge1xuICAgICAgICB3aWR0aDogNjBweDtcbiAgICAgICAgaGVpZ2h0OiA2MHB4O1xuICAgICAgICB0b3A6IDQwcHg7XG4gICAgICAgIHJpZ2h0OiA0MHB4OyB9IH1cbiAgICAubW9kYWwgYS5jbG9zZS1tb2RhbDpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHZlcnNpb249JzEuMScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMThweCcgaGVpZ2h0PScxOHB4JyBmaWxsPSdub25lJyB2aWV3Qm94PScwIDAgMzIgMzInJTNFJTNDcGF0aCBmaWxsPSclMjNGRkZGRkYnIGQ9J00zMS45OTUgMi4wMDVjMC0wLjM5Ny0wLjExOS0wLjc4NS0wLjM0LTEuMTE0cy0wLjUzNy0wLjU4Ni0wLjkwNC0wLjczNWMtMC4zNjgtMC4xNS0wLjc3My0wLjE4Ni0xLjE2MS0wLjEwNC0wLjM4OSAwLjA4MS0wLjc0NSAwLjI3Ny0xLjAyMiAwLjU2MmwtMTIuNTYzIDEyLjU2My0xMi41NjMtMTIuNTYzYy0wLjE4NC0wLjE5Mi0wLjQwNS0wLjM0NS0wLjY0OS0wLjQ1LTAuMjQzLTAuMTA1LTAuNTA1LTAuMTYxLTAuNzcxLTAuMTYzLTAuMjY2LTAuMDA0LTAuNTI5IDAuMDQ3LTAuNzc1IDAuMTQ3cy0wLjQ3IDAuMjQ5LTAuNjU4IDAuNDM3Yy0wLjE4NyAwLjE4OC0wLjMzNSAwLjQxMS0wLjQzNiAwLjY1Ni0wLjEwMSAwLjI0Ny0wLjE1MSAwLjUxLTAuMTQ4IDAuNzc1IDAuMDA0IDAuMjY2IDAuMDU5IDAuNTI4IDAuMTY0IDAuNzczIDAuMTA1IDAuMjQzIDAuMjU5IDAuNDY0IDAuNDUgMC42NDhsMTIuNTYzIDEyLjU2My0xMi41NjMgMTIuNTYzYy0wLjE5MiAwLjE4NC0wLjM0NSAwLjQwNS0wLjQ1IDAuNjQ4LTAuMTA1IDAuMjQ0LTAuMTYxIDAuNTA3LTAuMTY0IDAuNzczLTAuMDAyIDAuMjY1IDAuMDQ4IDAuNTI4IDAuMTQ4IDAuNzc1IDAuMTAxIDAuMjQ2IDAuMjQ5IDAuNDY4IDAuNDM2IDAuNjU2IDAuMTg4IDAuMTg4IDAuNDEyIDAuMzM3IDAuNjU4IDAuNDM3czAuNTA5IDAuMTUxIDAuNzc1IDAuMTQ4YzAuMjY2LTAuMDA0IDAuNTI4LTAuMDU5IDAuNzcxLTAuMTY0IDAuMjQ0LTAuMTA1IDAuNDY1LTAuMjU5IDAuNjQ5LTAuNDVsMTIuNTYzLTEyLjU2MyAxMi41NjMgMTIuNTYzYzAuMjggMC4yODkgMC42NDIgMC40ODUgMS4wMzYgMC41NjVzMC44MDQgMC4wMzggMS4xNzQtMC4xMTljMC4zNy0wLjE1NyAwLjY4NS0wLjQyMiAwLjkwMi0wLjc1OSAwLjIxOC0wLjMzOSAwLjMyNy0wLjczNSAwLjMxNS0xLjEzOC0wLjAxNi0wLjUxOS0wLjIzMS0xLjAxMS0wLjYwNC0xLjM3M2wtMTIuNTY0LTEyLjU2MyAxMi41NjQtMTIuNTYzYzAuMTktMC4xODcgMC4zNDMtMC40MDggMC40NDctMC42NTQgMC4xMDQtMC4yNDcgMC4xNTctMC41MSAwLjE1Ny0wLjc3N3onJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFXCIpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0E4QUQwMDtcbiAgICAgIGJvcmRlcjogbm9uZTsgfVxuICAubW9kYWwgLm1vZGFsLXRpdGxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxMnB4OyB9XG4gICAgQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgICAgIC5tb2RhbCAubW9kYWwtdGl0bGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OyB9IH1cbiAgLm1vZGFsIC5tb2RhbC1jb250ZW50ID4gKjpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwOyB9XG4gIC5tb2RhbC5zbGlkZW91dCB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogODAlO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4IDE2cHggMCAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGFuaW1hdGlvbjogc2xpZGVvdXQtdXAgMC41cyBmb3J3YXJkczsgfVxuICAgIEBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0OGVtKSB7XG4gICAgICAubW9kYWwuc2xpZGVvdXQge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogODAwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHVuc2V0O1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGJvdHRvbTogdW5zZXQ7XG4gICAgICAgIGFuaW1hdGlvbjogc2xpZGVvdXQgMC41cyBmb3J3YXJkczsgfSB9XG4gICAgLm1vZGFsLnNsaWRlb3V0IC5tb2RhbC1jb250ZW50IHtcbiAgICAgIGhlaWdodDogMTAwJTsgfVxuICAgIC5tb2RhbC5zbGlkZW91dCAuc2xpZGVvdXQtZ3JpZCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIG1heC1oZWlnaHQ6IDEwMCU7IH1cbiAgICAgIC5tb2RhbC5zbGlkZW91dCAuc2xpZGVvdXQtZ3JpZCAuc2xpZGVvdXQtdGl0bGUge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgZmxleC1ncm93OiAwO1xuICAgICAgICBmbGV4LWJhc2lzOiBhdXRvOyB9XG4gICAgICAubW9kYWwuc2xpZGVvdXQgLnNsaWRlb3V0LWdyaWQgLnNsaWRlb3V0LWNvbnRlbnQge1xuICAgICAgICBmbGV4LXNocmluazogMTtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBmbGV4LWJhc2lzOiAxMDAlO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IC0xNnB4O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxNnB4O1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvOyB9XG4gICAgICAgIEBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0OGVtKSB7XG4gICAgICAgICAgLm1vZGFsLnNsaWRlb3V0IC5zbGlkZW91dC1ncmlkIC5zbGlkZW91dC1jb250ZW50IHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogLTUycHg7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1MnB4OyB9IH1cbiAgICAgICAgLm1vZGFsLnNsaWRlb3V0IC5zbGlkZW91dC1ncmlkIC5zbGlkZW91dC1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgICAgd2lkdGg6IDRweDsgfVxuICAgICAgICAgIEBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0OGVtKSB7XG4gICAgICAgICAgICAubW9kYWwuc2xpZGVvdXQgLnNsaWRlb3V0LWdyaWQgLnNsaWRlb3V0LWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgICAgd2lkdGg6IDZweDsgfSB9XG4gICAgICAgIC5tb2RhbC5zbGlkZW91dCAuc2xpZGVvdXQtZ3JpZCAuc2xpZGVvdXQtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC40KTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7IH1cbiAgICAgICAgICBAbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDhlbSkge1xuICAgICAgICAgICAgLm1vZGFsLnNsaWRlb3V0IC5zbGlkZW91dC1ncmlkIC5zbGlkZW91dC1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsgfSB9XG4gIC5tb2RhbC5jb2xvci13aGl0ZSBhLmNsb3NlLW1vZGFsIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHZlcnNpb249JzEuMScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMThweCcgaGVpZ2h0PScxOHB4JyBmaWxsPSdub25lJyB2aWV3Qm94PScwIDAgMzIgMzInJTNFJTNDcGF0aCBmaWxsPSclMjNGRkZGRkYnIGQ9J00zMS45OTUgMi4wMDVjMC0wLjM5Ny0wLjExOS0wLjc4NS0wLjM0LTEuMTE0cy0wLjUzNy0wLjU4Ni0wLjkwNC0wLjczNWMtMC4zNjgtMC4xNS0wLjc3My0wLjE4Ni0xLjE2MS0wLjEwNC0wLjM4OSAwLjA4MS0wLjc0NSAwLjI3Ny0xLjAyMiAwLjU2MmwtMTIuNTYzIDEyLjU2My0xMi41NjMtMTIuNTYzYy0wLjE4NC0wLjE5Mi0wLjQwNS0wLjM0NS0wLjY0OS0wLjQ1LTAuMjQzLTAuMTA1LTAuNTA1LTAuMTYxLTAuNzcxLTAuMTYzLTAuMjY2LTAuMDA0LTAuNTI5IDAuMDQ3LTAuNzc1IDAuMTQ3cy0wLjQ3IDAuMjQ5LTAuNjU4IDAuNDM3Yy0wLjE4NyAwLjE4OC0wLjMzNSAwLjQxMS0wLjQzNiAwLjY1Ni0wLjEwMSAwLjI0Ny0wLjE1MSAwLjUxLTAuMTQ4IDAuNzc1IDAuMDA0IDAuMjY2IDAuMDU5IDAuNTI4IDAuMTY0IDAuNzczIDAuMTA1IDAuMjQzIDAuMjU5IDAuNDY0IDAuNDUgMC42NDhsMTIuNTYzIDEyLjU2My0xMi41NjMgMTIuNTYzYy0wLjE5MiAwLjE4NC0wLjM0NSAwLjQwNS0wLjQ1IDAuNjQ4LTAuMTA1IDAuMjQ0LTAuMTYxIDAuNTA3LTAuMTY0IDAuNzczLTAuMDAyIDAuMjY1IDAuMDQ4IDAuNTI4IDAuMTQ4IDAuNzc1IDAuMTAxIDAuMjQ2IDAuMjQ5IDAuNDY4IDAuNDM2IDAuNjU2IDAuMTg4IDAuMTg4IDAuNDEyIDAuMzM3IDAuNjU4IDAuNDM3czAuNTA5IDAuMTUxIDAuNzc1IDAuMTQ4YzAuMjY2LTAuMDA0IDAuNTI4LTAuMDU5IDAuNzcxLTAuMTY0IDAuMjQ0LTAuMTA1IDAuNDY1LTAuMjU5IDAuNjQ5LTAuNDVsMTIuNTYzLTEyLjU2MyAxMi41NjMgMTIuNTYzYzAuMjggMC4yODkgMC42NDIgMC40ODUgMS4wMzYgMC41NjVzMC44MDQgMC4wMzggMS4xNzQtMC4xMTljMC4zNy0wLjE1NyAwLjY4NS0wLjQyMiAwLjkwMi0wLjc1OSAwLjIxOC0wLjMzOSAwLjMyNy0wLjczNSAwLjMxNS0xLjEzOC0wLjAxNi0wLjUxOS0wLjIzMS0xLjAxMS0wLjYwNC0xLjM3M2wtMTIuNTY0LTEyLjU2MyAxMi41NjQtMTIuNTYzYzAuMTktMC4xODcgMC4zNDMtMC40MDggMC40NDctMC42NTQgMC4xMDQtMC4yNDcgMC4xNTctMC41MSAwLjE1Ny0wLjc3N3onJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFXCIpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTsgfVxuICAubW9kYWwuY29sb3Itd2hpdGUgLnNsaWRlb3V0LWdyaWQgLnNsaWRlb3V0LWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7IH1cblxuLm1vZGFsLXNwaW5uZXIge1xuICBkaXNwbGF5OiBub25lO1xuICBoZWlnaHQ6IDIwcHg7XG4gIHBhZGRpbmc6IDEycHggMTZweDtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlOyB9XG4gIC5tb2RhbC1zcGlubmVyID4gZGl2IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgaGVpZ2h0OiAyMHB4O1xuICAgIHdpZHRoOiAycHg7XG4gICAgbWFyZ2luOiAwIDFweDtcbiAgICBib3JkZXItcmFkaXVzOiAxMDBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGO1xuICAgIGFuaW1hdGlvbjogc2stc3RyZXRjaGRlbGF5IDEuMnMgaW5maW5pdGUgZWFzZS1pbi1vdXQ7IH1cbiAgLm1vZGFsLXNwaW5uZXIgLnJlY3QyIHtcbiAgICBhbmltYXRpb24tZGVsYXk6IC0xLjFzOyB9XG4gIC5tb2RhbC1zcGlubmVyIC5yZWN0MyB7XG4gICAgYW5pbWF0aW9uLWRlbGF5OiAtMXM7IH1cbiAgLm1vZGFsLXNwaW5uZXIgLnJlY3Q0IHtcbiAgICBhbmltYXRpb24tZGVsYXk6IC0wLjlzOyB9XG5cbkBrZXlmcmFtZXMgc2stc3RyZXRjaGRlbGF5IHtcbiAgMCUsXG4gIDQwJSxcbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMC41KTsgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpOyB9IH1cblxuQGtleWZyYW1lcyBzbGlkZW91dCB7XG4gIGZyb20ge1xuICAgIGxlZnQ6IC0xMDAlOyB9XG4gIHRvIHtcbiAgICBsZWZ0OiAwOyB9IH1cblxuQGtleWZyYW1lcyBzbGlkZW91dC11cCB7XG4gIGZyb20ge1xuICAgIGJvdHRvbTogLTEwMCU7IH1cbiAgdG8ge1xuICAgIGJvdHRvbTogMDsgfSB9XG4iLCJAY2hhcnNldCAndXRmLTgnO1xuXG5AaW1wb3J0IFwiLi4vc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCIuLi9taXhpbnNcIjtcbkBpbXBvcnQgXCIuLi9mdW5jdGlvbnNcIjtcblxuQGltcG9ydCBcImZvdW5kYXRpb25cIjtcblxuLmJsb2NrZXIge1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xuXHRwYWRkaW5nOiAje21hcC1nZXQoJGdyaWQtY29udGFpbmVyLXBhZGRpbmcsIHNtYWxsKSAvIDJ9O1xuXG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdG92ZXJmbG93OiBhdXRvO1xuXHRcblx0YmFja2dyb3VuZC1jb2xvcjogJGMtYmxhY2stMC0zO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0cG9zaXRpb246IGZpeGVkO1xuXHR0b3A6IDA7XG5cdHJpZ2h0OiAwO1xuXHRib3R0b206IDA7XG5cdGxlZnQ6IDA7XG5cdHotaW5kZXg6IDEwMDAwMDA7XG5cblx0QGluY2x1ZGUgYnJlYWtwb2ludCh4bGFyZ2UpIHtcblx0XHRwYWRkaW5nOiAje21hcC1nZXQoJGdyaWQtY29udGFpbmVyLXBhZGRpbmcsIGxhcmdlKSAvIDJ9O1xuXHR9XG5cblx0Jjo6YmVmb3JlIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdG1hcmdpbi1yaWdodDogLTAuMDVlbTtcblxuXHRcdGNvbnRlbnQ6IFwiXCI7XG5cblx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHR9XG5cblx0Ji5iZWhpbmQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHR9XG5cblx0Lm1vZGFsIHtcblx0XHQmLmxlZnQge1xuXHRcdFx0bGVmdDogMDtcblx0XHR9XG5cdH1cblx0XG59XG5cbi5tb2RhbCB7XG5cdGRpc3BsYXk6IG5vbmU7XG5cdHdpZHRoOiAxMDAlO1xuXHRtYXgtd2lkdGg6IDU4MHB4O1xuXHRwYWRkaW5nOiAyMHB4O1xuXG5cdGJvcmRlci1yYWRpdXM6IDRweDtcblxuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkYy13aGl0ZTtcblx0dGV4dC1hbGlnbjogbGVmdDtcblxuXHRib3gtc2hhZG93OiAwcHggMnB4IDhweCAwcHggJGMtYmxhY2stMC0xO1xuXHRcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR6LWluZGV4OiAxMDAwMDAxO1xuXG5cdEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG5cdFx0cGFkZGluZzogNjBweDtcblx0fVxuXG5cdFxuXG5cdGEuY2xvc2UtbW9kYWwge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHdpZHRoOiA0OHB4O1xuXHRcdGhlaWdodDogNDhweDtcblx0XHRcblx0XHR0ZXh0LWluZGVudDogLTk5OTlweDtcblxuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybChzdmctaW1hZ2UoJ2Nsb3NlJywgJGMtYmxhY2stOTgsIDE4cHgpKTtcblx0XHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRcdGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDEycHg7XG5cdFx0cmlnaHQ6IDhweDtcblx0XHRcblx0XHR0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuM3M7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGMtYmxhY2stMC0xO1xuXG5cdFx0QGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcblx0XHRcdHdpZHRoOiA2MHB4O1xuXHRcdFx0aGVpZ2h0OiA2MHB4O1xuXHRcdFx0dG9wOiA0MHB4O1xuXHRcdFx0cmlnaHQ6IDQwcHg7XG5cdFx0fVxuXHRcdFxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKHN2Zy1pbWFnZSgnY2xvc2UnLCAkYy13aGl0ZSwgMThweCkpO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGMtc2Vjb25kYXJ5O1xuXHRcdFx0Ym9yZGVyOiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC5tb2RhbC10aXRsZSB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTJweDtcblx0XHRAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMTZweDtcblx0XHR9XG5cdH1cblxuXHQubW9kYWwtY29udGVudCB7XG5cdFx0JiA+ICo6bGFzdC1jaGlsZCB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdH1cblx0fVxuXG5cdCYuc2xpZGVvdXQge1xuXHRcdG1heC13aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDgwJTtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XG5cdFx0Ym9yZGVyLXJhZGl1czogMTZweCAxNnB4IDAgMDtcblx0XHRib3R0b206IDA7XG5cdFx0bGVmdDogMDtcblxuXHRcdGFuaW1hdGlvbjogc2xpZGVvdXQtdXAgMC41cyBmb3J3YXJkcztcblx0XHRcblx0XHRAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuXHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0bWF4LXdpZHRoOiA4MDBweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IHVuc2V0O1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0Ym90dG9tOiB1bnNldDtcblxuXHRcdFx0YW5pbWF0aW9uOiBzbGlkZW91dCAwLjVzIGZvcndhcmRzO1xuXHRcdH1cblxuXHRcdC5tb2RhbC1jb250ZW50IHtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHR9XG5cblx0XHQuc2xpZGVvdXQtZ3JpZCB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRcdG1heC1oZWlnaHQ6IDEwMCU7XG5cblx0XHRcdC5zbGlkZW91dC10aXRsZSB7XG5cdFx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0XHRmbGV4LWdyb3c6IDA7XG5cdFx0XHRcdGZsZXgtYmFzaXM6IGF1dG87XG5cdFx0XHR9XG5cblx0XHRcdC5zbGlkZW91dC1jb250ZW50IHtcblx0XHRcdFx0ZmxleC1zaHJpbms6IDE7XG5cdFx0XHRcdGZsZXgtZ3JvdzogMTtcblx0XHRcdFx0ZmxleC1iYXNpczogMTAwJTtcblx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAtMTZweDtcblx0XHRcdFx0cGFkZGluZy1yaWdodDogMTZweDtcblx0XHRcdFx0b3ZlcmZsb3cteTogYXV0bztcblx0XHRcdFxuXHRcdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuXHRcdFx0XHRcdG1hcmdpbi1yaWdodDogLTUycHg7XG5cdFx0XHRcdFx0cGFkZGluZy1yaWdodDogNTJweDtcblx0XHRcdFx0fVxuXHRcdFx0XG5cdFx0XHRcdCY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcblx0XHRcdFx0XHR3aWR0aDogNHB4O1xuXG5cdFx0XHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcblx0XHRcdFx0XHRcdHdpZHRoOiA2cHg7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcblx0XHRcdFx0Jjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuXHRcdFx0XHRcdGJhY2tncm91bmQ6ICRjLWJsYWNrLTAtNDsgXHRcblx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiAycHg7XG5cblx0XHRcdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuXHRcdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdCYuY29sb3Itd2hpdGUge1xuXHRcdGEuY2xvc2UtbW9kYWwge1xuXHRcdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKHN2Zy1pbWFnZSgnY2xvc2UnLCAkYy13aGl0ZSwgMThweCkpO1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJGMtd2hpdGUtMC00O1xuXHRcdH1cblx0XHQuc2xpZGVvdXQtZ3JpZCB7XG5cdFx0XHQuc2xpZGVvdXQtY29udGVudCB7XG5cdFx0XHRcdCY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAkYy13aGl0ZS0wLTY7IFx0XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLm1vZGFsLXNwaW5uZXIge1xuXHRkaXNwbGF5OiBub25lO1xuXHRoZWlnaHQ6IDIwcHg7XG5cdHBhZGRpbmc6IDEycHggMTZweDtcblxuXHRib3JkZXItcmFkaXVzOiA1cHg7XG5cdGJhY2tncm91bmQtY29sb3I6ICRjLWJsYWNrO1xuXHRcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG5cblx0cG9zaXRpb246IGZpeGVkO1xuXHR0b3A6IDUwJTtcblx0bGVmdDogNTAlO1xuXG5cdCYgPiBkaXYge1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRoZWlnaHQ6IDIwcHg7XG5cdFx0d2lkdGg6IDJweDtcblx0XHRtYXJnaW46IDAgMXB4O1xuXHRcblx0XHRib3JkZXItcmFkaXVzOiAxMDBweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkYy13aGl0ZTtcblx0XHRcblx0XHRhbmltYXRpb246IHNrLXN0cmV0Y2hkZWxheSAxLjJzIGluZmluaXRlIGVhc2UtaW4tb3V0O1xuXHR9XG5cblx0LnJlY3QyIHtcblx0XHRhbmltYXRpb24tZGVsYXk6IC0xLjFzO1xuXHR9XG5cblx0LnJlY3QzIHtcblx0XHRhbmltYXRpb24tZGVsYXk6IC0xcztcblx0fVxuXG5cdC5yZWN0NCB7XG5cdFx0YW5pbWF0aW9uLWRlbGF5OiAtMC45cztcblx0fVxufVxuXG5Aa2V5ZnJhbWVzIHNrLXN0cmV0Y2hkZWxheSB7XG5cdDAlLFxuXHQ0MCUsXG5cdDEwMCUge1xuXHRcdHRyYW5zZm9ybTogc2NhbGVZKDAuNSk7XG5cdH1cblx0MjAlIHtcblx0XHR0cmFuc2Zvcm06IHNjYWxlWSgxKTtcblx0fVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlb3V0IHtcblx0ZnJvbSB7XG5cdFx0bGVmdDogLTEwMCU7IFxuXHR9XG5cdHRvIHtcblx0XHRsZWZ0OiAwO1xuXHR9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVvdXQtdXAge1xuXHRmcm9tIHtcblx0XHRib3R0b206IC0xMDAlOyBcblx0fVxuXHR0byB7XG5cdFx0Ym90dG9tOiAwO1xuXHR9XG59IiwiLy8gY29sb3IgcGFsZXR0c1xuJHByaW1hcnktcGFsZXR0ZTogKFxuXHRub3JtYWw6ICMwMDYwNzIsXG4gICAgZGFyazogIzAwNTI2Mixcbik7XG5cbiRzZWNvbmRhcnktcGFsZXR0ZTogKFxuICAgIG5vcm1hbDogI0E4QUQwMCxcbiAgICBkYXJrOiAjOTg5QzAwLFxuICAgIGxpZ2h0OiAjQ0FDRTQyXG4pO1xuXG4kdGVydGlhcnktcGFsZXR0ZTogKFxuICAgIG5vcm1hbDogIzFBMjk1QlxuKTtcblxuJGdyYXlzY2FsZS1wYWxldHRlOiAoXG5cdGJsYWNrOiAjMDAwMDAwLFxuICAgIGJsYWNrLTk4OiAjMEQwRDBELFxuICAgIGJsYWNrLTg1OiAjMkMyQzJDLCBcbiAgICBibGFjay03MDogIzUzNTM1MyxcbiAgICBibGFjay02MDogIzY4Njg2OCxcbiAgICBibGFjay00MDogIzlCOUI5QixcbiAgICBibGFjay0yNTogI0MyQzJDMixcbiAgICBibGFjay0xMjogI0RERERERCxcbiAgICBibGFjay0xMDogI0U1RTVFNSxcbiAgICBibGFjay0wODogI0U3RTdFNyxcbiAgICBibGFjay0wNzogI0VFRUVFRSxcbiAgICBibGFjay0wMzogI0Y0RjRGNCxcbiAgICBibGFjay0wMjogI0Y2RjZGNixcbiAgICBibGFjay0wMTogI0ZBRkFGQSxcblxuICAgIHdoaXRlOiAjRkZGRkZGLFxuKTtcblxuJGdyYWRpZW50LXBhbGV0dGU6IChcblxuKTtcblxuJGZvdW5kYXRpb24tcGFsZXR0ZTogKFxuICAgIFwicHJpbWFyeVwiOiBtYXAtZ2V0KCRwcmltYXJ5LXBhbGV0dGUsIG5vcm1hbCksXG4gICAgXCJzZWNvbmRhcnlcIjogbWFwLWdldCgkcHJpbWFyeS1wYWxldHRlLCBub3JtYWwpLFxuICAgIFwic3VjY2Vzc1wiOiAjNjhDODRELFxuICAgIFwid2FybmluZ1wiOiAjRkZDRjAyLFxuICAgIFwiYWxlcnRcIjogI0QyMzMyQSxcbik7XG5cbiR0cmFuc3BhcmVudC1wYWxldHRlOiAoXG4gICAgYmxhY2stMC01OiByZ2JhKG1hcC1nZXQoJGdyYXlzY2FsZS1wYWxldHRlLCBibGFjayksIDAuNSksXG4gICAgYmxhY2stMC00OiByZ2JhKG1hcC1nZXQoJGdyYXlzY2FsZS1wYWxldHRlLCBibGFjayksIDAuNCksXG4gICAgYmxhY2stMC0zOiByZ2JhKG1hcC1nZXQoJGdyYXlzY2FsZS1wYWxldHRlLCBibGFjayksIDAuMyksXG4gICAgYmxhY2stMC0yOiByZ2JhKG1hcC1nZXQoJGdyYXlzY2FsZS1wYWxldHRlLCBibGFjayksIDAuMiksXG4gICAgYmxhY2stMC0xOiByZ2JhKG1hcC1nZXQoJGdyYXlzY2FsZS1wYWxldHRlLCBibGFjayksIDAuMSksXG4gICAgYmxhY2stMC0wNTogcmdiYShtYXAtZ2V0KCRncmF5c2NhbGUtcGFsZXR0ZSwgYmxhY2spLCAwLjA1KSxcbiAgICBibGFjay0wLTAyOiByZ2JhKG1hcC1nZXQoJGdyYXlzY2FsZS1wYWxldHRlLCBibGFjayksIDAuMDIpLFxuXG4gICAgd2hpdGUtMC04OiByZ2JhKG1hcC1nZXQoJGdyYXlzY2FsZS1wYWxldHRlLCB3aGl0ZSksIDAuOCksXG4gICAgd2hpdGUtMC02OiByZ2JhKG1hcC1nZXQoJGdyYXlzY2FsZS1wYWxldHRlLCB3aGl0ZSksIDAuNiksXG4gICAgd2hpdGUtMC00OiByZ2JhKG1hcC1nZXQoJGdyYXlzY2FsZS1wYWxldHRlLCB3aGl0ZSksIDAuNCksXG4gICAgd2hpdGUtMC0zOiByZ2JhKG1hcC1nZXQoJGdyYXlzY2FsZS1wYWxldHRlLCB3aGl0ZSksIDAuMyksXG4gICAgd2hpdGUtMC0yOiByZ2JhKG1hcC1nZXQoJGdyYXlzY2FsZS1wYWxldHRlLCB3aGl0ZSksIDAuMiksXG4gICAgd2hpdGUtMC0xOiByZ2JhKG1hcC1nZXQoJGdyYXlzY2FsZS1wYWxldHRlLCB3aGl0ZSksIDAuMSksXG4gICAgd2hpdGUtMC0wNTogcmdiYShtYXAtZ2V0KCRncmF5c2NhbGUtcGFsZXR0ZSwgd2hpdGUpLCAwLjA1KSxcbik7XG5cbi8vIGNvbG9yIHZhcmlhYmxlc1xuJGMtcHJpbWFyeTogbWFwLWdldCgkcHJpbWFyeS1wYWxldHRlLCBub3JtYWwpO1xuJGMtcHJpbWFyeS1kYXJrOiBtYXAtZ2V0KCRwcmltYXJ5LXBhbGV0dGUsIGRhcmspO1xuXG4kYy1zZWNvbmRhcnk6IG1hcC1nZXQoJHNlY29uZGFyeS1wYWxldHRlLCBub3JtYWwpO1xuJGMtc2Vjb25kYXJ5LWRhcms6IG1hcC1nZXQoJHNlY29uZGFyeS1wYWxldHRlLCBkYXJrKTtcbiRjLXNlY29uZGFyeS1saWdodDogbWFwLWdldCgkc2Vjb25kYXJ5LXBhbGV0dGUsIGxpZ2h0KTtcblxuJGMtdGVydGlhcnk6IG1hcC1nZXQoJHRlcnRpYXJ5LXBhbGV0dGUsIG5vcm1hbCk7XG5cbiRjLWJsYWNrOiBtYXAtZ2V0KCRncmF5c2NhbGUtcGFsZXR0ZSwgYmxhY2spO1xuJGMtYmxhY2stOTg6IG1hcC1nZXQoJGdyYXlzY2FsZS1wYWxldHRlLCBibGFjay05OCk7XG4kYy1ibGFjay04NTogbWFwLWdldCgkZ3JheXNjYWxlLXBhbGV0dGUsIGJsYWNrLTg1KTtcbiRjLWJsYWNrLTcwOiBtYXAtZ2V0KCRncmF5c2NhbGUtcGFsZXR0ZSwgYmxhY2stNzApO1xuJGMtYmxhY2stNjA6IG1hcC1nZXQoJGdyYXlzY2FsZS1wYWxldHRlLCBibGFjay02MCk7XG4kYy1ibGFjay00MDogbWFwLWdldCgkZ3JheXNjYWxlLXBhbGV0dGUsIGJsYWNrLTQwKTtcbiRjLWJsYWNrLTI1OiBtYXAtZ2V0KCRncmF5c2NhbGUtcGFsZXR0ZSwgYmxhY2stMjUpO1xuJGMtYmxhY2stMTI6IG1hcC1nZXQoJGdyYXlzY2FsZS1wYWxldHRlLCBibGFjay0xMik7XG4kYy1ibGFjay0xMDogbWFwLWdldCgkZ3JheXNjYWxlLXBhbGV0dGUsIGJsYWNrLTEwKTtcbiRjLWJsYWNrLTA4OiBtYXAtZ2V0KCRncmF5c2NhbGUtcGFsZXR0ZSwgYmxhY2stMDgpO1xuJGMtYmxhY2stMDc6IG1hcC1nZXQoJGdyYXlzY2FsZS1wYWxldHRlLCBibGFjay0wNyk7XG4kYy1ibGFjay0wMzogbWFwLWdldCgkZ3JheXNjYWxlLXBhbGV0dGUsIGJsYWNrLTAzKTtcbiRjLWJsYWNrLTAyOiBtYXAtZ2V0KCRncmF5c2NhbGUtcGFsZXR0ZSwgYmxhY2stMDIpO1xuJGMtYmxhY2stMDE6IG1hcC1nZXQoJGdyYXlzY2FsZS1wYWxldHRlLCBibGFjay0wMSk7XG5cbiRjLWdyYXk6IG1hcC1nZXQoJGdyYXlzY2FsZS1wYWxldHRlLCBibGFjay0yNSk7XG4kYy1ncmF5LWRhcms6IG1hcC1nZXQoJGdyYXlzY2FsZS1wYWxldHRlLCBibGFjay02MCk7XG4kYy1ncmF5LWxpZ2h0OiBtYXAtZ2V0KCRncmF5c2NhbGUtcGFsZXR0ZSwgYmxhY2stMTApO1xuXG4kYy13aGl0ZTogbWFwLWdldCgkZ3JheXNjYWxlLXBhbGV0dGUsIHdoaXRlKTtcblxuLy90cmFuc3BhcmVudCB2YXJpYWJsZXNcbiRjLWJsYWNrLTAtNTogbWFwLWdldCgkdHJhbnNwYXJlbnQtcGFsZXR0ZSwgYmxhY2stMC01KTtcbiRjLWJsYWNrLTAtNDogbWFwLWdldCgkdHJhbnNwYXJlbnQtcGFsZXR0ZSwgYmxhY2stMC00KTtcbiRjLWJsYWNrLTAtMzogbWFwLWdldCgkdHJhbnNwYXJlbnQtcGFsZXR0ZSwgYmxhY2stMC0zKTtcbiRjLWJsYWNrLTAtMjogbWFwLWdldCgkdHJhbnNwYXJlbnQtcGFsZXR0ZSwgYmxhY2stMC0yKTtcbiRjLWJsYWNrLTAtMTogbWFwLWdldCgkdHJhbnNwYXJlbnQtcGFsZXR0ZSwgYmxhY2stMC0xICk7XG4kYy1ibGFjay0wLTA1OiBtYXAtZ2V0KCR0cmFuc3BhcmVudC1wYWxldHRlLCBibGFjay0wLTA1KTtcbiRjLWJsYWNrLTAtMDI6IG1hcC1nZXQoJHRyYW5zcGFyZW50LXBhbGV0dGUsIGJsYWNrLTAtMDIpO1xuJGMtd2hpdGUtMC04OiBtYXAtZ2V0KCR0cmFuc3BhcmVudC1wYWxldHRlLCB3aGl0ZS0wLTgpO1xuJGMtd2hpdGUtMC02OiBtYXAtZ2V0KCR0cmFuc3BhcmVudC1wYWxldHRlLCB3aGl0ZS0wLTYpO1xuJGMtd2hpdGUtMC00OiBtYXAtZ2V0KCR0cmFuc3BhcmVudC1wYWxldHRlLCB3aGl0ZS0wLTQpO1xuJGMtd2hpdGUtMC0zOiBtYXAtZ2V0KCR0cmFuc3BhcmVudC1wYWxldHRlLCB3aGl0ZS0wLTMpO1xuJGMtd2hpdGUtMC0yOiBtYXAtZ2V0KCR0cmFuc3BhcmVudC1wYWxldHRlLCB3aGl0ZS0wLTIpO1xuJGMtd2hpdGUtMC0xOiBtYXAtZ2V0KCR0cmFuc3BhcmVudC1wYWxldHRlLCB3aGl0ZS0wLTEpO1xuJGMtd2hpdGUtMC0wNTogbWFwLWdldCgkdHJhbnNwYXJlbnQtcGFsZXR0ZSwgd2hpdGUtMC0wNSk7XG5cbiRjLWFsZXJ0OiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIGFsZXJ0KTtcbiRjLXdhcm5pbmc6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgd2FybmluZyk7XG4kYy1zdWNjZXNzOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHN1Y2Nlc3MpO1xuXG4vLyBjb2xvciB1c2VkIGluIGhlbHBlcmVzXG4kY29sb3ItY2xhc3NlczogKFxuICAgIHByaW1hcnk6ICRjLXByaW1hcnksXG4gICAgc2Vjb25kYXJ5OiAkYy1zZWNvbmRhcnksXG4gICAgc2Vjb25kYXJ5LWRhcms6ICRjLXNlY29uZGFyeS1kYXJrLFxuICAgIHRlcnRpYXJ5OiAkYy10ZXJ0aWFyeSxcblxuICAgIGJsYWNrOiAkYy1ibGFjayxcbiAgICBibGFjay05ODogJGMtYmxhY2stOTgsXG4gICAgYmxhY2stODU6ICRjLWJsYWNrLTg1LFxuICAgIGJsYWNrLTcwOiAkYy1ibGFjay03MCxcbiAgICBibGFjay02MDogJGMtYmxhY2stNjAsXG4gICAgYmxhY2stNDA6ICRjLWJsYWNrLTQwLFxuICAgIGJsYWNrLTI1OiAkYy1ibGFjay0yNSxcbiAgICBibGFjay0xMjokYy1ibGFjay0xMixcbiAgICBibGFjay0wLTU6ICRjLWJsYWNrLTAtNSxcbiAgICBibGFjay0wLTM6ICRjLWJsYWNrLTAtMyxcbiAgICBibGFjay0wLTI6ICRjLWJsYWNrLTAtMixcbiAgICBibGFjay0wLTA1OiAkYy1ibGFjay0wLTA1LFxuICAgIGJsYWNrLTAtMDI6ICRjLWJsYWNrLTAtMDIsXG4gICAgXG4gICAgd2hpdGU6ICRjLXdoaXRlLFxuICAgIHdoaXRlLTAtODogJGMtd2hpdGUtMC04LFxuICAgIHdoaXRlLTAtNjogJGMtd2hpdGUtMC02LFxuICAgIHdoaXRlLTAtNDogJGMtd2hpdGUtMC00LFxuICAgIHdoaXRlLTAtMzogJGMtd2hpdGUtMC0zLFxuICAgIHdoaXRlLTAtMjogJGMtd2hpdGUtMC0yLFxuICAgIHdoaXRlLTAtMTogJGMtd2hpdGUtMC0xLFxuICAgIHdoaXRlLTAtMDU6ICRjLXdoaXRlLTAtMDUsXG4pO1xuXG4kYmFja2dyb3VuZC1jbGFzc2VzOiAoXG4gICAgcHJpbWFyeTogJGMtcHJpbWFyeSxcbiAgICBzZWNvbmRhcnk6ICRjLXNlY29uZGFyeSxcbiAgICB0ZXJ0aWFyeTogJGMtdGVydGlhcnksXG5cbiAgICBibGFjazogJGMtYmxhY2ssXG4gICAgYmxhY2stMTA6ICRjLWJsYWNrLTEwLFxuICAgIGJsYWNrLTAzOiAkYy1ibGFjay0wMyxcbiAgICBibGFjay0wMjogJGMtYmxhY2stMDIsXG4gICAgXG4gICAgYmxhY2stMC01OiAkYy1ibGFjay0wLTUsXG4gICAgYmxhY2stMC00OiAkYy1ibGFjay0wLTQsXG4gICAgYmxhY2stMC0zOiAkYy1ibGFjay0wLTMsXG4gICAgYmxhY2stMC0yOiAkYy1ibGFjay0wLTIsXG4gICAgYmxhY2stMC0wNTogJGMtYmxhY2stMC0wNSxcbiAgICBibGFjay0wLTAyOiAkYy1ibGFjay0wLTAyLFxuICAgIFxuICAgIHdoaXRlOiAkYy13aGl0ZSxcbiAgICB3YXJuaW5nOiAkYy13YXJuaW5nLFxuICAgIGFsZXJ0OiAkYy1hbGVydFxuKTtcblxuLy8gb3ZlcnJpZGUgZm91bmRhdGlvbiBjb2xvcnNcbiRibGFjazogJGMtYmxhY2s7XG4kZGFyay1ncmF5OiAkYy1ibGFjay02MDtcbiRtZWRpdW0tZ3JheTogJGMtYmxhY2stMjU7XG4kbGlnaHQtZ3JheTogJGMtYmxhY2stMTA7XG4kd2hpdGU6ICRjLXdoaXRlO1xuXG4kYWxlcnQ6ICRjLWFsZXJ0O1xuJHdhcm5pbmc6ICRjLXdhcm5pbmc7XG4kc3VjY2VzczogJGMtc3VjY2VzczsiLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnJlYWtwb2ludHNcbi8vLy9cblxuLy8vIFBhdGNoIHRvIGZpeCBpc3N1ZSAjMTIwODBcbiQtemYtc2l6ZTogbnVsbDtcblxuLy8vIEEgbGlzdCBvZiBuYW1lZCBicmVha3BvaW50cy4gWW91IGNhbiB1c2UgdGhlc2Ugd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gcXVpY2tseSBjcmVhdGUgbWVkaWEgcXVlcmllcy5cbi8vLyBAdHlwZSBNYXBcbiRicmVha3BvaW50czogKFxuICBcInNtYWxsXCI6IDAsXG4gIFwibWVkaXVtXCI6IDY0MHB4LFxuICBcImxhcmdlXCI6IDEwMjRweCxcbiAgXCJ4bGFyZ2VcIjogMTIwMHB4LFxuICBcInh4bGFyZ2VcIjogMTQ0MHB4LFxuKSAhZGVmYXVsdDtcblxuLy8vIEEgbGlzdCBvZiBuYW1lZCBIaURQSSBicmVha3BvaW50cy4gWW91IGNhbiB1c2UgdGhlc2Ugd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gcXVpY2tseSBjcmVhdGUgbWVkaWEgcXVlcmllcyBmb3IgcmVzb2x1dGlvbnMuXG4vLy8gVmFsdWVzIG11c3QgcmVwcmVzZW50IHRoZSBkZXZpY2UgcGl4ZWxzIC8gd2ViIHBpeGVscyByYXRpb24gYW5kIGJlIHVuaXRsZXNzIG9yIGluIERQUFguXG4vLy8gQHR5cGUgTWFwXG4kYnJlYWtwb2ludHMtaGlkcGk6IChcbiAgXCJoaWRwaS0xXCI6IDEsXG4gIFwiaGlkcGktMS01XCI6IDEuNSxcbiAgXCJoaWRwaS0yXCI6IDIsXG4gIFwicmV0aW5hXCI6IDIsXG4gIFwiaGlkcGktM1wiOiAzXG4pICFkZWZhdWx0O1xuXG4vLy8gVGhlIGxhcmdlc3QgbmFtZWQgYnJlYWtwb2ludCBpbiB3aGljaCB0byBpbmNsdWRlIHByaW50IGFzIGEgbWVkaWEgdHlwZVxuLy8vIEB0eXBlIEtleXdvcmRcbiRwcmludC1icmVha3BvaW50OiBsYXJnZSAhZGVmYXVsdDtcblxuJC16Zi16ZXJvLWJyZWFrcG9pbnQ6IHNtYWxsICFkZWZhdWx0O1xuXG4kLXpmLWJyZWFrcG9pbnRzLWtleXM6IG1hcC10by1saXN0KCRicmVha3BvaW50cywgJ2tleXMnKTtcblxuQGlmIG50aChtYXAtdmFsdWVzKCRicmVha3BvaW50cyksIDEpICE9IDAge1xuICBAZXJyb3IgJ1RoZSBmaXJzdCBrZXkgaW4gdGhlICRicmVha3BvaW50cyBtYXAgbXVzdCBoYXZlIGEgdmFsdWUgb2YgXCIwXCIuJztcbn1cbkBlbHNlIHtcbiAgJC16Zi16ZXJvLWJyZWFrcG9pbnQ6IG50aChtYXAta2V5cygkYnJlYWtwb2ludHMpLCAxKTtcbn1cblxuLy8vIEFsbCBvZiB0aGUgbmFtZXMgaW4gdGhpcyBsaXN0IHdpbGwgYmUgb3V0cHV0IGFzIGNsYXNzZXMgaW4geW91ciBDU1MsIGxpa2UgYC5zbWFsbC0xMmAsIGAubWVkaXVtLTZgLCBhbmQgc28gb24uIEVhY2ggdmFsdWUgaW4gdGhpcyBsaXN0IG11c3QgYWxzbyBiZSBpbiB0aGUgYCRicmVha3BvaW50c2AgbWFwLlxuLy8vIEB0eXBlIExpc3RcbiRicmVha3BvaW50LWNsYXNzZXM6IChzbWFsbCBtZWRpdW0gbGFyZ2UpICFkZWZhdWx0O1xuXG4vLy8gR2VuZXJhdGVzIGEgbWVkaWEgcXVlcnkgc3RyaW5nIG1hdGNoaW5nIHRoZSBpbnB1dCB2YWx1ZS4gUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBzZWUgd2hhdCB0aGUgcG9zc2libGUgaW5wdXRzIGFyZS5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWwgW3NtYWxsXSAtIEJyZWFrcG9pbnQgbmFtZSwgb3IgcHgsIHJlbSwgb3IgZW0gdmFsdWUgdG8gcHJvY2Vzcy5cbkBmdW5jdGlvbiBicmVha3BvaW50KCR2YWw6ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gIC8vIFdlYiBzdGFuZGFyZCBQaXhlbHMgcGVyIGluY2guICgxZGRweCAvICRzdGQtd2ViLWRwaSkgPSAxZHBpXG4gIC8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXZhbHVlcy0zLyNhYnNvbHV0ZS1sZW5ndGhzXG4gICRzdGQtd2ViLWRwaTogOTY7XG5cbiAgLy8gU2l6ZSBvciBrZXl3b3JkXG4gICRicDogbnRoKCR2YWwsIDEpO1xuICAvLyBWYWx1ZSBvZiB0aGUgZm9sbG93aW5nIGJyZWFrcG9pbnRcbiAgJGJwLW5leHQ6IG51bGw7XG4gIC8vIFZhbHVlIGZvciBtYXgtd2lkdGggbWVkaWEgcXVlcmllc1xuICAkYnAtbWluOiBudWxsO1xuICAvLyBWYWx1ZSBmb3IgbWluLXdpZHRoIG1lZGlhIHF1ZXJpZXNcbiAgJGJwLW1heDogbnVsbDtcbiAgLy8gRGlyZWN0aW9uIG9mIG1lZGlhIHF1ZXJ5ICh1cCwgZG93biwgb3Igb25seSlcbiAgJGRpcjogaWYobGVuZ3RoKCR2YWwpID4gMSwgbnRoKCR2YWwsIDIpLCB1cCk7XG4gIC8vIElmIG5hbWVkLCBuYW1lIG9mIHRoZSBicmVha3BvaW50XG4gICRuYW1lOiBudWxsO1xuICAvLyBJZiB0aGUgYnJlYWtwb2ludCBpcyBhIEhpRFBJIGJyZWFrcG9pbnRcbiAgJGhpZHBpOiBmYWxzZTtcblxuICAvLyBPcmllbnRhdGlvbiBtZWRpYSBxdWVyaWVzIGhhdmUgYSB1bmlxdWUgc3ludGF4XG4gIEBpZiAkYnAgPT0gJ2xhbmRzY2FwZScgb3IgJGJwID09ICdwb3J0cmFpdCcge1xuICAgIEByZXR1cm4gJyhvcmllbnRhdGlvbjogI3skYnB9KSc7XG4gIH1cblxuICAvLyBJZiBhIGJyZWFrcG9pbnQgbmFtZSBpcyBnaXZlbiwgZ2V0IGl0cyB2YWx1ZSBmcm9tIHRoZSAkYnJlYWtwb2ludHMvJGJyZWFrcG9pbnRzLWhpZHBpIG1hcC5cbiAgQGlmIHR5cGUtb2YoJGJwKSA9PSAnc3RyaW5nJyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJGJwKSB7XG4gICAgICAkbmFtZTogJGJwO1xuICAgICAgJGJwOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICAgICAgJGJwLW5leHQ6IC16Zi1tYXAtbmV4dCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgICB9XG4gICAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLWhpZHBpLCAkYnApIHtcbiAgICAgICRuYW1lOiAkYnA7XG4gICAgICAkYnA6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLWhpZHBpLCAkbmFtZSk7XG4gICAgICAkYnAtbmV4dDogLXpmLW1hcC1uZXh0LW51bWJlcigkYnJlYWtwb2ludHMtaGlkcGksICRicCk7XG4gICAgICAkaGlkcGk6IHRydWU7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRicDogMDtcbiAgICAgIEB3YXJuICdicmVha3BvaW50KCk6IFwiI3skdmFsfVwiIGlzIG5vdCBkZWZpbmVkIGluIHlvdXIgYCRicmVha3BvaW50c2Agb3IgYCRicmVha3BvaW50cy1oaWRwaWAgc2V0dGluZy4nO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBub3QgJG5hbWUgYW5kICRkaXIgPT0gJ29ubHknIHtcbiAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBPbmx5IG5hbWVkIG1lZGlhIHF1ZXJpZXMgY2FuIGhhdmUgYW4gYG9ubHlgIHJhbmdlLic7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gT25seSAnb25seScgYW5kICd1cCcgaGF2ZSBhIG1pbiBsaW1pdC5cbiAgQGlmICRkaXIgPT0gJ29ubHknIG9yICRkaXIgPT0gJ3VwJyB7XG4gICAgJGJwLW1pbjogaWYoJGhpZHBpLCBzdHJpcC11bml0KCRicCksIC16Zi1icC10by1lbSgkYnApKTtcbiAgfVxuICAvLyBPbmx5ICdvbmx5JyBhbmQgJ2Rvd24nIGhhdmUgYSBtYXggbGltaXQuXG4gIEBpZiAkZGlyID09ICdvbmx5JyBvciAkZGlyID09ICdkb3duJyB7XG4gICAgLy8gSWYgdGhlIGJyZWFrcG9pbnQgaXMgYSB2YWx1ZSwgdXNlIGl0IGFzIG1heCBsaW1pdC5cbiAgICBAaWYgbm90ICRuYW1lIHtcbiAgICAgICRicC1tYXg6IGlmKCRoaWRwaSwgc3RyaXAtdW5pdCgkYnApLCAtemYtYnAtdG8tZW0oJGJwKSk7XG4gICAgfVxuICAgIC8vIElmIHRoZSBicmVha3BvaW50IGlzIG5hbWVkLCB0aGUgbWF4IGxpbWl0IGlzIHRoZSBmb2xsb3dpbmcgYnJlYWtwb2ludCAtIDFweC5cbiAgICBAZWxzZSBpZiAkYnAtbmV4dCB7XG4gICAgICAvLyBNYXggdmFsdWUgaXMgMC4ycHggdW5kZXIgdGhlIG5leHQgYnJlYWtwb2ludCAoMC4wMiAvIDE2ID0gMC4wMDEyNSkuXG4gICAgICAvLyBVc2UgYSBwcmVjaXNpb24gdW5kZXIgMXB4IHRvIHN1cHBvcnQgYnJvd3NlciB6b29tLCBidXQgbm90IHRvIGxvdyB0byBhdm9pZCByb3VuZGluZy5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZm91bmRhdGlvbi9mb3VuZGF0aW9uLXNpdGVzL2lzc3Vlcy8xMTMxM1xuICAgICAgJGJwLW1heDogaWYoJGhpZHBpLCAkYnAtbmV4dCAtIGRpdmlkZSgxLCAkc3RkLXdlYi1kcGkpLCAtemYtYnAtdG8tZW0oJGJwLW5leHQpIC0gMC4wMDEyNSk7XG4gICAgfVxuICB9XG5cbiAgLy8gR2VuZXJhdGUgdGhlIG1lZGlhIHF1ZXJ5IHN0cmluZyBmcm9tIG1pbiBhbmQgbWF4IGxpbWl0cy5cbiAgQGlmICRoaWRwaSB7XG4gICAgLy8gR2VuZXJhdGUgdmFsdWVzIGluIERQSSBpbnN0ZWFkIG9mIERQUFggZm9yIGFuIElFOS0xMS9PcGVyYSBtaW5pIGNvbXBhdGliaWxpdHkuXG4gICAgLy8gU2VlIGh0dHBzOi8vY2FuaXVzZS5jb20vI2ZlYXQ9Y3NzLW1lZGlhLXJlc29sdXRpb25cbiAgICAkYnAtbWluLWRwaTogaWYoJGJwLW1pbiwgJGJwLW1pbiAqICRzdGQtd2ViLWRwaSAqIDFkcGksICRicC1taW4pO1xuICAgICRicC1tYXgtZHBpOiBpZigkYnAtbWF4LCAkYnAtbWF4ICogJHN0ZC13ZWItZHBpICogMWRwaSwgJGJwLW1heCk7XG4gICAgQHJldHVybiB6Zi1zdHItam9pbihcbiAgICAgIC16Zi1icC1qb2luKCRicC1taW4sICRicC1tYXgsICctd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW8nLCAnLXdlYmtpdC1tYXgtZGV2aWNlLXBpeGVsLXJhdGlvJyksXG4gICAgICAtemYtYnAtam9pbigkYnAtbWluLWRwaSwgJGJwLW1heC1kcGksICdtaW4tcmVzb2x1dGlvbicsICdtYXgtcmVzb2x1dGlvbicpLFxuICAgICAgJywgJyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gLXpmLWJwLWpvaW4oJGJwLW1pbiwgJGJwLW1heCk7XG4gIH1cbn1cblxuLy8vIFdyYXBzIGEgbWVkaWEgcXVlcnkgYXJvdW5kIHRoZSBjb250ZW50IHlvdSBwdXQgaW5zaWRlIHRoZSBtaXhpbi4gVGhpcyBtaXhpbiBhY2NlcHRzIGEgbnVtYmVyIG9mIHZhbHVlczpcbi8vLyAgLSBJZiBhIHN0cmluZyBpcyBwYXNzZWQsIHRoZSBtaXhpbiB3aWxsIGxvb2sgZm9yIGl0IGluIHRoZSBgJGJyZWFrcG9pbnRzYCBhbmQgYCRicmVha3BvaW50cy1oaWRwaWAgbWFwcywgYW5kIHVzZSBhIG1lZGlhIHF1ZXJ5IHRoZXJlLlxuLy8vICAtIElmIGEgcGl4ZWwgdmFsdWUgaXMgcGFzc2VkLCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBlbSB2YWx1ZSB1c2luZyBgJGdsb2JhbC1mb250LXNpemVgIGFzIHRoZSBiYXNlLlxuLy8vICAtIElmIGEgcmVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHVuaXQgd2lsbCBiZSBjaGFuZ2VkIHRvIGVtLlxuLy8vICAtIElmIGFuIGVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZCBhcy1pcy5cbi8vL1xuLy8vIElmIG11bHRpcGxlIHZhbHVlcyBhcmUgcGFzc2VkLCB0aGUgbWl4aW4gd2lsbCBnZW5lcmF0ZSBhIG1lZGlhIHF1ZXJ5IGZvciBlYWNoIG9mIHRoZW0gYXMgZGVzY3JpYmVkIGFib3ZlLlxuLy8vIFNpbmNlIHRoZSBjb250ZW50IGlzIGR1cGxpY2F0ZWQgZm9yIGVhY2ggYnJlYWtwb2ludCwgdGhpcyBtaXhpbiBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggcHJvcGVydGllcyB0aGF0XG4vLy8gY2hhbmdlIGFjcm9zcyBicmVha3BvaW50cy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWx1ZXMuLi4gLSBCcmVha3BvaW50IG5hbWUgb3IgcHgvcmVtL2VtIHZhbHVlIHRvIHByb2Nlc3MuXG4vLy9cbi8vLyBAb3V0cHV0IElmIHRoZSBicmVha3BvaW50IGlzIFwiMHB4IGFuZCBsYXJnZXJcIiwgb3V0cHV0cyB0aGUgY29udGVudCBhcy1pcy4gT3RoZXJ3aXNlLCBvdXRwdXRzIHRoZSBjb250ZW50IHdyYXBwZWQgaW4gYSBtZWRpYSBxdWVyeS5cbkBtaXhpbiBicmVha3BvaW50KCR2YWx1ZXMuLi4pIHtcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHZhbHVlcykge1xuICAgICR2YWx1ZTogbnRoKCR2YWx1ZXMsICRpKTtcbiAgICAkc3RyOiBicmVha3BvaW50KCR2YWx1ZSk7XG4gICAgJGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsIG50aCgkdmFsdWUsIDEpKTtcbiAgICAkcGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsICRwcmludC1icmVha3BvaW50KTtcbiAgICAvLyBEaXJlY3Rpb24gb2YgbWVkaWEgcXVlcnkgKHVwLCBkb3duLCBvciBvbmx5KVxuICAgICRkaXI6IGlmKGxlbmd0aCgkdmFsdWUpID4gMSwgbnRoKCR2YWx1ZSwgMiksIHVwKTtcblxuICAgICRvbGQtemYtc2l6ZTogbnVsbDtcblxuICAgIC8vIE1ha2UgYnJlYWtwb2ludCBzaXplIGF2YWlsYWJsZSBhcyBhIHZhcmlhYmxlXG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoLXpmLXNpemUpIHtcbiAgICAgICRvbGQtemYtc2l6ZTogJC16Zi1zaXplO1xuICAgIH1cbiAgICAkLXpmLXNpemU6IG50aCgkdmFsdWUsIDEpICFnbG9iYWw7IC8vIGdldCB0aGUgZmlyc3QgdmFsdWUgdG8gYWNjb3VudCBmb3IgYG9ubHlgIGFuZCBgZG93bmAga2V5d29yZHNcblxuICAgIC8vIElmICRzdHIgaXMgc3RpbGwgYW4gZW1wdHkgc3RyaW5nLCBubyBtZWRpYSBxdWVyeSBpcyBuZWVkZWRcbiAgICBAaWYgJHN0ciA9PSAnJyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIHdyYXAgdGhlIGNvbnRlbnQgaW4gYSBtZWRpYSBxdWVyeVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIEZvciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHByaW50LWJyZWFrcG9pbnQsIGFkZCBwcmludCB0byB0aGUgbWVkaWEgdHlwZXNcbiAgICAgIC8vIGdlbmVyYXRlIHByaW50IGlmIHRoZSBicmVha3BvaW50IGFmZmVjdHMgdGhlIHByaW50LWJyZWFrcG9pbnQgKG9yIHNtYWxsZXIpLlxuICAgICAgLy8gVGhpcyBtZWFucyB0aGUgY3VycmVudCBjb25kaXRpb24gb25seSBuZWVkcyB0byBiZSBleHRlbmRlZCBzbyAnZG93bicgYWx3YXlzIGdlbmVyYXRlcyBwcmludC5cbiAgICAgIEBpZiAkYnAgIT0gbnVsbCBhbmQgKCRicCA8PSAkcGJwIG9yICRkaXIgPT0gZG93bikge1xuICAgICAgICBAbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgI3skc3RyfSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgI3skc3RyfSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkLXpmLXNpemU6ICRvbGQtemYtc2l6ZSAhZ2xvYmFsO1xuICB9XG59XG5cbi8vLyBDb252ZXJ0cyB0aGUgYnJlYWtwb2ludHMgbWFwIHRvIGEgVVJMLWVuY29kZWQgc3RyaW5nLCBsaWtlIHRoaXM6IGBrZXkxPXZhbHVlMSZrZXkyPXZhbHVlMmAuIFRoZSB2YWx1ZSBpcyB0aGVuIGRyb3BwZWQgaW50byB0aGUgQ1NTIGZvciBhIHNwZWNpYWwgYDxtZXRhPmAgdGFnLCB3aGljaCBpcyByZWFkIGJ5IHRoZSBGb3VuZGF0aW9uIEphdmFTY3JpcHQuIFRoaXMgaXMgaG93IHdlIHRyYW5zZmVyIHZhbHVlcyBmcm9tIFNhc3MgdG8gSmF2YVNjcmlwdCwgc28gdGhleSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgcGxhY2UuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBjb252ZXJ0LlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gQSBzdHJpbmcgY29udGFpbmluZyB0aGUgbWFwJ3MgY29udGVudHMuXG5AZnVuY3Rpb24gLXpmLWJwLXNlcmlhbGl6ZSgkbWFwKSB7XG4gICRzdHI6ICcnO1xuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgJHN0cjogJHN0ciArICRrZXkgKyAnPScgKyAtemYtYnAtdG8tZW0oJHZhbHVlKSArICcmJztcbiAgfVxuICAkc3RyOiBzdHItc2xpY2UoJHN0ciwgMSwgLTIpO1xuXG4gIEByZXR1cm4gJHN0cjtcbn1cblxuLy8vIEZpbmQgdGhlIG5leHQga2V5IGluIGEgbWFwLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gdHJhdmVyc2UuXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGtleSAtIEtleSB0byB1c2UgYXMgYSBzdGFydGluZyBwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gVGhlIHZhbHVlIGZvciB0aGUga2V5IGFmdGVyIGAka2V5YCwgaWYgYCRrZXlgIHdhcyBmb3VuZC4gSWYgYCRrZXlgIHdhcyBub3QgZm91bmQsIG9yIGAka2V5YCB3YXMgdGhlIGxhc3QgdmFsdWUgaW4gdGhlIG1hcCwgcmV0dXJucyBgbnVsbGAuXG5AZnVuY3Rpb24gLXpmLW1hcC1uZXh0KCRtYXAsICRrZXkpIHtcblxuICAvLyBTdG9yZSB0aGUga2V5cyBvZiB0aGUgbWFwIGFzIGEgbGlzdFxuICAkdmFsdWVzOiBtYXAta2V5cygkbWFwKTtcblxuICAkaTogMDtcblxuICAvLyBJZiB0aGUgS2V5IEV4aXN0cywgR2V0IHRoZSBpbmRleCBvZiB0aGUga2V5IHdpdGhpbiB0aGUgbWFwIGFuZCBhZGQgMSB0byBpdCBmb3IgdGhlIG5leHQgYnJlYWtwb2ludCBpbiB0aGUgbWFwXG4gIEBpZiAobWFwLWhhcy1rZXkoJG1hcCwgJGtleSkpIHtcbiAgICAkaTogaW5kZXgoJHZhbHVlcywgJGtleSkgKyAxO1xuICB9XG5cbiAgLy8gSWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0LCBvciBpdCdzIHRoZSBsYXN0IGtleSBpbiB0aGUgbWFwLCByZXR1cm4gbnVsbFxuICBAaWYgKCRpID4gbGVuZ3RoKCRtYXApIG9yICRpID09IDApIHtcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHZhbHVlXG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgbnRoKCR2YWx1ZXMsICRpKSk7XG4gIH1cblxufVxuXG4vLy8gRmluZCB0aGUgbmV4dCBudW1iZXIgaW4gYSBtYXAuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byB0cmF2ZXJzZS5cbi8vLyBAcGFyYW0ge01peGVkfSAkbnVtYmVyIC0gTnVtYmVyIHRvIHVzZSBhcyBhIHN0YXJ0aW5nIHBvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgbnVtYmVyIGZvbGxvd2luZyBgJG51bWJlcmAsIGlmIGAkbnVtYmVyYCB3YXMgZm91bmQuIElmIGAkbnVtYmVyYCB3YXMgbm90IGZvdW5kLCBvciBgJG51bWJlcmAgd2FzIHRoZSBiaWdnZXN0IG51bWJlciBpbiB0aGUgbWFwLCByZXR1cm5zIGBudWxsYC5cbkBmdW5jdGlvbiAtemYtbWFwLW5leHQtbnVtYmVyKCRtYXAsICRudW1iZXIpIHtcblxuICAkbmV4dC1udW1iZXI6IG51bGw7XG5cbiAgQGVhY2ggJGssICR2IGluICRtYXAge1xuICAgIEBpZiB0eXBlLW9mKCR2KSA9PSAnbnVtYmVyJyBhbmQgJHYgPiAkbnVtYmVyIGFuZCAoJG5leHQtbnVtYmVyID09IG51bGwgb3IgJHYgPCAkbmV4dC1udW1iZXIpIHtcbiAgICAgICRuZXh0LW51bWJlcjogJHY7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmV4dC1udW1iZXI7XG59XG5cbi8vLyBSZXR1cm4gYSBsaXN0IG9mIG91ciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gJGtleS4gVXNlZnVsIGZvciBkZWFsaW5nIHdpdGhcbi8vLyByZXNwb25zaXZlIGd1dHRlcnMgZm9yIHRoZSBncmlkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRrZXkgLSBLZXkgdG8gdXNlIGFzIGxhc3QgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtBcnJheX0gVGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgdXAgdG8gYW5kLiBJZiAka2V5IGlzIGF1dG8sIHJldHVybnMgYnJlYWtwb2ludHMgYWJvdmUgdGhlIHplcm9cbkBmdW5jdGlvbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCRrZXkpIHtcbiAgJGxpc3Q6ICgpO1xuICAkZm91bmQta2V5OiBmYWxzZTtcblxuICBAZWFjaCAkbmFtZSBpbiAkLXpmLWJyZWFrcG9pbnRzLWtleXMge1xuICAgIEBpZiAoJG5hbWUgPT0gJGtleSkge1xuICAgICAgJGZvdW5kLWtleTogdHJ1ZTtcbiAgICB9XG4gICAgQGlmIG5vdCAkZm91bmQta2V5IHtcbiAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRuYW1lKTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuLy8vIFJldHVybiBhIGxpc3Qgb2Ygb3VyIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiAka2V5LiBVc2VmdWwgZm9yIGRlYWxpbmcgd2l0aFxuLy8vIHJlc3BvbnNpdmUgZ3V0dGVycyBmb3IgdGhlIGdyaWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgLSBhIG5hbWVkIG9yIG5vbi1uYW1lZCBicmVha3BvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge0FycmF5fSBUaGUgbGlzdCBvZiBicmVha3BvaW50cyB1cCB0byBhbmQuIElmICRrZXkgaXMgYXV0bywgcmV0dXJucyBicmVha3BvaW50cyBhYm92ZSB0aGUgemVyb1xuQGZ1bmN0aW9uIC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgJGxhc3Q6ICQtemYtemVyby1icmVha3BvaW50O1xuICAkZm91bmQ6IGZhbHNlO1xuXG4gICR2YWx1ZTogdW5pdGxlc3MtY2FsYygkYnJlYWtwb2ludCwgMXB4KTtcbiAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgIEBpZiBub3QgJGZvdW5kIHtcbiAgICAgIEBpZiB1bml0bGVzcy1jYWxjKCR2YWwpID4gJHZhbHVlIHtcbiAgICAgICAgJGZvdW5kOiB0cnVlO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRsYXN0OiAka2V5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxhc3Q7XG59XG5cbi8vLyBHZXQgYSB2YWx1ZSBmb3IgYSBicmVha3BvaW50IGZyb20gYSByZXNwb25zaXZlIGNvbmZpZyBtYXAgb3Igc2luZ2xlIHZhbHVlLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIHNpbmdsZSB2YWx1ZSwgcmV0dXJuIGl0IHJlZ2FyZGxlc3Mgb2YgYCR2YWx1ZWAuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBoYXMgdGhlIGtleSBgJHZhbHVlYCwgdGhlIGV4YWN0IGJyZWFrcG9pbnQgdmFsdWUgaXMgcmV0dXJuZWQuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBkb2VzICpub3QqIGhhdmUgdGhlIGJyZWFrcG9pbnQsIHRoZSB2YWx1ZSBtYXRjaGluZyB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBpbiB0aGUgY29uZmlnIG1hcCBpcyByZXR1cm5lZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcCAtIFJlc3BvbnNpdmUgY29uZmlnIG1hcCBvciBzaW5nbGUgdmFsdWUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdmFsdWUgLSBCcmVha3BvaW50IG5hbWUgdG8gdXNlLlxuLy8vXG4vLy8gQHJldHVybiB7TWl4ZWR9IFRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUuXG5AZnVuY3Rpb24gLXpmLWdldC1icC12YWwoJG1hcCwgJHZhbHVlKSB7XG4gIC8vIElmIHRoZSBnaXZlbiBtYXAgaXMgYSBzaW5nbGUgdmFsdWUsIHJldHVybiBpdFxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbnVtYmVyJyB7XG4gICAgQHJldHVybiAkbWFwO1xuICB9XG5cblxuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBnbG9iYWxseVxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJHZhbHVlKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnQgbmFtZSBleGlzdHMgaW4gdGhlIGxvY2FsIGNvbmZpZyBtYXBcbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJG1hcCwgJHZhbHVlKSB7XG4gICAgLy8gSWYgaXQgZG9lcywganVzdCByZXR1cm4gdGhlIHZhbHVlXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICR2YWx1ZSk7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCBmaW5kIHRoZSBuZXh0IGxvd2VzdCBicmVha3BvaW50IGFuZCByZXR1cm4gdGhhdCB2YWx1ZVxuICBAZWxzZSB7XG4gICAgJGFuY2hvcjogbnVsbDtcbiAgICAkZm91bmQ6IGZhbHNlO1xuXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgICAgQGlmIG5vdCAkZm91bmQge1xuICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJG1hcCwgJGtleSkge1xuICAgICAgICAgICRhbmNob3I6ICRrZXk7XG4gICAgICAgIH1cbiAgICAgICAgQGlmICRrZXkgPT0gJHZhbHVlIHtcbiAgICAgICAgICAkZm91bmQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJGFuY2hvcik7XG4gIH1cbn1cblxuLy8vIFJldHVybiB0aGUgYmVzdCBicmVha3BvaW50IHRvIHVzZSBhY2NvcmRpbmcgdG8gdGhlIGNhbGxpbmcgY29udGV4dC4gSXQgcmV0dXJucyBpbiBvcmRlcjpcbi8vLyAxLiB0aGUgZ2l2ZW4gYCR2YWx1ZWAgYXJndW1lbnQgaWYgaXQgaXMgbm90IG51bGwuXG4vLy8gMi4gdGhlIGdsb2JhbCBicmVha3BvaW50IGNvbnRleHQgYCQtemYtc2l6ZWAgaWYgaXQgaXMgbm90IG51bGwgKGxpa2UgaWYgY2FsbGVkIGluc2lkZSB0aGVuIGBicmVha3BvaW50KClgIG1peGluKVxuLy8vIDMuIHRoZSBnaXZlbiBgJGRlZmF1bHRgIGFyZ3VtZW50LlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdmFsdWUgW251bGxdIC0gQnJlYWtwb2ludCB0byB1c2UgaW4gcHJpb3JpdHkgaWYgbm9uLW51bGwuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGVmYXVsdCBbbnVsbF0gLSBCcmVha3BvaW50IHRvIHVzZSBieSBkZWZhdWx0IGlmIG5vIG90aGVyIHZhbHVlIGNhbiBiZSB1c2VkLlxuLy8vXG4vLy8gQHJldHVybiB7S2V5d29yZH0gVGhlIHJlc29sdmVkIGJyZWFrcG9pbnQuXG5AZnVuY3Rpb24gLXpmLWN1cnJlbnQtYnJlYWtwb2ludCgkdmFsdWU6IG51bGwsICRkZWZhdWx0OiBudWxsKSB7XG4gIEBpZiAoJHZhbHVlICE9IG51bGwpIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuICBAZWxzZSBpZiAodmFyaWFibGUtZXhpc3RzKC16Zi1zaXplKSBhbmQgdHlwZS1vZigkLXpmLXNpemUpICE9ICdudW1iZXInKSBhbmQgJC16Zi1zaXplICE9IG51bGwge1xuICAgIEByZXR1cm4gJC16Zi1zaXplO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRkZWZhdWx0O1xuICB9XG59XG5cbi8vLyBSZXR1cm4gbWVkaWEgcXVlcnkgc3RyaW5nIGZyb20gdGhlIGdpdmVuIG1pbiBhbmQvb3IgbWF4IGxpbWl0cy5cbi8vLyBJZiBhIGxpbWl0IGlzIGVxdWFsIHRvIGBudWxsYCBvciBgMGAsIGl0IGlzIGlnbm9yZWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1pbiBbMF0gLSBNaW4gbWVkaWEgcXVlcnkgbGltaXQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXggWzBdIC0gTWF4IG1lZGlhIHF1ZXJ5IGxpbWl0LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWluLW5hbWUgWydtaW4td2lkdGgnXSAtIE5hbWUgb2YgdGhlIG1pbiBtZWRpYSBxdWVyeSBsaW1pdC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRlbGltaXRlciBbJ21heC13aWR0aCddIC0gTmFtZSBvZiB0aGUgbWF4IG1lZGlhIHF1ZXJ5IGxpbWl0LlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gTWVkaWEgUXVlcnkgc3RyaW5nLlxuQGZ1bmN0aW9uIC16Zi1icC1qb2luKFxuICAkbWluOiAwLFxuICAkbWF4OiAwLFxuICAkbWluLW5hbWU6ICdtaW4td2lkdGgnLFxuICAkbWF4LW5hbWU6ICdtYXgtd2lkdGgnXG4pIHtcbiAgQHJldHVybiB6Zi1zdHItam9pbihcbiAgICBpZigkbWluIGFuZCAkbWluID4gMCwgJygjeyRtaW4tbmFtZX06ICN7JG1pbn0pJywgbnVsbCksXG4gICAgaWYoJG1heCBhbmQgJG1heCA+IDAsICcoI3skbWF4LW5hbWV9OiAjeyRtYXh9KScsIG51bGwpLFxuICAgICcgYW5kICcpO1xufVxuXG4kc21hbGwtdXA6ICcnO1xuJHNtYWxsLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBzbWFsbCkge1xuICAkc21hbGwtdXA6IHNjcmVlbjtcbiAgJHNtYWxsLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHNtYWxsIG9ubHkpfScpO1xufVxuXG4kbWVkaXVtLXVwOiAnJztcbiRtZWRpdW0tb25seTogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIG1lZGl1bSkge1xuICAkbWVkaXVtLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0pfScpO1xuICAkbWVkaXVtLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KG1lZGl1bSBvbmx5KX0nKTtcbn1cblxuJGxhcmdlLXVwOiAnJztcbiRsYXJnZS1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgbGFyZ2UpIHtcbiAgJGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSl9Jyk7XG4gICRsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSBvbmx5KX0nKTtcbn1cblxuJHhsYXJnZS11cDogJyc7XG4keGxhcmdlLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCB4bGFyZ2UpIHtcbiAgJHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlKX0nKTtcbiAgJHhsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4bGFyZ2Ugb25seSl9Jyk7XG59XG5cbiR4eGxhcmdlLXVwOiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeHhsYXJnZSkge1xuICAkeHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeHhsYXJnZSl9Jyk7XG59XG4iXX0= */
