/* BREAKPOINTS */

/* MEDIA QUERIES */

/* BACKGROUND SIZING FOR IE */

/* PLACEHOLDER TEXT FOR INPUTS */

.toast-title {
  font-weight: bold;
}

.toast-message {
  -ms-word-wrap: break-word;
  word-wrap: break-word;
}

.toast-message a,
.toast-message label {
  color: #ffffff;
}

.toast-message a:hover {
  color: #cccccc;
  text-decoration: none;
}

.toast-close-button {
  position: relative;
  right: -0.3em;
  top: -0.3em;
  float: right;
  font-size: 20px;
  font-weight: bold;
  color: #ffffff;
  -webkit-text-shadow: 0 1px 0 #ffffff;
  text-shadow: 0 1px 0 #ffffff;
  opacity: 0.8;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
  filter: alpha(opacity=80);
}

.toast-close-button:hover,
.toast-close-button:focus {
  color: #000000;
  text-decoration: none;
  cursor: pointer;
  opacity: 0.4;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
  filter: alpha(opacity=40);
}

/*Additional properties for button version
 iOS requires the button element instead of an anchor tag.
 If you want the anchor version, it requires `href="#"`.*/

button.toast-close-button {
  padding: 0;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
}

.toast-top-center {
  top: 0;
  right: 0;
  width: 100%;
}

.toast-bottom-center {
  bottom: 0;
  right: 0;
  width: 100%;
}

.toast-top-full-width {
  top: 0;
  right: 0;
  width: 100%;
}

.toast-bottom-full-width {
  bottom: 0;
  right: 0;
  width: 100%;
}

.toast-top-left {
  top: 12px;
  left: 12px;
}

.toast-top-right {
  top: 12px;
  right: 12px;
}

.toast-bottom-right {
  right: 12px;
  bottom: 12px;
}

.toast-bottom-left {
  bottom: 12px;
  left: 12px;
}

#toast-container {
  position: fixed;
  z-index: 999999;
  /*overrides*/
}

#toast-container * {
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}

#toast-container > div {
  position: relative;
  overflow: hidden;
  margin: 0 0 6px;
  padding: 15px 15px 15px 50px;
  width: 300px;
  -moz-border-radius: 3px 3px 3px 3px;
  -webkit-border-radius: 3px 3px 3px 3px;
  border-radius: 3px 3px 3px 3px;
  background-position: 15px center;
  background-repeat: no-repeat;
  -moz-box-shadow: 0 0 12px #999999;
  -webkit-box-shadow: 0 0 12px #999999;
  box-shadow: 0 0 12px #999999;
  color: #ffffff;
  opacity: 0.8;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
  filter: alpha(opacity=80);
}

#toast-container > :hover {
  -moz-box-shadow: 0 0 12px #000000;
  -webkit-box-shadow: 0 0 12px #000000;
  box-shadow: 0 0 12px #000000;
  opacity: 1;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
  filter: alpha(opacity=100);
  cursor: pointer;
}

#toast-container > .toast-info {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important;
}

#toast-container > .toast-error {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important;
}

#toast-container > .toast-success {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important;
}

#toast-container > .toast-warning {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important;
}

#toast-container.toast-top-center > div,
#toast-container.toast-bottom-center > div {
  width: 300px;
  margin: auto;
}

#toast-container.toast-top-full-width > div,
#toast-container.toast-bottom-full-width > div {
  width: 96%;
  margin: auto;
}

.toast {
  background-color: #030303;
}

.toast-success {
  background-color: #51a351;
}

.toast-error {
  background-color: #bd362f;
}

.toast-info {
  background-color: #2f96b4;
}

.toast-warning {
  background-color: #f89406;
}

.toast-progress {
  position: absolute;
  left: 0;
  bottom: 0;
  height: 4px;
  background-color: #000000;
  opacity: 0.4;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
  filter: alpha(opacity=40);
}

/*Responsive Design*/

@media all and (max-width: 240px) {
  #toast-container > div {
    padding: 8px 8px 8px 50px;
    width: 11em;
  }

  #toast-container .toast-close-button {
    right: -0.2em;
    top: -0.2em;
  }
}

@media all and (min-width: 241px) and (max-width: 480px) {
  #toast-container > div {
    padding: 8px 8px 8px 50px;
    width: 18em;
  }

  #toast-container .toast-close-button {
    right: -0.2em;
    top: -0.2em;
  }
}

@media all and (min-width: 481px) and (max-width: 768px) {
  #toast-container > div {
    padding: 15px 15px 15px 50px;
    width: 25em;
  }
}

/* Make clicks pass-through */

#nprogress {
  pointer-events: none;
}

#nprogress .bar {
  background: #29d;
  position: fixed;
  z-index: 1031;
  top: 0;
  left: 0;
  width: 100%;
  height: 2px;
}

/* Fancy blur effect */

#nprogress .peg {
  display: block;
  position: absolute;
  right: 0px;
  width: 100px;
  height: 100%;
  box-shadow: 0 0 10px #29d, 0 0 5px #29d;
  opacity: 1.0;
  -webkit-transform: rotate(3deg) translate(0px, -4px);
  -ms-transform: rotate(3deg) translate(0px, -4px);
  transform: rotate(3deg) translate(0px, -4px);
}

/* Remove these to get rid of the spinner */

#nprogress .spinner {
  display: block;
  position: fixed;
  z-index: 1031;
  top: 15px;
  right: 15px;
}

#nprogress .spinner-icon {
  width: 18px;
  height: 18px;
  box-sizing: border-box;
  border: solid 2px transparent;
  border-top-color: #29d;
  border-left-color: #29d;
  border-radius: 50%;
  -webkit-animation: nprogress-spinner 400ms linear infinite;
  animation: nprogress-spinner 400ms linear infinite;
}

.nprogress-custom-parent {
  overflow: hidden;
  position: relative;
}

.nprogress-custom-parent #nprogress .spinner,
.nprogress-custom-parent #nprogress .bar {
  position: absolute;
}

@-webkit-keyframes nprogress-spinner {
  0% {
    -webkit-transform: rotate(0deg);
  }

  100% {
    -webkit-transform: rotate(360deg);
  }
}

@keyframes nprogress-spinner {
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(360deg);
  }
}

::-webkit-scrollbar {
  width: 6px;
  height: 6px;
  background: rgba(235, 235, 235, 0.6);
}

/* Track */

/* Handle */

::-webkit-scrollbar-thumb {
  background: rgba(176, 176, 176, 0.6);
}

::-webkit-scrollbar-thumb:window-inactive {
  background: rgba(176, 176, 176, 0.3);
}

/**::-webkit-scrollbar 
::-webkit-scrollbar-thumb  
::-webkit-scrollbar-track  
::-webkit-scrollbar-button
::-webkit-scrollbar-track-piece 
::-webkit-scrollbar-corner 
::-webkit-resizer**/

html {
  font-size: 14px !important;
}

body {
  overflow: hidden;
}

body.no-select {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

a {
  outline: none;
}

#app-root {
  height: 100%;
  width: 100%;
}

.login-container {
  width: 20rem;
  height: 20rem;
  position: absolute;
  top: 50%;
  left: 50%;
  margin-left: -10rem;
  margin-top: -10rem;
}

.login-container input {
  margin-bottom: 0.5rem;
  height: 2.5rem;
}

.login-container .welcome {
  text-align: center;
  margin: 1.5rem;
  font-size: 1.5rem;
  color: #7a7a7a;
}

.login-container .error-message {
  text-align: left;
  white-space: normal;
  padding-left: 0;
  line-height: 1.5rem;
}

.login-container .button {
  font-size: 1rem;
}

.login-container > div > .dialog-content {
  max-height: 30rem;
}

@media only screen and (max-width: 320px) {
  .login-container {
    width: 16rem;
    height: 20rem;
    margin-left: -8rem;
    margin-top: -10rem;
  }
}

@media (max-width: 650px) {
  .wrapper {
    -webkit-flex-flow: column;
    flex-flow: column;
  }

  .wrapper > div {
    width: 100%;
  }
}

.fa [class*=fa-]:before,
.fa [class*=fa-]:after {
  font-size: 1.25rem;
  cursor: pointer;
}

.fa [class*=toggle-] {
  position: relative;
  cursor: pointer;
  height: 2rem;
  width: 2.75rem;
}

.fa [class*=toggle-]:before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.3125rem;
  left: 0;
  width: 2.75rem;
  height: 1.375rem;
  border-radius: 0.7875rem;
  border: 1px solid;
  box-sizing: border-box;
}

.fa [class*=toggle-]:after {
  content: '';
  position: absolute;
  left: 0;
  top: 0.3125rem;
  width: 1.375rem;
  height: 1.375rem;
  border-radius: 0.7875rem;
  background-color: white;
  box-sizing: border-box;
}

.fa [class*=toggle-].inactive {
  cursor: not-allowed;
}

.fa [class*=toggle-].inactive:before {
  background-color: white;
}

.fa .toggle-on:before {
  background-color: #02a7ec;
  border-color: #02a7ec;
}

.fa .toggle-on:after {
  left: 1.375rem;
  border: 1px solid #02a7ec;
}

.fa .toggle-off:before {
  background-color: #C3C5C8;
  border-color: #C3C5C8;
}

.fa .toggle-off:after {
  left: 0;
  border: 1px solid #C3C5C8;
}

@-webkit-keyframes toggleOn {
  0% {
    left: 1.375rem;
  }

  100% {
    left: 0;
  }
}

@keyframes toggleOff {
  0% {
    left: 0;
  }

  100% {
    left: 1.375rem;
  }
}

.toggle-on.animated:after {
  -webkit-animation: toggleOff 0.25s;
  animation: toggleOff 0.25s;
}

.toggle-off.animated:after {
  -webkit-animation: toggleOn 0.25s;
  animation: toggleOn 0.25s;
}

.app {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  height: 100%;
  overflow: hidden;
  /* label {
        @include breakpoint(mama-bear) {
            font-size: 1rem;
        }
    } */
}

.app .header {
  padding: 0.625rem 1rem;
  border-bottom: 1px solid #DFE1E5;
  height: 3rem;
  background-color: #F8F8F8;
  display: -webkit-flex;
  display: flex;
  align-items: center;
}

.app .header .logo {
  height: 3rem;
  width: 6rem;
}

.app .header .bannermenu {
  color: #02a7ec;
  flex: 1;
  display: -webkit-flex;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  position: inherit;
}

.app .header .bannermenu [class*='icon_']:before {
  position: relative;
}

.app .header .bannermenu .menu {
  cursor: pointer;
  text-align: center;
  color: #02a7ec;
}

.app .header .bannermenu .menu .userMenu {
  color: #000000 !important;
}

.app .header .bannermenu .current {
  color: #02a7ec;
}

.app .header .bannermenu a {
  color: inherit;
  line-height: 2rem;
  display: block;
  color: #02a7ec;
}

.app .header .bannermenu a span {
  margin: 0 0 0 0.5rem;
}

.app .header .bannermenu > div {
  padding-left: 1.5rem;
}

.app .header .bannermenu .user {
  display: -webkit-flex;
  display: flex;
  flex: 0 1 auto;
  /* .userMenu:before {
                    top: -16px;
                    right: 9px;
                    left: auto;
                    border: 8px solid transparent;
                    border-bottom-color: rgba(0,0,0,0.15);
                    position: absolute;
                    display: inline-block;
                    background-color: $colorMenuBackground;
                    content: "";
                } */
}

.app .header .bannermenu .user:hover {
  color: #02a7ec;
}

.app .header .bannermenu .user .user-menu-down {
  margin: 0 0.3125rem;
}

.app .header .bannermenu .user .userMenu {
  position: absolute;
  top: 3.5rem;
  right: 1.5rem;
  background-color: #FFF;
  z-index: 1003;
  box-shadow: 0px 3px 12px rgba(0, 0, 0, 0.15);
  border-radius: 5px;
  border: 1px solid rgba(0, 0, 0, 0.15);
  display: none;
}

.app .header .bannermenu .user .userMenu .divider {
  height: 1px;
  margin: 8px 1px;
  background-color: #e5e5e5;
}

.app .header .bannermenu .user .userMenu .user_role {
  color: #000000 !important;
  font-weight: bold;
  cursor: default;
}

.app .header .bannermenu .user .userMenu ul {
  padding: 0.5rem 0;
}

.app .header .bannermenu .user .userMenu li {
  list-style: none;
  line-height: 2rem;
  height: 2rem;
  text-align: left;
  overflow: hidden;
}

.app .header .bannermenu .user .userMenu li > span,
.app .header .bannermenu .user .userMenu li a {
  padding: 0 1rem;
}

.app .header .bannermenu .user .userMenu li a:hover {
  color: #0899d4;
}

.app .header .bannermenu .user .userMenu li i {
  width: 1.5rem;
  text-align: center;
}

.app .header .bannermenu .user .userMenu .dialog-content .panel-content div.form-field:first-child {
  width: 6rem;
}

.app .header .bannermenu .bannel_divider {
  height: 3rem;
  width: 1px;
  background-color: #DFE1E5;
  margin-top: 0.5rem;
}

@media (max-width: 1000px) {
  .app .header .bannermenu .bannel_divider {
    display: none;
  }
}

.app .header .bannermenu .menu_block {
  flex: 1;
}

.app .header .bannermenu .menus {
  flex: 1 1 10%;
  display: -webkit-flex;
  display: flex;
  -webkit-justify-content: flex-end;
  justify-content: flex-end;
}

@media (max-width: 1000px) {
  .app .header .bannermenu .menus {
    display: none;
  }
}

.app .wrapper {
  display: -webkit-flex;
  display: flex;
  -webkit-flex: 1;
  flex: 1;
  overflow-x: hidden;
  overflow-y: auto;
}

.app .wrapper .sidenav-wrapper {
  padding: 0 0 0.25rem 0.125rem;
  position: relative;
  width: 12.5rem;
  overflow-y: auto;
  font-size: 1rem;
}

@media (max-width: 650px) {
  .app .wrapper .sidenav-wrapper {
    padding: 0;
    border-right: none;
    width: 100%;
    border-bottom: 1px solid #DFE1E5;
    overflow-y: visible;
  }
}

.app .wrapper .spliter {
  width: 5px;
  display: -webkit-flex;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: col-resize;
  z-index: 100;
  margin-left: -2px;
  margin-right: -2px;
}

.app .wrapper .spliter:hover > div {
  background-color: #02a7ec;
}

@media (max-width: 650px) {
  .app .wrapper .spliter {
    display: none;
  }
}

.app .wrapper .spliter > div {
  width: 1px;
  height: 100%;
  background-color: #DFE1E5;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  -webkit-justify-content: space-around;
  justify-content: space-around;
}

.app .wrapper .spliter > div a {
  margin-left: 2px;
  cursor: pointer;
  color: #C3C5C8;
}

.app .wrapper .spliter > div a:hover {
  color: #02a7ec;
}

.app .wrapper .container {
  -webkit-flex: 1;
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  overflow-y: auto;
  position: relative;
  /*> div {
                > .panel {
                    border: none;
                }
            }*/
}

.app .wrapper .container .tabs {
  -webkit-flex: 1;
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  margin-top: 0;
  padding: 0;
}

.app .wrapper .container .tabs.responsive {
  -webkit-flex: 1;
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  -webkit-justify-content: space-between;
  justify-content: space-between;
}

.app .wrapper .container .tabs.responsive .tabcontrols {
  -webkit-flex: 1;
  flex: 1;
}

.app .wrapper .container .tabs .tabs-footer {
  height: 2.5rem;
  padding: 0.25rem 0.625rem;
}

.app .wrapper .container .tabs .tabs-footer.active {
  border-top: 1px solid #DFE1E5;
}

.app .wrapper .container .tabs .tabs-footer .button {
  float: right;
  margin-left: 0.625rem;
  padding: 0.625rem;
  width: 5rem;
}

.app .wrapper .container .tabs .tabs-footer button.advance {
  float: left;
  margin-left: 0;
  width: auto;
}

.app .wrapper .container .tabs .tabs-footer button.advance:hover {
  color: #0899d4;
}

.app .wrapper .container .tabs.horizontal {
  padding: 1rem 0 0 1rem;
  -webkit-flex: 1 1 auto;
  flex: 1 1 auto;
}

.app .wrapper .container .tabs.horizontal.responsive {
  -webkit-justify-content: unset;
  justify-content: unset;
}

.app .wrapper .container .tabs.horizontal .container-horizontal {
  -webkit-flex: 1 1 auto;
  flex: 1 1 auto;
  overflow: auto;
  padding: 0 1rem 0 0;
}

.app .wrapper .container .tabs.horizontal .panel-content {
  padding: 1rem 1rem 0 1rem;
  overflow: auto;
}

.app .wrapper .container .tabs.horizontal .seggyc {
  margin: 0.625rem;
}

.app .wrapper .container .tabs.horizontal .seggyc.center {
  display: -webkit-flex;
  display: flex;
  -webkit-justify-content: center;
  justify-content: center;
}

.app .wrapper .container .panel h2 {
  font-size: 1rem;
}

@media only screen and (max-width: 651px) {
  .app .wrapper .container .panel h2.title_heading {
    display: none;
  }
}

.app .wrapper .container .panel .panel .title_heading {
  background: #F5F5F5;
}

@media only screen and (max-width: 651px) {
  .app .wrapper .container .panel .row.table-row {
    display: table-row;
  }

  .app .wrapper .container .panel .form-field {
    display: inline-block;
    width: 100%;
    padding-bottom: 0;
    padding-right: 0;
  }
}

.app .wrapper .container .panel .footer {
  height: 2.5rem;
  padding: 0.25rem 0.15rem;
  border-top: 1px solid #DFE1E5;
  display: block;
  background: #FFF;
}

.app .wrapper .container .panel .footer .button {
  float: right;
  margin-left: 0.625rem;
  padding: 0.625rem;
  width: 5rem;
}

.app .wrapper .container .row.table-row.advance-row {
  display: none;
}

.app .wrapper .container .section.advance {
  display: none;
}

.app .wrapper .container .advance-panel-content .section-content .row.table-row.advance-row {
  display: flex;
}

@media only screen and (max-width: 651px) {
  .app .wrapper .container .advance-panel-content .section-content .row.table-row.advance-row {
    display: block;
  }
}

.app .wrapper .container .advance-panel-content .row.table-row.advance-row {
  display: table-row;
}

@media only screen and (max-width: 651px) {
  .app .wrapper .container .advance-panel-content .row.table-row.advance-row {
    display: block;
  }
}

.app .wrapper .container .advance-panel-content .section {
  display: block;
}

.app .footer {
  height: 3rem;
  width: 100%;
  overflow: hidden;
  text-align: center;
  line-height: 3rem;
  color: #C3C5C8;
  border-top: 1px solid #DFE1E5;
  display: none;
  background-color: #f5f5f5;
}

.app .footer [class*='icon_']:before {
  font-size: 3rem;
}

@media (max-width: 1000px) {
  .app .footer [class*='icon_']:before {
    font-size: 2rem;
  }
}

.app .footer a {
  height: 3rem;
  width: 25%;
  float: left;
  display: block;
}

.app .footer [class*='icon_']:before {
  position: relative;
}

.app .footer .menu {
  cursor: pointer;
  text-align: center;
  color: #02a7ec;
}

.app .footer .menu .userMenu {
  color: #000000 !important;
}

.app .footer .current {
  color: #02a7ec;
}

.app .footer a {
  color: inherit;
  line-height: 2rem;
  display: block;
  color: #02a7ec;
}

.app .footer a span {
  margin: 0 0 0 0.5rem;
}

.app .footer .menu {
  margin: 0;
  height: 3rem;
  line-height: 3rem;
}

@media (max-width: 1000px) {
  .app .footer .menu span {
    display: none;
  }
}

@media (max-width: 650px) {
  .app .footer {
    display: block;
  }
}

.row.table-row {
  display: table-row;
}

.row.table-row div.form-field:first-child {
  line-height: 2rem;
}

.form-field {
  display: table-cell;
  vertical-align: top;
  padding-right: 1rem;
  padding-bottom: 0.625rem;
  text-align: left;
}

.form-field > :first-child {
  float: left;
}

.form-field label:first-child {
  margin-right: 1rem;
}

.form-field .form-field-label:first-child {
  margin-left: 0rem;
}

.error-message {
  color: red;
  float: left;
  line-height: 2rem;
  padding-left: 0.625rem;
  white-space: nowrap;
}

.logo-container {
  text-align: center;
}

.logo-container > .logo {
  height: 6rem;
  width: 18rem;
  margin: 0 auto;
}

.logo {
  background-image: url(../images/login-logo.png);
  background-repeat: no-repeat;
  background-size: contain;
}

.banner-logo {
  background-image: url(../images/login-logo.png);
  background-repeat: no-repeat;
  background-size: contain;
  height: 2rem;
  width: 6rem;
}

.panel {
  background-color: #FFF;
  position: relative;
}

.panel .columns {
  height: 2.5rem;
  padding-left: 0;
}

.panel .row {
  width: 100%;
  margin-bottom: 0.25rem;
}

.panel .form_heading {
  background: transparent;
  padding: 0 0 0.625rem 0;
}

.panel .title_heading {
  white-space: nowrap;
}

.panel label {
  padding-left: 0;
}

.panel > div {
  overflow: hidden;
}

.panel pre.config {
  overflow: scroll;
  max-height: 16rem;
  margin: 0.5rem 0.25rem;
}

.panel .info_panel .columns {
  margin-bottom: 0;
}

.chartLabel {
  display: inline-block;
}

.chartLabel .chartLabelHeader {
  padding: 0 0 0 0.25rem;
  font-size: 1rem;
  color: gray;
  display: inline-table;
  vertical-align: middle;
}

.chartLabel .chartUnits {
  min-width: 0.625rem;
  font-size: 0.625rem;
}

.chartLabel label {
  display: table-row;
}

.panel_wrapper > div {
  margin-bottom: 0.625rem;
  overflow: hidden;
}

.panel_wrapper h3 {
  margin: 0.625rem 0;
}

.about div {
  margin-bottom: 0.875rem;
  overflow: hidden;
}

.about div > span.columns {
  line-height: 1.25rem;
  padding-bottom: 0.25rem;
  height: auto;
}

.about div > span.columns:nth-child(1) {
  font-weight: bold;
}

.about div span {
  padding-left: 0;
}

.dropdown-menu {
  position: absolute;
  z-index: 1000;
  display: none;
  float: left;
  min-width: 160px;
  padding: 5px 0;
  margin: 2px 0 0;
  list-style: none;
  font-size: 14px;
  background-color: #fff;
  border: 1px solid rgba(0, 0, 0, 0.15);
  border-radius: 4px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  background-clip: padding-box;
}

.dropdown-menu .dropdown-header {
  padding: 5px;
}

.dropdown-menu .dropdown-header > input {
  height: 2rem;
}

.dropdown-menu > li > a {
  display: block;
  padding: 3px 10px;
  clear: both;
  font-weight: 400;
  line-height: 1.42857143;
  color: #333;
  white-space: nowrap;
  overflow: hidden;
}

.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
  text-decoration: none;
  color: #262626;
  background-color: #F5F5F5;
}

.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
  color: #fff;
  text-decoration: none;
  outline: 0;
  background-color: #428bca;
}

.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  color: #999;
}

.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  text-decoration: none;
  background-color: transparent;
  background-image: none;
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
  cursor: not-allowed;
}

.button2 {
  background: url(../images/select_arrow_2x.png) #fff no-repeat right center;
  background-size: 38px 38px;
  display: inline-block;
  text-align: left;
  position: relative;
  color: #02a7ec;
  font-size: 0.875rem;
  font-weight: bold;
  line-height: 1rem;
  padding: 0.75rem 1.25rem;
  white-space: nowrap;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  -ms-border-radius: 4px;
  -o-border-radius: 4px;
  border-radius: 4px;
  border: 1px solid rgba(0, 0, 0, 0.1);
}

.multiselect-parent {
  overflow: hidden;
  width: 100%;
}

.valid_alert {
  display: block;
  width: 100%;
  max-height: 0;
  overflow: hidden;
  -webkit-transition: all 500ms ease;
  -moz-transition: all 500ms ease;
  -o-transition: all 500ms ease;
  transition: all 500ms ease;
}

.valid_alert p {
  margin-left: 1.25rem;
  margin-right: 1.25rem;
}

@media (max-width: 1100px) {
  .valid_alert p {
    font-size: 1rem;
  }
}

@media (max-width: 1100px) {
  .valid_alert p[class*='icon_']:before {
    font-size: 2rem;
  }
}

.valid_alert.visible {
  max-height: 5rem;
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
}

.valid_alert.warning {
  color: #FF4C00;
  background: #fdf9f7;
  -webkit-box-shadow: 4px 0 0 #FF4C00 inset;
  -moz-box-shadow: 4px 0 0 #FF4C00 inset;
  box-shadow: 4px 0 0 #FF4C00 inset;
}

.valid_alert.warning a {
  color: #FF4C00;
}

.help-mode {
  color: #018e1b !important;
  font-style: italic;
  cursor: pointer;
}

.help-advice-dialog {
  position: absolute;
  background-color: #FFF;
  border: 1px solid #CCC;
  border-radius: 1rem;
  z-index: 1005;
  padding: 0.5rem;
  top: 3rem;
  right: 0.8rem;
}

.help-advice-dialog .help-advice-info-green {
  margin-left: 0.5rem;
}

.help-content {
  background-color: #9ce5d5;
  position: absolute;
  border-radius: 0.3rem;
  padding: 0.5rem;
  z-index: 1005;
}

#container {
  margin: 0 auto;
}

.wizard {
  padding: 0;
  -webkit-flex: 1;
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  font-size: 0.875rem;
}

.wizard .wizard-controls {
  overflow: hidden;
  padding: 0.5rem 0.625rem 0 0.625rem;
  border-bottom: 1px solid #DFE1E5;
}

.wizard .wizard-controls .wizard-title {
  padding-left: 1rem;
  padding-right: 1rem;
  background-color: #02a7ec;
  color: #fff;
  border-top-left-radius: 0.25rem;
  border-bottom-left-radius: 0.25rem;
}

.wizard .wizard-controls .wizard-title:before {
  border-left-color: transparent;
}

.wizard .wizard-controls .wizard-title:after {
  border-left-color: #02a7ec;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .wizard .wizard-controls .wizard-title {
    display: inline;
  }
}

.wizard .wizard-controls li {
  float: left;
  cursor: pointer;
  position: relative;
  line-height: 2rem;
  margin: 0 2rem 0.5rem 0;
  color: #DFE1E5;
}

.wizard .wizard-controls li span.wizard-control-title {
  margin: 0 0.625rem;
}

.wizard .wizard-controls li:before,
.wizard .wizard-controls li:after {
  content: '';
  display: block;
  width: 0;
  height: 0;
  position: absolute;
  top: 0;
  right: -2rem;
  border: 1rem solid transparent;
  border-left-color: #fff;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .wizard .wizard-controls li {
    display: none;
  }
}

.wizard .wizard-controls li.active {
  color: #02a7ec;
}

.wizard .wizard-controls li.active .badge {
  background-color: #02a7ec;
  color: #fff;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .wizard .wizard-controls li.current {
    display: inline;
  }
}

.wizard .wizard-controls li .badge {
  background-color: #DFE1E5;
  color: #fff;
  line-height: 1rem;
  border: none;
  top: -0.125rem;
}

.wizard .wizard-content {
  padding: 0.625rem 1rem;
  -webkit-flex: 1;
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  -webkit-justify-content: space-between;
  justify-content: space-between;
  overflow-y: auto;
}

.wizard .wizard-content p {
  padding-left: 0.25rem;
}

.wizard .wizard-footer {
  height: 2.5rem;
  padding: 0.25rem 0.625rem;
  border-top: 1px solid #DFE1E5;
}

.wizard .wizard-footer .button {
  float: right;
  margin-left: 0.625rem;
  padding: 0.625rem;
  box-sizing: border-box;
  height: 2.5rem;
  width: 6rem;
}

.wizard .wizard-footer button.advance {
  width: auto;
  float: left;
  cursor: pointer;
  margin-left: 0;
}

.white-button {
  background: none;
  color: #02a7ec;
  border: 1px solid #02a7ec;
}

.tabs .panel-content {
  border: 0;
}

.info_panel {
  position: relative;
  width: 100%;
}

.info_panel .columns {
  padding-left: 0;
  padding-right: 0;
}

.info_panel .columns:last-child {
  float: left;
}

.info_panel div .label {
  position: relative;
  border-left: 1px solid #DFE1E5;
  border-right: 1px solid #DFE1E5;
  font-size: 0.8125rem;
  font-weight: bold;
  line-height: 1.3;
  color: #646569;
  text-transform: uppercase;
  padding: 1rem 0.625rem 0.8rem;
  background: #EBEEF2;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}

.info_panel div .value {
  position: relative;
  border-left: 1px solid #DFE1E5;
  border-right: 1px solid #DFE1E5;
  border-bottom: 1px solid #DFE1E5;
  padding: 0.5rem 1rem 0.625rem;
  height: 1.25rem;
  line-height: 1.25rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  vertical-align: middle;
}

@media (max-width: 650px) {
  .info_panel div .value {
    padding: 0.5rem;
  }
}

.summary .columns {
  padding-left: 0;
  padding-right: 0;
}

table.data .title_heading {
  white-space: nowrap;
}

table.data th {
  font-size: 0.875rem;
}

.panel.no_border {
  border: 0;
}

.tabcontrols {
  padding: 0.625rem 0.625rem 0.25rem 0.625rem;
  -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0.05) inset;
  -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0.05) inset;
  box-shadow: 0 0 0 rgba(0, 0, 0, 0.05) inset;
}

.tabcontrols li {
  border: 0;
  overflow: hidden;
}

.tabcontrols li i {
  float: left;
  margin: 0.5rem 0.25rem 0 0.325rem;
  color: #02a7ec;
  width: 1rem;
}

.tabcontrols li.current i {
  color: #02a7ec;
}

.tabcontrols li.current a {
  border: none;
  color: #333;
}

.tabcontrols li a {
  cursor: pointer;
  color: #333;
  padding: 0.7rem 0 0.8125rem 0.25rem;
  font-size: 0.925rem;
  border: none;
  font-weight: bold;
  border-radius: 0;
}

.tabcontrols li + div:first-of-type {
  padding: 0 0 0 1.875rem;
}

@media (max-width: 650px) {
  .tabs.responsive .tabcontrols {
    display: block;
  }
}

.item-panel {
  -webkit-flex: 1;
  flex: 1;
  display: block;
  box-sizing: border-box;
  padding: 1rem 1rem 0 1rem;
  color: #888;
  overflow: auto;
}

@media (max-width: 1100px) {
  .item-panel {
    width: 100%;
    -webkit-flex: none;
    flex: none;
  }
}

.item-panel .header-container {
  margin-bottom: 0.625rem;
  color: #646569;
  font-weight: bold;
}

.item-panel .header-container .item-title {
  float: left;
}

.item-panel .header-container .link-container {
  float: right;
}

.item-panel .header-container .link-container .link-item {
  margin: 0 0.3125rem;
}

.item-panel .header-container .link-container .link-active {
  color: #02a7ec;
  cursor: pointer;
}

.item-panel .header-container .link-separator {
  margin: 0 0.5rem;
}

.item-panel .item-title {
  text-align: left;
  color: #646569;
  font-weight: bold;
  font-size: 1rem;
  padding-bottom: 0.5rem;
}

.item-panel table td {
  padding: 0.5rem;
}

.item-panel td.label {
  font-weight: bold;
  color: #646569;
}

.item-panel .item-content {
  display: -webkit-flex;
  display: flex;
}

.item-panel .item-content .item-title {
  font-size: 0.875rem;
  padding-left: 0.625rem;
}

.item-panel .item-content > div {
  -webkit-flex: 1;
  flex: 1;
  width: 100%;
  min-width: 0;
}

@media (max-width: 1100px) {
  .item-panel .item-content > div {
    -webkit-flex: none;
    flex: none;
  }
}

@media (max-width: 1100px) {
  .item-panel .item-content {
    -webkit-flex-flow: column;
    flex-flow: column;
  }
}

.item-panel .item-content-table {
  -webkit-flex: 1;
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  font-size: 0.875rem;
}

.item-panel .apprf-panel {
  height: 19rem;
}

.item-panel .item-content-chart {
  -webkit-flex: 1;
  flex: 1;
  width: 100%;
}

.item-panel .item-content-chart .apprf-header {
  overflow: hidden;
  margin: 0 0.7143rem;
  line-height: 1.75rem;
}

.item-panel .item-content-chart .apprf-header .item-title {
  float: left;
  font-size: 0.875rem;
}

.item-panel .item-content-chart .apprf-header .seggyc {
  float: right;
  margin: 0 1px 0 0;
}

.item-panel .item-content-chart .apprf-footer {
  margin: 0.5rem 0.875rem 1.5rem;
}

.item-panel .item-content-chart .apprf-footer > span {
  color: #02a7ec;
  text-decoration: underline;
  cursor: pointer;
}

.item-panel .item-content-chart .table {
  padding: 0 0.625rem;
}

.item-panel .link-more {
  padding: 0.5rem;
  text-align: right;
}

.item-panel .panel {
  overflow: inherit;
}

.overview-container {
  box-sizing: border-box;
  -webkit-flex: 0 0 auto;
  flex: 0 0 auto;
}

.overview-container a:hover {
  text-decoration: underline;
  cursor: pointer;
}

.overview-container .panel {
  border: none;
  margin-top: 0;
}

.overview-container .row {
  display: -webkit-flex;
  display: flex;
}

@media (max-width: 1100px) {
  .overview-container .row {
    -webkit-flex-flow: column;
    flex-flow: column;
  }
}

.overview-container table {
  color: #000000;
}

.overview-container .client-charts > div:first-child {
  flex: 2;
}

@media (max-width: 1100px) {
  .overview-container .client-charts > div:first-child {
    -webkit-flex: none;
    flex: none;
  }
}

.overview-container .client-charts > div:last-child {
  flex: 1;
}

@media (max-width: 1100px) {
  .overview-container .client-charts > div:last-child {
    -webkit-flex: none;
    flex: none;
  }
}

.monitoring-dashboard-icon {
  height: 14px;
  background-repeat: no-repeat;
  width: 19px;
  cursor: pointer;
}

.overview-networks-container {
  box-sizing: border-box;
}

.overview-networks-container .panel {
  border: none;
  margin-top: 0;
}

.overview-networks-container .tab-control-container {
  padding-top: 0.625rem;
}

.overview-networks-container .row {
  display: -webkit-flex;
  display: flex;
}

@media (max-width: 1100px) {
  .overview-networks-container .row {
    -webkit-flex-flow: column;
    flex-flow: column;
    height: auto;
  }
}

.overview-networks-container table {
  color: #000000;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .overview-networks-container table {
    max-height: 10rem;
  }
}

.overview-networks-container table td div.good {
  color: #0D7F2E;
}

.overview-networks-container table td div.ok {
  color: #ff9a1a;
}

.overview-networks-container table td div.poor {
  color: #ba0d00;
}

.overview-networks-container .table_wrapper {
  overflow: hidden;
}

.overview-networks-container .white {
  border: none;
}

.overview-networks-container .inactive-ap {
  color: #F43530;
}

.overview-networks-container .inactive-network {
  color: #C3C5C8;
}

.overview-networks-container.expanded {
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
}

.overview-networks-container.expanded > div:first-child {
  flex: 1;
}

.overview-networks-container.expanded > div:last-child {
  display: none;
}

.radio-container .radio-row {
  display: inline-block;
}

.network-init-wizard {
  height: 100%;
}

.network-init-finished-dialog .overlay.light {
  background-color: #fff;
}

.network-init-finished-dialog .network-init-success-content {
  box-sizing: border-box;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  justify-content: center;
  align-items: center;
}

.network-init-finished-dialog .network-init-success-content p {
  font-size: 1.5rem;
}

.network-init-finished-dialog .network-init-success-content .network-init-loading,
.network-init-finished-dialog .network-init-success-content .network-init-message {
  padding-top: 30%;
}

.network-init-finished-dialog .network-init-success-content .fa-fw {
  width: 16rem;
  color: #02a7ec;
}

@media (max-width: 650px) {
  .network-init-finished-dialog .network-init-success-content .fa-fw {
    width: 10rem;
  }
}

.network-init-finished-dialog .network-init-success-content .fa-fw:before {
  font-size: 16rem;
}

@media (max-width: 650px) {
  .network-init-finished-dialog .network-init-success-content .fa-fw:before {
    font-size: 10rem;
  }
}

.network-init-finished-dialog .network-init-success-content .fa-check {
  color: #00CC00;
}

.network-init-finished-dialog .network-init-success-content .fa-check:before {
  font-size: 5rem;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .hide-mobile {
    display: none !important;
  }
}

.loadingDialog {
  box-sizing: border-box;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  justify-content: center;
  align-items: center;
}

.loadingDialog p {
  font-size: 1.5rem;
}

.loadingDialog .loading,
.loadingDialog .message {
  display: -webkit-flex;
  display: flex;
  align-items: center;
}

.loadingDialog .fa-fw {
  width: 8rem;
  color: #02a7ec;
}

@media (max-width: 650px) {
  .loadingDialog .fa-fw {
    width: 10rem;
  }
}

.loadingDialog .fa-fw:before {
  font-size: 6rem;
}

.loadingDialog .fa-check {
  color: #00CC00;
}

.loadingDialog .fa-check:before {
  font-size: 5rem;
}

.configuration-container {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  overflow: hidden;
  flex: 1;
}

.configuration-container .config-title {
  height: 2rem;
}

.configuration-container .config-current {
  height: 1.5rem;
}

.configuration-container .config-content {
  flex: 1;
  padding-left: 0.5rem;
  padding-top: 0.5rem;
  border: 1px solid #efefef;
  margin-bottom: 1rem;
  font-family: Verdana, SimSun;
  overflow-y: auto;
  -webkit-user-select: text;
  -moz-user-select: text;
  -ms-user-select: text;
  user-select: text;
}

.configuration-container .config-checkbox label {
  float: none;
}

.configuration-container .config-footer {
  width: 100%;
}

.configuration-container .config-footer button {
  min-width: 12rem;
  display: block;
  margin-bottom: 0.625rem;
}

/* FLASHING */

@-webkit-keyframes fadeIn {
  0% {
    opacity: 0;
  }

  100% {
    opacity: 1;
  }
}

@keyframes fadeIn {
  0% {
    opacity: 0;
  }

  100% {
    opacity: 1;
  }
}

.faa-fadeIn.animated {
  -webkit-animation: fadeIn 2s ease;
  animation: fadeIn 2s ease;
}

.page-loading .overlay.light {
  background-color: rgba(255, 255, 255, 0.5);
}

.page-loading .fa-fw {
  width: 10rem;
  color: #02a7ec;
}

@media (max-width: 650px) {
  .page-loading .fa-fw {
    width: 6rem;
  }
}

.page-loading .fa-fw:before {
  font-size: 10rem;
}

@media (max-width: 650px) {
  .page-loading .fa-fw:before {
    font-size: 6rem;
  }
}

.arrow-up:before {
  content: "";
  border: 0.5rem solid transparent;
  border-bottom-color: rgba(0, 0, 0, 0.15);
}

.arrow-up:after {
  content: "";
  border: 0.5rem solid transparent;
  border-bottom-color: #fff;
}

.arrow-down:before {
  content: "";
  border: 0.5rem solid transparent;
  border-top-color: rgba(0, 0, 0, 0.15);
}

.arrow-down:after {
  content: "";
  border: 0.5rem solid transparent;
  border-top-color: #fff;
}

/****** help ******/

.help-menu-icon {
  color: #02a7ec;
}

.help-menu-icon:hover,
.help-menu-icon.current {
  cursor: pointer;
}

.help-advice-container {
  background-color: #FFF;
  padding: 0.25rem 0.625rem;
  border-radius: 0.3125rem;
  position: absolute;
  z-index: 1001;
  right: 1.625rem;
  top: 3.5625rem;
  box-shadow: 0 0.1875rem 0.75rem rgba(0, 0, 0, 0.15);
  border: 1px solid rgba(0, 0, 0, 0.15);
  font-size: 0.875rem;
}

.help-advice-container .help-mode {
  margin: 0 0.625rem;
}

.help-advice-container .help-advice-content {
  line-height: 2rem;
  color: #333;
}

.help-advice-container .help-advice-content .help-advice-done {
  cursor: pointer;
  color: #02a7ec;
}

.help-advice-arrow:before {
  position: absolute;
  right: 3.6rem;
  margin-top: -1.3rem;
}

.help-advice-arrow:after {
  position: absolute;
  right: 3.6rem;
  margin-top: -1.22rem;
}

.help-tooltip-container {
  position: absolute;
  border-radius: 0.3125rem;
  background-color: #fdfdda;
  font-size: 0.875rem;
  max-width: 25rem;
  box-shadow: 0 -0.1875rem 0.75rem rgba(0, 0, 0, 0.15);
  border: 1px solid rgba(0, 0, 0, 0.15);
  z-index: 10005;
}

@media (max-width: 1100px) {
  .help-tooltip-container {
    max-width: 18.75rem;
  }
}

.help-tooltip-container .help-tooltip-content {
  margin: 0.5rem;
  line-height: 1.5;
  overflow-y: auto;
}

.help-tooltip-arrow:before {
  position: absolute;
  bottom: -1rem;
  left: 0.625rem;
}

.help-tooltip-arrow:after {
  border-top-color: #fdfdda;
  position: absolute;
  bottom: -0.9rem;
  left: 0.625rem;
}

/****** help ******/

.multiple-selector {
  position: relative;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .multiple-selector {
    margin: 0rem;
    margin-right: 1rem;
  }
}

.multiple-selector .lableRow {
  border: 1px solid rgba(0, 0, 0, 0.1);
  padding: 0.625rem 2.5rem 0.625rem 0.625rem;
  font-family: 'opensans', helvetica, arial, sans-serif;
  font-size: 0.875rem;
  color: #02a7ec;
  outline: none;
  background: url(../images/select_arrow_2x.png) #fff no-repeat right center;
  background-size: 38px 38px;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  -ms-border-radius: 4px;
  -o-border-radius: 4px;
  border-radius: 4px;
  -webkit-box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 rgba(0, 0, 0, 0.1);
  -moz-box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 rgba(0, 0, 0, 0.1);
  box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 rgba(0, 0, 0, 0.1);
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  cursor: pointer;
  display: inline-block;
}

.multiple-selector .select-lable {
  display: inline;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
  width: 10rem;
  margin-top: 0.25rem;
}

.multiple-selector .component {
  position: absolute;
  z-index: 1000;
  background-color: #fff;
  border: 1px solid #DFE1E5;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .multiple-selector .component {
    margin-top: -0.25rem;
  }
}

.multiple-selector .search-input {
  padding: 0.5rem;
  width: 21rem;
}

.multiple-selector .check-all {
  line-height: 2rem;
  padding-left: 0.5rem;
  cursor: pointer;
}

.multiple-selector .switch-multiple {
  padding: 0.5rem;
  overflow: hidden;
}

.multiple-selector .switch-multiple label {
  cursor: pointer;
}

.multiple-selector .drop-down-list {
  padding: 0.5rem;
  height: 23rem;
  width: 21rem;
  overflow-y: scroll;
  border-top: solid 1px #DFE1E5;
  border-bottom: solid 1px #DFE1E5;
}

.multiple-selector .drop-down-list label {
  cursor: pointer;
}

.multiple-selector .drop-down-list div {
  height: 2rem;
}

.multiple-selector .drop-down-list div:hover {
  background-color: #DFE1E5;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .multiple-selector .drop-down-list div {
    height: 3.5rem;
  }
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .multiple-selector .drop-down-list div label {
    width: 16rem;
  }
}

.multiple-selector .drop-down-list div label.singalLabel {
  float: left;
  line-height: 2rem;
  padding-left: 0.5rem;
}

.search {
  position: relative;
  margin-top: 3px;
}

.search .search-icon {
  color: #02a7ec;
  cursor: pointer;
  transition: 0.5s;
}

.search .search-icon-remove {
  position: absolute;
  right: 0.375rem;
  top: 0.375rem;
}

.search .search-input {
  border: 1px solid rgba(0, 0, 0, 0.15);
  border-radius: 0.3125rem;
  height: 1.5rem;
  padding: 0.25rem 0.25rem 0.25rem 1.875rem;
  width: 17rem;
  font-size: 0.875rem;
  color: #666;
  transition: 0.5s;
}

@media (max-width: 650px) {
  .search .search-input {
    width: 7rem;
  }
}

.search .search-input.search-input-hide {
  padding: 0;
  border: none;
  width: 0;
  background-color: transparent;
}

.search .search-result {
  position: absolute;
  border-radius: 0.3125rem;
  background-color: #FFF;
  font-size: 0.875rem;
  box-shadow: 0 0.1875rem 0.75rem rgba(0, 0, 0, 0.15);
  border: 1px solid rgba(0, 0, 0, 0.15);
  top: 2.5rem;
  z-index: 1006;
}

@media (max-width: 650px) {
  .search .search-result {
    left: -4rem;
  }
}

.search .search-result .search-result-arrow:before {
  position: absolute;
  top: -1rem;
  left: 1.5rem;
}

@media (max-width: 650px) {
  .search .search-result .search-result-arrow:before {
    left: 5.5rem;
  }
}

.search .search-result .search-result-arrow:after {
  position: absolute;
  top: -0.9rem;
  left: 1.5rem;
}

@media (max-width: 650px) {
  .search .search-result .search-result-arrow:after {
    left: 5.5rem;
  }
}

.search .search-result .search-result-items {
  min-width: 19.25rem;
  max-width: 19.25rem;
  max-height: 25rem;
  overflow-y: auto;
}

.search .search-result .search-result-items .search-no-results {
  line-height: 1;
  padding: 0.5rem 1rem;
}

.search .search-result .search-result-items .search-result-item {
  padding: 0;
}

.search .search-result .search-result-items .search-result-item .item-title {
  padding: 0 0.5rem;
  color: #ccc;
  font-weight: normal;
  border-bottom: 1px solid #ccc;
}

.search .search-result .search-result-items .search-result-item .search-result-item-body {
  max-height: 7.5rem;
  overflow-y: auto;
}

.search .search-result .search-result-items .search-result-item .search-result-item-body .data-item {
  color: #ccc;
}

.search .search-result .search-result-items .search-result-item .search-result-item-body .data-item a {
  line-height: 1;
  padding: 0.5rem 1rem;
}

.search .search-result .search-result-items .search-result-item .search-result-item-body .data-item a:hover {
  color: #ccc;
  cursor: pointer;
}

.search .search-result .search-result-items .search-result-item .search-result-item-body .data-item .highlight {
  font-weight: bold;
}

.search .search-result .search-result-items .search-result-item .search-result-item-body .data-item.selected {
  background-color: #def2fa;
  color: #fff;
}

.search .search-result .search-result-items .search-result-item .search-result-item-body .data-item.selected a:hover {
  color: #fff;
}

.overlay .message {
  border-radius: 0.3125rem;
  box-shadow: 0 0.1875rem 0.75rem rgba(0, 0, 0, 0.15);
  background-color: #FFF;
}

.overlay .message.reloading {
  box-shadow: none;
  background-color: transparent;
  top: 30%;
}

.overlay .message.reloading .dialog-content p {
  display: block;
  text-align: center;
}

.overlay .message.reloading.tab-loading .fa-spinner {
  color: #e3e3e3;
}

.overlay .message.reloading.tab-loading .fa-spinner:before {
  font-size: 6rem;
}

.overlay .message .dialog-title {
  text-align: left;
  padding: 0.5rem;
  font-size: 1rem;
  font-weight: bold;
  color: #646569;
  height: 2rem;
  line-height: 2rem;
  background-color: #F8F8F8;
}

.overlay .message .dialog-content {
  padding: 0.5rem;
}

.overlay .message .dialog-content p {
  display: table-cell;
  margin-bottom: 0;
  font-size: 1rem;
  line-height: 1.5rem;
  font-weight: normal;
  text-align: left;
  padding: 0.625rem;
}

.overlay .message .dialog-action {
  text-align: right;
  padding: 0.5rem;
}

.overlay .message .dialog-action > button:nth-child(1) {
  margin-right: 0.5rem;
}

.firmware.message {
  box-shadow: none;
}

.firmware.message .dialog-content p {
  display: block;
  text-align: center;
}

.section {
  margin-top: 0.5rem;
  margin-bottom: 1rem;
  /* .section-spliter {
        margin: 0.5rem;
        width: 50%;
        //border-style: solid;
        //border-width: 1px 0 0 0;
        //border-color: rgba(0, 0, 0, 0.1);
        background-color: rgba(0, 0, 0, 0.1);
        line-height: 1px;
        display: inline-block;
    } */
}

.section .section-header {
  cursor: pointer;
  padding-bottom: 0.5rem;
}

.section .section-header > label {
  cursor: pointer;
  font-weight: bold;
}

.section .uncollapsiable {
  cursor: default;
}

.section .uncollapsiable > label {
  cursor: default;
}

.section .uncollapsiable .section-icon {
  visibility: hidden;
  margin-right: 0.2rem;
}

.section .section-content {
  padding-left: 1.125rem;
  clear: both;
}

.section .section-content > .row.table-row {
  display: flex;
  margin-bottom: 0;
}

.section .section-content > .row.table-row div.form-field:first-child {
  flex: 1 1 10rem;
  display: inline-block;
}

.section .section-content > .row.table-row div.form-field:last-child {
  flex: 10 10 50rem;
  display: inline-block;
}

.section .section-content-hide {
  display: none;
}

.section .section-icon {
  margin-right: 0.375rem;
  color: #02a7ec;
}

.section .section-icon:before {
  font-size: 1rem;
}

.uplink-priority-table {
  width: 25rem;
}

@media (max-width: 650px) {
  .uplink-priority-table {
    width: 14rem;
  }
}

.table-actions-bar-container {
  border: 1px solid rgba(0, 0, 0, 0.1);
  border-top: none;
  padding: 0.5rem;
}

.table-actions-bar-container .table-actions-bar-action {
  display: inline-block;
  margin-right: 0.5rem;
  color: #02a7ec;
  cursor: pointer;
}

.table-actions-bar-container .disable {
  color: #c4c4c4;
  cursor: default;
}

.user-menu-arrow {
  position: absolute;
  right: 1.6rem;
}

.user-menu-arrow:before,
.user-menu-arrow:after {
  position: absolute;
}

.user-menu-arrow:before {
  top: -1rem;
}

.user-menu-arrow:after {
  top: -0.9375rem;
}

.upload-file-div {
  position: relative;
}

.upload-file {
  z-index: 200;
  position: absolute;
  opacity: 0;
  width: 30rem;
  height: 2.5rem;
  cursor: pointer;
  left: 0;
}

.form-field .upload-input {
  width: 30rem;
  height: 2.5rem;
}

.upload-iframe {
  display: none;
}

input[type=text].input.filerow-input {
  border-top-right-radius: 0px;
  border-bottom-right-radius: 0px;
  border-right: none;
  height: 2.5rem;
  width: 20rem;
  float: left;
}

.filerow-button {
  height: 2.5rem;
  padding: 0rem 1rem;
  margin-left: -3px;
  border-top-left-radius: 0px;
  border-bottom-left-radius: 0px;
  float: left;
}

.table-action-icon {
  margin: 0 1rem 0 0;
  color: #C3C5C8;
}

.table-action-icon.enable {
  cursor: pointer;
  color: #02a7ec;
}

.form-field-label {
  line-height: 2rem;
  float: left;
  margin: 0 0.625rem;
  max-width: 20rem;
  word-wrap: break-word;
}

.form-field-button {
  line-height: 2rem;
  float: left;
  cursor: pointer;
}

.form-field-button.section-icon {
  margin-right: 0rem;
}

.overlay .dialog {
  top: 10%;
  margin-bottom: 10%;
}

.overlay .dialog-content {
  overflow: auto;
  max-height: 30rem;
}

@media only screen and (max-height: 600px) {
  .overlay .dialog-content {
    max-height: 24rem;
  }
}

@media only screen and (max-height: 400px) {
  .overlay .dialog-content {
    max-height: 12rem;
  }
}

.multiple-checkbox {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
  -webkit-justify-content: flex-start;
  justify-content: flex-start;
  -webkit-align-content: space-between;
  align-content: space-between;
  max-width: 40rem;
}

.multiple-checkbox .checkbox-field {
  margin-right: 1rem;
  display: -webkit-flex;
  display: flex;
  width: 5rem;
}

@media (max-width: 1100px) {
  .multiple-checkbox .checkbox-field {
    width: 7rem;
  }
}

@media (max-width: 650px) {
  .multiple-checkbox .checkbox-field {
    width: 6rem;
  }
}

.checkbox-field {
  float: left;
  margin-right: 0.625rem;
}

.checkbox-field.disable {
  color: #C3C5C8;
}

.traffic-bar .total {
  float: left;
  margin-right: 0.8rem;
  width: 60%;
}

.traffic-bar .total > span {
  padding-left: 0.5rem;
}

.traffic-bar .per {
  float: left;
  background-color: #89A54E;
}

.traffic-bar .text {
  float: right;
}

.apprf-table-category {
  width: 30%;
}

.warning-message {
  color: #FF4C00;
  margin: 0.5rem 0;
}

.warning-message > span {
  padding-left: 0.5rem;
}

.warning-message .fas:before,
.warning-message .far:before {
  font-size: 1rem;
}

.info-panel {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
}

@media (max-width: 650px) {
  .info-panel {
    display: block;
  }
}

.info-panel .info-item {
  -webkit-flex: 1 1 50%;
  flex: 1 1 50%;
  display: -webkit-flex;
  display: flex;
  -webkit-justify-content: flex-start;
  justify-content: flex-start;
  border-bottom: 1px solid #DFE1E5;
}

.info-panel .info-item .info-label {
  font-weight: bold;
  color: #646569;
  padding: 0.5rem;
}

.info-panel .info-item .info-value {
  -webkit-flex: 1;
  flex: 1;
  padding: 0.5rem;
}

@media (max-width: 650px) {
  .info-panel .info-item.hide {
    display: none;
  }
}

.info-panel .info-control {
  display: none;
  text-align: center;
  padding: 0.5rem;
  line-height: 1rem;
  color: #02a7ec;
}

@media (max-width: 650px) {
  .info-panel .info-control {
    display: block;
  }
}

.info-panel .info-control .control-text {
  padding-right: 0.5rem;
}

.info-panel .info-control .control-icon:before {
  font-size: 0.825rem;
}

.networks-info .info-item {
  -webkit-flex: 1 1 33.3%;
  flex: 1 1 33.3%;
}

.row-picker {
  position: absolute;
  border: 1px solid rgba(0, 0, 0, 0.1);
  border-radius: 4px;
  margin-top: 1px;
  background: white;
  z-index: 9999;
  max-width: 32rem;
}

@media (max-width: 650px) {
  .row-picker {
    max-width: 21rem;
  }
}

.row-picker .dialog-title {
  text-align: left;
  padding: 0.5rem;
  font-size: 1rem;
  font-weight: bold;
  color: #646569;
  background-color: #F8F8F8;
}

.row-picker .panel-content {
  padding: 0.5rem;
}

.row-picker .picker-action {
  float: right;
  text-align: right;
  padding: 0.5rem;
}

.row-picker .picker-action > button:nth-child(1) {
  margin-right: 0.5rem;
}

.row-picker .picker-action > button {
  padding: 0.3rem 0.5rem;
}

.row-picker .form-field:first-child {
  float: none;
}

.row-picker .row {
  margin-left: 0rem;
}

.row-picker a.dialog-close {
  display: block;
  position: absolute;
  top: 3%;
  right: 2%;
  cursor: pointer;
}

.client-match-ap {
  display: -webkit-flex;
  display: flex;
  width: 100%;
  overflow: hidden;
}

@media (max-width: 650px) {
  .client-match-ap {
    display: block;
  }
}

.client-match-ap .chart-panel {
  flex: 3;
  width: 100%;
  height: 25rem;
}

.client-match-ap .detail-panel {
  display: none;
  flex: 2;
}

.client-match-ap .detail-panel table {
  margin-bottom: 0.8rem;
}

.client-match-ap .detail-panel .item-title {
  padding-bottom: 0;
}

.client-match-ap .info-panel {
  margin-bottom: 0.8rem;
  display: block;
}

.client-match-ap .seggyc {
  position: absolute;
  right: 0.5rem;
  top: 0;
  margin: 1.2rem 0.625rem 1.2rem 0;
}

.client-match-client {
  display: -webkit-flex;
  display: flex;
}

@media (max-width: 650px) {
  .client-match-client {
    display: block;
  }
}

.client-match-client .chart-panel {
  flex: 3;
}

.client-match-client .detail-panel {
  flex: 2;
}

.client-match-client .detail-panel table {
  margin-bottom: 0.8rem;
}

.client-match-client .detail-panel .item-title {
  padding-bottom: 0;
}

.client-match-client .info-panel {
  margin-bottom: 0.8rem;
  display: block;
}

.support.panel {
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
}

.support.panel .support-select {
  display: -webkit-flex;
  display: flex;
  -webkit-justify-content: space-around;
  justify-content: space-around;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
  overflow: visible;
}

.support.panel .support-select .select {
  margin-right: 0.5rem;
}

.support.panel .support-select .enable-color {
  color: #00ff7f;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .support.panel .support-select .small-hide {
    display: none;
  }
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .support.panel .support-select {
    -webkit-flex-direction: column;
    flex-direction: column;
    -webkit-align-items: flex-start;
    align-items: flex-start;
  }
}

.support.panel .support-select button {
  margin-left: 0.25rem;
}

.support.panel .support-select > div {
  white-space: nowrap;
  padding-right: 0.25rem;
}

.support.panel .support-select .multiple-selector {
  flex: 1;
}

.support.panel .support-result-head {
  display: -webkit-flex;
  display: flex;
  -webkit-justify-content: flex-start;
  justify-content: flex-start;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
  overflow-y: auto;
  max-height: 4rem;
  margin-top: 0.625rem;
}

.support.panel .support-result-head div {
  border: 1px solid #DFE1E5;
  border-top-left-radius: 0.5rem;
  border-top-right-radius: 0.5rem;
  padding: 0.5rem;
  border-bottom-color: transparent;
  cursor: pointer;
  background-color: #F8F8F8;
}

.support.panel .support-result-head div.selected {
  color: #02a7ec;
  background-color: white;
}

.support.panel .support-result-content {
  flex: 1;
  min-height: 10rem;
  overflow: auto;
  border: 1px solid #DFE1E5;
  font-family: monospace;
  -webkit-user-select: text;
  -moz-user-select: text;
  -ms-user-select: text;
  user-select: text;
}

.support.panel .support-result-content pre {
  max-width: 0;
}

.config-access-points .item-title {
  margin-top: 1.5rem;
}

.config-access-points .inactive-ap {
  color: #F43530;
}

.config-access-points .aps-name-master {
  max-width: 95%;
}

.notification .ui-badge {
  margin-top: -0.2rem;
  left: 0.7rem;
  position: absolute;
}

.notification-icon {
  position: relative;
  color: #02a7ec;
}

.notification-icon.active,
.notification-icon:hover {
  cursor: pointer;
  color: #02a7ec;
}

.notification-content {
  position: absolute;
  display: none;
  border-radius: 0.3125rem;
  background-color: #FFF;
  font-size: 0.875rem;
  box-shadow: 0 0.1875rem 0.75rem rgba(0, 0, 0, 0.15);
  border: 1px solid rgba(0, 0, 0, 0.15);
  top: 3.5rem;
  right: 2.875rem;
  min-width: 10rem;
  z-index: 1006;
}

.notification-content.active {
  display: block;
}

.notification-content .notification-content-arrow:before {
  position: absolute;
  top: -1rem;
  right: 5rem;
}

.notification-content .notification-content-arrow:after {
  position: absolute;
  top: -0.9rem;
  right: 5rem;
}

.notification-content ul {
  padding: 0.5rem 0 !important;
}

.notification-content li {
  list-style: none;
  line-height: 2rem;
  height: 2rem;
  text-align: left;
  color: #02a7ec;
}

.notification-content li > span,
.notification-content li a {
  padding: 0 0.5rem !important;
  cursor: pointer !important;
}

.notification-content li a:hover {
  background-color: #02a7ec !important;
  color: #FFF !important;
}

.notification-content span.ui-badge {
  position: relative;
  top: 0;
  left: 0;
  margin: -0.2rem 0 0 0.5rem !important;
}

.notification-content .no-data {
  line-height: 1;
  padding: 0.5rem 1rem;
  color: #c4c4c4;
}

.ui-badge {
  display: inline-block;
  padding: 0.15rem 0.4rem;
  border-radius: 1.2857rem;
  background-color: #F43530;
  color: #FFFFFF;
  line-height: 1.2;
  text-align: center;
  font-size: 0.7148rem;
  vertical-align: middle;
}

.ui-badge-dot {
  padding: 0.4em;
  min-width: 0;
}

.alert-container {
  margin: 1rem;
}

.alert-container .table {
  margin-bottom: 1rem;
}

.alert-container .title_heading {
  background: #F5F5F5;
}

.aps-config {
  padding: 0;
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
}

.aps-config .form_heading {
  padding: 0.625rem 1rem 0;
}

.uplink-cert-upload.message {
  box-shadow: none;
}

.uplink-cert-upload.message .dialog-content p {
  display: block;
  text-align: center;
}

.aps-overview-charts .seggyc {
  float: none;
  margin: 0;
}

.aps-overview-charts .ap-rftrends {
  min-height: 31rem;
}

.tab-loading-bg.overlay {
  position: absolute;
  background-color: rgba(255, 255, 255, 0.8);
}

.spectrum-ap {
  display: -webkit-flex;
  display: flex;
  width: 100%;
  overflow: hidden;
}

@media (max-width: 650px) {
  .spectrum-ap {
    display: block;
  }
}

.spectrum-ap .chart-panel {
  flex: 2;
  width: 100%;
}

.spectrum-ap .detail-panel {
  flex: 1;
}

.spectrum-ap .detail-panel .item-title {
  padding-bottom: 0;
}

.spectrum-ap .seggyc {
  float: none;
  margin: 0;
}

.inactive {
  color: #c0c0c0;
  border-color: #c0c0c0;
  cursor: not-allowed;
}

.inactive label {
  cursor: not-allowed;
}

.splash-page-container {
  color: #000000;
}

.splash-page-container .splash-page-banner {
  cursor: pointer;
  margin-top: 0.5rem;
  height: 2rem;
  border: 1px solid transparent;
}

.splash-page-container .splash-page-banner:hover,
.splash-page-container .splash-page-banner.editing {
  border: 1px solid yellow;
}

.splash-page-container .splash-page-banner .splash-page-banner-ins {
  height: 2rem;
  border: 1px solid transparent;
}

.splash-page-container .splash-page-banner .splash-page-banner-ins:hover,
.splash-page-container .splash-page-banner .splash-page-banner-ins.editing {
  border: 1px solid red;
}

.splash-page-container .splash-page-body {
  cursor: pointer;
  height: 11rem;
  border: 1px solid #F5f5f5;
}

.splash-page-container .splash-page-body:hover {
  border: 1px solid yellow;
}

.splash-page-container .splash-page-body.editing {
  border: 1px solid yellow;
}

.splash-page-container .splash-page-body .splash-page-body-ins {
  height: 11rem;
  overflow-y: auto;
  border: 1px solid transparent;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
  -webkit-justify-content: center;
  justify-content: center;
}

.splash-page-container .splash-page-body .splash-page-body-ins:hover,
.splash-page-container .splash-page-body .splash-page-body-ins.editing {
  border: 1px solid red;
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-left,
.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-right {
  margin: 1.5rem 1rem;
  flex: 1;
}

@media (max-width: 650px) {
  .splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-left,
  .splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-right {
    min-width: 90%;
  }
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-right {
  position: relative;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-right input[type=checkbox] {
  margin-left: 0;
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-right input[type=password] {
  margin-top: 0.25rem;
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-right label {
  color: #F5831E;
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-right .splash-page-body-right-mask {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-text {
  border: 1px solid transparent;
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-text:hover,
.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-text.editing {
  border: 1px solid yellow;
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-text .splash-page-body-text-ins {
  padding: 0.2rem;
  border: 1px solid transparent;
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-text .splash-page-body-text-ins:hover,
.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-text .splash-page-body-text-ins.editing {
  border: 1px solid red;
}

.splash-page-container .splash-page-body .splash-page-body-ins #splash-page-w-text {
  font-weight: bold;
}

.splash-page-container .splash-page-body .splash-page-body-ins #splash-page-t-text {
  color: #aaa;
}

.splash-page-container .splash-page-logo,
.splash-page-container .splash-page-preview,
.splash-page-container .splash-page-redirect {
  padding: 0.5rem 0;
  display: -webkit-flex;
  display: flex;
  -webkit-justify-content: space-between;
  justify-content: space-between;
  -webkit-align-items: center;
  align-items: center;
}

.splash-page-container .splash-page-logo a,
.splash-page-container .splash-page-preview a,
.splash-page-container .splash-page-redirect a {
  cursor: pointer;
}

.splash-page-container .splash-page-redirect {
  -webkit-justify-content: flex-start;
  justify-content: flex-start;
}

.splash-page-container .splash-page-redirect > div {
  margin-right: 0.5rem;
}

.splash-page-container .splash-page-redirect span {
  color: #c3c5c8;
}

.access-rules-table table.data td {
  padding: 0.5rem 0.625rem;
}

.access-rules-table .title_heading span.role-name {
  color: #02a7ec;
  position: static;
}

table.data td.access-rules-role {
  padding: 0.5rem 0.625rem;
}

.chrome-picker {
  box-shadow: none !important;
}

.network-security-guest {
  display: -webkit-flex;
  display: flex;
}

@media (max-width: 650px) {
  .network-security-guest {
    display: block;
  }
}

.network-security-guest > div {
  -webkit-flex: 1;
  flex: 1;
}

#splash-edit-picker .row-picker {
  max-width: none;
}

#splash-edit-picker .form-field {
  padding-right: 0;
  margin-bottom: 0;
}

.access-rule-container {
  display: -webkit-flex;
  display: flex;
}

.access-rule-container .role-container {
  width: 22rem;
}

.access-rule-container .rule-container {
  margin-left: 0.625rem;
  flex: 4;
}

.access-rule-container .title_heading {
  background: #F5F5F5;
}

.ids-td-slider {
  height: 15rem;
  width: 15rem;
  padding: 0.625rem;
}

@media (max-width: 650px) {
  .ids-td-slider {
    width: 6rem;
  }
}

.ids-protection .ids-td-slider {
  height: 8rem;
}

.ids-td-policy {
  width: 30rem;
}

@media (max-width: 650px) {
  .ids-td-policy {
    width: 15rem;
  }
}

.ids-policy-container {
  border: 1px solid #DFE1E5;
  height: 15rem;
  overflow-y: auto;
}

.ids-policy-container .ids-policy {
  overflow: hidden;
}

.ids-policy-container .ids-policy .ids-policy-cb {
  float: left;
  margin: 0.25rem;
}

.ids-policy-container .ids-policy .ids-policy-img {
  height: 1rem;
  width: 1rem;
  float: left;
  margin: 0.5rem 0.25rem 0.25rem 0.5rem;
}

.ids-policy-container .ids-policy .ids-policy-label {
  line-height: 1.5rem;
  float: left;
  margin: 0.25rem 0 0 0.25rem;
}

.ids-protection .ids-policy-container {
  height: 8rem;
}

.link-button {
  text-decoration: underline;
  cursor: pointer;
}

.message-info {
  color: #5c89a6;
  margin: 0.25rem 0 0.625rem 0;
}

.message-info .fa-info-circle:before {
  font-size: 1rem;
}

.message-info .info-text {
  line-height: 1.5rem;
  margin: 0 0.625rem;
}

.message-warning {
  color: #ff4c00;
}

.rc-slider-disabled {
  background-color: transparent;
}

.rc-slider-mark-text {
  white-space: nowrap;
}

table.data .unsortable > span:after {
  display: none;
}

table.data tbody tr {
  /* &.selected:hover {
                background-color: $colorHighlight;
            } */
}

table.data tbody tr .table-action-icon {
  visibility: hidden;
}

table.data tbody tr.selected .table-action-icon.enable {
  visibility: visible;
  color: #02a7ec;
}

table.data tbody tr:hover {
  background-color: #def2fa;
}

table.data tbody tr:hover .table-action-icon {
  visibility: visible;
}

table.data tbody tr.no-data {
  cursor: default;
  background-color: inherit;
  color: rgba(196, 196, 196, 0.3);
  font-size: 2rem;
}

table.data tbody tr.no-data td {
  margin: 1rem 0;
  text-align: center;
}

table.data tbody tr.no-data td .far:before {
  font-size: 2rem;
}

table.data tbody tr.no-data td span {
  padding-left: 0.625rem;
}

table.data tbody tr.no-data:hover td {
  color: inherit;
}

.access-rules-dialog {
  z-index: 100;
}

.access-rules-dialog .message {
  max-width: 65rem;
}

.access-rules-edit-panel {
  display: -webkit-flex;
  display: flex;
}

.access-rules-edit-panel select {
  padding: 0.375rem 2.5rem 0.375rem 0.625rem;
}

.access-rules-edit-panel .multiple-selector .lableRow {
  padding: 0.5rem 2.5rem 0.5rem 0.625rem;
}

.access-rules-edit-panel div {
  text-align: left;
}

.access-rules-edit-panel input[type="radio"] + label {
  line-height: 2rem;
}

.access-rules-edit-panel table {
  width: 100%;
}

.access-rules-edit-panel table th,
.access-rules-edit-panel table td {
  padding-bottom: 0.375rem;
}

.access-rules-edit-panel table input[type=radio] {
  margin-left: 0;
}

.access-rules-edit-panel .acl-webreputation-slider .rc-slider-mark {
  padding-left: 0.625rem;
}

.access-rules-warning {
  color: #ff4c00;
  margin-top: 0.625rem;
  text-align: left;
}

.fast-roaming {
  margin-bottom: 0.5rem;
  font-weight: bold;
}

.airgroup-services-container {
  display: -webkit-flex;
  display: flex;
}

.airgroup-services-container .airgroup-services-left {
  flex: 1;
}

.airgroup-services-container .airgroup-services-left table .checkbox-input {
  width: 1.25rem;
  height: 1.25rem;
  line-height: 1.25rem;
  margin-top: 0.25rem;
}

.airgroup-services-container .airgroup-services-left table .checkbox-input:before {
  font-size: 0.875rem;
  left: 0.2rem;
  top: 0.05rem;
}

.airgroup-services-container .airgroup-services-right {
  flex: 3;
  margin-left: 0.625rem;
}

.airgroup-services-container .airgroup-services-right .airgroup-services-disallowed-container {
  margin-bottom: 0.625rem;
}

.airgroup-services-container .airgroup-services-right .airgroup-services-disallowed-container .checkbox-field {
  width: auto;
}

.airgroup-services-container .airgroup-services-right .diallowed-edit {
  cursor: pointer;
  margin-left: 0.625rem;
}

.airgroup-services-container .airgroup-services-right .diallowed-edit a:before {
  font-size: 1rem;
}

.airgroup-warning {
  margin-bottom: 0.625rem;
}

.combo-middle-label {
  margin-left: 0.625rem;
  margin-right: 0.625rem;
}

.combo-button-left {
  margin-left: 0.625rem;
}

.profileselect-container {
  display: -webkit-flex;
  display: flex;
}

.profileselect-container .profileselect-action {
  margin: 0.5rem 0.375rem;
}

.profileselect-container .profileselect-action a {
  font-size: 1rem;
  margin-right: 0.625rem;
  cursor: pointer;
}

.profileselect-container .profileselect-action a:before {
  font-size: 1rem;
}

.dhcp-container {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
}

.dhcp-container .footer {
  width: auto;
  overflow: unset;
  height: 2.5rem;
  padding: 0.25rem 0.625rem;
  border-top: 1px solid #DFE1E5;
  display: block;
  background: #FFF;
}

.dhcp-container .footer .button {
  float: right;
  margin-left: 0.625rem;
  padding: 0.625rem;
  width: 5rem;
}

.time-range-dialog-container .row.table-row .form-field {
  padding-bottom: 0;
}

.vlan-rules-table-container {
  padding: 0;
  overflow: visible;
  color: #000;
}

.vlan-rules-table-container .row-picker {
  margin-top: -2rem;
}

.highcharts-legend-item > span {
  z-index: -1;
}

.tab-control {
  display: block;
  overflow: auto;
  -webkit-box-shadow: 0 -1px 0 #DFE1E5 inset;
  -moz-box-shadow: 0 -1px 0 #DFE1E5 inset;
  box-shadow: 0 -1px 0 #DFE1E5 inset;
}

.tab-control li {
  float: left;
}

.tab-control li a {
  float: left;
  margin-right: 0.3125rem;
  padding: 0.625rem;
  font-size: 0.875rem;
  line-height: 0.625rem;
  border-bottom: 3px solid transparent;
  -webkit-transition: border 0.3s;
  -moz-transition: border 0.3s;
  -o-transition: border 0.3s;
  transition: border 0.3s;
  cursor: pointer;
}

@media (max-width: 1100px) {
  .tab-control li a {
    font-size: 1rem;
  }
}

.tab-control a.current {
  color: #646569;
  border-bottom: 3px solid #02a7ec;
  font-weight: bold;
  cursor: default;
}

.tab-control li:last-child a {
  margin-right: 0;
}

.tab-control-container {
  padding-bottom: 0;
}

.tab-control-container .icon-pill {
  float: right;
  color: #02a7ec;
  margin-top: 0.5rem;
}

.tab-control-container .icon-pill [class*=fa-]:before,
.tab-control-container .icon-pill [class*=fa-]:after {
  font-size: 1rem;
}

.apprf-container,
.overview-container,
.aps-overview-charts,
.client-match-client {
  padding: 0 1rem;
}

.apprf-container {
  -webkit-flex-flow: column;
  flex-flow: column;
}

.apprf-container .apprf-header .item-title {
  padding-left: 0;
}

.apprf-container > .item-panel:last-child {
  border-top: 1px solid #DFE1E5;
}

.network-wizard .section .section-content .row.table-row div.form-field:first-child {
  flex: 1 1 12rem;
}

.network-wizard .section .section-content .row.table-row div.form-field:last-child {
  flex: 10 10 50rem;
}

#nprogress .bar {
  height: 3px;
}

.dialog-content .panel-content div.form-field:first-child {
  width: 12rem;
}

.overview-content {
  color: #646569;
  margin: 0.5rem 0.625rem 0.625rem;
  padding-bottom: 0.5rem;
}

@media (max-width: 1100px) {
  .overview-content {
    -webkit-box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1) inset;
    -moz-box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1) inset;
    box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1) inset;
  }
}

.overview-content .counts div {
  font-size: 1rem;
  height: 2rem;
}

@media (max-width: 1100px) {
  .overview-content .counts div {
    display: inline;
  }
}

.overview-content .counts div i {
  padding-right: 1rem;
}

.overview-content .counts div a {
  font-size: 1rem;
  padding-left: 1rem;
}

.overview-content .counts a {
  font-size: 2rem;
}

@media (max-width: 1100px) {
  .overview-content .counts a {
    font-size: 1.25rem;
    padding-left: 1rem;
  }
}

.overview-content .sub-panel {
  display: -webkit-flex;
  display: flex;
  margin-top: 1rem;
}

.overview-content .sub-panel .sub-item {
  flex: 1;
}

@media (max-width: 1100px) {
  .overview-content .sub-panel .sub-item {
    display: -webkit-flex;
    display: flex;
  }
}

.overview-content .sub-panel div.sub-item-label {
  height: 1.2rem;
}

.overview-content .sub-panel div.sub-item-counts {
  color: #888;
}

@media (max-width: 1100px) {
  .overview-content .sub-panel div.sub-item-counts {
    padding-left: 1rem;
  }
}

.overview-content .sub-panel div.sub-item-counts .fas:before {
  font-size: 0.875rem;
  padding-right: 0.375rem;
  cursor: default;
}

.overview-content .sub-panel div.sub-item-counts .active-ap {
  color: #018e1b;
}

.overview-content .sub-panel div.sub-item-counts .inactive-ap {
  color: #F43530;
}

.checkbox-text {
  cursor: pointer;
}

.radio-row label {
  cursor: pointer;
}

.overview-router {
  -webkit-flex: 1;
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  overflow-y: auto;
}

@media (max-width: 650px) {
  .overview-router {
    display: block;
  }
}

.overview-router .tab-control-container {
  -webkit-flex: 0 0 auto;
  flex: 0 0 auto;
  padding-top: 0.625rem;
}

.overview-router .tabs .seggyc {
  -webkit-flex: 0 0 auto;
  flex: 0 0 auto;
}

.overview-router .white {
  border: none;
}

.ids-detecting-container {
  width: 300px;
  padding: 1rem;
  color: #646569;
}

.ids-detecting-container > div {
  line-height: 1.2;
}

.ids-detecting-container .white {
  border: none;
}

.airgroup-servers-container {
  margin: 1rem 2rem;
}

.airgroup-servers-container .title_heading {
  background: #F5F5F5;
}

.cellular-container {
  margin: 1rem;
}

.fas.ap-master:before {
  font-size: 0.625rem;
}

.country-content {
  text-align: left;
  margin: 0.5rem;
  line-height: 1.3;
}

.country-content .row.table-row div.form-field:first-child {
  line-height: 1rem;
}

.central-content {
  text-align: left;
}

.central-content div {
  margin: 0.5rem;
}

.central-content .free-wifi {
  font-weight: bold;
}

.central-content .features {
  margin-left: 2rem;
}

.central-content .features ul {
  list-style: disc inside none;
}

.central-content .features li {
  list-style: disc inside none;
  line-height: 1.3;
}

.tabs .section .section-content > .row.table-row .overlay div.form-field:last-child,
.airgroup-container .section .section-content > .row.table-row .overlay div.form-field:last-child {
  display: table-cell;
}

@media only screen and (max-width: 651px) {
  .tabs .section .section-content > .row.table-row .overlay div.form-field:last-child,
  .airgroup-container .section .section-content > .row.table-row .overlay div.form-field:last-child {
    display: inline-block;
  }
}

.disconnect-user-confirm {
  font-size: 1rem;
  color: #646569;
  line-height: 3rem;
}

.disconnect-user-confirm span {
  color: #02a7ec;
}

.multiple-item > .form-field:first-child + * {
  /* & > *:first-child {
                & + * {
                    float: left;
                    margin-left: 0.25rem;
                }
            } */
}

.multiple-item > .form-field:first-child + * > *:nth-child(n + 2) {
  float: left;
  margin-left: 0.375rem;
}

.multiple-item .form-field-label {
  margin: 0;
}

.network-security-section .section-content {
  display: -webkit-flex;
  display: flex;
}

@media (max-width: 1100px) {
  .network-security-section .section-content {
    display: block;
  }
}

.network-security-section .section-content > div {
  -webkit-flex: 1;
  flex: 1;
}

@media (max-width: 1100px) {
  .network-security-section .section-content > div {
    flex: none;
  }
}

.toast-message {
  line-height: 1.5;
}

.error-message-tooltip {
  background-color: white;
  z-index: 100;
}

.error-message-tooltip > div {
  border: 1px solid rgba(255, 76, 0, 0.2);
  padding: 0.425rem 0.625rem;
  background-color: rgba(255, 76, 0, 0.05);
  border-radius: 0.25rem;
  color: #FF4C00;
  font-size: 0.875rem;
  white-space: nowrap;
  line-height: normal;
  -webkit-box-shadow: 1px 1px 1px rgba(255, 76, 0, 0.2);
  -moz-box-shadow: 1px 1px 1px rgba(255, 76, 0, 0.2);
  box-shadow: 1px 1px 1px rgba(255, 76, 0, 0.2);
}

.error-message-tooltip > div > .fa-info-circle {
  margin-right: 0.5rem;
  color: rgba(255, 76, 0, 0.75);
}

.error-message-tooltip > div > .fa-info-circle:before {
  font-size: 0.875rem;
  cursor: default;
}

.access-rules-dialog.overlay .message .dialog-content {
  padding-right: 3rem;
}

.access-rules-dialog.overlay .message .dialog-content .multiple-selector .drop-down-list {
  height: 15rem;
}

.certificates-container .certs-info {
  border: 1px solid #DFE1E5;
  margin-bottom: 1rem;
  max-height: 25rem;
  min-height: 5rem;
  overflow: auto;
  padding: 0.5rem;
}

.certificates-container .certs-info td {
  padding: 0.25rem;
  white-space: nowrap;
}

.certificates-container .certs-upload-info {
  margin-top: 1.5rem;
}

.certificates-container .certs-upload-info > span {
  margin-bottom: 0.5rem;
}

.certificates-container .certs-upload-info span {
  display: block;
  padding: 0.2rem 0;
}

.cert-upload-state {
  margin: 0.5rem;
  font-size: 1rem;
}

.cert-upload-state i {
  padding-right: 0.5rem;
}

.cert-upload-state .fas:before {
  font-size: 1rem;
}

.cert-upload-state .fa-check {
  color: #00CC00;
}

.cert-upload-state .fa-times {
  color: #ff0000;
}

@media (max-width: 650px) {
  .cert-file input[type=text].input {
    width: 8rem;
  }

  .cert-file input[type=file] {
    width: 13rem;
  }
}

.alerts {
  color: #F43530;
}

.disallow-row {
  margin: 0.5rem;
  word-wrap: break-word;
  white-space: normal;
  line-height: 1.5rem;
}

.disallow-row span:first-child {
  font-weight: bold;
  padding-right: 0.5rem;
}

.message.dhcp-server-dialog {
  text-align: left;
  max-width: 70rem;
}

.message.dhcp-server-dialog .panel.no_border {
  padding: 0;
}

.message.user-dialog {
  text-align: left;
}

.message.user-dialog .panel .title_heading {
  display: none;
}

.inbound-firewall.access-rules-dialog.overlay .message .dialog-content {
  padding: 0.625rem 3rem 0.625rem 0.625rem;
}

.inbound-firewall.access-rules-dialog.overlay .message .dialog-content td {
  padding-top: 0.25rem;
}

.dialog-content .panel-content .radio-dialog-label div.form-field:first-child {
  width: 15rem;
}

.language {
  border: none;
  text-decoration: underline;
  color: #02a7ec;
  padding-right: 0;
  margin-right: 0;
  text-align-last: end;
  text-align: right;
  background: none;
  box-shadow: none;
}

.language:focus,
active {
  outline: none;
  border: none;
  box-shadow: none;
}

.detail-chart-dialog.message {
  max-width: 350px;
}

.detail-chart-dialog-panel {
  padding: 0;
}

.detail-chart-dialog-panel .detail-chart-body {
  display: -webkit-flex;
  display: flex;
}

@media (max-width: 1100px) {
  .detail-chart-dialog-panel .detail-chart-body {
    display: block;
  }
}

.detail-chart-dialog-panel .detail-chart-body .item-content-chart {
  -webkit-flex: 2;
  flex: 2;
}

.detail-chart-dialog-panel .detail-chart-body table {
  color: #646569;
  -webkit-flex: 1;
  flex: 1;
}

.detail-chart-dialog-panel .detail-chart-body table th,
.detail-chart-dialog-panel .detail-chart-body table td {
  padding: 0.5rem;
  text-align: center;
}

table.ap-overview-table th,
table.ap-overview-table td {
  padding: 0.5rem 0.25rem;
}

.dialog-content .panel-content .clear-config-label div.form-field:first-child {
  width: 100%;
}

.clear-config-message {
  text-align: left;
  line-height: 2rem;
  padding-left: 0.325rem;
  font-weight: bold;
}

thead.collapsable tr:last-child th:hover span.icon-menu {
  opacity: 1;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  thead.collapsable tr:last-child th:hover span.icon-menu {
    display: none !important;
  }
}

thead.collapsable tr:last-child th .icon-menu {
  position: absolute;
  right: 0rem;
  margin-right: 0;
  background-color: #fff;
  opacity: 0;
  color: #02a7ec;
  margin-top: 1px;
  padding-left: 0.5rem;
}

thead.collapsable tr:last-child th .icon-menu:before {
  font-size: 0.875rem;
}

.tree-container {
  position: absolute;
  top: 0;
  background-color: #FFF;
  font-size: 0.875rem;
  border-radius: 0.3125rem;
  z-index: 1001;
  box-shadow: 0 0.1875rem 0.75rem rgba(0, 0, 0, 0.15);
  border: 1px solid rgba(0, 0, 0, 0.15);
}

.tree-container .tree-body {
  color: #000;
  max-height: 15rem;
  max-width: 20rem;
  overflow: auto;
  padding: 0.5rem;
}

.tree-container .tree-body li {
  cursor: pointer;
  list-style: none;
  line-height: 2rem;
}

.tree-container .tree-body li ul {
  color: #000;
  margin-left: 2rem;
}

.tree-container .tree-body li label {
  cursor: pointer;
  float: none;
  white-space: nowrap;
}

.overview-networks-container .table .tree-body {
  width: 12rem;
}

.overview-networks-container .data-table {
  overflow: unset;
}

.banner-title {
  width: 7rem;
  text-align: center;
  color: #bcbdc4;
  line-height: 1rem;
  font-size: 0.875rem;
}

@media (max-width: 650px) {
  .banner-title {
    display: none;
  }
}

.aps-name-master {
  position: relative;
  display: inline-block;
  max-width: 90%;
}

.aps-name-master .ap-master {
  position: absolute;
  right: -1rem;
  top: 0;
}

.dialog-icon {
  float: right;
  padding-top: 0.625rem;
}

.dialog-icon a.dialog-close {
  display: inline;
  cursor: pointer;
  margin-right: 1rem;
  top: 0;
  right: 0;
  position: unset;
}

.dialog-icon .help-container {
  display: inline;
  margin-right: 1rem;
}

.dialog-icon .help-container .help-advice-container {
  right: -2.625rem;
}

.banner-title-name {
  color: #848481;
  font-size: 0.875rem;
  max-width: 12rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

@media (max-width: 650px) {
  .banner-title-name {
    display: none;
  }
}

.banner-splice {
  border-left: solid 1px #C3C5C8;
  line-height: 1rem;
  height: 1rem;
  margin-left: 1rem;
  margin-right: 1rem;
}

@media (max-width: 650px) {
  .banner-splice {
    display: none;
  }
}

.autorun {
  margin-top: 0.625rem;
}

.autorun span {
  margin-right: 0.625rem;
}

.option82xml-container {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  overflow: hidden;
  flex: 1;
}

.option82xml-container .option82xml-content {
  flex: 1;
  padding-left: 0.5rem;
  padding-top: 0.5rem;
  border: 1px solid #efefef;
  margin-bottom: 1rem;
  font-family: Verdana, SimSun;
  overflow-y: auto;
  -webkit-user-select: text;
  -moz-user-select: text;
  -ms-user-select: text;
  user-select: text;
}

.option82xml-container .option82xml-content > pre {
  line-height: 1.5rem;
}

.option82xml-container .option82xml-footer {
  width: 100%;
}

.option82xml-container .option82xml-footer button {
  width: 12rem;
  display: block;
  margin-bottom: 0.625rem;
}

.option82xml-container .dialog-content .panel-content div.form-field:first-child {
  width: 2rem;
}

.tooltip-airgroup-servers .row-picker {
  max-width: none;
}

.tooltip-airgroup-servers .row-picker .ids-detecting-container {
  width: 60rem;
}

.tooltip-airgroup-servers .row-picker .ids-detecting-container .panel.table {
  overflow: inherit;
}

.iot-section .message {
  top: 5%;
  width: 90%;
  text-align: left;
  max-width: none;
}

.iot-section .message .dialog-content {
  max-height: 40rem;
}

.iot-section .message .sub-title {
  font-weight: bold;
  margin: 1rem 0;
}

.iot-section .message .spliter {
  display: block;
  border-bottom: solid 1px #C3C5C8;
  margin-bottom: 1rem;
  width: auto;
  cursor: none;
}

.iot-section .message .filter-container {
  width: fit-content;
}

.iot-section .message .filter-container .seggyc {
  float: none;
  margin: 0;
  margin-bottom: -1px;
}

.iot-section .message .filter-container .seggyc li a {
  color: #02a7ec;
  border-top: 1px solid #02a7ec;
  border-bottom: 1px solid #02a7ec;
  border-left: 1px solid #02a7ec;
  padding: 0.7rem;
}

.iot-section .message .filter-container .seggyc li.current a {
  color: #fff;
  background-color: #02a7ec;
  border-color: #02a7ec;
}

.iot-section .message .filter-container .seggyc li a {
  color: #C3C5C8;
  border-top: 1px solid rgba(0, 0, 0, 0.1);
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
  border-left: 1px solid rgba(0, 0, 0, 0.1);
  padding: 0.7rem;
  background-image: none;
}

.iot-section .message .filter-container .seggyc li.current a {
  color: #646569;
  cursor: default;
  background-color: #F5F5F5;
  border-color: rgba(0, 0, 0, 0.1);
}

.iot-section .message .filter-container .seggyc li:last-child a {
  border-right: 1px solid rgba(0, 0, 0, 0.1);
}

.iot-section .message .filter-container .seggyc li a:active,
.iot-section .message .filter-container .no-touch .seggyc li a:active,
.iot-section .message .filter-container .seggyc li.current a,
.iot-section .message .filter-container .no-touch .seggyc li.current a:hover {
  background-color: #F5F5F5;
  background-image: #F5F5F5;
  background-image: #F5F5F5;
  background-image: #F5F5F5;
  background-image: #F5F5F5;
  background-image: #F5F5F5;
  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05) inset;
  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05) inset;
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05) inset;
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
  opacity: 1;
}

.iot-section .message .transport-service-container .multiple-checkbox {
  max-width: auto;
}

.iot-section .message .transport-service-container .multiple-checkbox .checkbox-field {
  width: auto;
}

.iot-section .message .filter-table-container {
  position: relative;
}

.iot-section .message .muli-services-container {
  display: -webkit-flex;
  display: flex;
}

.iot-section .message .muli-services-container > div:first-child {
  flex: 1.5;
}

.iot-section .message .muli-services-container > div:last-child {
  flex: 1;
}

.iot-section .message .muli-services-container.col-2 > div:first-child {
  flex: 1;
}

.iot-section .message .muli-services-container.col-2 > div:last-child {
  flex: 2;
}

.iot-section .message .radio-container > div {
  float: left;
}

.iot-section .message .radio-container > div:last-child {
  padding-left: 0.5rem;
}

.iot-section .message .multiple-checkbox {
  max-width: 50rem;
}

.iot-section .message .multiple-checkbox .checkbox-field {
  width: 15rem;
}

.iot-section .message .multiple-item .form-field-label {
  max-width: none;
}

.iot-section .message .iot-filters-container {
  display: -webkit-flex;
  display: flex;
}

.iot-section .message .iot-filters-container > div {
  position: relative;
  margin-left: 0.5rem;
  min-width: 20.15rem;
  max-width: 32rem;
}

.iot-section .message .iot-filters-container > div:first-child {
  margin-left: 0;
}

.iot-section .message .checkbox-input.disabled {
  background-color: #EBEBE4;
}

.iot-section .message.zsd-dialog {
  width: 70%;
}

.iot-section .message.zigbee-socket-dialog {
  width: 50%;
}

.iot-section .message.iot-radio-dialog {
  width: 50%;
}

.iot-section .message.zigbee-service-dialog {
  width: 50%;
}

.iot-section .row-picker {
  margin-top: -2.25rem;
}

.info-value div.good {
  color: #0D7F2E;
}

.info-value div.ok {
  color: #ff9a1a;
}

.info-value div.poor {
  color: #ba0d00;
}

.intra-vlan-traffic-container {
  display: -webkit-flex;
  display: flex;
}

.intra-vlan-traffic-container > div {
  -webkit-flex: 1;
  flex: 1;
}

.intra-vlan-traffic-container > div:first-child {
  margin-right: 0.5rem;
}

.intra-vlan-traffic-container .row-picker {
  margin-top: -2.5rem;
}

.message.intra-vlan-traffic-dialog {
  text-align: left;
}

.message.intra-vlan-traffic-dialog .panel .title_heading {
  background: #F5F5F5;
}

.message.intra-vlan-traffic-dialog .row-picker {
  margin-top: -2.5rem;
}

.message.intra-vlan-traffic-dialog .dialog-content .panel-content div.form-field:first-child {
  width: auto;
}

.arm .multiple-checkbox .checkbox-field {
  width: 6rem;
}

.radios .table {
  margin-bottom: 20px;
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL3NyYy9zdHlsZXMvYXJ1YmFVSS9zdHlsZS5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvc3JjL3NraW5zL2FydWJhL19jb2xvcnMuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL3NyYy9zdHlsZXMvYXJ1YmFVSS9fbWl4aW5zLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvdG9hc3RyL3RvYXN0ci5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL25wcm9ncmVzcy9ucHJvZ3Jlc3MuY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9fY29tcGFzcy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19mdW5jdGlvbnMuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2xpc3RzLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19jcm9zc19icm93c2VyX3N1cHBvcnQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2dyYWRpZW50X3N1cHBvcnQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2NvbnN0YW50cy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fZGlzcGxheS5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fY29sb3JzLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3V0aWxpdGllcy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9fY29sb3Iuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvY29sb3IvX2NvbnRyYXN0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL19nZW5lcmFsLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvcmVzZXQvX3V0aWxpdGllcy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX2Zsb2F0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3RhZy1jbG91ZC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX21pbi5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL19zcHJpdGVzLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL3Nwcml0ZXMvX2Jhc2Uuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvc3ByaXRlcy9fc3ByaXRlLWltZy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9fdGFibGVzLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL3RhYmxlcy9fYWx0ZXJuYXRpbmctcm93cy1hbmQtY29sdW1ucy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy90YWJsZXMvX2JvcmRlcnMuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvdGFibGVzL19zY2FmZm9sZGluZy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpbmtzLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9faG92ZXItbGluay5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlua3MvX2xpbmstY29sb3JzLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9fdW5zdHlsZWQtbGluay5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpc3RzLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faG9yaXpvbnRhbC1saXN0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvcmVzZXQvX3V0aWxpdGllcy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2lubGluZS1saXN0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faW5saW5lLWJsb2NrLWxpc3Quc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19idWxsZXRzLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faG9yaXpvbnRhbC1saXN0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvcmVzZXQvX3V0aWxpdGllcy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2lubGluZS1ibG9jay5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX3RleHQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX2VsbGlwc2lzLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX25vd3JhcC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fcmVwbGFjZW1lbnQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX2ZvcmNlLXdyYXAuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fdHlwb2dyYXBoeS5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpbmtzLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9faG92ZXItbGluay5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlua3MvX2xpbmstY29sb3JzLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9fdW5zdHlsZWQtbGluay5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpc3RzLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faG9yaXpvbnRhbC1saXN0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvcmVzZXQvX3V0aWxpdGllcy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2lubGluZS1saXN0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faW5saW5lLWJsb2NrLWxpc3Quc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19idWxsZXRzLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faG9yaXpvbnRhbC1saXN0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvcmVzZXQvX3V0aWxpdGllcy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2lubGluZS1ibG9jay5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX3RleHQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX2VsbGlwc2lzLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX25vd3JhcC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fcmVwbGFjZW1lbnQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX2ZvcmNlLXdyYXAuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L192ZXJ0aWNhbF9yaHl0aG0uc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9sYXlvdXQvX2dyaWQtYmFja2dyb3VuZC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2ltYWdlcy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX2hhY2tzLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fZnVuY3Rpb25zLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19saXN0cy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19ncmFkaWVudF9zdXBwb3J0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19jb25zdGFudHMuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2Rpc3BsYXkuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2NvbG9ycy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JhY2tncm91bmQtc2l6ZS5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX2NzczMuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19ib3JkZXItcmFkaXVzLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19pbmxpbmUtYmxvY2suc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX29wYWNpdHkuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JveC1zaGFkb3cuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3RleHQtc2hhZG93LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19jb2x1bW5zLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19ib3gtc2l6aW5nLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19ib3guc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2ltYWdlcy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX2hhY2tzLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fZnVuY3Rpb25zLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19saXN0cy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19ncmFkaWVudF9zdXBwb3J0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19jb25zdGFudHMuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2Rpc3BsYXkuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2NvbG9ycy5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JhY2tncm91bmQtY2xpcC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fYmFja2dyb3VuZC1vcmlnaW4uc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JhY2tncm91bmQtc2l6ZS5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fZm9udC1mYWNlLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL190cmFuc2Zvcm0uc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3RyYW5zaXRpb24uc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2FwcGVhcmFuY2Uuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3JlZ2lvbnMuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2h5cGhlbmF0aW9uLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19maWx0ZXIuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3BpZS5zY3NzIiwiL2hvbWUvamVua2lucy9idWlsZC13cy9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3VzZXItaW50ZXJmYWNlLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19mbGV4Ym94LnNjc3MiLCIvaG9tZS9qZW5raW5zL2J1aWxkLXdzL3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL2plbmtpbnMvYnVpbGQtd3Mvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnRcbiAgICBcIi4vY29sb3JzXCIsXG4gICAgXCJtaXhpbnNcIixcbiAgICBcIn50b2FzdHIvdG9hc3RyXCIsXG4gICAgXCJ+bnByb2dyZXNzL25wcm9ncmVzc1wiLFxuICAgIFwiY29tcGFzc1wiO1xuXG46Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogNnB4O1xuICAgIGhlaWdodDogNnB4O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjM1LDIzNSwyMzUsMC42KTtcbn1cbiBcbi8qIFRyYWNrICovXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICAvLy13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAwIDZweCByZ2JhKDAsMCwwLDAuMyk7IFxuICAgIC8vLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgIC8vYm9yZGVyLXJhZGl1czogMTBweDtcbn1cbiBcbi8qIEhhbmRsZSAqL1xuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgLy8td2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgLy9ib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTc2LDE3NiwxNzYsMC42KTsgXG4gICAgLy8td2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMCA2cHggcmdiYSgwLDAsMCwwLjUpOyBcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6d2luZG93LWluYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDE3NiwxNzYsMTc2LDAuMyk7IFxufVxuXG4vKio6Oi13ZWJraXQtc2Nyb2xsYmFyIFxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiAgXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrICBcbjo6LXdlYmtpdC1zY3JvbGxiYXItYnV0dG9uXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlIFxuOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIgXG46Oi13ZWJraXQtcmVzaXplcioqL1xuXG5odG1sIHtcbiAgICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDtcbiAgICAvLyBAbWVkaWEgb25seSBzY3JlZW4gXG4gICAgLy8gYW5kIChtaW4tZGV2aWNlLXdpZHRoIDogMTAyNHB4KSBcbiAgICAvLyBhbmQgKG1heC1kZXZpY2Utd2lkdGggOiAxMzY2cHgpIHtcbiAgICAvLyAgICAgZm9udC1zaXplOiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgLy8gfVxufVxuXG5ib2R5IHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5ib2R5Lm5vLXNlbGVjdCB7XG4gICAgQGluY2x1ZGUgdXNlci1zZWxlY3Qobm9uZSk7XG59XG5cbmEge1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG5cbiRjb2xvclRhYmxlVGl0bGVCYWNrZ3JvdW5kOiAjRjVGNUY1O1xuXG4jYXBwLXJvb3Qge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLmxvZ2luLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDIwcmVtO1xuICAgIGhlaWdodDogMjByZW07XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogLTEwcmVtO1xuICAgIG1hcmdpbi10b3A6IC0xMHJlbTtcbiAgICBpbnB1dCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjVyZW07XG4gICAgfVxuXG4gICAgLndlbGNvbWUge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbjogMS41cmVtO1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICAgICAgY29sb3I6ICRjb2xvckxvZ2luV2VsY29tZVRleHQ7XG4gICAgfVxuXG4gICAgLmVycm9yLW1lc3NhZ2Uge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjVyZW07XG4gICAgfVxuXG4gICAgLmJ1dHRvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICB9XG5cbiAgICA+IGRpdiA+IC5kaWFsb2ctY29udGVudCB7XG4gICAgICAgIG1heC1oZWlnaHQ6IDMwcmVtO1xuICAgIH1cbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzMjBweCkge1xuICAgIC5sb2dpbi1jb250YWluZXIge1xuICAgICAgICB3aWR0aDogMTZyZW07XG4gICAgICAgIGhlaWdodDogMjByZW07XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtOHJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogLTEwcmVtO1xuICAgIH1cblxuICAgIC8vIC5oZWFkZXIgLnNlYXJjaGluZyB7XG4gICAgLy8gICAgIC5sb2dvdXQge1xuICAgIC8vICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAvLyAgICAgfVxuXG4gICAgLy8gICAgIC5pY29uX2hlbHAge1xuICAgIC8vICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAvLyAgICAgfVxuICAgIC8vIH1cblxuICAgIC8vICNzZWFyY2hJbnB1dDpmb2N1cyB7XG4gICAgLy8gICAgIHdpZHRoOiA0cmVtO1xuICAgIC8vICAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcbiAgICAvLyB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgLndyYXBwZXIge1xuICAgICAgICAvLyBVc2UgdmVydGljYWwgbGF5b3V0IHdoZW4gdGhlIHNjcmVlbiBpcyBzbWFsbFxuICAgICAgICBAaW5jbHVkZSBmbGV4LWZsb3coY29sdW1uKTtcbiAgICAgICAgPiBkaXYge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtaXhpbiBoZWFkZXJNZW51IHtcbiAgICBbY2xhc3MqPSdpY29uXyddOmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG4gICAgLm1lbnUge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIC8vZmxleDogMTtcbiAgICAgICAgLy9oZWlnaHQ6IDNyZW07XG4gICAgICAgIC8vbWFyZ2luOiAwIDFyZW07XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgY29sb3I6ICRjb2xvckxpbms7XG5cbiAgICAgICAgLnVzZXJNZW51IHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3JUZXh0ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmN1cnJlbnQge1xuICAgICAgICBjb2xvcjogJGNvbG9yTGluaztcbiAgICB9XG4gICAgYSB7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICBsaW5lLWhlaWdodDogMnJlbTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNvbG9yOiAkY29sb3JMaW5rO1xuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIG1hcmdpbjogMCAwIDAgMC41cmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4kZm9ybUZpZWxkSGVpZ2h0OiAycmVtO1xuJHRvZ2dsZURpYW1ldGVyOiAxLjM3NXJlbTtcbiR0b2dnbGVCYWNrZ3JvdW5kV2lkdGg6IDIuNzVyZW07XG5cblxuLmZhIHtcbiAgICBbY2xhc3MqPWZhLV0ge1xuICAgICAgICAmOmJlZm9yZSwgICY6YWZ0ZXIge1xuICAgICAgICAgICAgLy9mb250LWZhbWlseTogRm9udEF3ZXNvbWU7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBbY2xhc3MqPXRvZ2dsZS1dIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGhlaWdodDogJGZvcm1GaWVsZEhlaWdodDtcbiAgICAgICAgd2lkdGg6ICR0b2dnbGVCYWNrZ3JvdW5kV2lkdGg7XG5cbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgdG9wOiAoJGZvcm1GaWVsZEhlaWdodCAtICR0b2dnbGVEaWFtZXRlcikvMjtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogJHRvZ2dsZUJhY2tncm91bmRXaWR0aDtcbiAgICAgICAgICAgIGhlaWdodDogJHRvZ2dsZURpYW1ldGVyO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogJHRvZ2dsZURpYW1ldGVyLzIgKyAwLjFyZW07XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZDtcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIH1cblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHRvcDogKCRmb3JtRmllbGRIZWlnaHQgLSAkdG9nZ2xlRGlhbWV0ZXIpLzI7XG4gICAgICAgICAgICB3aWR0aDogJHRvZ2dsZURpYW1ldGVyO1xuICAgICAgICAgICAgaGVpZ2h0OiAkdG9nZ2xlRGlhbWV0ZXI7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAkdG9nZ2xlRGlhbWV0ZXIvMiArIDAuMXJlbTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIFtjbGFzcyo9dG9nZ2xlLV0uaW5hY3RpdmUge1xuICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIC50b2dnbGUtb24ge1xuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JTZWxlY3RlZDtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yU2VsZWN0ZWQ7XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBsZWZ0OiAkdG9nZ2xlQmFja2dyb3VuZFdpZHRoIC0gJHRvZ2dsZURpYW1ldGVyO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yU2VsZWN0ZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudG9nZ2xlLW9mZiB7XG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvck5ldXRyYWxEaztcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yTmV1dHJhbERrO1xuICAgICAgICB9XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvck5ldXRyYWxEaztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHRvZ2dsZU9uIHtcbiAgICAwJSB7XG4gICAgICAgIGxlZnQ6ICR0b2dnbGVCYWNrZ3JvdW5kV2lkdGggLSAkdG9nZ2xlRGlhbWV0ZXI7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHRvZ2dsZU9mZiB7XG4gICAgMCUge1xuICAgICAgICBsZWZ0OiAwO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICBsZWZ0OiAkdG9nZ2xlQmFja2dyb3VuZFdpZHRoIC0gJHRvZ2dsZURpYW1ldGVyO1xuICAgIH1cbn1cblxuLnRvZ2dsZS1vbi5hbmltYXRlZDphZnRlcntcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogdG9nZ2xlT2ZmIDAuMjVzO1xuICAgIGFuaW1hdGlvbjogdG9nZ2xlT2ZmIDAuMjVzO1xufVxuXG4udG9nZ2xlLW9mZi5hbmltYXRlZDphZnRlciB7XG4gICAgLXdlYmtpdC1hbmltYXRpb246IHRvZ2dsZU9uIDAuMjVzO1xuICAgIGFuaW1hdGlvbjogdG9nZ2xlT24gMC4yNXM7XG59XG5cbiRoZWFkZXJIZWlnaHQ6M3JlbTtcblxuLmFwcCB7XG4gICAgLy9kaXNwbGF5OiBmbGV4O1xuICAgIC8vZmxleC1mbG93OiBjb2x1bW47XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgIEBpbmNsdWRlIGZsZXgtZmxvdyhjb2x1bW4pO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJGxheW91dERpdmlkZXI6IDFweCBzb2xpZCAkY29sb3JOZXV0cmFsTWQ7XG5cbiAgICAuaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogMC42MjVyZW0gMXJlbTtcbiAgICAgICAgLy9vdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXItYm90dG9tOiAkbGF5b3V0RGl2aWRlcjtcbiAgICAgICAgaGVpZ2h0OiAkaGVhZGVySGVpZ2h0O1xuICAgICAgICAvLyBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JNZW51QmFja2dyb3VuZDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9ySGVhZGVyQmFja2dyb3VuZDtcbiAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAgIC5sb2dvIHtcbiAgICAgICAgICAgIGhlaWdodDogM3JlbTtcbiAgICAgICAgICAgIHdpZHRoOiA2cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJhbm5lcm1lbnUge1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvckxpbms7XG4gICAgICAgICAgICAvL2hlaWdodDogJGhlYWRlckhlaWdodDtcbiAgICAgICAgICAgIC8vbGluZS1oZWlnaHQ6ICRoZWFkZXJIZWlnaHQ7XG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogaW5oZXJpdDtcblxuICAgICAgICAgICAgQGluY2x1ZGUgaGVhZGVyTWVudTtcbiAgICAgICAgICAgID5kaXYge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnVzZXIge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICAgICAgICAgICAgICAvL21hcmdpbi1sZWZ0OiAxcmVtO1xuICAgICAgICAgICAgICAgIC8vbWFyZ2luLXJpZ2h0OiAtMC45Mzc1cmVtO1xuICAgICAgICAgICAgICAgIC8vaGVpZ2h0OiAkaGVhZGVySGVpZ2h0O1xuICAgICAgICAgICAgICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgICAgICAgICAgICAgIC8vbWFyZ2luLXRvcDogMHJlbTtcblxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yTGluaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAudXNlci1tZW51LWRvd24ge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDAgMC4zMTI1cmVtO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC51c2VyTWVudSB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgLy9tYXJnaW4tcmlnaHQ6IDByZW07XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMy41cmVtO1xuICAgICAgICAgICAgICAgICAgICByaWdodDogMS41cmVtO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuICAgICAgICAgICAgICAgICAgICAvL3BhZGRpbmc6IDFyZW07XG4gICAgICAgICAgICAgICAgICAgIHotaW5kZXg6IDEwMDM7XG4gICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAzcHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICAgICAgICAgICAgICAgLmRpdmlkZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDhweCAxcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlNWU1O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLnVzZXJfcm9sZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yVGV4dCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB1bCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMnJlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMnJlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICA+IHNwYW4sIGEge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgYTpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvck5hdkhvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMS41cmVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC5kaWFsb2ctY29udGVudCAucGFuZWwtY29udGVudCBkaXYuZm9ybS1maWVsZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogNnJlbTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvKiAudXNlck1lbnU6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAtMTZweDtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDlweDtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiA4cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwwLDAsMC4xNSk7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JNZW51QmFja2dyb3VuZDtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICB9ICovXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5iYW5uZWxfZGl2aWRlciB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzcmVtO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxcHg7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yTmV1dHJhbE1kO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDAuNXJlbTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsZXJUaGFuSXBhZCkge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm1lbnVfYmxvY2sge1xuICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5tZW51cyB7XG4gICAgICAgICAgICAgICAgZmxleDogMSAxIDEwJTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbGVyVGhhbklwYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUganVzdGlmeS1jb250ZW50KGZsZXgtZW5kKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC53cmFwcGVyIHtcbiAgICAgICAgLy8gZGlzcGxheTogZmxleDtcbiAgICAgICAgLy8gZmxleDogMTtcbiAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICBAaW5jbHVkZSBmbGV4KDEpO1xuICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgICAgICAgLnNpZGVuYXYtd3JhcHBlciB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDAgMC4yNXJlbSAwLjEyNXJlbTtcbiAgICAgICAgICAgIC8vIGJvcmRlci1yaWdodDogJGxheW91dERpdmlkZXI7XG4gICAgICAgICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAgICAgICAgIHdpZHRoOiAxMi41cmVtO1xuICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOjA7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206ICRsYXlvdXREaXZpZGVyO1xuICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IHZpc2libGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuc3BsaXRlciB7XG4gICAgICAgICAgICB3aWR0aDogNXB4O1xuICAgICAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgY3Vyc29yOiBjb2wtcmVzaXplO1xuICAgICAgICAgICAgLy8gYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yTmV1dHJhbE1kO1xuICAgICAgICAgICAgLy8gY29sb3I6ICRjb2xvck5ldXRyYWxNZDtcbiAgICAgICAgICAgIHotaW5kZXg6IDEwMDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMnB4O1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMnB4O1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvckxpbms7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yTmV1dHJhbE1kO1xuXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgtZmxvdyhjb2x1bW4pO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGp1c3RpZnktY29udGVudChzcGFjZS1hcm91bmQpO1xuXG4gICAgICAgICAgICAgICAgYSB7IFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMnB4O1xuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3JOZXV0cmFsRGs7XG4gICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvckxpbms7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICAgIC8vZmxleDoxO1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleCgxKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgtZmxvdyhjb2x1bW4pO1xuICAgICAgICAgICAgLy9ib3JkZXItbGVmdDogJGxheW91dERpdmlkZXI7XG4gICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAudGFicyB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZmxleCgxKTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1mbG93KGNvbHVtbik7XG5cbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgICAgIC8vIHBhZGRpbmc6IDAuNjI1cmVtIDAuNjI1cmVtIDAuMjVyZW0gMC42MjVyZW07XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICAvLyBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY1MXB4KSB7XG4gICAgICAgICAgICAgICAgLy8gICAgIHBhZGRpbmc6IDAuMjVyZW07XG4gICAgICAgICAgICAgICAgLy8gfVxuXG4gICAgICAgICAgICAgICAgJi5yZXNwb25zaXZlIHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgZmxleCgxKTtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBmbGV4LWZsb3coY29sdW1uKTtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUganVzdGlmeS1jb250ZW50KHNwYWNlLWJldHdlZW4pO1xuXG4gICAgICAgICAgICAgICAgICAgIC50YWJjb250cm9scyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBmbGV4KDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLnRhYnMtZm9vdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyLjVyZW07XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuMjVyZW0gMC42MjVyZW07XG4gICAgICAgICAgICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkY29sb3JOZXV0cmFsTWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMC42MjVyZW07XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjYyNXJlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiA1cmVtO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5hZHZhbmNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2xpbmUtaGVpZ2h0OiAyLjVyZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NvbG9yOiAkY29sb3JMaW5rO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5hZHZhbmNlOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3JOYXZIb3ZlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC50YWJzLmhvcml6b250YWwge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDFyZW0gMCAwIDFyZW07XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZmxleCgxIDEgYXV0byk7XG4gICAgICAgICAgICAgICAgJi5yZXNwb25zaXZlIHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUganVzdGlmeS1jb250ZW50KHVuc2V0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLmNvbnRhaW5lci1ob3Jpem9udGFsIHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgZmxleCgxIDEgYXV0byk7XG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDFyZW0gMCAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAucGFuZWwtY29udGVudCB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDFyZW0gMXJlbSAwIDFyZW07XG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuc2VnZ3ljIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwLjYyNXJlbTtcbiAgICAgICAgICAgICAgICAgICAgJi5jZW50ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUganVzdGlmeS1jb250ZW50KGNlbnRlcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5wYW5lbCB7XG4gICAgICAgICAgICAgICAgaDIge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGgyLnRpdGxlX2hlYWRpbmcge1xuICAgICAgICAgICAgICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY1MXB4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5wYW5lbCB7XG4gICAgICAgICAgICAgICAgICAgIC50aXRsZV9oZWFkaW5nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRjb2xvclRhYmxlVGl0bGVCYWNrZ3JvdW5kO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2NTFweCkge1xuICAgICAgICAgICAgICAgICAgICAucm93LnRhYmxlLXJvdyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAuZm9ybS1maWVsZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5mb290ZXIge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjE1cmVtO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGNvbG9yTmV1dHJhbE1kO1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI0ZGRjtcbiAgICAgICAgICAgICAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMC42MjVyZW07XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjYyNXJlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiA1cmVtO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAucm93LnRhYmxlLXJvdy5hZHZhbmNlLXJvdyB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5zZWN0aW9uLmFkdmFuY2Uge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5hZHZhbmNlLXBhbmVsLWNvbnRlbnQge1xuICAgICAgICAgICAgICAgIC5zZWN0aW9uLWNvbnRlbnQge1xuICAgICAgICAgICAgICAgICAgICAucm93LnRhYmxlLXJvdy5hZHZhbmNlLXJvdyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY1MXB4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLnJvdy50YWJsZS1yb3cuYWR2YW5jZS1yb3cge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG5cbiAgICAgICAgICAgICAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2NTFweCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLnNlY3Rpb24ge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKj4gZGl2IHtcbiAgICAgICAgICAgICAgICA+IC5wYW5lbCB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9Ki9cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5mb290ZXIge1xuICAgICAgICBoZWlnaHQ6ICRoZWFkZXJIZWlnaHQ7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkaGVhZGVySGVpZ2h0O1xuICAgICAgICBjb2xvcjogJGNvbG9yTmV1dHJhbERrO1xuICAgICAgICBib3JkZXItdG9wOiAkbGF5b3V0RGl2aWRlcjtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yTWVudUJhY2tncm91bmQ7XG5cbiAgICAgICAgW2NsYXNzKj0naWNvbl8nXTpiZWZvcmUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAzcmVtO1xuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbGVyVGhhbklwYWQpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhIHtcbiAgICAgICAgICAgIGhlaWdodDogJGhlYWRlckhlaWdodDtcbiAgICAgICAgICAgIHdpZHRoOiAyNSU7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgaGVhZGVyTWVudTtcbiAgICAgICAgLm1lbnUge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgaGVpZ2h0OiAkaGVhZGVySGVpZ2h0O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRoZWFkZXJIZWlnaHQ7XG5cbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGxlclRoYW5JcGFkKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qIGxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYW1hLWJlYXIpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgfVxuICAgIH0gKi9cbn1cblxuLnJvdy50YWJsZS1yb3cge1xuICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcblxuICAgIGRpdi5mb3JtLWZpZWxkOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmb3JtRmllbGRIZWlnaHQ7XG4gICAgfVxuICAgIGRpdi5mb3JtLWZpZWxkOmxhc3QtY2hpbGQge1xuICAgICAgICAvL21hcmdpbi1ib3R0b206IDAuMTI1cmVtO1xuICAgIH1cbn1cblxuLmZvcm0tZmllbGQge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgLy9oZWlnaHQ6ICRmb3JtRmllbGRIZWlnaHQ7XG4gICAgLy8gbGluZS1oZWlnaHQ6ICRmb3JtRmllbGRIZWlnaHQ7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjYyNXJlbTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgJiA+IDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cbiAgICBsYWJlbDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMXJlbTtcbiAgICB9XG4gICAgLmZvcm0tZmllbGQtbGFiZWw6Zmlyc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tbGVmdDogMHJlbTtcbiAgICB9XG59XG5cbi5lcnJvci1tZXNzYWdlIHtcbiAgICBjb2xvcjogcmVkO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGxpbmUtaGVpZ2h0OiAycmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC42MjVyZW07XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmxvZ28tY29udGFpbmVyIHtcbiAgICAvL21hcmdpbi10b3A6IDJyZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgJiA+IC5sb2dvIHtcbiAgICAgICAgaGVpZ2h0OiA2cmVtO1xuICAgICAgICB3aWR0aDogMThyZW07XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbn1cblxuLmxvZ28ge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vLi4vaW1hZ2VzL2xvZ2luLWxvZ28ucG5nJyk7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG59XG5cbi5iYW5uZXItbG9nbyB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi8uLi9pbWFnZXMvbG9naW4tbG9nby5wbmcnKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICBoZWlnaHQ6IDJyZW07XG4gICAgd2lkdGg6IDZyZW07XG59XG5cbi5wYW5lbCB7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JDb250YWluZXJCYWNrZ3JvdW5kO1xuICAgIC8vIG1hcmdpbi10b3A6IDAuMjVyZW07XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLmNvbHVtbnMge1xuICAgICAgICAvL21hcmdpbi1ib3R0b206IDAuMjVyZW07XG4gICAgICAgIGhlaWdodDogMi41cmVtO1xuICAgICAgICAvL2xpbmUtaGVpZ2h0OiAyLjVyZW07XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICB9XG5cbiAgICAucm93IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG4gICAgfVxuXG4gICAgLmZvcm1faGVhZGluZyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBwYWRkaW5nOiAwIDAgMC42MjVyZW0gMDtcbiAgICB9XG4gICAgLnRpdGxlX2hlYWRpbmcge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIGxhYmVsIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBcbiAgICAgICAgLy8gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2NTFweCkge1xuICAgICAgICAvLyAgICAgbGluZS1oZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgID4gZGl2IHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG5cbiAgICBwcmUuY29uZmlnIHtcbiAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDtcbiAgICAgICAgbWF4LWhlaWdodDogMTZyZW07XG4gICAgICAgIG1hcmdpbjogMC41cmVtIDAuMjVyZW07XG4gICAgfVxuXG4gICAgLmluZm9fcGFuZWwge1xuICAgICAgICAuY29sdW1ucyB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uY2hhcnRMYWJlbCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC5jaGFydExhYmVsSGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogMCAwIDAgMC4yNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBjb2xvcjogZ3JheTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLXRhYmxlO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgICAuY2hhcnRVbml0cyB7XG4gICAgICAgIG1pbi13aWR0aDogMC42MjVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC42MjVyZW07XG4gICAgfVxuICAgIGxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogdGFibGUtcm93O1xuICAgIH1cbn1cblxuLnBhbmVsX3dyYXBwZXIge1xuICAgID4gZGl2IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC42MjVyZW07XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuXG4gICAgaDMge1xuICAgICAgICBtYXJnaW46IDAuNjI1cmVtIDA7XG4gICAgfVxufVxuXG4uYWJvdXQge1xuICAgIGRpdiB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuODc1cmVtO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICA+IHNwYW4uY29sdW1ucyB7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS4yNXJlbTtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtO1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuXG4gICAgICAgICAgICAmOm50aC1jaGlsZCgxKSB7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDowO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZHJvcGRvd24tbWVudSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDEwMDA7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtaW4td2lkdGg6IDE2MHB4O1xuICAgIHBhZGRpbmc6IDVweCAwO1xuICAgIG1hcmdpbjogMnB4IDAgMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIC8vYm9yZGVyOiAxcHggc29saWQgI2NjYztcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsMCwwLC4xNSk7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCA2cHggMTJweCByZ2JhKDAsMCwwLC4xNzUpO1xuICAgIGJveC1zaGFkb3c6IDAgNnB4IDEycHggcmdiYSgwLDAsMCwuMTc1KTtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuXG4gICAgLmRyb3Bkb3duLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmc6IDVweDtcblxuICAgICAgICA+IGlucHV0IHtcbiAgICAgICAgICAgIGhlaWdodDogMnJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmRyb3Bkb3duLW1lbnU+bGk+YSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogM3B4IDEwcHg7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MztcbiAgICBjb2xvcjogIzMzMztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5kcm9wZG93bi1tZW51PmxpPmE6aG92ZXIsLmRyb3Bkb3duLW1lbnU+bGk+YTpmb2N1cyB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGNvbG9yOiAjMjYyNjI2O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvclRhYmxlVGl0bGVCYWNrZ3JvdW5kO1xufVxuXG4uZHJvcGRvd24tbWVudT4uYWN0aXZlPmEsLmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hOmhvdmVyLC5kcm9wZG93bi1tZW51Pi5hY3RpdmU+YTpmb2N1cyB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIG91dGxpbmU6IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQyOGJjYVxufVxuXG4uZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YSwuZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YTpob3ZlciwuZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YTpmb2N1cyB7XG4gICAgY29sb3I6ICM5OTlcbn1cblxuLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmE6aG92ZXIsLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmE6Zm9jdXMge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQ9ZmFsc2UpO1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWRcbn1cblxuLmJ1dHRvbjIge1xuICAgIGJhY2tncm91bmQ6IHVybChcIi4uLy4uL2ltYWdlcy9zZWxlY3RfYXJyb3dfMngucG5nXCIpICNmZmYgbm8tcmVwZWF0IHJpZ2h0IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDM4cHggMzhweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY29sb3I6ICRjb2xvckhpZ2hsaWdodDtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGxpbmUtaGVpZ2h0OiAxcmVtO1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoNHB4KTtcbiAgICAvLyBAaW5jbHVkZSBib3gtc2hhZG93KDAgLTJweCAwIHJnYmEoMCwwLDAsMC4yMCkgaW5zZXQpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvckRpdmlkZXI7XG59XG5cbi5tdWx0aXNlbGVjdC1wYXJlbnQge1xuICAgIG92ZXJmbG93OmhpZGRlbjtcbiAgICB3aWR0aDoxMDAlO1xufVxuXG4udmFsaWRfYWxlcnQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC1oZWlnaHQ6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCA1MDBtcyBlYXNlKTtcblxuICAgIHAge1xuICAgICAgICBtYXJnaW4tbGVmdDogMS4yNXJlbTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxLjI1cmVtO1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1hbWEtYmVhcikge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcFtjbGFzcyo9J2ljb25fJ106YmVmb3JlIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYW1hLWJlYXIpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG4udmFsaWRfYWxlcnQudmlzaWJsZSB7XG4gICAgbWF4LWhlaWdodDogNXJlbTtcbiAgICBwYWRkaW5nLXRvcDogMC4yNXJlbTtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbTtcbn1cblxuLnZhbGlkX2FsZXJ0Lndhcm5pbmcge1xuICAgIGNvbG9yOiAkY29sb3JBbGVydDtcbiAgICBiYWNrZ3JvdW5kOiBsaWdodGVuKGRlc2F0dXJhdGUoJGNvbG9yQWxlcnQsIDQwJSksIDQ4JSk7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdyg0cHggMCAwICRjb2xvckFsZXJ0IGluc2V0KTtcblxuICAgIGEge1xuICAgICAgICBjb2xvcjogJGNvbG9yQWxlcnQ7XG4gICAgfVxuXG59XG5cbi5oZWxwLW1vZGUge1xuICAgIGNvbG9yOiAkY29sb3JIZWxwRWxlbWVudFRleHQgIWltcG9ydGFudDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uaGVscC1hZHZpY2UtZGlhbG9nIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9ySGVscEFkdmljZUJhY2tncm91bmQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9ySGVscEFkdmljZUJvcmRlcjtcbiAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgIHotaW5kZXg6IDEwMDU7XG4gICAgcGFkZGluZzogMC41cmVtO1xuICAgIHRvcDogM3JlbTtcbiAgICByaWdodDowLjhyZW07XG5cbiAgICAuaGVscC1hZHZpY2UtaW5mby1ncmVlbiB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW07XG4gICAgfVxufVxuXG4uaGVscC1jb250ZW50IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JIZWxwQ29udGVudEJhY2tncm91bmQ7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDAuM3JlbTtcbiAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgei1pbmRleDogMTAwNTtcbn1cblxuXG4vLyBOZXcgc3R5bGVzXG5cbiNjb250YWluZXIge1xuICAgIG1hcmdpbjogMCBhdXRvO1xufVxuXG5cbi53aXphcmQge1xuICAgIC8vcG9zaXRpb246IGFic29sdXRlOyAvLyBGaXggb2YgdGhlIGlzc3VlIHRoYXQgaGVpZ2h0IDEwMCUgZG9lcyBub3QgdGFrZSBlZmZlY3QgZm9yIGNoaWxkIG5vZGUgb2YgZmxleCBsYXlvdXQgaW4gU2FmYXJpXG4gICAgcGFkZGluZzogMDtcbiAgICBAaW5jbHVkZSBmbGV4KDEpO1xuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICBAaW5jbHVkZSBmbGV4LWZsb3coY29sdW1uKTtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuXG4gICAgJHdpemFyZENvbnRyb2xXaWR0aDogMnJlbTtcbiAgICAud2l6YXJkLWNvbnRyb2xzIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDAuNjI1cmVtIDAgMC42MjVyZW07XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkY29sb3JOZXV0cmFsTWQ7XG5cbiAgICAgICAgLndpemFyZC10aXRsZSB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yTGluaztcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4yNXJlbTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW07XG5cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAvLyBib3JkZXItY29sb3I6ICRjb2xvckxpbms7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yTGluaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgZGV2aWNlKG1vYmlsZSkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIGZsb2F0OmxlZnQ7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogJHdpemFyZENvbnRyb2xXaWR0aDtcbiAgICAgICAgICAgIG1hcmdpbjogMCAycmVtIDAuNXJlbSAwO1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvck5ldXRyYWxNZDtcblxuICAgICAgICAgICAgc3Bhbi53aXphcmQtY29udHJvbC10aXRsZSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIDAuNjI1cmVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAwO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IC0kd2l6YXJkQ29udHJvbFdpZHRoO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogJHdpemFyZENvbnRyb2xXaWR0aC8yIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjZmZmO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBkZXZpY2UobW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAgIC8vIGJhY2tncm91bmQtY29sb3I6ICRjb2xvckxpbms7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvckxpbms7XG5cbiAgICAgICAgICAgICAgICAuYmFkZ2Uge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JMaW5rO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgLy8gICAgIGJvcmRlci1jb2xvcjogJGNvbG9yTGluaztcbiAgICAgICAgICAgICAgICAvLyAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgICAgIC8vIH1cblxuICAgICAgICAgICAgICAgIC8vICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIC8vICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yTGluaztcbiAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuY3VycmVudCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZGV2aWNlKG1vYmlsZSkge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAvLyAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgICAgICAvLyAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvckxpbms7XG4gICAgICAgICAgICAgICAgLy8gfVxuXG4gICAgICAgICAgICAgICAgLy8gJjphZnRlciB7XG4gICAgICAgICAgICAgICAgLy8gICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3JMaW5rO1xuICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmJhZGdlIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JOZXV0cmFsTWQ7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDFyZW07XG4gICAgICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgICAgIHRvcDogLTAuMTI1cmVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH1cbiAgICAud2l6YXJkLWNvbnRlbnQge1xuICAgICAgICBwYWRkaW5nOjAuNjI1cmVtIDFyZW07XG4gICAgICAgIEBpbmNsdWRlIGZsZXgoMSk7XG4gICAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICAgICAgQGluY2x1ZGUgZmxleC1mbG93KGNvbHVtbik7XG4gICAgICAgIEBpbmNsdWRlIGp1c3RpZnktY29udGVudChzcGFjZS1iZXR3ZWVuKTtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgcCB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuaW5wdXQge1xuICAgICAgICAgICAgLy8gbWFyZ2luLWJvdHRvbTogMC42MjVyZW07XG4gICAgICAgIH1cbiAgICB9XG4gICAgLndpemFyZC1mb290ZXIge1xuICAgICAgICBoZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjYyNXJlbTtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRjb2xvck5ldXRyYWxNZDtcblxuICAgICAgICAuYnV0dG9uIHtcbiAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwLjYyNXJlbTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuNjI1cmVtO1xuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgIGhlaWdodDogMi41cmVtO1xuICAgICAgICAgICAgd2lkdGg6IDZyZW07XG4gICAgICAgIH1cbiAgICAgICAgYnV0dG9uLmFkdmFuY2Uge1xuICAgICAgICAgICAgLy90ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgIC8vbGluZS1oZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLndoaXRlLWJ1dHRvbiB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBjb2xvcjogJGNvbG9yTGluaztcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3JMaW5rO1xufVxuXG4udGFicyB7XG4gICAgLnBhbmVsLWNvbnRlbnQge1xuICAgICAgICAvL3BhZGRpbmc6IDEuNXJlbTtcbiAgICAgICAgLy9ib3JkZXI6IDFweCBzb2xpZCAkY29sb3JEaXZpZGVyO1xuICAgICAgICAvL2JvcmRlci10b3A6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICB9XG59XG5cbi5pbmZvX3BhbmVsIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgLmNvbHVtbnMge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgfVxuICAgIC5jb2x1bW5zOmxhc3QtY2hpbGQge1xuICAgICAgICBmbG9hdDpsZWZ0O1xuICAgIH1cblxuICAgIGRpdiB7XG4gICAgICAgIC5sYWJlbCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICRjb2xvck5ldXRyYWxNZDtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRjb2xvck5ldXRyYWxNZDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvclRpdGxlO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDFyZW0gMC42MjVyZW0gMC44cmVtO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yTmV1dHJhbEx0O1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIC8vQGluY2x1ZGUgYm94LXNoYWRvdygwIC0ycHggMCAkY29sb3JEaXZpZGVyTHQgaW5zZXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnZhbHVlIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgJGNvbG9yTmV1dHJhbE1kO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGNvbG9yTmV1dHJhbE1kO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xvck5ldXRyYWxNZDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbSAxcmVtIDAuNjI1cmVtO1xuICAgICAgICAgICAgaGVpZ2h0OiAxLjI1cmVtO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTpub3dyYXA7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfVxufVxuLnN1bW1hcnkge1xuICAgIC5jb2x1bW5zIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIH1cbn1cblxudGFibGUuZGF0YSB7XG4gICAgLnRpdGxlX2hlYWRpbmcge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cbiAgICB0aCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgfVxufVxuXG4ucGFuZWwubm9fYm9yZGVyIHtcbiAgICBib3JkZXI6IDA7XG59XG5cbi50YWJjb250cm9scyB7XG4gICAgcGFkZGluZzogMC42MjVyZW0gMC42MjVyZW0gMC4yNXJlbSAwLjYyNXJlbTtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KDAgMCAwICRjb2xvckRpdmlkZXJMdCBpbnNldCk7XG4gICAgbGkge1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIC8vIGNvbG9yOiAkY29sb3JMaW5rO1xuICAgICAgICAvL2JhY2tncm91bmQtY29sb3I6ICNGNWY1ZjU7XG4gICAgICAgIC8vbWFyZ2luOiAwLjEyNXJlbTtcbiAgICB9XG4gICAgbGkgaSB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtYXJnaW46IDAuNXJlbSAwLjI1cmVtIDAgMC4zMjVyZW07XG4gICAgICAgIGNvbG9yOiAkY29sb3JMaW5rO1xuICAgICAgICB3aWR0aDogMXJlbVxuICAgIH1cbiAgICBsaS5jdXJyZW50IGkge1xuICAgICAgICBjb2xvcjogJGNvbG9yU2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgbGkuY3VycmVudCBhIHtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBjb2xvcjogJGNvbG9yVGFiY29udHJvbHNUaXRsZUN1cnJlbnQ7XG4gICAgICAgIC8vY29sb3I6ICRjb2xvclNlbGVjdGVkO1xuICAgICAgICAvL2JhY2tncm91bmQtY29sb3I6ICNGNWY1ZjU7XG4gICAgfVxuXG4gICAgbGkgYSB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgY29sb3I6ICRjb2xvclRhYmNvbnRyb2xzVGl0bGU7XG4gICAgICAgIHBhZGRpbmc6IDAuN3JlbSAwIDAuODEyNXJlbSAwLjI1cmVtO1xuICAgICAgICBmb250LXNpemU6IDAuOTI1cmVtO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAvL2JhY2tncm91bmQtY29sb3I6ICNGNWY1ZjU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgfVxuICAgIGxpICsgZGl2OmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBwYWRkaW5nOiAwIDAgMCAxLjg3NXJlbTtcbiAgICAgICAgLy9AaW5jbHVkZSB0cmFuc2l0aW9uKGRpc3BsYXkgODAwbXMgZWFzZS1pbi1vdXQgMG1zKTtcbiAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2NTFweCkge1xuICAgICAgICAgICAgLy8gcGFkZGluZzogMCAwIDAgMC42MjVyZW07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi50YWJzLnJlc3BvbnNpdmUge1xuXG4gICAgLnRhYmNvbnRyb2xzIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uaXRlbS1wYW5lbCB7XG4gICAgQGluY2x1ZGUgZmxleCgxKTtcbiAgICBkaXNwbGF5OiBibG9jaztcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWFtYS1iZWFyKSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBAaW5jbHVkZSBmbGV4KG5vbmUpO1xuICAgIH1cbiAgICBcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHBhZGRpbmc6IDFyZW0gMXJlbSAwIDFyZW07XG4gICAgY29sb3I6ICM4ODg7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG5cbiAgICAuaGVhZGVyLWNvbnRhaW5lciB7XG4gICAgICAgIC8vYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xvck5ldXRyYWxNZDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC42MjVyZW07XG4gICAgICAgIGNvbG9yOiAkY29sb3JJdGVtUGFuZWxUaXRsZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cbiAgICAgICAgLml0ZW0tdGl0bGUge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIH1cbiAgICAgICAgLmxpbmstY29udGFpbmVyIHtcbiAgICAgICAgICAgIGZsb2F0OnJpZ2h0O1xuXG4gICAgICAgICAgICAubGluay1pdGVtIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgMC4zMTI1cmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmxpbmstYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9ySGlnaGxpZ2h0O1xuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAubGluay1zZXBhcmF0b3Ige1xuICAgICAgICAgICAgbWFyZ2luOiAwIDAuNXJlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pdGVtLXRpdGxlIHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgY29sb3I6ICRjb2xvckl0ZW1QYW5lbFRpdGxlO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xuICAgIH1cblxuICAgIHRhYmxlIHRkIHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgIH1cblxuICAgIHRkLmxhYmVsIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6Ym9sZDtcbiAgICAgICAgY29sb3I6ICRjb2xvclRpdGxlO1xuICAgIH1cblxuICAgIC5pdGVtLWNvbnRlbnQge1xuICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgIC5pdGVtLXRpdGxlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuNjI1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgPiBkaXYge1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleCgxKTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYW1hLWJlYXIpIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBmbGV4KG5vbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYW1hLWJlYXIpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgtZmxvdyhjb2x1bW4pO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5pdGVtLWNvbnRlbnQtdGFibGUge1xuICAgICAgICBAaW5jbHVkZSBmbGV4KDEpO1xuICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgtZmxvdyhjb2x1bW4pO1xuXG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIC8vcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gICAgfVxuXG4gICAgLmFwcHJmLXBhbmVsIHtcbiAgICAgICAgaGVpZ2h0OiAxOXJlbTtcbiAgICB9XG5cbiAgICAuaXRlbS1jb250ZW50LWNoYXJ0IHtcbiAgICAgICAgQGluY2x1ZGUgZmxleCgxKTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgLmFwcHJmLWhlYWRlciB7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgbWFyZ2luOiAwIDAuNzE0M3JlbTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjc1cmVtO1xuXG4gICAgICAgICAgICAuaXRlbS10aXRsZSB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5zZWdneWMge1xuICAgICAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgMXB4IDAgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuYXBwcmYtZm9vdGVyIHtcbiAgICAgICAgICAgIG1hcmdpbjogMC41cmVtIDAuODc1cmVtIDEuNXJlbTtcbiAgICAgICAgICAgID4gc3BhbiB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvckhpZ2hsaWdodDtcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgfVxuICAgICAgICAudGFibGUge1xuICAgICAgICAgICAgcGFkZGluZzogMCAwLjYyNXJlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5saW5rLW1vcmUge1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cblxuICAgIC5wYW5lbCB7XG4gICAgICAgIG92ZXJmbG93OiBpbmhlcml0O1xuICAgIH1cbn1cblxuLm92ZXJ2aWV3LWNvbnRhaW5lciB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBcbiAgICBAaW5jbHVkZSBmbGV4KDAgMCBhdXRvKTtcbiAgICBhOmhvdmVyIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAucGFuZWwge1xuICAgICAgICBib3JkZXI6bm9uZTtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG5cbiAgICAucm93IHtcbiAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWFtYS1iZWFyKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4LWZsb3coY29sdW1uKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0YWJsZSB7XG4gICAgICAgIGNvbG9yOiAkY29sb3JUZXh0O1xuICAgIH1cbiAgICAuY2xpZW50LWNoYXJ0cyB7XG4gICAgICAgID4gZGl2OmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIGZsZXg6IDI7XG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1hbWEtYmVhcikge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgobm9uZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgPiBkaXY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYW1hLWJlYXIpIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBmbGV4KG5vbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubW9uaXRvcmluZy1kYXNoYm9hcmQtaWNvbiB7XG4gICAgaGVpZ2h0OiAxNHB4O1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgd2lkdGg6IDE5cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4kY29sb3JJbmFjdGl2ZUFQOiAjRjQzNTMwO1xuXG4ub3ZlcnZpZXctbmV0d29ya3MtY29udGFpbmVyIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIFxuICAgIC5wYW5lbCB7XG4gICAgICAgIGJvcmRlcjpub25lO1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgIH1cblxuICAgIC50YWItY29udHJvbC1jb250YWluZXIge1xuICAgICAgICBwYWRkaW5nLXRvcDogMC42MjVyZW07XG4gICAgfVxuXG4gICAgLnJvdyB7XG4gICAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1hbWEtYmVhcikge1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1mbG93KGNvbHVtbik7XG4gICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgdGFibGUge1xuICAgICAgICBjb2xvcjogJGNvbG9yVGV4dDtcbiAgICAgICAgLy9tYXgtaGVpZ2h0OiAyMHJlbTtcbiAgICAgICAgQGluY2x1ZGUgZGV2aWNlKG1vYmlsZSkge1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMTByZW07XG4gICAgICAgIH1cbiAgICAgICAgdGQge1xuICAgICAgICAgICAgZGl2Lmdvb2Qge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjMEQ3RjJFO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGl2Lm9rIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2ZmOWExYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpdi5wb29yIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2JhMGQwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC50YWJsZV93cmFwcGVyIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG4gICAgLndoaXRlIHtcbiAgICAgICAgYm9yZGVyOm5vbmU7XG4gICAgfVxuICAgIC5pbmFjdGl2ZS1hcCB7XG4gICAgICAgIGNvbG9yOiAkY29sb3JJbmFjdGl2ZUFQO1xuICAgIH1cbiAgICAuaW5hY3RpdmUtbmV0d29yayB7XG4gICAgICAgIGNvbG9yOiAkY29sb3JOZXV0cmFsRGs7XG4gICAgfVxuXG4gICAgJi5leHBhbmRlZCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICAgICAgQGluY2x1ZGUgZmxleC1mbG93KGNvbHVtbik7XG5cbiAgICAgICAgPiBkaXY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgfVxuXG4gICAgICAgID4gZGl2Omxhc3QtY2hpbGQge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnJhZGlvLWNvbnRhaW5lciB7XG4gICAgLnJhZGlvLXJvdyB7XG4gICAgICAgIGRpc3BsYXkgOiBpbmxpbmUtYmxvY2s7XG4gICAgfVxufVxuXG4ubmV0d29yay1pbml0LXdpemFyZCB7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuXG4ubmV0d29yay1pbml0LWZpbmlzaGVkLWRpYWxvZyB7XG4gICAgLm92ZXJsYXkubGlnaHQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIH1cbiAgICAubmV0d29yay1pbml0LXN1Y2Nlc3MtY29udGVudCB7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIFxuICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgtZmxvdyhjb2x1bW4pO1xuXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAgIHAge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICAgIH1cbiAgICAgICBcbiAgICAgICAgXG4gICAgICAgIC5uZXR3b3JrLWluaXQtbG9hZGluZywgLm5ldHdvcmstaW5pdC1tZXNzYWdle1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDMwJTtcbiAgICAgICAgfSAgIFxuICAgICAgICBcbiAgICAgICAgLmZhLWZ3IHtcbiAgICAgICAgICAgIHdpZHRoOiAxNnJlbTtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3JMaW5rO1xuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTByZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmZhLWZ3OmJlZm9yZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE2cmVtO1xuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEwcmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmZhLWNoZWNrIHtcbiAgICAgICAgICAgIGNvbG9yOiAjMDBDQzAwO1xuICAgICAgICB9XG4gICAgICAgIC5mYS1jaGVjazpiZWZvcmUge1xuICAgICAgICAgICAgZm9udC1zaXplOiA1cmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uaGlkZS1tb2JpbGUge1xuICAgIEBpbmNsdWRlIGRldmljZShtb2JpbGUpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLmxvYWRpbmdEaWFsb2cge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgXG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgIEBpbmNsdWRlIGZsZXgtZmxvdyhjb2x1bW4pO1xuXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIHAge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICB9XG4gICBcbiAgICBcbiAgICAubG9hZGluZywgLm1lc3NhZ2V7XG4gICAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9ICAgXG4gICAgXG4gICAgLmZhLWZ3IHtcbiAgICAgICAgd2lkdGg6IDhyZW07XG4gICAgICAgIGNvbG9yOiAkY29sb3JMaW5rO1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJhYnktYmVhcikge1xuICAgICAgICAgICAgd2lkdGg6IDEwcmVtO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5mYS1mdzpiZWZvcmUge1xuICAgICAgICBmb250LXNpemU6IDZyZW07XG4gICAgICAgIC8vIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgIC8vICAgICBmb250LXNpemU6IDEwcmVtO1xuICAgICAgICAvLyB9XG4gICAgfVxuXG4gICAgLmZhLWNoZWNrIHtcbiAgICAgICAgY29sb3I6ICMwMENDMDA7XG4gICAgfVxuICAgIC5mYS1jaGVjazpiZWZvcmUge1xuICAgICAgICBmb250LXNpemU6IDVyZW07XG4gICAgfVxufVxuXG4uY29uZmlndXJhdGlvbi1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICBAaW5jbHVkZSBmbGV4LWZsb3coY29sdW1uKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGZsZXg6IDE7XG4gICAgXG4gICAgLmNvbmZpZy10aXRsZSB7XG4gICAgICAgIGhlaWdodDogMnJlbTtcbiAgICB9XG4gICAgLmNvbmZpZy1jdXJyZW50IHtcbiAgICAgICAgaGVpZ2h0OiAxLjVyZW07XG4gICAgfVxuICAgIC5jb25maWctY29udGVudCB7XG4gICAgICAgIC8vaGVpZ2h0OiAxMHJlbTtcbiAgICAgICAgZmxleDoxO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuNXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2VmZWZlZjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICAgICAgZm9udC1mYW1pbHk6IFZlcmRhbmEsIFNpbVN1bjtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgQGluY2x1ZGUgdXNlci1zZWxlY3QodGV4dCk7XG4gICAgfVxuICAgIC5jb25maWctY2hlY2tib3gge1xuICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICBmbG9hdDpub25lO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5jb25maWctZm9vdGVyIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDEycmVtO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjYyNXJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4vKiBGTEFTSElORyAqL1xuQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVJbiB7XG4gICAgMCUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBmYWRlSW4ge1xuICAgIDAlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG59XG5cbi5mYWEtZmFkZUluLmFuaW1hdGVkIHtcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmFkZUluIDJzIGVhc2U7XG4gICAgYW5pbWF0aW9uOiBmYWRlSW4gMnMgZWFzZTtcbn1cblxuLnBhZ2UtbG9hZGluZyB7XG4gICAgLm92ZXJsYXkubGlnaHQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gICAgfVxuXG4gICAgLmZhLWZ3IHtcbiAgICAgICAgd2lkdGg6IDEwcmVtO1xuICAgICAgICBjb2xvcjogJGNvbG9yTGluaztcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgICAgIHdpZHRoOiA2cmVtO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5mYS1mdzpiZWZvcmUge1xuICAgICAgICBmb250LXNpemU6IDEwcmVtO1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJhYnktYmVhcikge1xuICAgICAgICAgICAgZm9udC1zaXplOiA2cmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cbiR0b29sdGlwQm9yZGVyUmFkaXVzOjAuMzEyNXJlbTtcbiR0b29sdGlwQm94U2hhZG93Q29sb3I6IHJnYmEoMCwwLDAsMC4xNSk7XG4kdG9vbHRpcEJveFNoYWRvdzowIDAuMTg3NXJlbSAwLjc1cmVtICR0b29sdGlwQm94U2hhZG93Q29sb3I7XG4kdG9vbHRpcEJvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwwLjE1KTtcblxuLmFycm93LXVwIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGJvcmRlcjogMC41cmVtIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkdG9vbHRpcEJveFNoYWRvd0NvbG9yO1xuICAgIH1cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgYm9yZGVyOiAwLjVyZW0gc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmY7XG4gICAgfVxufVxuXG4uYXJyb3ctZG93biB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBib3JkZXI6IDAuNXJlbSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJHRvb2x0aXBCb3hTaGFkb3dDb2xvcjtcbiAgICB9XG4gICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGJvcmRlcjogMC41cmVtIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItdG9wLWNvbG9yOiAjZmZmO1xuICAgIH1cbn1cblxuLyoqKioqKiBoZWxwICoqKioqKi9cbi8vIC5oZWxwLW1lbnUtaWNvbiB7XG4vLyAgICAgLy9oZWlnaHQ6IDNyZW07XG4vLyAgICAgbWFyZ2luOiAwIDAgMCAwLjVyZW07XG4vLyAgICAgY29sb3I6ICNDM0M1Qzg7XG4vLyB9XG5cbi5oZWxwLW1lbnUtaWNvbiB7XG4gICAgY29sb3I6ICRjb2xvckxpbms7XG59XG5cbi5oZWxwLW1lbnUtaWNvbjpob3ZlciwgLmhlbHAtbWVudS1pY29uLmN1cnJlbnQge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmhlbHAtYWR2aWNlLWNvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcbiAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNjI1cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6ICR0b29sdGlwQm9yZGVyUmFkaXVzO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB6LWluZGV4OiAxMDAxO1xuICAgIHJpZ2h0OiAxLjYyNXJlbTtcbiAgICB0b3A6IDMuNTYyNXJlbTtcbiAgICBib3gtc2hhZG93OiAkdG9vbHRpcEJveFNoYWRvdztcbiAgICBib3JkZXI6ICR0b29sdGlwQm9yZGVyO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG5cbiAgICAuaGVscC1tb2RlIHtcbiAgICAgICAgbWFyZ2luOiAwIDAuNjI1cmVtO1xuICAgIH1cblxuICAgIC5oZWxwLWFkdmljZS1jb250ZW50IHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDJyZW07XG4gICAgICAgIGNvbG9yOiAjMzMzO1xuXG4gICAgICAgIC5oZWxwLWFkdmljZS1kb25lIHtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3JMaW5rO1xuICAgICAgICB9XG4gICAgfSAgICBcbn1cblxuLmhlbHAtYWR2aWNlLWFycm93IHtcblxufVxuXG4uaGVscC1hZHZpY2UtYXJyb3c6YmVmb3JlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDMuNnJlbTtcbiAgICBtYXJnaW4tdG9wOiAtMS4zcmVtO1xufVxuXG4uaGVscC1hZHZpY2UtYXJyb3c6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMy42cmVtO1xuICAgIG1hcmdpbi10b3A6IC0xLjIycmVtO1xufVxuXG4uaGVscC10b29sdGlwLWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvcmRlci1yYWRpdXM6ICR0b29sdGlwQm9yZGVyUmFkaXVzO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZGZkZGE7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBtYXgtd2lkdGg6IDI1cmVtO1xuICAgIGJveC1zaGFkb3c6IDAgLTAuMTg3NXJlbSAwLjc1cmVtIHJnYmEoMCwwLDAsMC4xNSk7XG4gICAgYm9yZGVyOiAkdG9vbHRpcEJvcmRlcjtcbiAgICB6LWluZGV4OiAxMDAwNTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWFtYS1iZWFyKSB7XG4gICAgICAgIG1heC13aWR0aDogMTguNzVyZW07XG4gICAgfVxuXG4gICAgLmhlbHAtdG9vbHRpcC1jb250ZW50e1xuICAgICAgICBtYXJnaW46IDAuNXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB9XG59XG5cbi5oZWxwLXRvb2x0aXAtYXJyb3c6YmVmb3Jle1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IC0xcmVtO1xuICAgIGxlZnQ6IDAuNjI1cmVtO1xufVxuXG4uaGVscC10b29sdGlwLWFycm93OmFmdGVye1xuICAgIGJvcmRlci10b3AtY29sb3I6ICNmZGZkZGE7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogLTAuOXJlbTtcbiAgICBsZWZ0OiAwLjYyNXJlbTtcbn1cbi8qKioqKiogaGVscCAqKioqKiovXG5cbi5tdWx0aXBsZS1zZWxlY3RvciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIFxuICAgIEBpbmNsdWRlIGRldmljZShtb2JpbGUpIHtcbiAgICAgICAgbWFyZ2luOiAwcmVtO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XG4gICAgfVxuXG4gICAgLmxhYmxlUm93IHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgICAgICBwYWRkaW5nOiAwLjYyNXJlbSAyLjVyZW0gMC42MjVyZW0gMC42MjVyZW07XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnb3BlbnNhbnMnLCBoZWx2ZXRpY2EsIGFyaWFsLCBzYW5zLXNlcmlmO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBjb2xvcjogJGNvbG9ySGlnaGxpZ2h0O1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoJy4uLy4uL2ltYWdlcy9zZWxlY3RfYXJyb3dfMngucG5nJykgI2ZmZiBuby1yZXBlYXQgcmlnaHQgY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDM4cHggMzhweDtcbiAgICAgICAgQGluY2x1ZGUgYXBwZWFyYW5jZShub25lKTtcbiAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyg0cHgpO1xuICAgICAgICBAaW5jbHVkZSBib3gtc2hhZG93KDAgMCAwIDAgJGNvbG9yRGl2aWRlciBpbnNldCwgMCAxcHggMCAkY29sb3JEaXZpZGVyKTtcbiAgICAgICAgQGluY2x1ZGUgYm94LXNpemluZyhib3JkZXItYm94KTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuICAgIC5zZWxlY3QtbGFibGUge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB3aWR0aDogMTByZW07XG4gICAgICAgIG1hcmdpbi10b3A6MC4yNXJlbTtcbiAgICB9XG4gICAgLmNvbXBvbmVudCB7XG4gICAgICAgIEBpbmNsdWRlIGRldmljZShtb2JpbGUpIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IC0wLjI1cmVtO1xuICAgICAgICB9XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgei1pbmRleDogMTAwMDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yTmV1dHJhbE1kO1xuICAgIH1cbiAgICAuc2VhcmNoLWlucHV0IHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgICAgICB3aWR0aDogMjFyZW07XG4gICAgfVxuICAgIC5jaGVjay1hbGwge1xuICAgICAgICBsaW5lLWhlaWdodDogMnJlbTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG4gICAgLnN3aXRjaC1tdWx0aXBsZSB7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5kcm9wLWRvd24tbGlzdCB7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyM3JlbTtcbiAgICAgICAgd2lkdGg6IDIxcmVtO1xuICAgICAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gICAgICAgIGJvcmRlci10b3A6IHNvbGlkIDFweCAkY29sb3JOZXV0cmFsTWQ7XG4gICAgICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDFweCAkY29sb3JOZXV0cmFsTWQ7XG5cbiAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG4gICAgICAgIGRpdiB7XG4gICAgICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JOZXV0cmFsTWRcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgZGV2aWNlKG1vYmlsZSkge1xuICAgICAgICAgICAgICAgIGhlaWdodDogMy41cmVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZGV2aWNlKG1vYmlsZSkge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTZyZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRpdiBsYWJlbC5zaW5nYWxMYWJlbCB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAycmVtO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuLnNlYXJjaCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIC8vd2lkdGg6IDMxMHB4O1xuICAgIC8vY29sb3I6ICNjNGM0YzQ7XG4gICAgbWFyZ2luLXRvcDogM3B4O1xuXG4gICAgLnNlYXJjaC1pY29uIHtcbiAgICAgICAgY29sb3I6ICRjb2xvckxpbms7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogMC41cztcbiAgICB9XG4gICAgLnNlYXJjaC1pY29uLXJlbW92ZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDAuMzc1cmVtO1xuICAgICAgICB0b3A6IDAuMzc1cmVtO1xuICAgIH1cbiAgICAuc2VhcmNoLWlucHV0IHtcbiAgICAgICAgYm9yZGVyOiAkdG9vbHRpcEJvcmRlcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHRvb2x0aXBCb3JkZXJSYWRpdXM7XG4gICAgICAgIGhlaWdodDogMS41cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIDAuMjVyZW0gMC4yNXJlbSAxLjg3NXJlbTtcbiAgICAgICAgd2lkdGg6IDE3cmVtO1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJhYnktYmVhcikge1xuICAgICAgICAgICAgd2lkdGg6IDdyZW07XG4gICAgICAgIH07XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGNvbG9yOiAkY29sb3JTZWFyY2hUZXh0O1xuICAgICAgICB0cmFuc2l0aW9uOiAwLjVzO1xuICAgIH1cbiAgICAuc2VhcmNoLWlucHV0LnNlYXJjaC1pbnB1dC1oaWRlIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICAgIC5zZWFyY2gtcmVzdWx0IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICR0b29sdGlwQm9yZGVyUmFkaXVzO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBib3gtc2hhZG93OiAkdG9vbHRpcEJveFNoYWRvdztcbiAgICAgICAgYm9yZGVyOiAkdG9vbHRpcEJvcmRlcjtcblxuICAgICAgICB0b3A6IDIuNXJlbTtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgICAgIGxlZnQ6IC00cmVtO1xuICAgICAgICB9O1xuXG4gICAgICAgIHotaW5kZXg6IDEwMDY7XG5cbiAgICAgICAgLnNlYXJjaC1yZXN1bHQtYXJyb3c6YmVmb3Jle1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAtMXJlbTtcbiAgICAgICAgICAgIGxlZnQ6IDEuNXJlbTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgICAgICAgICAgbGVmdDogNS41cmVtO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zZWFyY2gtcmVzdWx0LWFycm93OmFmdGVye1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAtMC45cmVtO1xuICAgICAgICAgICAgbGVmdDogMS41cmVtO1xuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgICAgICAgICBsZWZ0OiA1LjVyZW07XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIC5zZWFyY2gtcmVzdWx0LWl0ZW1zIHtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMTkuMjVyZW07XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDE5LjI1cmVtO1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMjVyZW07XG5cbiAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgICAgICAgICAgIC5zZWFyY2gtbm8tcmVzdWx0cyB7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5zZWFyY2gtcmVzdWx0LWl0ZW0ge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgICAgICAgICAuaXRlbS10aXRsZSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMC41cmVtO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yU2VhcmNoUmVzdWx0VGV4dDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xvclNlYXJjaFJlc3VsdFRleHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5zZWFyY2gtcmVzdWx0LWl0ZW0tYm9keSB7XG4gICAgICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDcuNXJlbTtcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgICAgICAgICAgICAgLmRhdGEtaXRlbSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yU2VhcmNoUmVzdWx0VGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJhY2tncm91bmQtY29sb3I6ICRjb2xvckhpZ2hsaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvclNlYXJjaFJlc3VsdFRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAuaGlnaGxpZ2h0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbG9yOiAjYzAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAmLnNlbGVjdGVkIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JIb3ZlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ub3ZlcmxheSAubWVzc2FnZSB7XG4gICAgYm9yZGVyLXJhZGl1czogJHRvb2x0aXBCb3JkZXJSYWRpdXM7XG4gICAgYm94LXNoYWRvdzogJHRvb2x0aXBCb3hTaGFkb3c7XG4gICAgLy9ib3JkZXI6ICR0b29sdGlwQm9yZGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvckNvbnRhaW5lckJhY2tncm91bmQ7XG5cbiAgICAmLnJlbG9hZGluZyB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICB0b3A6IDMwJTtcblxuICAgICAgICAuZGlhbG9nLWNvbnRlbnQgcCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgICYudGFiLWxvYWRpbmcge1xuICAgICAgICAgICAgLmZhLXNwaW5uZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjZTNlM2UzO1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiA2cmVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kaWFsb2ctdGl0bGUge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIGNvbG9yOiAjNjQ2NTY5O1xuICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JEaWFsb2dUaXRsZUJhY2tncm91bmQ7XG4gICAgfVxuICAgIC5kaWFsb2ctY29udGVudCB7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcblxuICAgICAgICBwIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgcGFkZGluZzogMC42MjVyZW07XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmRpYWxvZy1hY3Rpb24ge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgICAgICAvL2JhY2tncm91bmQtY29sb3I6JGNvbG9yRGlhbG9nVGl0bGVCYWNrZ3JvdW5kO1xuXG4gICAgICAgID5idXR0b246bnRoLWNoaWxkKDEpIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMC41cmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZmlybXdhcmUge1xuICAgICYubWVzc2FnZSB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIC5kaWFsb2ctY29udGVudCB7XG4gICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59IFxuXG4uc2VjdGlvbiB7XG4gICAgbWFyZ2luLXRvcDogMC41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgLy8gQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAvLyAgICAgcGFkZGluZy1sZWZ0OiAxLjMxMjVyZW07XG4gICAgLy8gfTtcbiAgICAuc2VjdGlvbi1oZWFkZXIge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW07XG5cbiAgICAgICAgPiBsYWJlbCB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAvL2ZvbnQtc2l6ZTogMC45MjVyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAudW5jb2xsYXBzaWFibGUge1xuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgID4gbGFiZWwge1xuICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICB9XG4gICAgICAgIC5zZWN0aW9uLWljb24ge1xuICAgICAgICAgICAgdmlzaWJpbGl0eTpoaWRkZW47XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuMnJlbTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuc2VjdGlvbi1jb250ZW50IHtcbiAgICAgICAgLy8gcGFkZGluZy10b3A6IDAuNXJlbTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxLjEyNXJlbTtcbiAgICAgICAgY2xlYXI6IGJvdGg7XG5cbiAgICAgICAgPi5yb3cudGFibGUtcm93IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgICAgICAgICBkaXYuZm9ybS1maWVsZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgZmxleDogMSAxIDEwcmVtO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGl2LmZvcm0tZmllbGQ6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgZmxleDogMTAgMTAgNTByZW07XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5zZWN0aW9uLWNvbnRlbnQtaGlkZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIC5zZWN0aW9uLWxhYmVsLWV4cGFuZCB7XG4gICAgICAgIC8vZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuICAgIC5zZWN0aW9uLWljb24ge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuMzc1cmVtO1xuICAgICAgICBjb2xvcjogJGNvbG9yTGluaztcbiAgICAgICAgJjpiZWZvcmV7XG4gICAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyogLnNlY3Rpb24tc3BsaXRlciB7XG4gICAgICAgIG1hcmdpbjogMC41cmVtO1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICAvL2JvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICAgIC8vYm9yZGVyLXdpZHRoOiAxcHggMCAwIDA7XG4gICAgICAgIC8vYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDFweDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH0gKi9cbn1cblxuLnVwbGluay1wcmlvcml0eS10YWJsZSB7XG4gICAgd2lkdGg6IDI1cmVtO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgd2lkdGg6IDE0cmVtO1xuICAgIH07XG5cbn1cblxuLnRhYmxlLWFjdGlvbnMtYmFyLWNvbnRhaW5lciB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yRGl2aWRlcjtcbiAgICBib3JkZXItdG9wOiBub25lO1xuICAgIHBhZGRpbmc6IDAuNXJlbTtcblxuICAgIC50YWJsZS1hY3Rpb25zLWJhci1hY3Rpb24ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMC41cmVtO1xuICAgICAgICBjb2xvcjogIzAyYTdlYztcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIC5kaXNhYmxlIHtcbiAgICAgICAgY29sb3I6ICNjNGM0YzQ7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB9XG59XG5cbi51c2VyLW1lbnUtYXJyb3cge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMS42cmVtO1xuXG4gICAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgICB0b3A6IC0xcmVtO1xuICAgIH1cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgdG9wOiAtMC45Mzc1cmVtO1xuICAgIH1cblxufVxuLnVwbG9hZC1maWxlLWRpdiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyAgICBcbn1cblxuLnVwbG9hZC1maWxlIHtcbiAgICB6LWluZGV4OiAyMDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgd2lkdGg6IDMwcmVtO1xuICAgIGhlaWdodDogMi41cmVtO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBsZWZ0OiAwO1xufVxuXG4uZm9ybS1maWVsZCAudXBsb2FkLWlucHV0IHtcbiAgICB3aWR0aDogMzByZW07XG4gICAgaGVpZ2h0OiAyLjVyZW07XG59XG5cbi51cGxvYWQtaWZyYW1lIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG5pbnB1dFt0eXBlPXRleHRdLmlucHV0LmZpbGVyb3ctaW5wdXQge1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwcHg7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDBweDtcbiAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgaGVpZ2h0OiAyLjVyZW07XG4gICAgd2lkdGg6IDIwcmVtO1xuICAgIGZsb2F0OiBsZWZ0O1xufVxuLmZpbGVyb3ctYnV0dG9uIHtcbiAgICBoZWlnaHQ6IDIuNXJlbTtcbiAgICBwYWRkaW5nOiAwcmVtIDFyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0zcHg7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMHB4O1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDBweDtcbiAgICBmbG9hdDogbGVmdDtcbn1cblxuLnRhYmxlLWFjdGlvbi1pY29uIHtcbiAgICAvL2N1cnNvcjogcG9pbnRlcjtcbiAgICBtYXJnaW46IDAgMXJlbSAwIDA7XG4gICAgY29sb3I6ICRjb2xvck5ldXRyYWxEaztcbn1cblxuLnRhYmxlLWFjdGlvbi1pY29uLmVuYWJsZSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGNvbG9yOiAkY29sb3JMaW5rO1xufVxuXG4uZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgbGluZS1oZWlnaHQ6IDJyZW07XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luOiAwIDAuNjI1cmVtO1xuICAgIG1heC13aWR0aDogMjByZW07XG4gICAgd29yZC13cmFwOiBicmVhay13b3JkO1xufVxuXG4uZm9ybS1maWVsZC1idXR0b24ge1xuICAgIGxpbmUtaGVpZ2h0OiAycmVtO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmZvcm0tZmllbGQtYnV0dG9uLnNlY3Rpb24taWNvbiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwcmVtO1xufVxuXG4ub3ZlcmxheSB7XG4gICAgLmRpYWxvZyB7XG4gICAgICAgIHRvcDogMTAlO1xuICAgICAgICAvL21heC13aWR0aDogNjAlO1xuICAgICAgICAvL21heC1oZWlnaHQ6IDgwJTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTAlO1xuICAgIH1cblxuICAgIC5kaWFsb2ctY29udGVudCB7XG4gICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICBtYXgtaGVpZ2h0OiAzMHJlbTtcbiAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LWhlaWdodDogNjAwcHgpIHtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDI0cmVtO1xuICAgICAgICB9XG4gICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC1oZWlnaHQ6IDQwMHB4KSB7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiAxMnJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm11bHRpcGxlLWNoZWNrYm94IHtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgQGluY2x1ZGUgZmxleC13cmFwKHdyYXApO1xuICAgIEBpbmNsdWRlIGp1c3RpZnktY29udGVudChmbGV4LXN0YXJ0KTtcbiAgICBAaW5jbHVkZSBhbGlnbi1jb250ZW50KHNwYWNlLWJldHdlZW4pO1xuICAgIG1heC13aWR0aDogNDByZW07XG5cbiAgICAuY2hlY2tib3gtZmllbGQge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XG4gICAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICAgICAgd2lkdGg6IDVyZW07XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWFtYS1iZWFyKSB7XG4gICAgICAgICAgICB3aWR0aDogN3JlbTtcbiAgICAgICAgfTtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgICAgIHdpZHRoOiA2cmVtO1xuICAgICAgICB9O1xuICAgIH1cbn1cblxuLmNoZWNrYm94LWZpZWxkIHtcbiAgICAmLmRpc2FibGUge1xuICAgICAgICBjb2xvcjogJGNvbG9yTmV1dHJhbERrXG4gICAgfVxuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMC42MjVyZW07XG59XG5cbi50cmFmZmljLWJhciB7XG4gICAgLnRvdGFsIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMC44cmVtO1xuICAgICAgICB3aWR0aDogNjAlO1xuICAgICAgICA+IHNwYW4ge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnBlciB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODlBNTRFO1xuICAgIH1cbiAgICAudGV4dCB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICB9XG59XG4uYXBwcmYtdGFibGUtY2F0ZWdvcnkge1xuICAgIHdpZHRoOiAzMCU7XG59XG5cbi53YXJuaW5nLW1lc3NhZ2Uge1xuICAgIGNvbG9yOiAkY29sb3JBbGVydDtcbiAgICBtYXJnaW46IDAuNXJlbSAwO1xuICAgID4gc3BhbiB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMC41cmVtO1xuICAgIH1cbiAgICAuZmFzOmJlZm9yZSwuZmFyOmJlZm9yZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICB9XG59XG5cbi5pbmZvLXBhbmVsIHtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgQGluY2x1ZGUgZmxleC13cmFwKHdyYXApO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH07XG4gICAgXG5cbiAgICAuaW5mby1pdGVtIHtcbiAgICAgICAgQGluY2x1ZGUgZmxleCgxIDEgNTAlKTtcbiAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICBAaW5jbHVkZSBqdXN0aWZ5LWNvbnRlbnQoZmxleC1zdGFydCk7XG5cbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xvck5ldXRyYWxNZDtcblxuICAgICAgICAuaW5mby1sYWJlbCB7XG4gICAgICAgICAgICAvL0BpbmNsdWRlIGZsZXgoMSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIGNvbG9yOiAjNjQ2NTY5O1xuICAgICAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgICAgICB9XG4gICAgICAgIC5pbmZvLXZhbHVlIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgoMSk7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmluZm8taXRlbS5oaWRlIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH07XG4gICAgfVxuICAgIC5pbmZvLWNvbnRyb2wge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDFyZW07XG4gICAgICAgIGNvbG9yOiAkY29sb3JIaWdobGlnaHQ7XG4gICAgICAgIFxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJhYnktYmVhcikge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH07XG4gICAgICAgIC5jb250cm9sLXRleHQge1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMC41cmVtO1xuICAgICAgICB9XG4gICAgICAgIC5jb250cm9sLWljb24ge1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44MjVyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5uZXR3b3Jrcy1pbmZvIHtcbiAgICAuaW5mby1pdGVtIHtcbiAgICAgICAgQGluY2x1ZGUgZmxleCgxIDEgMzMuMyUpO1xuICAgIH1cbn1cblxuLnJvdy1waWNrZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIG1hcmdpbi10b3A6IDFweDtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICB6LWluZGV4OiA5OTk5O1xuICAgIC8vcGFkZGluZzogMC4yNXJlbTtcbiAgICBtYXgtd2lkdGg6IDMycmVtO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgIG1heC13aWR0aDogMjFyZW07XG4gICAgfTtcblxuICAgIC5kaWFsb2ctdGl0bGUge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIGNvbG9yOiAjNjQ2NTY5O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JEaWFsb2dUaXRsZUJhY2tncm91bmQ7XG4gICAgfVxuICAgIC5wYW5lbC1jb250ZW50IHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgIH1cblxuICAgIC5waWNrZXItYWN0aW9uIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgICAgICAvL2JhY2tncm91bmQtY29sb3I6JGNvbG9yRGlhbG9nVGl0bGVCYWNrZ3JvdW5kO1xuXG4gICAgICAgID5idXR0b246bnRoLWNoaWxkKDEpIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMC41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgPiBidXR0b24ge1xuICAgICAgICAgICAgcGFkZGluZzogMC4zcmVtIDAuNXJlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5mb3JtLWZpZWxkOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgfVxuICAgIC5yb3cge1xuICAgICAgICBtYXJnaW4tbGVmdDogMHJlbTtcbiAgICB9XG4gICAgXG4gICAgYS5kaWFsb2ctY2xvc2Uge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDMlO1xuICAgICAgICByaWdodDogMiU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG59XG5cbi5jbGllbnQtbWF0Y2gtYXAge1xuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGJhYnktYmVhcikge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgLmNoYXJ0LXBhbmVsIHtcbiAgICAgICAgZmxleDogMztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMjVyZW07XG4gICAgfVxuICAgIC5kZXRhaWwtcGFuZWwge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICBmbGV4OiAyO1xuICAgICAgICB0YWJsZSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjhyZW07XG4gICAgICAgIH1cbiAgICAgICAgLml0ZW0tdGl0bGUge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmluZm8tcGFuZWwge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjhyZW07XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgICAuc2VnZ3ljIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogMC41cmVtO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIG1hcmdpbjogMS4ycmVtIDAuNjI1cmVtIDEuMnJlbSAwO1xuICAgIH1cbn1cblxuLmNsaWVudC1tYXRjaC1jbGllbnQgIHtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfTtcbiAgICAvL3dpZHRoOiAxMDAlO1xuXG4gICAgLmNoYXJ0LXBhbmVsIHtcbiAgICAgICAgZmxleDogMztcbiAgICB9XG4gICAgLmRldGFpbC1wYW5lbCB7XG4gICAgICAgIGZsZXg6IDI7XG4gICAgICAgIHRhYmxlIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuOHJlbTtcbiAgICAgICAgfVxuICAgICAgICAuaXRlbS10aXRsZSB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuaW5mby1wYW5lbCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuOHJlbTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4uc3VwcG9ydC5wYW5lbCB7XG4gICAgZmxleDogMTtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgQGluY2x1ZGUgZmxleC1mbG93KGNvbHVtbik7XG5cbiAgICAuc3VwcG9ydC1zZWxlY3Qge1xuICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgIEBpbmNsdWRlIGp1c3RpZnktY29udGVudChzcGFjZS1hcm91bmQpO1xuICAgICAgICBAaW5jbHVkZSBmbGV4LXdyYXAod3JhcCk7XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuXG4gICAgICAgIC5zZWxlY3Qge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuZW5hYmxlLWNvbG9yIHtcbiAgICAgICAgICAgIGNvbG9yOiAjMDBmZjdmXG4gICAgICAgIH1cblxuICAgICAgICAuc21hbGwtaGlkZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBkZXZpY2UobW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBkZXZpY2UobW9iaWxlKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4LWRpcmVjdGlvbihjb2x1bW4pO1xuICAgICAgICAgICAgQGluY2x1ZGUgYWxpZ24taXRlbXMoZmxleC1zdGFydCk7XG4gICAgICAgIH1cblxuICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAuMjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMC4yNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5tdWx0aXBsZS1zZWxlY3RvciB7XG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnN1cHBvcnQtcmVzdWx0LWhlYWQge1xuICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgIEBpbmNsdWRlIGp1c3RpZnktY29udGVudChmbGV4LXN0YXJ0KTtcbiAgICAgICAgQGluY2x1ZGUgZmxleC13cmFwKHdyYXApO1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICBtYXgtaGVpZ2h0OiA0cmVtO1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjYyNXJlbTtcblxuICAgICAgICBkaXYge1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yTmV1dHJhbE1kO1xuICAgICAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC41cmVtO1xuICAgICAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuNXJlbTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yRGlhbG9nVGl0bGVCYWNrZ3JvdW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgZGl2LnNlbGVjdGVkIHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3JMaW5rO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc3VwcG9ydC1yZXN1bHQtY29udGVudCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDEwcmVtO1xuICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yTmV1dHJhbE1kO1xuICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICAgICAgICBAaW5jbHVkZSB1c2VyLXNlbGVjdCh0ZXh0KTtcbiAgICAgICAgcHJlIHtcbiAgICAgICAgICAgIC8vIGZvciBmbGV4Ym94IGlzc3VlIG9mIEVkZ2UgXG4gICAgICAgICAgICBtYXgtd2lkdGg6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jb25maWctYWNjZXNzLXBvaW50cyB7XG4gICAgdGFibGUgdGQge1xuICAgICAgICAvL3BhZGRpbmc6IDAuMnJlbSAwLjVyZW07XG4gICAgfVxuICAgIC51bmF1dGhlZC1hcC1saXN0IHRhYmxle1xuICAgICAgICAvL2NvbG9yOiAjRjQzNTMwO1xuICAgIH1cbiAgICAuaXRlbS10aXRsZSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDEuNXJlbTtcbiAgICB9XG4gICAgLmluYWN0aXZlLWFwIHtcbiAgICAgICAgY29sb3I6ICRjb2xvckluYWN0aXZlQVA7XG4gICAgfVxuICAgIC5hcHMtbmFtZS1tYXN0ZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDk1JTtcbiAgICB9XG59XG5cbi5ub3RpZmljYXRpb24ge1xuICAgIC51aS1iYWRnZSB7XG4gICAgICAgIG1hcmdpbi10b3A6IC0wLjJyZW07XG4gICAgICAgIGxlZnQ6IDAuN3JlbTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIH1cbn1cblxuLm5vdGlmaWNhdGlvbi1pY29uIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgLy9jb2xvcjogI0MzQzVDODtcbiAgICAvL21hcmdpbi1sZWZ0OiAwLjYyNXJlbTtcbiAgICAvL21hcmdpbi1yaWdodDogMC41cmVtO1xuICAgIGNvbG9yOiAkY29sb3JMaW5rO1xufVxuXG4ubm90aWZpY2F0aW9uLWljb24uYWN0aXZlLCAubm90aWZpY2F0aW9uLWljb246aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogJGNvbG9ySGlnaGxpZ2h0O1xufVxuLm5vdGlmaWNhdGlvbi1jb250ZW50IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgIGJvcmRlci1yYWRpdXM6ICR0b29sdGlwQm9yZGVyUmFkaXVzO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkY7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBib3gtc2hhZG93OiAkdG9vbHRpcEJveFNoYWRvdztcbiAgICBib3JkZXI6ICR0b29sdGlwQm9yZGVyO1xuXG4gICAgdG9wOiAzLjVyZW07XG4gICAgcmlnaHQ6IDIuODc1cmVtO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgIC8vbGVmdDogLTRyZW07XG4gICAgfTtcbiAgICBtaW4td2lkdGg6IDEwcmVtO1xuXG4gICAgei1pbmRleDogMTAwNjtcblxuICAgICYuYWN0aXZlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfSBcblxuICAgIC5ub3RpZmljYXRpb24tY29udGVudC1hcnJvdzpiZWZvcmV7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtMXJlbTtcbiAgICAgICAgcmlnaHQ6IDVyZW07XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgICAgICAvL2xlZnQ6IDUuNXJlbTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9uLWNvbnRlbnQtYXJyb3c6YWZ0ZXJ7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtMC45cmVtO1xuICAgICAgICByaWdodDogNXJlbTtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgICAgIC8vbGVmdDogNS41cmVtO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHVsIHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAycmVtO1xuICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIGNvbG9yOiAkY29sb3JMaW5rO1xuXG4gICAgICAgID4gc3BhbiwgYSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDAuNXJlbSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBhOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvckxpbmsgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGNvbG9yOiAjRkZGICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3Bhbi51aS1iYWRnZSB7XG4gICAgICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIG1hcmdpbjogLTAuMnJlbSAwIDAgMC41cmVtICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5uby1kYXRhIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICAgICAgICBjb2xvcjogI2M0YzRjNDtcbiAgICB9XG59XG4udWktYmFkZ2Uge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nOiAwLjE1cmVtIDAuNHJlbTtcbiAgICBib3JkZXItcmFkaXVzOiAxLjI4NTdyZW07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0Y0MzUzMDtcbiAgICBjb2xvcjogI0ZGRkZGRjtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDAuNzE0OHJlbTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLnVpLWJhZGdlLWRvdCB7XG4gICAgcGFkZGluZzogMC40ZW07XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uYWxlcnQtY29udGFpbmVyIHtcbiAgICBtYXJnaW46IDFyZW07XG5cbiAgICAudGFibGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgIH1cblxuICAgIC50aXRsZV9oZWFkaW5nIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yVGFibGVUaXRsZUJhY2tncm91bmQ7XG4gICAgfVxufVxuXG4uYXBzLWNvbmZpZyB7XG4gICAgcGFkZGluZzogMDtcbiAgICBmbGV4OiAxO1xuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICBAaW5jbHVkZSBmbGV4LWZsb3coY29sdW1uKTtcbiAgICAuZm9ybV9oZWFkaW5nIHtcbiAgICAgICAgcGFkZGluZzogMC42MjVyZW0gMXJlbSAwO1xuICAgIH1cbn1cblxuLnVwbGluay1jZXJ0LXVwbG9hZC5tZXNzYWdlIHtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIC5kaWFsb2ctY29udGVudCB7XG4gICAgICAgIHAge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG59IFxuXG4uYXBzLW92ZXJ2aWV3LWNoYXJ0cyB7XG4gICAgLnNlZ2d5YyB7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuICAgIC5hcC1yZnRyZW5kcyB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMxcmVtO1xuICAgIH1cbn1cblxuLnRhYi1sb2FkaW5nLWJnLm92ZXJsYXkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG59XG5cbi5zcGVjdHJ1bS1hcCB7XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH07XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAuY2hhcnQtcGFuZWwge1xuICAgICAgICBmbGV4OiAyO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gICAgLmRldGFpbC1wYW5lbCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIC5pdGVtLXRpdGxlIHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5zZWdneWMge1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbiAgICBcbn1cblxuXG4uaW5hY3RpdmUge1xuICAgIGNvbG9yOiAkY29sb3JJbmFjdGl2ZTsgXG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3JJbmFjdGl2ZTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIGxhYmVsIHtcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB9XG5cbn1cbi5zcGxhc2gtcGFnZS1jb250YWluZXIge1xuICAgIGNvbG9yOiAkY29sb3JUZXh0O1xuICAgIC5zcGxhc2gtcGFnZS1oZWFkZXIge1xuICAgICAgICBcbiAgICB9XG4gICAgLnNwbGFzaC1wYWdlLWJhbm5lciB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgbWFyZ2luLXRvcDogMC41cmVtO1xuICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAmOmhvdmVyLCAmLmVkaXRpbmcge1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgeWVsbG93O1xuICAgICAgICB9XG4gICAgICAgIC5zcGxhc2gtcGFnZS1iYW5uZXItaW5zIHtcbiAgICAgICAgICAgIGhlaWdodDogMnJlbTtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgJjpob3ZlciwgJi5lZGl0aW5nIHtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc3BsYXNoLXBhZ2UtYm9keSB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgaGVpZ2h0OiAxMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0Y1ZjVmNTtcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB5ZWxsb3c7XG4gICAgICAgIH1cbiAgICAgICAgJi5lZGl0aW5nIHtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHllbGxvdztcbiAgICAgICAgfVxuICAgICAgICAuc3BsYXNoLXBhZ2UtYm9keS1pbnMge1xuICAgICAgICAgICAgaGVpZ2h0OiAxMXJlbTtcbiAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgICY6aG92ZXIsICYuZWRpdGluZyB7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4LXdyYXAod3JhcCk7XG4gICAgICAgICAgICBAaW5jbHVkZSBqdXN0aWZ5LWNvbnRlbnQoY2VudGVyKTtcbiAgICAgICAgICAgIC5zcGxhc2gtcGFnZS1ib2R5LWxlZnQsIC5zcGxhc2gtcGFnZS1ib2R5LXJpZ2h0e1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMS41cmVtIDFyZW07XG4gICAgICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJhYnktYmVhcikge1xuICAgICAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDkwJTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnNwbGFzaC1wYWdlLWJvZHktcmlnaHQge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1mbG93KGNvbHVtbik7XG5cbiAgICAgICAgICAgICAgICBpbnB1dFt0eXBlPWNoZWNrYm94XSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbnB1dFt0eXBlPXBhc3N3b3JkXSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDAuMjVyZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvck9yYW5nZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuc3BsYXNoLXBhZ2UtYm9keS1yaWdodC1tYXNrIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuc3BsYXNoLXBhZ2UtYm9keS10ZXh0IHtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgICAgICAmOmhvdmVyLCAmLmVkaXRpbmcge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB5ZWxsb3c7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLnNwbGFzaC1wYWdlLWJvZHktdGV4dC1pbnMge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjJyZW07XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgICAgICAgICAmOmhvdmVyLCAmLmVkaXRpbmcge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAjc3BsYXNoLXBhZ2Utdy10ZXh0IHtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICNzcGxhc2gtcGFnZS10LXRleHQge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjYWFhO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5zcGxhc2gtcGFnZS1sb2dvLCAuc3BsYXNoLXBhZ2UtcHJldmlldywgLnNwbGFzaC1wYWdlLXJlZGlyZWN0IHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDA7XG4gICAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICAgICAgQGluY2x1ZGUganVzdGlmeS1jb250ZW50KHNwYWNlLWJldHdlZW4pO1xuICAgICAgICBAaW5jbHVkZSBhbGlnbi1pdGVtcyhjZW50ZXIpO1xuICAgICAgICBhIHtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuc3BsYXNoLXBhZ2UtcmVkaXJlY3Qge1xuICAgICAgICBAaW5jbHVkZSBqdXN0aWZ5LWNvbnRlbnQoZmxleC1zdGFydCk7XG4gICAgICAgID4gZGl2IHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMC41cmVtO1xuICAgICAgICB9XG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgY29sb3I6ICNjM2M1Yzg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5hY2Nlc3MtcnVsZXMtdGFibGUge1xuICAgIHRhYmxlLmRhdGEge1xuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMC42MjVyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudGl0bGVfaGVhZGluZyBzcGFuLnJvbGUtbmFtZSB7XG4gICAgICAgIGNvbG9yOiAjMDJhN2VjO1xuICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIH1cbn1cblxudGFibGUuZGF0YSB7XG4gICAgdGQuYWNjZXNzLXJ1bGVzLXJvbGUge1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMC42MjVyZW07XG4gICAgfVxufVxuXG4uY2hyb21lLXBpY2tlciB7XG4gICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4ubmV0d29yay1zZWN1cml0eS1ndWVzdCB7XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH07XG5cbiAgICA+IGRpdiB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgoMSk7XG4gICAgfVxufVxuXG4jc3BsYXNoLWVkaXQtcGlja2VyIHtcbiAgICAucm93LXBpY2tlciB7XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICB9XG4gICAgLmZvcm0tZmllbGQge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbn1cblxuLmFjY2Vzcy1ydWxlLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgIFxuICAgIC5yb2xlLWNvbnRhaW5lciB7XG4gICAgICAgIHdpZHRoOiAyMnJlbTtcbiAgICB9XG5cbiAgICAucnVsZS1jb250YWluZXIge1xuICAgICAgICBtYXJnaW4tbGVmdDogMC42MjVyZW07XG4gICAgICAgIGZsZXg6IDQ7XG4gICAgfVxuXG4gICAgLnRpdGxlX2hlYWRpbmcge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3JUYWJsZVRpdGxlQmFja2dyb3VuZDtcbiAgICB9XG59XG5cblxuXG4uaWRzLXRkLXNsaWRlciB7XG4gICAgaGVpZ2h0OiAxNXJlbTtcbiAgICB3aWR0aDogMTVyZW07XG4gICAgcGFkZGluZzogMC42MjVyZW07XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgd2lkdGg6IDZyZW07XG4gICAgfTtcbn1cblxuLmlkcy1wcm90ZWN0aW9uIC5pZHMtdGQtc2xpZGVyIHtcbiAgICBoZWlnaHQ6IDhyZW07XG59XG5cbi5pZHMtdGQtcG9saWN5IHtcbiAgICB3aWR0aDogMzByZW07XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgd2lkdGg6IDE1cmVtO1xuICAgIH07XG59XG5cbi5pZHMtcG9saWN5LWNvbnRhaW5lciB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yTmV1dHJhbE1kO1xuICAgIGhlaWdodDogMTVyZW07XG4gICAgb3ZlcmZsb3cteTogYXV0bztcblxuICAgIC5pZHMtcG9saWN5IHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICAuaWRzLXBvbGljeS1jYiB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIG1hcmdpbjogMC4yNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5pZHMtcG9saWN5LWltZyB7XG4gICAgICAgICAgICBoZWlnaHQ6IDFyZW07XG4gICAgICAgICAgICB3aWR0aDogMXJlbTtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgbWFyZ2luOiAwLjVyZW0gMC4yNXJlbSAwLjI1cmVtIDAuNXJlbTtcbiAgICAgICAgICAgIC8vIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2ltYWdlcy9jaGVja21hcmsuZ2lmJyk7XG4gICAgICAgIH1cblxuICAgICAgICAuaWRzLXBvbGljeS1sYWJlbCB7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS41cmVtO1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBtYXJnaW46IDAuMjVyZW0gMCAwIDAuMjVyZW07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5pZHMtcHJvdGVjdGlvbiAuaWRzLXBvbGljeS1jb250YWluZXIge1xuICAgIGhlaWdodDogOHJlbTtcbn1cblxuLmxpbmstYnV0dG9uIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5tZXNzYWdlLWluZm8ge1xuICAgIGNvbG9yOiAjNWM4OWE2O1xuICAgIG1hcmdpbjogMC4yNXJlbSAwIDAuNjI1cmVtIDA7XG5cbiAgICAuZmEtaW5mby1jaXJjbGUge1xuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaW5mby10ZXh0IHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcbiAgICAgICAgbWFyZ2luOiAwIDAuNjI1cmVtO1xuICAgIH1cbn1cblxuLm1lc3NhZ2Utd2FybmluZyB7XG4gICAgY29sb3I6ICRjb2xvcldhcm5pbmc7XG59XG5cbi5yYy1zbGlkZXItZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4ucmMtc2xpZGVyLW1hcmstdGV4dCB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxudGFibGUuZGF0YSB7XG4gICAgLnVuc29ydGFibGUge1xuICAgICAgICA+IHNwYW46YWZ0ZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICB0Ym9keXtcbiAgICAgICAgdHIge1xuICAgICAgICAgICAgLnRhYmxlLWFjdGlvbi1pY29uIHtcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLnNlbGVjdGVkIHtcbiAgICAgICAgICAgICAgICAudGFibGUtYWN0aW9uLWljb24uZW5hYmxlIHtcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvclNlbGVjdGVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qICYuc2VsZWN0ZWQ6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvckhpZ2hsaWdodDtcbiAgICAgICAgICAgIH0gKi9cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvckhvdmVyO1xuICAgICAgICAgICAgICAgIC50YWJsZS1hY3Rpb24taWNvbiB7XG4gICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRyLm5vLWRhdGEge1xuICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjppbmhlcml0O1xuICAgICAgICAgICAgY29sb3I6IHJnYmEoMTk2LCAxOTYsMTk2LCAuMyk7XG4gICAgICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICAgICAgICB0ZCB7XG4gICAgICAgICAgICAgICAgLmZhciB7XG4gICAgICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjYyNXJlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAxcmVtIDA7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgdGQge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5hY2Nlc3MtcnVsZXMtZGlhbG9nIHtcbiAgICB6LWluZGV4OiAxMDA7XG4gICAgLm1lc3NhZ2Uge1xuICAgICAgICBtYXgtd2lkdGg6IDY1cmVtO1xuICAgIH1cbn1cblxuLmFjY2Vzcy1ydWxlcy1lZGl0LXBhbmVsIHtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgc2VsZWN0IHtcbiAgICAgICAgcGFkZGluZzogMC4zNzVyZW0gMi41cmVtIDAuMzc1cmVtIDAuNjI1cmVtO1xuICAgIH1cblxuICAgIC5tdWx0aXBsZS1zZWxlY3RvciAubGFibGVSb3cge1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMi41cmVtIDAuNXJlbSAwLjYyNXJlbTtcbiAgICB9XG4gICAgZGl2IHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB9XG4gICAgaW5wdXRbdHlwZT1cInJhZGlvXCJdICsgbGFiZWwge1xuICAgICAgICBsaW5lLWhlaWdodDogMnJlbTtcbiAgICB9XG4gICAgdGFibGUge1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICB0aCwgdGQge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDAuMzc1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXRbdHlwZT1yYWRpb10ge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYWNsLXdlYnJlcHV0YXRpb24tc2xpZGVyIC5yYy1zbGlkZXItbWFya3tcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjYyNXJlbTtcbiAgICB9XG59XG5cbi5hY2Nlc3MtcnVsZXMtd2FybmluZyB7XG4gICAgY29sb3I6ICRjb2xvcldhcm5pbmc7XG4gICAgbWFyZ2luLXRvcDogMC42MjVyZW07XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuLmZhc3Qtcm9hbWluZyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4uYWlyZ3JvdXAtc2VydmljZXMtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgLmFpcmdyb3VwLXNlcnZpY2VzLWxlZnQge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICB0YWJsZSB7XG4gICAgICAgICAgICAuY2hlY2tib3gtaW5wdXQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxLjI1cmVtO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMS4yNXJlbTtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS4yNXJlbTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xuXG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwLjJyZW07XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMC4wNXJlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmFpcmdyb3VwLXNlcnZpY2VzLXJpZ2h0IHtcbiAgICAgICAgZmxleDogMztcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNjI1cmVtO1xuXG4gICAgICAgIC5haXJncm91cC1zZXJ2aWNlcy1kaXNhbGxvd2VkLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjYyNXJlbTtcbiAgICAgICAgICAgIC5jaGVja2JveC1maWVsZCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuZGlhbGxvd2VkLWVkaXQge1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNjI1cmVtO1xuICAgICAgICAgICAgYTpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmFpcmdyb3VwLXdhcm5pbmcge1xuICAgIG1hcmdpbi1ib3R0b206IDAuNjI1cmVtO1xufVxuXG4uY29tYm8tbWlkZGxlLWxhYmVsIHtcbiAgICBtYXJnaW4tbGVmdDogMC42MjVyZW07XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjYyNXJlbTtcbn1cblxuLmNvbWJvLWJ1dHRvbi1sZWZ0IHtcbiAgICBtYXJnaW4tbGVmdDogMC42MjVyZW07XG59XG5cbi5wcm9maWxlc2VsZWN0LWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgIC5wcm9maWxlc2VsZWN0LWFjdGlvbiB7XG4gICAgICAgIG1hcmdpbjogMC41cmVtIDAuMzc1cmVtO1xuICAgICAgICBhIHsgXG4gICAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjYyNXJlbTtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmRoY3AtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgQGluY2x1ZGUgZmxleC1mbG93KGNvbHVtbik7XG4gICAgLmZvb3RlciB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBvdmVyZmxvdzogdW5zZXQ7XG4gICAgICAgIGhlaWdodDogMi41cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNjI1cmVtO1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGNvbG9yTmV1dHJhbE1kO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgYmFja2dyb3VuZDogI0ZGRjtcbiAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMC42MjVyZW07XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjYyNXJlbTtcbiAgICAgICAgICAgIHdpZHRoOiA1cmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4udGltZS1yYW5nZS1kaWFsb2ctY29udGFpbmVyIHtcbiAgICAucm93LnRhYmxlLXJvdyB7XG4gICAgICAgIC5mb3JtLWZpZWxkIHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4udmxhbi1ydWxlcy10YWJsZS1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgY29sb3I6ICMwMDA7XG4gICAgXG4gICAgLnJvdy1waWNrZXIge1xuICAgICAgICBtYXJnaW4tdG9wOiAtMnJlbTtcbiAgICB9XG59XG5cbi5oaWdoY2hhcnRzLWxlZ2VuZC1pdGVtIHtcbiAgICAmID4gc3BhbiB7XG4gICAgICAgIHotaW5kZXg6IC0xO1xuICAgIH1cbn1cblxuLnRhYi1jb250cm9sIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICAvL3Bvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KDAgLTFweCAwICRjb2xvck5ldXRyYWxNZCBpbnNldCk7XG5cbiAgICBsaSB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cblxuICAgIGxpIGEge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjMxMjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNjI1cmVtO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMC42MjVyZW07XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQgKG1hbWEtYmVhcikge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICB9XG4gICAgICAgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihib3JkZXIgMC4zcyk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICBhLmN1cnJlbnQge1xuICAgICAgICBjb2xvcjogJGNvbG9yVGl0bGU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAkY29sb3JTZWxlY3RlZDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB9XG5cbiAgICBsaTpsYXN0LWNoaWxkIGEge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgfVxuXG59XG5cbi50YWItY29udHJvbC1jb250YWluZXIge1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuXG4gICAgLmljb24tcGlsbCB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgY29sb3I6ICRjb2xvckxpbms7XG4gICAgICAgIG1hcmdpbi10b3A6IDAuNXJlbTtcblxuICAgICAgICBbY2xhc3MqPWZhLV06YmVmb3JlLCBbY2xhc3MqPWZhLV06YWZ0ZXIge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuLmFwcHJmLWNvbnRhaW5lciwgLm92ZXJ2aWV3LWNvbnRhaW5lciwgLmFwcy1vdmVydmlldy1jaGFydHMsIC5jbGllbnQtbWF0Y2gtY2xpZW50IHtcbiAgICBwYWRkaW5nOiAwIDFyZW07XG59XG5cbi5hcHByZi1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIGZsZXgtZmxvdyhjb2x1bW4pO1xuICAgIC5hcHByZi1oZWFkZXIgLml0ZW0tdGl0bGUge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgfVxuICAgID4uaXRlbS1wYW5lbCB7XG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGNvbG9yTmV1dHJhbE1kO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubmV0d29yay13aXphcmQge1xuICAgIC5zZWN0aW9uIC5zZWN0aW9uLWNvbnRlbnQgLnJvdy50YWJsZS1yb3cge1xuICAgICAgICBkaXYuZm9ybS1maWVsZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICBmbGV4OiAxIDEgMTJyZW07XG4gICAgICAgIH1cblxuICAgICAgICBkaXYuZm9ybS1maWVsZDpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIGZsZXg6IDEwIDEwIDUwcmVtO1xuICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICB9XG59XG5cbiNucHJvZ3Jlc3MgLmJhciB7XG4gICAgaGVpZ2h0OiAzcHg7XG59XG5cbi5kaWFsb2ctY29udGVudCB7XG4gICAgLnBhbmVsLWNvbnRlbnQge1xuICAgICAgICBkaXYuZm9ybS1maWVsZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICB3aWR0aDogMTJyZW07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5vdmVydmlldy1jb250ZW50IHtcbiAgICBjb2xvcjogIzY0NjU2OTtcbiAgICBtYXJnaW46IDAuNXJlbSAwLjYyNXJlbSAwLjYyNXJlbTtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQgKG1hbWEtYmVhcikge1xuICAgICAgICBAaW5jbHVkZSBib3gtc2hhZG93KDAgLTFweCAwIHJnYmEoMCwwLDAsMC4xMCkgaW5zZXQpO1xuICAgIH1cbiAgICAuY291bnRzIHtcbiAgICAgICAgZGl2IHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgICAgIGhlaWdodDogMnJlbTtcblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCAobWFtYS1iZWFyKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMXJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50IChtYW1hLWJlYXIpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5zdWItcGFuZWwge1xuICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgICAgIC5zdWItaXRlbSB7XG4gICAgICAgICAgICBmbGV4OiAxO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50IChtYW1hLWJlYXIpIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZGl2LnN1Yi1pdGVtLWxhYmVsIHtcbiAgICAgICAgICAgIGhlaWdodDogMS4ycmVtO1xuICAgICAgICB9XG4gICAgICAgIGRpdi5zdWItaXRlbS1jb3VudHMge1xuICAgICAgICAgICAgY29sb3I6ICM4ODg7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQgKG1hbWEtYmVhcikge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMXJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5mYXM6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDAuMzc1cmVtO1xuICAgICAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5hY3RpdmUtYXAge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3JBY3RpdmVBUDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5pbmFjdGl2ZS1hcCB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvckluYWN0aXZlQVA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jaGVja2JveC10ZXh0IHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5yYWRpby1yb3cge1xuICAgIGxhYmVse1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxufVxuXG4ub3ZlcnZpZXctcm91dGVyIHtcbiAgICBAaW5jbHVkZSBmbGV4KDEpO1xuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICBAaW5jbHVkZSBmbGV4LWZsb3coY29sdW1uKTtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50IChiYWJ5LWJlYXIpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgLnRhYi1jb250cm9sLWNvbnRhaW5lciB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgoMCAwIGF1dG8pO1xuICAgICAgICBwYWRkaW5nLXRvcDogMC42MjVyZW07XG4gICAgfVxuICAgIC50YWJzIC5zZWdneWMge1xuICAgICAgICBAaW5jbHVkZSBmbGV4KDAgMCBhdXRvKTtcbiAgICB9XG5cbiAgICAud2hpdGUge1xuICAgICAgICBib3JkZXI6bm9uZTtcbiAgICB9XG59XG5cbi5pZHMtZGV0ZWN0aW5nLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDMwMHB4O1xuICAgIHBhZGRpbmc6IDFyZW07XG4gICAgY29sb3I6ICRjb2xvckl0ZW1QYW5lbFRpdGxlO1xuXG4gICAgPmRpdiB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgfVxuXG4gICAgLndoaXRlIHtcbiAgICAgICAgYm9yZGVyOm5vbmU7XG4gICAgfVxufVxuXG4uYWlyZ3JvdXAtc2VydmVycy1jb250YWluZXIge1xuICAgIG1hcmdpbjogMXJlbSAycmVtO1xuICAgIC50aXRsZV9oZWFkaW5nIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yVGFibGVUaXRsZUJhY2tncm91bmQ7XG4gICAgfVxufVxuXG4uY2VsbHVsYXItY29udGFpbmVyIHtcbiAgICBtYXJnaW46IDFyZW07XG59XG5cbi5mYXMuYXAtbWFzdGVyOmJlZm9yZSB7XG4gICAgZm9udC1zaXplOiAwLjYyNXJlbTtcbn1cblxuLmNvdW50cnktY29udGVudCB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBtYXJnaW46IDAuNXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS4zO1xuXG4gICAgLnJvdy50YWJsZS1yb3cgZGl2LmZvcm0tZmllbGQ6Zmlyc3QtY2hpbGQge1xuICAgICAgICBsaW5lLWhlaWdodDogMXJlbTtcbiAgICB9XG59XG4uY2VudHJhbC1jb250ZW50IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGRpdiB7XG4gICAgICAgIG1hcmdpbjogMC41cmVtO1xuICAgIH1cbiAgICAuZnJlZS13aWZpIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuICAgIC5mZWF0dXJlcyB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAycmVtO1xuICAgICAgICB1bCB7XG4gICAgICAgICAgICBsaXN0LXN0eWxlOiBkaXNjIGluc2lkZSBub25lO1xuICAgICAgICB9XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IGRpc2MgaW5zaWRlIG5vbmU7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4udGFicywgLmFpcmdyb3VwLWNvbnRhaW5lciB7XG4gICAgLnNlY3Rpb24gLnNlY3Rpb24tY29udGVudCA+IC5yb3cudGFibGUtcm93IHtcbiAgICAgICAgLm92ZXJsYXkge1xuICAgICAgICAgICAgZGl2LmZvcm0tZmllbGQ6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjUxcHgpIHtcbiAgICAgICAgICAgICAgICBkaXYuZm9ybS1maWVsZDpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmRpc2Nvbm5lY3QtdXNlci1jb25maXJtIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgY29sb3I6ICRjb2xvclRpdGxlO1xuICAgIGxpbmUtaGVpZ2h0OiAzcmVtO1xuICAgIHNwYW4ge1xuICAgICAgICBjb2xvcjogJGNvbG9ySGlnaGxpZ2h0O1xuICAgIH1cbn1cblxuLm11bHRpcGxlLWl0ZW0ge1xuICAgICYgPiAuZm9ybS1maWVsZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgICYgKyAqIHtcbiAgICAgICAgICAgIC8qICYgPiAqOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICAmICsgKiB7XG4gICAgICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMC4yNXJlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9ICovXG5cbiAgICAgICAgICAgICYgPiAqOm50aC1jaGlsZChuICsgMikge1xuICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwLjM3NXJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG59XG4ubmV0d29yay1zZWN1cml0eS1zZWN0aW9uIHtcbiAgICAuc2VjdGlvbi1jb250ZW50IHtcbiAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50IChtYW1hLWJlYXIpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgPiBkaXYge1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleCgxKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQgKG1hbWEtYmVhcikge1xuICAgICAgICAgICAgICAgIGZsZXg6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG59XG5cbi50b2FzdC1tZXNzYWdlIHtcbiAgICBsaW5lLWhlaWdodDogMS41O1xufVxuXG4uZXJyb3ItbWVzc2FnZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICB6LWluZGV4OiAxMDA7XG4gICAgPiBkaXYge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKCRjb2xvckFsZXJ0LCAwLjIpO1xuICAgICAgICAvL2JvcmRlci1sZWZ0OiAwLjM3NXJlbSBzb2xpZCAkY29sb3JBbGVydDtcbiAgICAgICAgcGFkZGluZzogMC40MjVyZW0gMC42MjVyZW07XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbG9yQWxlcnQsIDAuMDUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xuICAgICAgICBjb2xvcjogJGNvbG9yQWxlcnQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gICAgICAgIEBpbmNsdWRlIGJveC1zaGFkb3coMXB4IDFweCAxcHggcmdiYSgkY29sb3JBbGVydCwgMC4yKSk7XG5cbiAgICAgICAgPiAuZmEtaW5mby1jaXJjbGUge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07XG4gICAgICAgICAgICBjb2xvcjogcmdiYSgkY29sb3JBbGVydCwgMC43NSk7XG5cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmFjY2Vzcy1ydWxlcy1kaWFsb2cub3ZlcmxheSAubWVzc2FnZSAuZGlhbG9nLWNvbnRlbnQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07XG4gICAgLm11bHRpcGxlLXNlbGVjdG9yIC5kcm9wLWRvd24tbGlzdCB7XG4gICAgICAgIGhlaWdodDogMTVyZW07XG4gICAgfVxufVxuXG4uY2VydGlmaWNhdGVzLWNvbnRhaW5lciB7XG4gICAgLy9AaW5jbHVkZSBmbGV4KDEpO1xuICAgIC8vQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgIC8vQGluY2x1ZGUgZmxleC1mbG93KGNvbHVtbik7XG4gICAgLmNlcnRzLWluZm8ge1xuICAgICAgICAvL0BpbmNsdWRlIGZsZXgoMSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvck5ldXRyYWxNZDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcblxuICAgICAgICBtYXgtaGVpZ2h0OiAyNXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogNXJlbTtcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcblxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjI1cmVtO1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuY2VydHMtdXBsb2FkLWluZm8ge1xuICAgICAgICBtYXJnaW4tdG9wOiAxLjVyZW07XG4gICAgICAgID4gc3BhbiB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gICAgICAgIH1cbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuMnJlbSAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uY2VydC11cGxvYWQtc3RhdGUge1xuICAgIG1hcmdpbjogMC41cmVtO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBcbiAgICBpIHsgXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTtcbiAgICB9XG4gICAgLmZhczpiZWZvcmUge1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgfVxuICAgIC5mYS1jaGVjayB7XG4gICAgICAgIGNvbG9yOiAjMDBDQzAwO1xuICAgIH1cbiAgICAuZmEtdGltZXMge1xuICAgICAgICBjb2xvcjogI2ZmMDAwMDtcbiAgICB9XG59XG5cbi5jZXJ0LWZpbGUge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQgKGJhYnktYmVhcikge1xuICAgICAgICBpbnB1dFt0eXBlPXRleHRdLmlucHV0IHtcbiAgICAgICAgICAgIHdpZHRoOiA4cmVtO1xuICAgICAgICB9XG4gICAgICAgIGlucHV0W3R5cGU9ZmlsZV0ge1xuICAgICAgICAgICAgd2lkdGg6IDEzcmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYWxlcnRzIHtcbiAgICBjb2xvcjogJGNvbG9yQWxlcnRzVGV4dDtcbn1cblxuLmRpc2FsbG93LXJvdyB7XG4gICAgbWFyZ2luOiAwLjVyZW07XG4gICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcbiAgICBzcGFuOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbVxuICAgIH1cbn1cblxuLm1lc3NhZ2UuZGhjcC1zZXJ2ZXItZGlhbG9nIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIG1heC13aWR0aDogNzByZW07XG4gICAgLnBhbmVsLm5vX2JvcmRlciB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxufVxuXG4ubWVzc2FnZS51c2VyLWRpYWxvZyB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAucGFuZWwge1xuICAgICAgICAudGl0bGVfaGVhZGluZyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uaW5ib3VuZC1maXJld2FsbC5hY2Nlc3MtcnVsZXMtZGlhbG9nLm92ZXJsYXkgLm1lc3NhZ2UgLmRpYWxvZy1jb250ZW50IHtcbiAgICBwYWRkaW5nOiAwLjYyNXJlbSAzcmVtIDAuNjI1cmVtIDAuNjI1cmVtO1xuXG4gICAgdGQge1xuICAgICAgICBwYWRkaW5nLXRvcDogMC4yNXJlbTtcbiAgICB9XG59XG4uZGlhbG9nLWNvbnRlbnQgLnBhbmVsLWNvbnRlbnQgLnJhZGlvLWRpYWxvZy1sYWJlbHtcbiAgICBkaXYuZm9ybS1maWVsZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIHdpZHRoOiAxNXJlbTtcbiAgICB9XG59XG5cbi5sYW5ndWFnZSB7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIGNvbG9yOiAkY29sb3JMaW5rO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIHRleHQtYWxpZ24tbGFzdDogZW5kO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbn1cblxuLmxhbmd1YWdlOmZvY3VzLGFjdGl2ZSB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbn1cblxuIC5kZXRhaWwtY2hhcnQtZGlhbG9nLm1lc3NhZ2Uge1xuICAgIG1heC13aWR0aDogMzUwcHg7XG4gfVxuXG4uZGV0YWlsLWNoYXJ0LWRpYWxvZy1wYW5lbCB7XG4gICAgcGFkZGluZzogMDtcbiAgICAuZGV0YWlsLWNoYXJ0LWJvZHkge1xuICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQgKG1hbWEtYmVhcikge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICAgICAgLml0ZW0tY29udGVudC1jaGFydCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4KDIpO1xuICAgICAgICB9XG4gICAgICAgIHRhYmxlIHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3JJdGVtUGFuZWxUaXRsZTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgoMSk7XG4gICAgICAgICAgICB0aCwgdGQge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbnRhYmxlLmFwLW92ZXJ2aWV3LXRhYmxlIHtcbiAgICB0aCwgdGQge1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMC4yNXJlbTtcbiAgICB9XG59XG5cbi5kaWFsb2ctY29udGVudCAucGFuZWwtY29udGVudCAuY2xlYXItY29uZmlnLWxhYmVsIHtcbiAgICBkaXYuZm9ybS1maWVsZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbn1cblxuLmNsZWFyLWNvbmZpZy1tZXNzYWdlIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGxpbmUtaGVpZ2h0OiAycmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC4zMjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbnRoZWFkLmNvbGxhcHNhYmxlIHtcbiAgICB0cjpsYXN0LWNoaWxkIHtcbiAgICAgICAgdGg6aG92ZXIge1xuICAgICAgICAgICAgc3Bhbi5pY29uLW1lbnUge1xuICAgICAgICAgICAgICAgIC8vZGlzcGxheTogaW5saW5lO1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZGV2aWNlKG1vYmlsZSkge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgdGgge1xuICAgICAgICAgICAgLmljb24tbWVudSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAwcmVtO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgICAgICAgICAgIC8vZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjMDJhN2VjO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDFweDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5pY29uLW1lbnU6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6MC44NzVyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi50cmVlLWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JDb250YWluZXJCYWNrZ3JvdW5kO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogJHRvb2x0aXBCb3JkZXJSYWRpdXM7XG4gICAgei1pbmRleDogMTAwMTtcbiAgICBib3gtc2hhZG93OiAkdG9vbHRpcEJveFNoYWRvdztcbiAgICBib3JkZXI6ICR0b29sdGlwQm9yZGVyO1xuXG4gICAgLnRyZWUtYm9keSB7XG4gICAgICAgIGNvbG9yOiAjMDAwO1xuICAgICAgICBtYXgtaGVpZ2h0OiAxNXJlbTtcbiAgICAgICAgbWF4LXdpZHRoOiAyMHJlbTtcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAycmVtO1xuICAgICAgICAgICAgdWwge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjMDAwO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAycmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ub3ZlcnZpZXctbmV0d29ya3MtY29udGFpbmVyIHtcbiAgICAudGFibGUge1xuICAgICAgICAudHJlZS1ib2R5IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMnJlbTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuZGF0YS10YWJsZSB7XG4gICAgICAgIG92ZXJmbG93OiB1bnNldDtcbiAgICB9XG59XG5cbi5iYW5uZXItdGl0bGV7XG4gICAgd2lkdGg6IDdyZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiAkY29sb3JCYW5uZXJUaXRsZTtcbiAgICBsaW5lLWhlaWdodDogMXJlbTtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4uYXBzLW5hbWUtbWFzdGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1heC13aWR0aDogOTAlO1xuICAgIC5hcC1tYXN0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiAtMXJlbTtcbiAgICAgICAgdG9wOiAwO1xuICAgIH1cbn1cblxuLmRpYWxvZy1pY29uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgcGFkZGluZy10b3A6IDAuNjI1cmVtO1xuICAgIGEuZGlhbG9nLWNsb3NlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMXJlbTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgcG9zaXRpb246IHVuc2V0O1xuICAgIH1cbiAgICAuaGVscC1jb250YWluZXIge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMXJlbTtcbiAgICAgICAgLmhlbHAtYWR2aWNlLWNvbnRhaW5lciB7XG4gICAgICAgICAgICByaWdodDogLTIuNjI1cmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYmFubmVyLXRpdGxlLW5hbWUge1xuICAgIGNvbG9yOiAkY29sb3JCYW5uZXJUaXRsZU5hbWU7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBtYXgtd2lkdGg6IDEycmVtO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGJhYnktYmVhcikge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLmJhbm5lci1zcGxpY2Uge1xuICAgIGJvcmRlci1sZWZ0OiBzb2xpZCAxcHggJGNvbG9yTmV1dHJhbERrO1xuICAgIGxpbmUtaGVpZ2h0OiAxcmVtO1xuICAgIGhlaWdodDogMXJlbTtcbiAgICBtYXJnaW4tbGVmdDogMXJlbTtcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi5hdXRvcnVuIHtcbiAgICBtYXJnaW4tdG9wOiAwLjYyNXJlbTtcblxuICAgIHNwYW4ge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNjI1cmVtO1xuICAgIH1cbn1cblxuLm9wdGlvbjgyeG1sLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgIEBpbmNsdWRlIGZsZXgtZmxvdyhjb2x1bW4pO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZmxleDogMTtcbiAgICBcbiAgICAub3B0aW9uODJ4bWwtY29udGVudCB7XG4gICAgICAgIC8vaGVpZ2h0OiAxMHJlbTtcbiAgICAgICAgZmxleDoxO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuNXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2VmZWZlZjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICAgICAgZm9udC1mYW1pbHk6IFZlcmRhbmEsIFNpbVN1bjtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgQGluY2x1ZGUgdXNlci1zZWxlY3QodGV4dCk7XG5cbiAgICAgICAgPiBwcmUge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAub3B0aW9uODJ4bWwtZm9vdGVyIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICB3aWR0aDogMTJyZW07XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuNjI1cmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRpYWxvZy1jb250ZW50IC5wYW5lbC1jb250ZW50IGRpdi5mb3JtLWZpZWxkOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgd2lkdGg6IDJyZW07XG4gICAgfVxufVxuXG4udG9vbHRpcC1haXJncm91cC1zZXJ2ZXJzIHtcbiAgICAucm93LXBpY2tlciB7XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgICAgLmlkcy1kZXRlY3RpbmctY29udGFpbmVyIHtcbiAgICAgICAgICAgIHdpZHRoOiA2MHJlbTtcbiAgICAgICAgICAgIC5wYW5lbC50YWJsZSB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGluaGVyaXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5pb3Qtc2VjdGlvbiB7XG4gICAgLm1lc3NhZ2Uge1xuICAgICAgICB0b3A6IDUlO1xuICAgICAgICB3aWR0aDogOTAlO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgIC5kaWFsb2ctY29udGVudCB7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiA0MHJlbTtcbiAgICAgICAgfVxuICAgICAgICAuc3ViLXRpdGxlIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgbWFyZ2luOiAxcmVtIDA7XG4gICAgICAgIH1cbiAgICAgICAgLnNwbGl0ZXIge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiBzb2xpZCAxcHggJGNvbG9yTmV1dHJhbERrO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgY3Vyc29yOiBub25lO1xuICAgICAgICB9XG4gICAgICAgIC5maWx0ZXItY29udGFpbmVyIHtcbiAgICAgICAgICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICAgICAgICAgIC5zZWdneWMge1xuICAgICAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICAgICAgICAgICAgICAgIGxpIGEge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzAyYTdlYztcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYigyLCAxNjcsIDIzNik7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IoMiwgMTY3LCAyMzYpO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYigyLCAxNjcsIDIzNik7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuN3JlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGkuY3VycmVudCBhIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMmE3ZWM7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogIzAyYTdlYztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsaSBhIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvck5ldXRyYWxEaztcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuN3JlbTtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGkuY3VycmVudCBhIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICM2NDY1Njk7XG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0Y1RjVGNTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgICAgICBsaTpsYXN0LWNoaWxkIGEge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnNlZ2d5YyBsaSBhOmFjdGl2ZSwgLm5vLXRvdWNoIC5zZWdneWMgbGkgYTphY3RpdmUsIC5zZWdneWMgbGkuY3VycmVudCBhLCAubm8tdG91Y2ggLnNlZ2d5YyBsaS5jdXJyZW50IGE6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGNUY1RjU7XG4gICAgICAgICAgICAgICAgLy8gYm9yZGVyLWNvbG9yOiAjRjVGNUY1O1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoI0Y1RjVGNSk7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgYm94LXNoYWRvdygwIDFweCAxcHggcmdiYSgwLDAsMCwwLjA1KSBpbnNldCk7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgb3BhY2l0eSgxKTtcbiAgICAgICAgICAgIH0gICAgXG4gICAgICAgIH1cblxuICAgICAgICAudHJhbnNwb3J0LXNlcnZpY2UtY29udGFpbmVyIHtcbiAgICAgICAgICAgIC5tdWx0aXBsZS1jaGVja2JveCB7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLm11bHRpcGxlLWNoZWNrYm94IC5jaGVja2JveC1maWVsZCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmZpbHRlci10YWJsZS1jb250YWluZXIge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB9XG4gICAgICAgIC5tdWxpLXNlcnZpY2VzLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgICAgICA+IGRpdjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgZmxleDogMS41O1xuICAgICAgICAgICAgfSBcbiAgICAgICAgICAgID4gZGl2Omxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLm11bGktc2VydmljZXMtY29udGFpbmVyLmNvbC0yIHtcbiAgICAgICAgICAgID4gZGl2OmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgfSBcbiAgICAgICAgICAgID4gZGl2Omxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIGZsZXg6IDI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAucmFkaW8tY29udGFpbmVyIHtcbiAgICAgICAgICAgID4gZGl2IHtcbiAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDsgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgID4gZGl2Omxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMC41cmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5tdWx0aXBsZS1jaGVja2JveCB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDUwcmVtO1xuICAgICAgICB9XG4gICAgICAgIC5tdWx0aXBsZS1jaGVja2JveCAuY2hlY2tib3gtZmllbGQge1xuICAgICAgICAgICAgd2lkdGg6IDE1cmVtO1xuICAgICAgICB9XG4gICAgICAgIC5tdWx0aXBsZS1pdGVtIC5mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogbm9uZVxuICAgICAgICB9XG4gICAgICAgIC5pb3QtZmlsdGVycy1jb250YWluZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICAgICAgPiBkaXYge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMC41cmVtO1xuICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMjAuMTVyZW07XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAzMnJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgID4gZGl2OmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuY2hlY2tib3gtaW5wdXQuZGlzYWJsZWQge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0VCRUJFNDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAubWVzc2FnZS56c2QtZGlhbG9nIHtcbiAgICAgICAgd2lkdGg6IDcwJTtcbiAgICB9XG4gICAgLm1lc3NhZ2UuemlnYmVlLXNvY2tldC1kaWFsb2cge1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgIH1cbiAgICAubWVzc2FnZS5pb3QtcmFkaW8tZGlhbG9nIHtcbiAgICAgICAgd2lkdGg6IDUwJTtcbiAgICB9XG4gICAgLm1lc3NhZ2UuemlnYmVlLXNlcnZpY2UtZGlhbG9nIHtcbiAgICAgICAgd2lkdGg6IDUwJTtcbiAgICB9XG4gICAgLnJvdy1waWNrZXIge1xuICAgICAgICBtYXJnaW4tdG9wOiAtMi4yNXJlbTtcbiAgICB9XG59XG5cbi5pbmZvLXZhbHVlIHtcbiAgICBkaXYuZ29vZCB7XG4gICAgICAgIGNvbG9yOiAjMEQ3RjJFO1xuICAgIH1cbiAgICBkaXYub2sge1xuICAgICAgICBjb2xvcjogI2ZmOWExYTtcbiAgICB9XG4gICAgZGl2LnBvb3Ige1xuICAgICAgICBjb2xvcjogI2JhMGQwMDtcbiAgICB9XG59XG5cbi5pbnRyYS12bGFuLXRyYWZmaWMtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgPiBkaXYge1xuICAgICAgICBAaW5jbHVkZSBmbGV4KDEpO1xuICAgIH1cbiAgICA+IGRpdjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMC41cmVtO1xuICAgIH1cbiAgICAucm93LXBpY2tlciB7XG4gICAgICAgIG1hcmdpbi10b3A6IC0yLjVyZW07XG4gICAgfVxufVxuXG4ubWVzc2FnZS5pbnRyYS12bGFuLXRyYWZmaWMtZGlhbG9nIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIC5wYW5lbCB7XG4gICAgICAgIC50aXRsZV9oZWFkaW5nIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGNUY1RjU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnJvdy1waWNrZXIge1xuICAgICAgICBtYXJnaW4tdG9wOiAtMi41cmVtO1xuICAgIH1cblxuICAgIC5kaWFsb2ctY29udGVudCAucGFuZWwtY29udGVudCBkaXYuZm9ybS1maWVsZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cbn1cblxuLmFybSB7XG4gICAgLm11bHRpcGxlLWNoZWNrYm94IC5jaGVja2JveC1maWVsZCB7XG4gICAgICAgIHdpZHRoOiA2cmVtO1xuICAgIH1cbn1cblxuLnJhZGlvcyB7XG4gICAgLnRhYmxlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICB9XG59IiwiJGNvbG9yTGluazogIzAyYTdlYzsgLy9OYXZ5XG4kY29sb3JIaWdobGlnaHQ6ICMwMmE3ZWM7IC8vTmF2eS8vI0ZGODMwMDsgLy9PcmFuZ2VcbiRjb2xvclRleHQ6ICMwMDAwMDA7IC8vQmxhY2tcbiRjb2xvclRpdGxlOiAjNjQ2NTY5OyAvL0RhcmsgR3JheVxuJGNvbG9yRGl2aWRlcjogcmdiYSgwLDAsMCwwLjEwKTtcbiRjb2xvckRpdmlkZXJMdDogcmdiYSgwLDAsMCwwLjA1KTtcbiRjb2xvck5ldXRyYWxMdDogI0VCRUVGMjsgLy9MaWdodCBHcmF5XG4kY29sb3JOZXV0cmFsTWQ6ICNERkUxRTU7IC8vTWVkIEdyYXlcbi8vJGNvbG9yTmV1dHJhbE1kOiMwMmE3ZWM7IC8vV2F0Y2hldCBCbHVlXG4kY29sb3JOZXV0cmFsRGs6ICNDM0M1Qzg7IC8vTWVkLURhcmsgR3JheVxuJGNvbG9yQWxlcnQ6ICNGRjRDMDA7IC8vQnVybnQgT3JhbmdlXG4kY29sb3JBY2NlbnQxOiAjOUZENEM5OyAvL1R1cnF1b2lzZSBHcmVlblxuJGNvbG9yQWNjZW50MjogI0Q1RDY1NDsgLy9MaW1lIEdyZWVuXG4kY29sb3JBY2NlbnQzOiAjMDA4Mzc1OyAvL0ZvcmVzdCBHcmVlblxuXG4kY29sb3JJbmNvbXBlbHRlU3RlcFRleHQ6ICM5Nzk4OUM7XG4kY29sb3JPcmFuZ2U6ICNGNTgzMUU7XG5cbiRjb2xvck1lbnVCYWNrZ3JvdW5kOiAjZjVmNWY1O1xuXG4kY29sb3JEaWFsb2dUaXRsZUJhY2tncm91bmQ6ICNGOEY4Rjg7XG4kY29sb3JJbmFjdGl2ZTogI2MwYzBjMDtcbiRjb2xvcldhcm5pbmc6ICNmZjRjMDA7XG5cbiRjb2xvclNlbGVjdGVkOiAjRkY4MzAwO1xuJGNvbG9ySG92ZXI6ICNkZWYyZmE7XG4kY29sb3JOYXZIb3ZlcjogI2VjNWIwMjtcbiRjb2xvclRSQmFja2dyb3VuZDogI2ZmZmNmNjtcblxuJGNvbG9yU2VsZWN0ZWQ6ICMwMmE3ZWM7IC8vI0ZGODMwMDtcbiRjb2xvckhvdmVyOiAjZGVmMmZhO1xuJGNvbG9yTmF2SG92ZXI6ICMwODk5ZDQ7IC8vSG92ZXIgY29sb3Igb2Ygc2lkZSBuYXZcbiRjb2xvclRSQmFja2dyb3VuZDogI0VDRjhGRDtcblxuJGNvbG9yTG9naW5XZWxjb21lVGV4dDogIzdhN2E3YTtcbiRjb2xvckNvbnRhaW5lckJhY2tncm91bmQ6ICNGRkY7XG4kY29sb3JEcm9wZG93bk1lbnVCYWNrZ3JvdW5kOiAjRkZGO1xuJGNvbG9ySGVscEVsZW1lbnRUZXh0OiAjMDE4ZTFiO1xuJGNvbG9ySGVscEFkdmljZUJhY2tncm91bmQ6ICNGRkY7XG4kY29sb3JIZWxwQWR2aWNlQm9yZGVyOiAjQ0NDO1xuJGNvbG9ySGVscENvbnRlbnRCYWNrZ3JvdW5kOiAjOWNlNWQ1O1xuJGNvbG9yVGFiY29udHJvbHNUaXRsZTogIzMzMztcbiRjb2xvclRhYmNvbnRyb2xzVGl0bGVDdXJyZW50OiAjMzMzO1xuJGNvbG9ySXRlbVBhbmVsVGV4dDogIzg4ODtcbiRjb2xvckl0ZW1QYW5lbFRpdGxlOiAjNjQ2NTY5O1xuJGNvbG9yU2VhcmNoVGV4dDogIzY2NjtcbiRjb2xvclNlYXJjaFJlc3VsdFRleHQ6ICNjY2M7XG4kY29sb3JCYW5uZXJUaXRsZTogI2JjYmRjNDtcbiRjb2xvckJhbm5lclRpdGxlTmFtZTogIzg0ODQ4MTtcbiRjb2xvckFsZXJ0c1RleHQ6ICNGNDM1MzA7XG4kY29sb3JBY3RpdmVBUDogIzAxOGUxYjtcbiRjb2xvckhlYWRlckJhY2tncm91bmQ6ICNGOEY4Rjg7IiwiLyogQlJFQUtQT0lOVFMgKi9cblxuJHBhcGEtYmVhcjogMTYwMHB4O1xuJG1hbWEtYmVhcjogMTEwMHB4O1xuJGJhYnktYmVhcjogNjUwcHg7XG4kc21hbGxlclRoYW5JcGFkOiAxMDAwcHg7XG5cbi8qIE1FRElBIFFVRVJJRVMgKi9cblxuQG1peGluIGJyZWFrcG9pbnQoJHBvaW50KSB7XG4gIEBpZiAkcG9pbnQgPT0gcGFwYS1iZWFyIHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJHBhcGEtYmVhcikgeyBAY29udGVudDsgfVxuICB9XG4gIEBlbHNlIGlmICRwb2ludCA9PSBtYW1hLWJlYXIge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWFtYS1iZWFyKSB7IEBjb250ZW50OyB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvaW50ID09IHNtYWxsZXJUaGFuSXBhZCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRzbWFsbGVyVGhhbklwYWQpICB7IEBjb250ZW50OyB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvaW50ID09IGJhYnktYmVhciB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRiYWJ5LWJlYXIpICB7IEBjb250ZW50OyB9XG4gIH1cbn1cblxuJHRhYmxldFdpZHRoOjEyODBweDtcbiRtb2JpbGVXaWR0aDo3ODBweDtcblxuQG1peGluIGRldmljZSgkcG9pbnQpIHtcbiAgQGlmICRwb2ludCA9PSBtb2JpbGUge1xuICAgIEBtZWRpYSAobWF4LWhlaWdodDogJG1vYmlsZVdpZHRoKSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCksIChtYXgtd2lkdGg6ICRtb2JpbGVXaWR0aCkgYW5kIChvcmllbnRhdGlvbjpsYW5kc2NhcGUpIHsgQGNvbnRlbnQ7IH1cbiAgfSBcbiAgQGVsc2UgaWYgJHBvaW50ID09IHRhYmxldCB7XG4gICAgQG1lZGlhIChtYXgtaGVpZ2h0OiAkdGFibGV0V2lkdGgpIGFuZCAobWluLWhlaWdodDogJG1vYmlsZVdpZHRoICsgMXB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCksIChtYXgtd2lkdGg6ICR0YWJsZXRXaWR0aCkgYW5kIChtaW4td2lkdGg6ICRtb2JpbGVXaWR0aCArIDFweCkgYW5kIChvcmllbnRhdGlvbjpsYW5kc2NhcGUpIHsgQGNvbnRlbnQ7IH1cbiAgfVxufVxuXG4vKiBCQUNLR1JPVU5EIFNJWklORyBGT1IgSUUgKi9cblxuQG1peGluIGllLWJhY2tncm91bmQtc2NhbGUoJHVybCwgJHNpemluZ21ldGhvZDonc2NhbGUnLCRyZXNldGJhY2tncm91bmQ6IHRydWUpIHtcbiAgQGlmICRyZXNldGJhY2tncm91bmQge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIH1cbiBcbiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGFJbWFnZUxvYWRlcihcbiAgICBzcmM9JyN7aW1hZ2UtdXJsKCR1cmwsdHJ1ZSl9JyxcbiAgICBzaXppbmdNZXRob2Q9JyN7JHNpemluZ21ldGhvZH0nKTtcblxuLyogVEhFIEZPTExPV0lORyBXQVMgQ0FVU0lORyBDU1MgVE8gQlJFQUsgSU4gRklSRUZPWCAqL1xuIFxuLyogIC1tcy1maWx0ZXI6IFwicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhSW1hZ2VMb2FkZXIoXG4gIHNyYz0nI3tpbWFnZS11cmwoJHVybCx0cnVlKX0nLFxuICBzaXppbmdNZXRob2Q9JyN7JHNpemluZ21ldGhvZH0nKVwiOyovXG59XG5cbi8qIFBMQUNFSE9MREVSIFRFWFQgRk9SIElOUFVUUyAqL1xuXG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICYucGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxuICAgICY6LW1vei1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG4gICAgJjo6LW1vei1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG4gICAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxuICAgICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfSBcbn1cblxuQG1peGluIGZvcm0tb3V0bGluZSB7XG4gICAgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmUgOiBub25lO1xuICAgIH1cbn1cblxuQG1peGluIHVzZXItc2VsZWN0KCR2YWx1ZSkge1xuICAgIC1tb3otdXNlci1zZWxlY3Q6ICR2YWx1ZTsgXG4gICAgLW8tdXNlci1zZWxlY3Q6ICR2YWx1ZTsgXG4gICAgLWtodG1sLXVzZXItc2VsZWN0OiAkdmFsdWU7IFxuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbiAgICAtbXMtdXNlci1zZWxlY3Q6ICR2YWx1ZTsgXG4gICAgdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbn0iLCIudG9hc3QtdGl0bGUge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cbi50b2FzdC1tZXNzYWdlIHtcbiAgLW1zLXdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xufVxuLnRvYXN0LW1lc3NhZ2UgYSxcbi50b2FzdC1tZXNzYWdlIGxhYmVsIHtcbiAgY29sb3I6ICNmZmZmZmY7XG59XG4udG9hc3QtbWVzc2FnZSBhOmhvdmVyIHtcbiAgY29sb3I6ICNjY2NjY2M7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbi50b2FzdC1jbG9zZS1idXR0b24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHJpZ2h0OiAtMC4zZW07XG4gIHRvcDogLTAuM2VtO1xuICBmbG9hdDogcmlnaHQ7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiAjZmZmZmZmO1xuICAtd2Via2l0LXRleHQtc2hhZG93OiAwIDFweCAwICNmZmZmZmY7XG4gIHRleHQtc2hhZG93OiAwIDFweCAwICNmZmZmZmY7XG4gIG9wYWNpdHk6IDAuODtcbiAgLW1zLWZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO1xuICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9ODApO1xufVxuLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3Zlcixcbi50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMge1xuICBjb2xvcjogIzAwMDAwMDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG9wYWNpdHk6IDAuNDtcbiAgLW1zLWZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9NDApO1xuICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NDApO1xufVxuLypBZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIGJ1dHRvbiB2ZXJzaW9uXG4gaU9TIHJlcXVpcmVzIHRoZSBidXR0b24gZWxlbWVudCBpbnN0ZWFkIG9mIGFuIGFuY2hvciB0YWcuXG4gSWYgeW91IHdhbnQgdGhlIGFuY2hvciB2ZXJzaW9uLCBpdCByZXF1aXJlcyBgaHJlZj1cIiNcImAuKi9cbmJ1dHRvbi50b2FzdC1jbG9zZS1idXR0b24ge1xuICBwYWRkaW5nOiAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDA7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cbi50b2FzdC10b3AtY2VudGVyIHtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgd2lkdGg6IDEwMCU7XG59XG4udG9hc3QtYm90dG9tLWNlbnRlciB7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xufVxuLnRvYXN0LXRvcC1mdWxsLXdpZHRoIHtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgd2lkdGg6IDEwMCU7XG59XG4udG9hc3QtYm90dG9tLWZ1bGwtd2lkdGgge1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogMTAwJTtcbn1cbi50b2FzdC10b3AtbGVmdCB7XG4gIHRvcDogMTJweDtcbiAgbGVmdDogMTJweDtcbn1cbi50b2FzdC10b3AtcmlnaHQge1xuICB0b3A6IDEycHg7XG4gIHJpZ2h0OiAxMnB4O1xufVxuLnRvYXN0LWJvdHRvbS1yaWdodCB7XG4gIHJpZ2h0OiAxMnB4O1xuICBib3R0b206IDEycHg7XG59XG4udG9hc3QtYm90dG9tLWxlZnQge1xuICBib3R0b206IDEycHg7XG4gIGxlZnQ6IDEycHg7XG59XG4jdG9hc3QtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiA5OTk5OTk7XG4gIC8qb3ZlcnJpZGVzKi9cblxufVxuI3RvYXN0LWNvbnRhaW5lciAqIHtcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4jdG9hc3QtY29udGFpbmVyID4gZGl2IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBtYXJnaW46IDAgMCA2cHg7XG4gIHBhZGRpbmc6IDE1cHggMTVweCAxNXB4IDUwcHg7XG4gIHdpZHRoOiAzMDBweDtcbiAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHggM3B4IDNweCAzcHg7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4IDNweCAzcHggM3B4O1xuICBib3JkZXItcmFkaXVzOiAzcHggM3B4IDNweCAzcHg7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDE1cHggY2VudGVyO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAtbW96LWJveC1zaGFkb3c6IDAgMCAxMnB4ICM5OTk5OTk7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDEycHggIzk5OTk5OTtcbiAgYm94LXNoYWRvdzogMCAwIDEycHggIzk5OTk5OTtcbiAgY29sb3I6ICNmZmZmZmY7XG4gIG9wYWNpdHk6IDAuODtcbiAgLW1zLWZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApO1xuICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9ODApO1xufVxuI3RvYXN0LWNvbnRhaW5lciA+IDpob3ZlciB7XG4gIC1tb3otYm94LXNoYWRvdzogMCAwIDEycHggIzAwMDAwMDtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMTJweCAjMDAwMDAwO1xuICBib3gtc2hhZG93OiAwIDAgMTJweCAjMDAwMDAwO1xuICBvcGFjaXR5OiAxO1xuICAtbXMtZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApO1xuICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuI3RvYXN0LWNvbnRhaW5lciA+IC50b2FzdC1pbmZvIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUd3U1VSQlZFaEx0WmE5U2dOQkVNYzlzVXh4UmNvVUtTelNXSWhYcEZNaGhZV0ZoYUJnNHlQWWlXQ1haeEJMRVJzTFJTM0VRa0Vmd0NLZGpXSkF3U0tDZ29LQ2N1ZHY0TzVZTHJ0N0V6Z1hoaVUzLzQrYjJja213VmpKU3BLa1E2d0FpNGd3aFQrejN3UkJjRXoweWpTc2VVVHJjUnlmc0hzWG1EMEFtYkhPQzlJaThWSW1udVhCUGdsSHBRNXd3U1ZNN3NOblRHN1phNEp3RGRDanh5QWlIM255QTJtdGFUSnVmaURaNWRDYXFsSXRJTGgxTkhhdGZONXNrdmp4OVozOG02OUNnenVYbVpnVnJQSUdFNzYzSng5cUtzUm96V1l3NnhPSGRFUitubjJLa08rQmIrVVY1Q0JONldDNlF0QmdiUlZvenJhaEFibW02SHRVc2d0UEMxOXRGZHhYWllCT2ZrYm1GSjFWYUhBMVZBSGpkMHBwNzBvVFp6dlIrRVZyeDJZZ2Zkc3E2ZXU1NUJIWVI4aGxja2krbitrRVJVRkc4QnJBMEJ3amVBdjJNOFdMUUJ0Y3krU0Q2Zk5zbW5CM0FsQkxyZ1R0VlcxYzJRTjRiVldMQVRhSVM2MEoyRHU1eTFUaUpnalNCdkZWWmdUbXdDVStkQVpGb1B4R0VFczhueUhDOUJ3ZTJHdkVKdjJXWFpiMHZqZHlGVDRDeGszZS9rSXFsT0dvVkx3d1BldnBZSFQrMDBUK2hXd1hEZjRBSkFPVXFXY0RoYndBQUFBQVNVVk9SSzVDWUlJPVwiKSAhaW1wb3J0YW50O1xufVxuI3RvYXN0LWNvbnRhaW5lciA+IC50b2FzdC1lcnJvciB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFIT1NVUkJWRWhMclphL1NnTkJFTVp6aDBXS0NDbFNDS2FJWU9FRCtBQUtlUVFMRzhIV3p0TENJbUJyWWFkZ0lkWStnSUtOWWtCRlN3dTdDQW9xQ2dra29HQkkvRTI4UGRiTFptZURMZ3paemN4ODMveloyU1NYQzFqOWZyK0kxSHE5M2cyeXhINGl3TTF2a29CV0FkeENtcHpUeGZrTjJSY3laTmFIRklrU28xMCs4a2d4a1hJVVJWNUhHeFRtRnVjNzVCMlJmUWtweEhHOGFBZ2FBRmEwdEFIcVlGZlE3SXdlMnloT0RrOCtKNEM3eUFvUlRXSTN3LzRrbEdSZ1I0bE83UnBuOStndk15V3ArdXhGaDgrSCtBUmxnTjFuSnVKdVFBWXZOa0Vud0dGY2sxOEVyNHEzZWdFYy9vTyttaExkS2dSeWhkTkZpYWNDMHJsT0NiaE5WejRIOUZuQVlnREJ2VTNRSWlvWmxKRkxKdHNvSFlSRGZpWm9VeUl4cUN0UnBWbEFOcTBFVTRkQXBqcnRnZXpQRmFkNVMxOVdnamtjMGhOVm51RjRIalZBNkM3UXJTSWJ5bEIrb1plM2FIZ0JzcWxOcUtZSDQ4alh5SktNdUFiaXlWSjhLemFCM2VSYzBwZzlWd1E0bmlGcnlJNjhxaU9pM0Fiandkc2ZuQXRrMGJDalRMSktyNm1yRDlnOGlxL1MvQjgxaGd1T01sUVRuVnlHNDB3QWNqbm1nc0NORVNEcmptZTd3ZmZ0UDRQN1NQNE4zQ0paZHZ6b055R3EyYy9IV09YSkdzdlZnK1JBL2syTUMvd042STJZQTJQdDhHa0FBQUFBU1VWT1JLNUNZSUk9XCIpICFpbXBvcnRhbnQ7XG59XG4jdG9hc3QtY29udGFpbmVyID4gLnRvYXN0LXN1Y2Nlc3Mge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBRHNTVVJCVkVoTFkyQVlCZlFNZ2YvLy8zUDgrL2V2QUlndkEvRnNJRitCYXZZRERXTUJHcm9hU01NQmlFOFZDN0FaRHJJRmFNRm5paTNBWlRqVWdzVVVXVURBOE9kQUg2aVFiUUVodzRIeUdzUEVjS0JYQklDNEFSaGV4NEc0QnNqbXdlVTFzb0lGYUdnL1d0b0ZaUklaZEV2SU1oeGtDQ2pYSVZzQVRWNmdGR0FDczRSc3cwRUdnSUlIM1FKWUpnSFNBUlFaRHJXQUIramF3emdzK1EyVU80OUQ3am5SU1JHb0VGUklMY2RtRU1XR0kwY20wSkoyUXBZQTFSRHZjbXpKRVdoQUJoRC9wcXJMMFMwQ1d1QUJLZ25Sa2k5bExzZVM3ZzJBbHF3SFdRU0tING9LTHJJTHBSR2hFUUN3MkxpUlVJYTRsd0FBQUFCSlJVNUVya0pnZ2c9PVwiKSAhaW1wb3J0YW50O1xufVxuI3RvYXN0LWNvbnRhaW5lciA+IC50b2FzdC13YXJuaW5nIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUdZU1VSQlZFaEw1WlN2VHNOUUZNYlhaR0lDTVlHWW1KaEFRSUpBSUNZUVBBQUNpU0RCOEFpSUNRUUpUNENxUUV3Z0p2WUFTQVFDaVppWW1KaEFJQkFUQ0FSSnkrOXJUc2xkZDhzS3UxTTArZExiMDU3djYvbGJxLzJySzBtUy9UUk5qOWNXTkFLUFlJSklJN2dJeENjUTUxY3ZxSUQrR0lFWDhBU0c0QjFiSzVnSVpGZVFmb0pkRVhPZmdYNFFBUWc3a0gyQTY1eVE4N2x5eGIyN3NnZ2tBekF1RmhiYmcxSzJrZ0NrQjFiVnd5SVI5bTJMN1BSUEloRFVJWGdHdHlLdzU3NXl6M2xUTnM2WDRKWG5qVitMS00vbTNNeWRuVGJ0T0tJanR6NlZoQ0JxNHZTbTNuY2RyRDJsazBWZ1VYU1ZLalZESlhKemlqVzFSUWRzVTdGNzdIZTh1Njhrb05aVHo4T3o1eUdhNkozSDNsWjB4WWdYQksyUXltbFdXQStSV25ZaHNrTEJ2MnZtRStoQk1DdGJBN0tYNWRyV3lSVC8ySnNxWjJJdmZCOVk0YldETk1GYkpSRm1DOUU3NFNvUzBDcXVsd2prQzArNWJwY1YxQ1o4Tk1lajRwankwVStkb0RRc0d5bzFoelZKdHRJamhRN0duQnRSRk4xVWFyVWxIOEYzeGljdCtIWTA3ckV6b1VHUGxXY2pSRlJyNC9nQ2haZ2MzWkwyZDhvQUFBQUFTVVZPUks1Q1lJST1cIikgIWltcG9ydGFudDtcbn1cbiN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWNlbnRlciA+IGRpdixcbiN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlciA+IGRpdiB7XG4gIHdpZHRoOiAzMDBweDtcbiAgbWFyZ2luOiBhdXRvO1xufVxuI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtZnVsbC13aWR0aCA+IGRpdixcbiN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGggPiBkaXYge1xuICB3aWR0aDogOTYlO1xuICBtYXJnaW46IGF1dG87XG59XG4udG9hc3Qge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDMwMzAzO1xufVxuLnRvYXN0LXN1Y2Nlc3Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTFhMzUxO1xufVxuLnRvYXN0LWVycm9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JkMzYyZjtcbn1cbi50b2FzdC1pbmZvIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJmOTZiNDtcbn1cbi50b2FzdC13YXJuaW5nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4OTQwNjtcbn1cblxuLnRvYXN0LXByb2dyZXNzIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIGhlaWdodDogNHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xuICBvcGFjaXR5OiAwLjQ7XG4gIC1tcy1maWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTQwKTtcbiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTQwKTtcbn1cblxuLypSZXNwb25zaXZlIERlc2lnbiovXG5AbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiAyNDBweCkge1xuICAjdG9hc3QtY29udGFpbmVyID4gZGl2IHtcbiAgICBwYWRkaW5nOiA4cHggOHB4IDhweCA1MHB4O1xuICAgIHdpZHRoOiAxMWVtO1xuICB9XG4gICN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbiB7XG4gICAgcmlnaHQ6IC0wLjJlbTtcbiAgICB0b3A6IC0wLjJlbTtcbiAgfVxufVxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogMjQxcHgpIGFuZCAobWF4LXdpZHRoOiA0ODBweCkge1xuICAjdG9hc3QtY29udGFpbmVyID4gZGl2IHtcbiAgICBwYWRkaW5nOiA4cHggOHB4IDhweCA1MHB4O1xuICAgIHdpZHRoOiAxOGVtO1xuICB9XG4gICN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbiB7XG4gICAgcmlnaHQ6IC0wLjJlbTtcbiAgICB0b3A6IC0wLjJlbTtcbiAgfVxufVxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNDgxcHgpIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xuICAjdG9hc3QtY29udGFpbmVyID4gZGl2IHtcbiAgICBwYWRkaW5nOiAxNXB4IDE1cHggMTVweCA1MHB4O1xuICAgIHdpZHRoOiAyNWVtO1xuICB9XG59XG4iLCIvKiBNYWtlIGNsaWNrcyBwYXNzLXRocm91Z2ggKi9cbiNucHJvZ3Jlc3Mge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuI25wcm9ncmVzcyAuYmFyIHtcbiAgYmFja2dyb3VuZDogIzI5ZDtcblxuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDEwMzE7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcblxuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAycHg7XG59XG5cbi8qIEZhbmN5IGJsdXIgZWZmZWN0ICovXG4jbnByb2dyZXNzIC5wZWcge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMHB4O1xuICB3aWR0aDogMTAwcHg7XG4gIGhlaWdodDogMTAwJTtcbiAgYm94LXNoYWRvdzogMCAwIDEwcHggIzI5ZCwgMCAwIDVweCAjMjlkO1xuICBvcGFjaXR5OiAxLjA7XG5cbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzZGVnKSB0cmFuc2xhdGUoMHB4LCAtNHB4KTtcbiAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzZGVnKSB0cmFuc2xhdGUoMHB4LCAtNHB4KTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzZGVnKSB0cmFuc2xhdGUoMHB4LCAtNHB4KTtcbn1cblxuLyogUmVtb3ZlIHRoZXNlIHRvIGdldCByaWQgb2YgdGhlIHNwaW5uZXIgKi9cbiNucHJvZ3Jlc3MgLnNwaW5uZXIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAxMDMxO1xuICB0b3A6IDE1cHg7XG4gIHJpZ2h0OiAxNXB4O1xufVxuXG4jbnByb2dyZXNzIC5zcGlubmVyLWljb24ge1xuICB3aWR0aDogMThweDtcbiAgaGVpZ2h0OiAxOHB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gIGJvcmRlcjogc29saWQgMnB4IHRyYW5zcGFyZW50O1xuICBib3JkZXItdG9wLWNvbG9yOiAjMjlkO1xuICBib3JkZXItbGVmdC1jb2xvcjogIzI5ZDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBucHJvZ3Jlc3Mtc3Bpbm5lciA0MDBtcyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICAgICAgYW5pbWF0aW9uOiBucHJvZ3Jlc3Mtc3Bpbm5lciA0MDBtcyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbi5ucHJvZ3Jlc3MtY3VzdG9tLXBhcmVudCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLm5wcm9ncmVzcy1jdXN0b20tcGFyZW50ICNucHJvZ3Jlc3MgLnNwaW5uZXIsXG4ubnByb2dyZXNzLWN1c3RvbS1wYXJlbnQgI25wcm9ncmVzcyAuYmFyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgbnByb2dyZXNzLXNwaW5uZXIge1xuICAwJSAgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxuICAxMDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9XG59XG5Aa2V5ZnJhbWVzIG5wcm9ncmVzcy1zcGlubmVyIHtcbiAgMCUgICB7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9XG4gIDEwMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9XG59XG5cbiIsIkBpbXBvcnQgXCJjb21wYXNzL2Z1bmN0aW9uc1wiO1xuQGltcG9ydCBcImNvbXBhc3MvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwiY29tcGFzcy90eXBvZ3JhcGh5XCI7XG5AaW1wb3J0IFwiY29tcGFzcy9jc3MzXCI7XG4iLCJAaW1wb3J0IFwiZnVuY3Rpb25zL2xpc3RzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9ncmFkaWVudF9zdXBwb3J0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbnN0YW50c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9kaXNwbGF5XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbG9yc1wiO1xuIiwiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBsaXN0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvbGlzdHMucmJcbi8vXG5cblxuLy8gY29tcGFjdCBpcyBwYXJ0IG9mIGxpYnNhc3NcblxuQGZ1bmN0aW9uIC1jb21wYXNzLW50aCgkbGlzdCwgJHBsYWNlKSB7XG4gIC8vIFllcCwgU2Fzcy1saXN0cyBhcmUgMS1pbmRleGVkLlxuICBAaWYgJHBsYWNlID09IFwiZmlyc3RcIiB7XG4gICAgJHBsYWNlOiAxO1xuICB9XG4gIEBpZiAkcGxhY2UgPT0gXCJsYXN0XCIge1xuICAgICRwbGFjZTogbGVuZ3RoKCRsaXN0KTtcbiAgfVxuICBAcmV0dXJuIG50aCgkbGlzdCwgJHBsYWNlKTtcbn1cblxuLy8gY29tcGFzc19saXN0IGNhbid0IGJlIGltcGxlbWVudGVkIGluIHNhc3Mgc2NyaXB0XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1zcGFjZS1saXN0KCRpdGVtMSwgJGl0ZW0yOm51bGwsICRpdGVtMzpudWxsLCAkaXRlbTQ6bnVsbCwgJGl0ZW01Om51bGwsICRpdGVtNjpudWxsLCAkaXRlbTc6bnVsbCwgJGl0ZW04Om51bGwsICRpdGVtOTpudWxsKSB7XG4gICRpdGVtczogKCk7XG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJGl0ZW0xKSA9PSAnbGlzdCcge1xuICAgIC8vIFBhc3NpbmcgYSBzaW5nbGUgYXJyYXkgb2YgcHJvcGVydGllcy5cbiAgICAkaXRlbXM6ICRpdGVtMTtcbiAgfSBAZWxzZSB7XG4gICAgJGl0ZW1zOiAkaXRlbTEgJGl0ZW0yICRpdGVtMyAkaXRlbTQgJGl0ZW01ICRpdGVtNiAkaXRlbTcgJGl0ZW04ICRpdGVtOTtcbiAgfVxuXG4gICRmdWxsOiBmaXJzdC12YWx1ZS1vZigkaXRlbXMpO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggbGVuZ3RoKCRpdGVtcykge1xuICAgICRpdGVtOiBudGgoJGl0ZW1zLCAkaSk7XG4gICAgQGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJGZ1bGw6ICRmdWxsICRpdGVtO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGZ1bGw7XG59XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1saXN0LXNpemUoJGxpc3QpIHtcbiAgQHJldHVybiBsZW5ndGgoJGxpc3QpO1xufVxuXG5AZnVuY3Rpb24gLWNvbXBhc3Mtc2xpY2UoJGxpc3QsICRzdGFydCwgJGVuZDogZmFsc2UpIHtcbiAgQGlmICRlbmQgPT0gZmFsc2Uge1xuICAgICRlbmQ6IGxlbmd0aCgkbGlzdCk7XG4gIH1cbiAgJGZ1bGw6IG50aCgkbGlzdCwgJHN0YXJ0KTtcbiAgQGZvciAkaSBmcm9tICRzdGFydCArIDEgdGhyb3VnaCAkZW5kIHtcbiAgICAkZnVsbDogJGZ1bGwsIG50aCgkbGlzdCwgJGkpO1xuICB9XG4gIEByZXR1cm4gJGZ1bGw7XG59XG5cbkBmdW5jdGlvbiByZWplY3QoJGxpc3QsICRyZWplY3QxLCAkcmVqZWN0MjpudWxsLCAkcmVqZWN0MzpudWxsLCAkcmVqZWN0NDpudWxsLCAkcmVqZWN0NTpudWxsLCAkcmVqZWN0NjpudWxsLCAkcmVqZWN0NzpudWxsLCAkcmVqZWN0ODpudWxsLCAkcmVqZWN0OTpudWxsKSB7XG4gICRyZWplY3RzOiAkcmVqZWN0MSwgJHJlamVjdDIsICRyZWplY3QzLCAkcmVqZWN0NCwgJHJlamVjdDUsICRyZWplY3Q2LCAkcmVqZWN0NywgJHJlamVjdDgsICRyZWplY3Q5O1xuXG4gICRmdWxsOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiBpbmRleCgkcmVqZWN0cywgJGl0ZW0pIHt9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmICRmdWxsIHtcbiAgICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZ1bGw6ICRpdGVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRmdWxsO1xufVxuXG5AZnVuY3Rpb24gZmlyc3QtdmFsdWUtb2YoJGxpc3QpIHtcbiAgQHJldHVybiBudGgoJGxpc3QsIDEpO1xufVxuXG5AZnVuY3Rpb24gY29tcGFjdCgkdmFycy4uLikge1xuICAkc2VwYXJhdG9yOiBsaXN0LXNlcGFyYXRvcigkdmFycyk7XG4gICRsaXN0OiAoKTtcbiAgQGVhY2ggJHZhciBpbiAkdmFycyB7XG4gICAgICBAaWYgJHZhciB7XG4gICAgICAgICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJHZhciwgJHNlcGFyYXRvcik7XG4gICAgICB9XG4gIH1cbiAgQHJldHVybiAkbGlzdDtcbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNyb3NzIGJyb3dzZXIgc3VwcG9ydCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydC5yYlxuLy8gXG5cbkBmdW5jdGlvbiBwcmVmaXhlZCgkcHJlZml4LCAkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICAkcHJvcGVydGllczogJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OTtcbiAgJHByZWZpeGVkOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSAnc3RyaW5nJyB7XG4gICAgICAkcHJlZml4ZWQ6ICRwcmVmaXhlZCBvciBzdHItaW5kZXgoJGl0ZW0sICd1cmwnKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sICdyZ2InKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sICcjJykgIT0gMTtcbiAgICB9IEBlbHNlaWYgdHlwZS1vZigkaXRlbSkgPT0gJ2NvbG9yJyB7XG4gICAgfSBAZWxzZWlmICRpdGVtICE9IG51bGwge1xuICAgICAgJHByZWZpeGVkOiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuICRwcmVmaXhlZDtcbn1cblxuQGZ1bmN0aW9uIHByZWZpeCgkcHJlZml4LCAkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICAkcHJvcGVydGllczogXCJcIjtcblxuICAvLyBTdXBwb3J0IGZvciBwb2x5bW9ycGhpc20uXG4gIEBpZiB0eXBlLW9mKCRwcm9wZXJ0eTEpID09ICdsaXN0JyB7XG4gICAgLy8gUGFzc2luZyBhIHNpbmdsZSBhcnJheSBvZiBwcm9wZXJ0aWVzLlxuICAgICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxO1xuICB9IEBlbHNlIHtcbiAgICAvLyBQYXNzaW5nIG11bHRpcGxlIHByb3BlcnRpZXMuXG4gICAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTk7XG4gIH1cblxuICAkcHJvcHM6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmICRpdGVtID09IG51bGwge31cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgcHJlZml4ZWQoJHByZWZpeCwgJGl0ZW0pIHtcbiAgICAgICAgJGl0ZW06ICN7JHByZWZpeH0tI3skaXRlbX07XG4gICAgICB9XG4gICAgICBAaWYgJHByb3BzIHtcbiAgICAgICAgJHByb3BzOiAkcHJvcHMsICRpdGVtO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcHJvcHM6ICRpdGVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRwcm9wcztcbn1cblxuQGZ1bmN0aW9uIC1zdmcoJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1zdmcnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1vd2coJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1vd2cnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC13ZWJraXQoJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy13ZWJraXQnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1tb3ooJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1tb3onLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1vKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KCctbycsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLXBpZSgkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLXBpZScsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuIiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZ3JhZGllbnQgc3VwcG9ydCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3YwLjEyLjIvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9ncmFkaWVudF9zdXBwb3J0LnJiXG4vLyBcblxuQGZ1bmN0aW9uIGNvbG9yLXN0b3BzKCRpdGVtMSwgJGl0ZW0yOm51bGwsICRpdGVtMzpudWxsLCAkaXRlbTQ6bnVsbCwgJGl0ZW01Om51bGwsICRpdGVtNjpudWxsLCAkaXRlbTc6bnVsbCwgJGl0ZW04Om51bGwsICRpdGVtOTpudWxsKSB7XG4gICRpdGVtczogJGl0ZW0yLCAkaXRlbTMsICRpdGVtNCwgJGl0ZW01LCAkaXRlbTYsICRpdGVtNywgJGl0ZW04LCAkaXRlbTk7XG4gICRmdWxsOiAkaXRlbTE7XG4gIEBlYWNoICRpdGVtIGluICRpdGVtcyB7XG4gICAgQGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTtcbiAgICB9ICAgIFxuICB9XG4gIEByZXR1cm4gJGZ1bGw7XG59IiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29uc3RhbnRzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY29uc3RhbnRzLnJiXG4vLyBcblxuQGZ1bmN0aW9uIG9wcG9zaXRlLXBvc2l0aW9uKCRmcm9tKSB7XG4gICAgQGlmICgkZnJvbSA9PSB0b3ApIHtcbiAgICAgICAgQHJldHVybiBib3R0b207XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gYm90dG9tKSB7XG4gICAgICAgIEByZXR1cm4gdG9wO1xuICAgIH0gQGVsc2UgaWYgKCRmcm9tID09IGxlZnQpIHtcbiAgICAgICAgQHJldHVybiByaWdodDtcbiAgICB9IEBlbHNlIGlmICgkZnJvbSA9PSByaWdodCkge1xuICAgICAgICBAcmV0dXJuIGxlZnQ7XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gY2VudGVyKSB7XG4gICAgICAgIEByZXR1cm4gY2VudGVyO1xuICAgIH1cbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGRpc3BsYXkgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvY29yZS9saWIvY29tcGFzcy9jb3JlL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvZGlzcGxheS5yYlxuLy8gXG5cbkBmdW5jdGlvbiBlbGVtZW50cy1vZi10eXBlKCR0eXBlKXtcbiAgICBAaWYgKCR0eXBlID09IGJsb2NrKXtcbiAgICAgICAgQHJldHVybiBhZGRyZXNzLCBhcnRpY2xlLCBhc2lkZSwgYmxvY2txdW90ZSwgY2VudGVyLCBkaXIsIGRpdiwgZGQsIGRldGFpbHMsIGRsLCBkdCwgZmllbGRzZXQsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9ybSwgZm9vdGVyLCBmcmFtZXNldCwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgaHIsIGhlYWRlciwgaGdyb3VwLCBpc2luZGV4LCBtYWluLCBtZW51LCBuYXYsIG5vZnJhbWVzLCBub3NjcmlwdCwgb2wsIHAsIHByZSwgc2VjdGlvbiwgc3VtbWFyeSwgdWw7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaW5saW5lKXtcbiAgICAgICAgQHJldHVybiBhLCBhYmJyLCBhY3JvbnltLCBhdWRpbywgYiwgYmFzZWZvbnQsIGJkbywgYmlnLCBiciwgY2FudmFzLCBjaXRlLCBjb2RlLCBjb21tYW5kLCBkYXRhbGlzdCwgZGZuLCBlbSwgZW1iZWQsIGZvbnQsIGksIGltZywgaW5wdXQsIGtleWdlbiwga2JkLCBsYWJlbCwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHEsIHJwLCBydCwgcnVieSwgcywgc2FtcCwgc2VsZWN0LCBzbWFsbCwgc3Bhbiwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0ZXh0YXJlYSwgdGltZSwgdHQsIHUsIHZhciwgdmlkZW8sIHdicjtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBpbmxpbmUtYmxvY2spe1xuICAgICAgICBAcmV0dXJuIGltZztcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZSl7XG4gICAgICAgIEByZXR1cm4gdGFibGU7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gbGlzdC1pdGVtKXtcbiAgICAgICAgQHJldHVybiBsaTtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1yb3ctZ3JvdXApe1xuICAgICAgICBAcmV0dXJuIHRib2R5O1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLWhlYWRlci1ncm91cCl7XG4gICAgICAgIEByZXR1cm4gdGhlYWQ7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtZm9vdGVyLWdyb3VwKXtcbiAgICAgICAgQHJldHVybiB0Zm9vdDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1yb3cpe1xuICAgICAgICBAcmV0dXJuIHRyO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLWNlbGwpe1xuICAgICAgICBAcmV0dXJuIHRoLCB0ZDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBodG1sNS1ibG9jayl7XG4gICAgICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5O1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGh0bWw1LWlubGluZSl7XG4gICAgICAgIEByZXR1cm4gYXVkaW8sIGNhbnZhcywgY29tbWFuZCwgZGF0YWxpc3QsIGVtYmVkLCBrZXlnZW4sIG1hcmssIG1ldGVyLCBvdXRwdXQsIHByb2dyZXNzLCBycCwgcnQsIHJ1YnksIHRpbWUsIHZpZGVvLCB3YnI7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaHRtbDUpe1xuICAgICAgICBAcmV0dXJuIGFydGljbGUsIGFzaWRlLCBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZGV0YWlscywgZW1iZWQsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwga2V5Z2VuLCBtYWluLCBtYXJrLCBtZW51LCBtZXRlciwgbmF2LCBvdXRwdXQsIHByb2dyZXNzLCBycCwgcnQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksIHRpbWUsIHZpZGVvLCB3YnI7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGV4dC1pbnB1dCl7XG4gICAgICAgIEByZXR1cm4gaW5wdXQsIHRleHRhcmVhO1xuICAgIH1cbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNvbG9ycyBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jb2xvcnMucmJcbi8vXG5cbi8vIGEgZ2VuZXJpY2l6ZWQgdmVyc2lvbiBvZiBsaWdodGVuL2RhcmtlbiBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gYmUgdXNlZC5cbkBmdW5jdGlvbiBhZGp1c3QtbGlnaHRuZXNzKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gYWRqdXN0LWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGFtb3VudCk7XG59XG5cbi8vIFNjYWxlcyBhIGNvbG9yJ3MgbGlnaHRuZXNzIGJ5IHNvbWUgcGVyY2VudGFnZS5cbi8vIElmIHRoZSBhbW91bnQgaXMgbmVnYXRpdmUsIHRoZSBjb2xvciBpcyBzY2FsZWQgZGFya2VyLCBpZiBwb3NpdGl2ZSwgaXQgaXMgc2NhbGVkIGxpZ2h0ZXIuXG4vLyBUaGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGEgcHVyZSBsaWdodCBvciBkYXJrIGNvbG9yIHVubGVzcyB0aGUgYW1vdW50IGlzIDEwMCUuXG5AZnVuY3Rpb24gc2NhbGUtbGlnaHRuZXNzKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkYW1vdW50KTtcbn1cblxuLy8gYSBnZW5lcmljaXplZCB2ZXJzaW9uIG9mIHNhdHVyYXRlL2Rlc2F0dXJhdGUgc28gdGhhdCBuZWdhdGl2ZSB2YWx1ZXMgY2FuIGJlIHVzZWQuXG5AZnVuY3Rpb24gYWRqdXN0LXNhdHVyYXRpb24oJGNvbG9yLCAkYW1vdW50KSB7XG4gICAgQHJldHVybiBhZGp1c3QtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7XG59XG5cbi8vIFNjYWxlcyBhIGNvbG9yJ3Mgc2F0dXJhdGlvbiBieSBzb21lIHBlcmNlbnRhZ2UuXG4vLyBJZiB0aGUgYW1vdW50IGlzIG5lZ2F0aXZlLCB0aGUgY29sb3IgaXMgZGVzYXR1cmF0ZWQsIGlmIHBvc2l0aXZlLCBpdCBpcyBzYXR1cmF0ZWQuXG4vLyBUaGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGEgcHVyZSBzYXR1cmF0ZWQgb3IgZGVzYXR1cmF0ZWQgY29sb3IgdW5sZXNzIHRoZSBhbW91bnQgaXMgMTAwJS5cbkBmdW5jdGlvbiBzY2FsZS1zYXR1cmF0aW9uKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7XG59XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gICAgQHJldHVybiBtaXgoIzAwMDAwMCwgJGNvbG9yLCAkcGVyY2VudGFnZSk7XG59XG5cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgICBAcmV0dXJuIG1peCgjZmZmZmZmLCAkY29sb3IsICRwZXJjZW50YWdlKTtcbn1cblxuIiwiQGltcG9ydCBcInV0aWxpdGllcy9jb2xvclwiO1xuQGltcG9ydCBcInV0aWxpdGllcy9nZW5lcmFsXCI7XG5AaW1wb3J0IFwidXRpbGl0aWVzL3Nwcml0ZXNcIjtcbkBpbXBvcnQgXCJ1dGlsaXRpZXMvdGFibGVzXCI7XG5cbi8vIGRlcHJlY2F0ZWRcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L2xpbmtzXCI7XG5AaW1wb3J0IFwidHlwb2dyYXBoeS9saXN0c1wiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvdGV4dFwiO1xuIiwiQGltcG9ydCBcImNvbG9yL2NvbnRyYXN0XCI7IiwiJGNvbnRyYXN0ZWQtZGFyay1kZWZhdWx0OiAgICMwMDAgIWRlZmF1bHQ7XG4kY29udHJhc3RlZC1saWdodC1kZWZhdWx0OiAgI2ZmZiAhZGVmYXVsdDtcbiRjb250cmFzdGVkLWxpZ2h0bmVzcy10aHJlc2hvbGQ6IDMwJSAhZGVmYXVsdDtcblxuLy8gUmV0dXJucyB0aGUgYCRsaWdodGAgY29sb3Igd2hlbiB0aGUgYCRjb2xvcmAgaXMgZGFya1xuLy8gYW5kIHRoZSBgJGRhcmtgIGNvbG9yIHdoZW4gdGhlIGAkY29sb3JgIGlzIGxpZ2h0LlxuLy8gVGhlIGAkdGhyZXNob2xkYCBpcyBhIHBlcmNlbnQgYmV0d2VlbiBgMCVgIGFuZCBgMTAwJWAgYW5kIGl0IGRldGVybWluZXNcbi8vIHdoZW4gdGhlIGxpZ2h0bmVzcyBvZiBgJGNvbG9yYCBjaGFuZ2VzIGZyb20gXCJkYXJrXCIgdG8gXCJsaWdodFwiLlxuQGZ1bmN0aW9uIGNvbnRyYXN0LWNvbG9yKFxuICAkY29sb3IsXG4gICRkYXJrOiAkY29udHJhc3RlZC1kYXJrLWRlZmF1bHQsXG4gICRsaWdodDogJGNvbnRyYXN0ZWQtbGlnaHQtZGVmYXVsdCxcbiAgJHRocmVzaG9sZDogJGNvbnRyYXN0ZWQtbGlnaHRuZXNzLXRocmVzaG9sZFxuKSB7XG4gIEByZXR1cm4gaWYobGlnaHRuZXNzKCRjb2xvcikgPCAkdGhyZXNob2xkLCAkbGlnaHQsICRkYXJrKVxufVxuXG4vLyBTZXRzIHRoZSBzcGVjaWZpZWQgYmFja2dyb3VuZCBjb2xvciBhbmQgY2FsY3VsYXRlcyBhIGRhcmsgb3IgbGlnaHQgY29udHJhc3RlZCB0ZXh0IGNvbG9yLlxuLy8gVGhlIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRocm91Z2ggdG8gdGhlIFtjb250cmFzdC1jb2xvciBmdW5jdGlvbl0oI2Z1bmN0aW9uLWNvbnRyYXN0LWNvbG9yKS5cbkBtaXhpbiBjb250cmFzdGVkKFxuICAkYmFja2dyb3VuZC1jb2xvcixcbiAgJGRhcms6ICRjb250cmFzdGVkLWRhcmstZGVmYXVsdCxcbiAgJGxpZ2h0OiAkY29udHJhc3RlZC1saWdodC1kZWZhdWx0LFxuICAkdGhyZXNob2xkOiAkY29udHJhc3RlZC1saWdodG5lc3MtdGhyZXNob2xkXG4pIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtY29sb3I7XG4gIGNvbG9yOiBjb250cmFzdC1jb2xvcigkYmFja2dyb3VuZC1jb2xvciwgJGRhcmssICRsaWdodCwgJHRocmVzaG9sZCk7XG59IiwiQGltcG9ydCBcImdlbmVyYWwvcmVzZXRcIjtcbkBpbXBvcnQgXCJnZW5lcmFsL2NsZWFyZml4XCI7XG5AaW1wb3J0IFwiZ2VuZXJhbC9mbG9hdFwiO1xuQGltcG9ydCBcImdlbmVyYWwvdGFnLWNsb3VkXCI7XG5AaW1wb3J0IFwiZ2VuZXJhbC9oYWNrc1wiO1xuQGltcG9ydCBcImdlbmVyYWwvbWluXCI7XG4iLCIvLyBUaGlzIG1vZHVsZSBoYXMgbW92ZWQuXG5AaW1wb3J0IFwiLi4vLi4vcmVzZXQvdXRpbGl0aWVzXCI7XG4iLCIvLyBCYXNlZCBvbiBbRXJpYyBNZXllcidzIHJlc2V0IDIuMF0oaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9pbmRleC5odG1sKVxuLy8gR2xvYmFsIHJlc2V0IHJ1bGVzLlxuLy8gRm9yIG1vcmUgc3BlY2lmaWMgcmVzZXRzLCB1c2UgdGhlIHJlc2V0IG1peGlucyBwcm92aWRlZCBiZWxvd1xuQG1peGluIGdsb2JhbC1yZXNldCB7XG4gIGh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLCBcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgLy8gVW5saWtlIEVyaWMncyBvcmlnaW5hbCByZXNldCwgd2UgcmVzZXQgdGhlIGh0bWwgZWxlbWVudCB0byBiZSBjb21wYXRpYmxlXG4gIC8vIHdpdGggdGhlIHZlcnRpY2FsIHJoeXRobSBtaXhpbnMuXG4gIGh0bWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJvZHk7IH1cbiAgb2wsIHVsIHtcbiAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlOyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9XG4gIEBpbmNsdWRlIHJlc2V0LWh0bWw1OyB9XG5cbi8vIFJlc2V0IGFsbCBlbGVtZW50cyB3aXRoaW4gc29tZSBzZWxlY3RvciBzY29wZS4gVG8gcmVzZXQgdGhlIHNlbGVjdG9yIGl0c2VsZixcbi8vIG1peGluIHRoZSBhcHByb3ByaWF0ZSByZXNldCBtaXhpbiBmb3IgdGhhdCBlbGVtZW50IHR5cGUgYXMgd2VsbC4gVGhpcyBjb3VsZCBiZVxuLy8gdXNlZnVsIGlmIHlvdSB3YW50IHRvIHN0eWxlIGEgcGFydCBvZiB5b3VyIHBhZ2UgaW4gYSBkcmFtYXRpY2FsbHkgZGlmZmVyZW50IHdheS5cbkBtaXhpbiBuZXN0ZWQtcmVzZXQge1xuICBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCwgXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9IH1cblxuLy8gUmVzZXQgdGhlIGJveCBtb2RlbCBtZWFzdXJlbWVudHMuXG5AbWl4aW4gcmVzZXQtYm94LW1vZGVsIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7IH1cblxuLy8gUmVzZXQgdGhlIGZvbnQgYW5kIHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiByZXNldC1mb250IHtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLy8gUmVzZXRzIHRoZSBvdXRsaW5lIHdoZW4gZm9jdXMuXG4vLyBGb3IgYWNjZXNzaWJpbGl0eSB5b3UgbmVlZCB0byBhcHBseSBzb21lIHN0eWxpbmcgaW4gaXRzIHBsYWNlLlxuQG1peGluIHJlc2V0LWZvY3VzIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vLyBSZXNldCBhIGJvZHkgZWxlbWVudC5cbkBtaXhpbiByZXNldC1ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDE7IH1cblxuLy8gUmVzZXQgdGhlIGxpc3Qgc3R5bGUgb2YgYW4gZWxlbWVudC5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4vLyBSZXNldCBhIHRhYmxlXG5AbWl4aW4gcmVzZXQtdGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG4vLyBSZXNldCBhIHRhYmxlIGNlbGwgKGB0aGAsIGB0ZGApXG5AbWl4aW4gcmVzZXQtdGFibGUtY2VsbCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLy8gUmVzZXQgYSBxdW90YXRpb24gKGBxYCwgYGJsb2NrcXVvdGVgKVxuQG1peGluIHJlc2V0LXF1b3RhdGlvbiB7XG4gIHF1b3Rlczogbm9uZTtcbiAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7IFxuICAgIGNvbnRlbnQ6IG5vbmU7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGJvcmRlci5cbkBtaXhpbiByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyIHtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi8vIFVucmVjb2duaXplZCBlbGVtZW50cyBhcmUgZGlzcGxheWVkIGlubGluZS5cbi8vIFRoaXMgcmVzZXQgcHJvdmlkZXMgYSBiYXNpYyByZXNldCBmb3IgYmxvY2sgaHRtbDUgZWxlbWVudHNcbi8vIHNvIHRoZXkgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBpbiBicm93c2VycyB0aGF0IGRvbid0IHJlY29nbml6ZSB0aGVtXG4vLyBhbmQgcmVzZXQgaW4gYnJvd3NlcnMgdGhhdCBoYXZlIGRlZmF1bHQgc3R5bGVzIGZvciB0aGVtLlxuQG1peGluIHJlc2V0LWh0bWw1IHtcbiAgI3tlbGVtZW50cy1vZi10eXBlKGh0bWw1LWJsb2NrKX0ge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBkaXNwbGF5IG9mIGlubGluZSBhbmQgYmxvY2sgZWxlbWVudHMgdG8gdGhlaXIgZGVmYXVsdCBkaXNwbGF5XG4vLyBhY2NvcmRpbmcgdG8gdGhlaXIgdGFnIHR5cGUuIEVsZW1lbnRzIHRoYXQgaGF2ZSBhIGRlZmF1bHQgZGlzcGxheSB0aGF0IHZhcmllcyBhY3Jvc3Ncbi8vIHZlcnNpb25zIG9mIGh0bWwgb3IgYnJvd3NlciBhcmUgbm90IGhhbmRsZWQgaGVyZSwgYnV0IHRoaXMgY292ZXJzIHRoZSA5MCUgdXNlIGNhc2UuXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICAvLyBUdXJuIG9mZiB0aGUgZGlzcGxheSBmb3IgYm90aCBvZiB0aGVzZSBjbGFzc2VzXG4vLyAgICAgLnVucmVnaXN0ZXJlZC1vbmx5LCAucmVnaXN0ZXJlZC1vbmx5XG4vLyAgICAgICBkaXNwbGF5OiBub25lXG4vLyAgICAgLy8gTm93IHR1cm4gb25seSBvbmUgb2YgdGhlbSBiYWNrIG9uIGRlcGVuZGluZyBvbiBzb21lIG90aGVyIGNvbnRleHQuXG4vLyAgICAgYm9keS5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi5yZWdpc3RlcmVkLW9ubHlcIilcbi8vICAgICBib2R5LnVucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIudW5yZWdpc3RlcmVkLW9ubHlcIilcbkBtaXhpbiByZXNldC1kaXNwbGF5KCRzZWxlY3RvcjogXCJcIiwgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImlubGluZVwiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogaW5saW5lOyB9IH1cbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImJsb2NrXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuIiwiLy8gQGRvYyBvZmZcbi8vIEV4dGVuZHMgdGhlIGJvdHRvbSBvZiB0aGUgZWxlbWVudCB0byBlbmNsb3NlIGFueSBmbG9hdHMgaXQgY29udGFpbnMuXG4vLyBAZG9jIG9uXG5cbkBpbXBvcnQgXCJoYWNrc1wiO1xuXG4vLyBUaGlzIGJhc2ljIG1ldGhvZCBpcyBwcmVmZXJyZWQgZm9yIHRoZSB1c3VhbCBjYXNlLCB3aGVuIHBvc2l0aW9uZWRcbi8vIGNvbnRlbnQgd2lsbCBub3Qgc2hvdyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lci5cbi8vXG4vLyBSZWNvbW1lbmRhdGlvbnMgaW5jbHVkZSB1c2luZyB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYSB3aWR0aC5cbi8vIENyZWRpdDogW3F1aXJrc21vZGUub3JnXShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAwNS8wMy9jbGVhcmluZ19mbG9hdHMuaHRtbClcbkBtaXhpbiBjbGVhcmZpeCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgb2xkZXIgbWV0aG9kIGZyb20gUG9zaXRpb24gSXMgRXZlcnl0aGluZyBjYWxsZWRcbi8vIFtFYXN5IENsZWFyaW5nXShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9lYXN5Y2xlYXJpbmcuaHRtbClcbi8vIGhhcyB0aGUgYWR2YW50YWdlIG9mIGFsbG93aW5nIHBvc2l0aW9uZWQgZWxlbWVudHMgdG8gaGFuZ1xuLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIgYXQgdGhlIGV4cGVuc2Ugb2YgbW9yZSB0cmlja3kgQ1NTLlxuQG1peGluIGxlZ2FjeS1waWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50ICAgIDogXCJcXDAwMjBcIjtcbiAgICBkaXNwbGF5ICAgIDogYmxvY2s7XG4gICAgaGVpZ2h0ICAgICA6IDA7XG4gICAgY2xlYXIgICAgICA6IGJvdGg7XG4gICAgb3ZlcmZsb3cgICA6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5IDogaGlkZGVuO1xuICB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgaXMgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBQSUUgY2xlYXJmaXggbWV0aG9kIHRoYXQgcmVkdWNlcyB0aGUgYW1vdW50IG9mIENTUyBvdXRwdXQuXG4vLyBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IEZpcmVmb3ggYmVmb3JlIDMuNSB5b3UgbmVlZCB0byB1c2UgYGxlZ2FjeS1waWUtY2xlYXJmaXhgIGluc3RlYWQuXG4vL1xuLy8gQWRhcHRlZCBmcm9tOiBbQSBuZXcgbWljcm8gY2xlYXJmaXggaGFja10oaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svKVxuQG1peGluIHBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cbiIsIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9IEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTtcbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYgeyBkaXNwbGF5OiBibG9jazsgfVxuICB9XG59XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTtcbiAgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfSIsIi8vIEVtaXRzIHN0eWxlcyBmb3IgYSB0YWcgY2xvdWRcbkBtaXhpbiB0YWctY2xvdWQoJGJhc2Utc2l6ZTogMWVtKSB7XG4gIGZvbnQtc2l6ZTogJGJhc2Utc2l6ZTtcbiAgbGluZS1oZWlnaHQ6IDEuMiAqICRiYXNlLXNpemU7XG4gIC54eHMsIC54cywgLnMsIC5sLCAueGwsIC54eGwge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjIgKiAkYmFzZS1zaXplOyB9XG4gIC54eHMge1xuICAgIGZvbnQtc2l6ZTogJGJhc2Utc2l6ZSAvIDI7IH1cbiAgLnhzIHtcbiAgICBmb250LXNpemU6IDIgKiAkYmFzZS1zaXplIC8gMzsgfVxuICAucyB7XG4gICAgZm9udC1zaXplOiAzICogJGJhc2Utc2l6ZSAvIDQ7IH1cbiAgLmwge1xuICAgIGZvbnQtc2l6ZTogNCAqICRiYXNlLXNpemUgLyAzOyB9XG4gIC54bCB7XG4gICAgZm9udC1zaXplOiAzICogJGJhc2Utc2l6ZSAvIDI7IH1cbiAgLnh4bCB7XG4gICAgZm9udC1zaXplOiAyICogJGJhc2Utc2l6ZTsgfSB9XG4iLCJAaW1wb3J0IFwiLi4vLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4vLyBTZXQgdGhpcyB0byBgYmxvY2tgIHRvIHVzZSB0aGUgZGlzcGxheS1wcm9wZXJ0eSB0byBoYWNrIHRoZVxuLy8gZWxlbWVudCB0byBnYWluIGxheW91dC5cbiRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbi8vIFRoaXMgbWl4aW4gY2F1c2VzIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIHNlbGVjdG9yXG4vLyB0byBnYWluIHRoZSBcImhhc0xheW91dFwiIHByb3BlcnR5IGluIGludGVybmV0IGV4cGxvcmVyLlxuLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG5AbWl4aW4gaGFzLWxheW91dCgkYXBwcm9hY2g6ICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2gpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207XG4gICAgfSBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gYmxvY2sge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jaztcbiAgICB9IEBlbHNlIHtcbiAgICAgIEB3YXJuIFwiVW5rbm93biBoYXMtbGF5b3V0IGFwcHJvYWNoOiAjeyRhcHByb2FjaH1cIjtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGhhcy1sYXlvdXQtem9vbSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyB7XG4gICAgKnpvb206IDE7XG4gIH1cbn1cblxuQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHsgZGlzcGxheTogYmxvY2s7IH1cbiAgfVxufVxuXG4vLyBBIGhhY2sgdG8gc3VwcGx5IElFNiAoYW5kIGJlbG93KSB3aXRoIGEgZGlmZmVyZW50IHByb3BlcnR5IHZhbHVlLlxuLy8gW1JlYWQgbW9yZV0oaHR0cDovL3d3dy5jc3Nwb3J0YWwuY29tL2Nzcy1oYWNrcy8jaW5fY3NzLWltcG9ydGFudCkuXG5AbWl4aW4gYmFuZy1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0gIWltcG9ydGFudDtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JGllNi12YWx1ZX07XG4gIH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcImhhY2tzXCI7XG5cbi8vKipcbi8vIENyb3NzIGJyb3dzZXIgbWluLWhlaWdodCBtaXhpbi5cbkBtaXhpbiBtaW4taGVpZ2h0KCR2YWx1ZSkge1xuICBAaW5jbHVkZSBoYWNrZWQtbWluaW11bShoZWlnaHQsICR2YWx1ZSk7IH1cblxuLy8qKlxuLy8gQ3Jvc3MgYnJvd3NlciBtaW4td2lkdGggbWl4aW4uXG5AbWl4aW4gbWluLXdpZHRoKCR2YWx1ZSkge1xuICBAaW5jbHVkZSBoYWNrZWQtbWluaW11bSh3aWR0aCwgJHZhbHVlKTsgfVxuXG4vLyBAcHJpdmF0ZSBUaGlzIG1peGluIGlzIG5vdCBtZWFudCB0byBiZSB1c2VkIGRpcmVjdGx5LlxuQG1peGluIGhhY2tlZC1taW5pbXVtKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gIG1pbi0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgQGluY2x1ZGUgYmFuZy1oYWNrKCRwcm9wZXJ0eSwgYXV0bywgJHZhbHVlKTsgfVxuIiwiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH0gQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxO1xuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gIH1cbn1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9O1xuICB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCJzcHJpdGVzL2Jhc2VcIjtcbkBpbXBvcnQgXCJzcHJpdGVzL3Nwcml0ZS1pbWdcIjtcbiIsIi8vIERldGVybWluZXMgdGhvc2Ugc3RhdGVzIGZvciB3aGljaCB5b3Ugd2FudCB0byBlbmFibGUgbWFnaWMgc3ByaXRlIHNlbGVjdG9yc1xuJHNwcml0ZS1zZWxlY3RvcnM6IGhvdmVyLCB0YXJnZXQsIGFjdGl2ZSAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGFuIGVsZW1lbnQgdG8gdGhlIG9yaWdpbmFsXG4vLyBkaW1lbnNpb25zIG9mIGFuIGltYWdlIGJlZm9yZSBpdCB3YXMgaW5jbHVkZWQgaW4gdGhlIHNwcml0ZS5cbkBtaXhpbiBzcHJpdGUtZGltZW5zaW9ucygkbWFwLCAkc3ByaXRlKSB7XG4gIGhlaWdodDogaW1hZ2UtaGVpZ2h0KHNwcml0ZS1maWxlKCRtYXAsICRzcHJpdGUpKTtcbiAgd2lkdGg6IGltYWdlLXdpZHRoKHNwcml0ZS1maWxlKCRtYXAsICRzcHJpdGUpKTtcbn1cblxuLy8gU2V0IHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uIG9mIHRoZSBnaXZlbiBzcHJpdGUgYCRtYXBgIHRvIGRpc3BsYXkgdGhlXG4vLyBzcHJpdGUgb2YgdGhlIGdpdmVuIGAkc3ByaXRlYCBuYW1lLiBZb3UgY2FuIG1vdmUgdGhlIGltYWdlIHJlbGF0aXZlIHRvIGl0c1xuLy8gbmF0dXJhbCBwb3NpdGlvbiBieSBwYXNzaW5nIGAkb2Zmc2V0LXhgIGFuZCBgJG9mZnNldC15YC5cbkBtaXhpbiBzcHJpdGUtYmFja2dyb3VuZC1wb3NpdGlvbigkbWFwLCAkc3ByaXRlLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBzcHJpdGUtcG9zaXRpb24oJG1hcCwgJHNwcml0ZSwgJG9mZnNldC14LCAkb2Zmc2V0LXkpOyAgXG59XG5cblxuLy8gRGV0ZXJtaW5lcyBpZiB5b3Ugd2FudCB0byBpbmNsdWRlIG1hZ2ljIHNlbGVjdG9ycyBpbiB5b3VyIHNwcml0ZXNcbiRkaXNhYmxlLW1hZ2ljLXNwcml0ZS1zZWxlY3RvcnM6ZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIEluY2x1ZGUgdGhlIHBvc2l0aW9uIGFuZCAob3B0aW9uYWxseSkgZGltZW5zaW9ucyBvZiB0aGlzIGAkc3ByaXRlYFxuLy8gaW4gdGhlIGdpdmVuIHNwcml0ZSBgJG1hcGAuIFRoZSBzcHJpdGUgdXJsIHNob3VsZCBjb21lIGZyb20gZWl0aGVyIGEgYmFzZVxuLy8gY2xhc3Mgb3IgeW91IGNhbiBzcGVjaWZ5IHRoZSBgc3ByaXRlLXVybGAgZXhwbGljaXRseSBsaWtlIHRoaXM6XG4vL1xuLy8gICAgIGJhY2tncm91bmQ6ICRtYXAgbm8tcmVwZWF0O1xuQG1peGluIHNwcml0ZSgkbWFwLCAkc3ByaXRlLCAkZGltZW5zaW9uczogZmFsc2UsICRvZmZzZXQteDogMCwgJG9mZnNldC15OiAwKSB7XG4gIEBpbmNsdWRlIHNwcml0ZS1iYWNrZ3JvdW5kLXBvc2l0aW9uKCRtYXAsICRzcHJpdGUsICRvZmZzZXQteCwgJG9mZnNldC15KTtcbiAgQGlmICRkaW1lbnNpb25zIHtcbiAgICBAaW5jbHVkZSBzcHJpdGUtZGltZW5zaW9ucygkbWFwLCAkc3ByaXRlKTtcbiAgfVxuICBAaWYgbm90KCRkaXNhYmxlLW1hZ2ljLXNwcml0ZS1zZWxlY3RvcnMpIHtcbiAgICBAaW5jbHVkZSBzcHJpdGUtc2VsZWN0b3JzKCRtYXAsICRzcHJpdGUsICRzcHJpdGUsICRvZmZzZXQteCwgJG9mZnNldC15KTtcbiAgfVxufVxuXG4vLyBJbmNsdWRlIHRoZSBzZWxlY3RvcnMgZm9yIHRoZSBgJHNwcml0ZWAgZ2l2ZW4gdGhlIGAkbWFwYCBhbmQgdGhlIFxuLy8gYCRmdWxsLXNwcml0ZS1uYW1lYFxuLy8gQHByaXZhdGVcbkBtaXhpbiBzcHJpdGUtc2VsZWN0b3JzKCRtYXAsICRzcHJpdGUtbmFtZSwgJGZ1bGwtc3ByaXRlLW5hbWUsICRvZmZzZXQteDogMCwgJG9mZnNldC15OiAwKSB7XG4gIEBlYWNoICRzZWxlY3RvciBpbiAkc3ByaXRlLXNlbGVjdG9ycyB7XG4gICAgQGlmIHNwcml0ZV9oYXNfc2VsZWN0b3IoJG1hcCwgJHNwcml0ZS1uYW1lLCAkc2VsZWN0b3IpIHtcbiAgICAgICY6I3skc2VsZWN0b3J9LCAmLiN7JGZ1bGwtc3ByaXRlLW5hbWV9XyN7JHNlbGVjdG9yfSwgJi4jeyRmdWxsLXNwcml0ZS1uYW1lfS0jeyRzZWxlY3Rvcn0ge1xuICAgICAgICAgIEBpbmNsdWRlIHNwcml0ZS1iYWNrZ3JvdW5kLXBvc2l0aW9uKCRtYXAsIFwiI3skc3ByaXRlLW5hbWV9XyN7JHNlbGVjdG9yfVwiLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIEdlbmVyYXRlcyBhIGNsYXNzIGZvciBlYWNoIHNwYWNlIHNlcGFyYXRlZCBuYW1lIGluIGAkc3ByaXRlLW5hbWVzYC5cbi8vIFRoZSBjbGFzcyB3aWxsIGJlIG9mIHRoZSBmb3JtIC48bWFwLW5hbWU+LTxzcHJpdGUtbmFtZT4uXG4vL1xuLy8gSWYgYSBiYXNlIGNsYXNzIGlzIHByb3ZpZGVkLCB0aGVuIGVhY2ggY2xhc3Mgd2lsbCBleHRlbmQgaXQuXG4vL1xuLy8gSWYgYCRkaW1lbnNpb25zYCBpcyBgdHJ1ZWAsIHRoZSBzcHJpdGUgZGltZW5zaW9ucyB3aWxsIHNwZWNpZmllZC5cbkBtaXhpbiBzcHJpdGVzKCRtYXAsICRzcHJpdGUtbmFtZXMsICRiYXNlLWNsYXNzOiBmYWxzZSwgJGRpbWVuc2lvbnM6IGZhbHNlLCAkcHJlZml4OiBzcHJpdGUtbWFwLW5hbWUoJG1hcCksICRvZmZzZXQteDogMCwgJG9mZnNldC15OiAwKSB7XG4gIEBlYWNoICRzcHJpdGUtbmFtZSBpbiAkc3ByaXRlLW5hbWVzIHtcbiAgICBAaWYgc3ByaXRlX2RvZXNfbm90X2hhdmVfcGFyZW50KCRtYXAsICRzcHJpdGUtbmFtZSkge1xuICAgICAgJGZ1bGwtc3ByaXRlLW5hbWU6IFwiI3skcHJlZml4fS0jeyRzcHJpdGUtbmFtZX1cIjtcbiAgICAgIC4jeyRmdWxsLXNwcml0ZS1uYW1lfSB7XG4gICAgICAgIEBpZiAkYmFzZS1jbGFzcyB7IEBleHRlbmQgI3skYmFzZS1jbGFzc307IH1cbiAgICAgICAgQGluY2x1ZGUgc3ByaXRlKCRtYXAsICRzcHJpdGUtbmFtZSwgJGRpbWVuc2lvbnMsICRvZmZzZXQteCwgJG9mZnNldC15KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCIvLyBAZG9jIG9mZlxuLy8gRXhhbXBsZSAxOlxuLy9cbi8vICAgICBhLnR3aXR0ZXJcbi8vICAgICAgICtzcHJpdGUtaW1nKFwiaWNvbnMtMzIucG5nXCIsIDEpXG4vLyAgICAgYS5mYWNlYm9va1xuLy8gICAgICAgK3Nwcml0ZS1pbWcoXCJpY29ucy0zMnBuZ1wiLCAyKVxuLy9cbi8vIEV4YW1wbGUgMjpcbi8vXG4vLyAgICAgYVxuLy8gICAgICAgK3Nwcml0ZS1iYWNrZ3JvdW5kKFwiaWNvbnMtMzIucG5nXCIpXG4vLyAgICAgICBhLnR3aXR0ZXJcbi8vICAgICAgICAgK3Nwcml0ZS1jb2x1bW4oMSlcbi8vICAgICAgIGEuZmFjZWJvb2tcbi8vICAgICAgICAgK3Nwcml0ZS1yb3coMilcbi8vIEBkb2Mgb25cblxuJHNwcml0ZS1kZWZhdWx0LXNpemU6IDMycHggIWRlZmF1bHQ7XG5cbiRzcHJpdGUtZGVmYXVsdC1tYXJnaW46IDBweCAhZGVmYXVsdDtcblxuJHNwcml0ZS1pbWFnZS1kZWZhdWx0LXdpZHRoOiAkc3ByaXRlLWRlZmF1bHQtc2l6ZSAhZGVmYXVsdDtcblxuJHNwcml0ZS1pbWFnZS1kZWZhdWx0LWhlaWdodDogJHNwcml0ZS1kZWZhdWx0LXNpemUgIWRlZmF1bHQ7XG5cbi8vIFNldHMgYWxsIHRoZSBydWxlcyBmb3IgYSBzcHJpdGUgZnJvbSBhIGdpdmVuIHNwcml0ZSBpbWFnZSB0byBzaG93IGp1c3Qgb25lIG9mIHRoZSBzcHJpdGVzLlxuLy8gVG8gcmVkdWNlIGR1cGxpY2F0aW9uIHVzZSBhIHNwcml0ZS1iZyBtaXhpbiBmb3IgY29tbW9uIHByb3BlcnRpZXMgYW5kIGEgc3ByaXRlLXNlbGVjdCBtaXhpbiBmb3IgcG9zaXRpb25pbmcuXG5AbWl4aW4gc3ByaXRlLWltZygkaW1nLCAkY29sLCAkcm93OiAxLCAkd2lkdGg6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aCwgJGhlaWdodDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LWhlaWdodCwgJG1hcmdpbjogJHNwcml0ZS1kZWZhdWx0LW1hcmdpbikge1xuICBAaW5jbHVkZSBzcHJpdGUtYmFja2dyb3VuZCgkaW1nLCAkd2lkdGgsICRoZWlnaHQpO1xuICBAaW5jbHVkZSBzcHJpdGUtcG9zaXRpb24oJGNvbCwgJHJvdywgJHdpZHRoLCAkaGVpZ2h0LCAkbWFyZ2luKTsgXG59XG5cbi8vIFNldHMgcnVsZXMgY29tbW9uIGZvciBhbGwgc3ByaXRlcywgYXNzdW1lcyB5b3Ugd2FudCBhIHNxdWFyZSwgYnV0IGFsbG93cyBhIHJlY3Rhbmd1bGFyIHJlZ2lvbi5cbkBtaXhpbiBzcHJpdGUtYmFja2dyb3VuZCgkaW1nLCAkd2lkdGg6ICRzcHJpdGUtZGVmYXVsdC1zaXplLCAkaGVpZ2h0OiAkd2lkdGgpIHtcbiAgQGluY2x1ZGUgc3ByaXRlLWJhY2tncm91bmQtcmVjdGFuZ2xlKCRpbWcsICR3aWR0aCwgJGhlaWdodCk7IFxufVxuXG4vLyBTZXRzIHJ1bGVzIGNvbW1vbiBmb3IgYWxsIHNwcml0ZXMsIGFzc3VtZXMgYSByZWN0YW5ndWxhciByZWdpb24uXG5AbWl4aW4gc3ByaXRlLWJhY2tncm91bmQtcmVjdGFuZ2xlKCRpbWcsICR3aWR0aDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LXdpZHRoLCAkaGVpZ2h0OiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtaGVpZ2h0KSB7XG4gIGJhY2tncm91bmQ6IGltYWdlLXVybCgkaW1nKSBuby1yZXBlYXQ7XG4gIHdpZHRoOiAkd2lkdGg7XG4gIGhlaWdodDogJGhlaWdodDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgXG59XG5cbi8vIEFsbG93cyBob3Jpem9udGFsIHNwcml0ZSBwb3NpdGlvbmluZyBvcHRpbWl6ZWQgZm9yIGEgc2luZ2xlIHJvdyBvZiBzcHJpdGVzLlxuQG1peGluIHNwcml0ZS1jb2x1bW4oJGNvbCwgJHdpZHRoOiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtd2lkdGgsICRtYXJnaW46ICRzcHJpdGUtZGVmYXVsdC1tYXJnaW4pIHtcbiAgQGluY2x1ZGUgc3ByaXRlLXBvc2l0aW9uKCRjb2wsIDEsICR3aWR0aCwgMHB4LCAkbWFyZ2luKTsgXG59XG5cbi8vIEFsbG93cyB2ZXJ0aWNhbCBzcHJpdGUgcG9zaXRpb25pbmcgb3B0aW1pemVkIGZvciBhIHNpbmdsZSBjb2x1bW4gb2Ygc3ByaXRlcy5cbkBtaXhpbiBzcHJpdGUtcm93KCRyb3csICRoZWlnaHQ6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC1oZWlnaHQsICRtYXJnaW46ICRzcHJpdGUtZGVmYXVsdC1tYXJnaW4pIHtcbiAgQGluY2x1ZGUgc3ByaXRlLXBvc2l0aW9uKDEsICRyb3csIDBweCwgJGhlaWdodCwgJG1hcmdpbik7IFxufVxuXG4vLyBBbGxvd3MgdmVydGljYWwgYW5kIGhvcml6b250YWwgc3ByaXRlIHBvc2l0aW9uaW5nIGZyb20gYSBncmlkIG9mIGVxdWFsIGRpbWVuc2lvbmVkIHNwcml0ZXMuXG5AbWl4aW4gc3ByaXRlLXBvc2l0aW9uKCRjb2wsICRyb3c6IDEsICR3aWR0aDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LXdpZHRoLCAkaGVpZ2h0OiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtaGVpZ2h0LCAkbWFyZ2luOiAkc3ByaXRlLWRlZmF1bHQtbWFyZ2luKSB7XG4gICR4OiAoJGNvbCAtIDEpICogLSR3aWR0aCAtICgkY29sIC0gMSkgKiAkbWFyZ2luO1xuICAkeTogKCRyb3cgLSAxKSAqIC0kaGVpZ2h0IC0gKCRyb3cgLSAxKSAqICRtYXJnaW47XG4gIGJhY2tncm91bmQtcG9zaXRpb246ICR4ICR5OyBcbn1cblxuXG5cbi8vIFNpbWlsYXIgdG8gJ3Nwcml0ZS1yZXBsYWNlLXRleHQtd2l0aC1kaW1lbnNpb25zJyBidXQgZG9lcyBub3QgYXV0bWF0aWNseSBzZXQgdGhlIGRlbWVuc2lvbnNcbkBtaXhpbiBzcHJpdGUtcmVwbGFjZS10ZXh0ICgkbWFwLCAkc3ByaXRlLCAkZGltZW5zaW9uczogZmFsc2UsICRvZmZzZXQteDogMCwgJG9mZnNldC15OiAwKSB7ICAgIFxuICBAaW5jbHVkZSBoaWRlLXRleHQ7XG4gIEBpbmNsdWRlIHNwcml0ZSgkbWFwLCAkc3ByaXRlLCAkZGltZW5zaW9ucywgJG9mZnNldC14LCAkb2Zmc2V0LXkpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAkbWFwO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xufVxuXG4vLyBTaW1pbGFyIHRvICdyZXBsYWNlLXRleHQtd2l0aC1kaW1lbnNpb25zJyBidXQgd2l0aCBzcHJpdGVzXG4vLyBUbyB1c2UsIGNyZWF0ZSB5b3VyIHNwcml0ZSBhbmQgdGhlbiBwYXNzIGl0IGluIHRoZSBgJG1hcGAgcGFyYW1cbi8vIFRoZSBuYW1lIG9mIHRoZSBpbWFnZSBpbiB0aGUgc3ByaXRlIGZvbGRlciBzaG91bGQgYmUgYCRpbWctbmFtZWBcbkBtaXhpbiBzcHJpdGUtcmVwbGFjZS10ZXh0LXdpdGgtZGltZW5zaW9ucyAoJG1hcCwgJHNwcml0ZSwgJG9mZnNldC14OiAwLCAkb2Zmc2V0LXk6IDApeyAgICBcbiAgQGluY2x1ZGUgc3ByaXRlLXJlcGxhY2UtdGV4dCAoJG1hcCwgJHNwcml0ZSwgdHJ1ZSwgJG9mZnNldC14LCAkb2Zmc2V0LXkpO1xufSIsIkBpbXBvcnQgXCJ0YWJsZXMvYWx0ZXJuYXRpbmctcm93cy1hbmQtY29sdW1uc1wiO1xuQGltcG9ydCBcInRhYmxlcy9ib3JkZXJzXCI7XG5AaW1wb3J0IFwidGFibGVzL3NjYWZmb2xkaW5nXCI7XG4iLCJAbWl4aW4gYWx0ZXJuYXRpbmctcm93cy1hbmQtY29sdW1ucygkZXZlbi1yb3ctY29sb3IsICRvZGQtcm93LWNvbG9yLCAkZGFyay1pbnRlcnNlY3Rpb24sICRoZWFkZXItY29sb3I6IHdoaXRlLCAkZm9vdGVyLWNvbG9yOiB3aGl0ZSkge1xuICB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1jb2xvcjtcbiAgICAmLmV2ZW4sICY6bnRoLWNoaWxkKDJuKSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWNvbG9yIC0gJGRhcmstaW50ZXJzZWN0aW9uOyB9IH1cbiAgdHIge1xuICAgICYub2RkLCAmOm50aC1jaGlsZCgybisxKSB7XG4gICAgICB0ZCB7XG4gICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9kZC1yb3ctY29sb3I7XG4gICAgICAgJi5ldmVuLCAmOm50aC1jaGlsZCgybikge1xuICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9kZC1yb3ctY29sb3IgLSAkZGFyay1pbnRlcnNlY3Rpb247IH0gfSB9XG4gICAgfVxuICB0ci5ldmVuIHtcbiAgICB0ZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXZlbi1yb3ctY29sb3I7XG4gICAgICAmLmV2ZW4sICY6bnRoLWNoaWxkKDJuKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRldmVuLXJvdy1jb2xvciAtICRkYXJrLWludGVyc2VjdGlvbjsgfSB9IH1cbiAgdGZvb3Qge1xuICAgIHRoLCB0ZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9vdGVyLWNvbG9yO1xuICAgICAgJi5ldmVuLCAmOm50aC1jaGlsZCgybikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9vdGVyLWNvbG9yIC0gJGRhcmstaW50ZXJzZWN0aW9uOyB9IH0gfSB9XG4iLCJAbWl4aW4gb3V0ZXItdGFibGUtYm9yZGVycygkd2lkdGg6IDJweCwgJGNvbG9yOiBibGFjaykge1xuICBib3JkZXI6ICR3aWR0aCBzb2xpZCAkY29sb3I7XG4gIHRoZWFkIHtcbiAgICB0aCB7XG4gICAgICBib3JkZXItYm90dG9tOiAkd2lkdGggc29saWQgJGNvbG9yOyB9IH1cbiAgdGZvb3Qge1xuICAgIHRoLCB0ZCB7XG4gICAgICBib3JkZXItdG9wOiAkd2lkdGggc29saWQgJGNvbG9yOyB9IH1cbiAgdGgge1xuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQgJGNvbG9yOyB9IH0gfVxuXG5AbWl4aW4gaW5uZXItdGFibGUtYm9yZGVycygkd2lkdGg6IDJweCwgJGNvbG9yOiBibGFjaykge1xuICB0aCwgdGQge1xuICAgIGJvcmRlcjoge1xuICAgICAgcmlnaHQ6ICR3aWR0aCBzb2xpZCAkY29sb3I7XG4gICAgICBib3R0b206ICR3aWR0aCBzb2xpZCAkY29sb3I7XG4gICAgICBsZWZ0LXdpZHRoOiAwcHg7XG4gICAgICB0b3Atd2lkdGg6IDBweDsgfTtcbiAgICAmOmxhc3QtY2hpbGQsXG4gICAgJi5sYXN0IHtcbiAgICAgIGJvcmRlci1yaWdodC13aWR0aDogMHB4OyB9IH1cblxuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG5cbiAgdGJvZHksIHRmb290IHtcbiAgICB0cjpsYXN0LWNoaWxkIHtcbiAgICAgIHRoLCB0ZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDBweDsgfSB9XG4gICAgdHIubGFzdCB7XG4gICAgICB0aCwgdGQge1xuICAgICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwcHg7IH0gfSB9IH1cbiIsIkBtaXhpbiB0YWJsZS1zY2FmZm9sZGluZyB7XG4gIHRoIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cbiAgdGQsXG4gIHRoIHtcbiAgICBwYWRkaW5nOiAycHg7XG4gICAgJi5udW1lcmljIHtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0OyB9IH0gfVxuIiwiQGltcG9ydCBcImxpbmtzL2hvdmVyLWxpbmtcIjtcbkBpbXBvcnQgXCJsaW5rcy9saW5rLWNvbG9yc1wiO1xuQGltcG9ydCBcImxpbmtzL3Vuc3R5bGVkLWxpbmtcIjtcbiIsIi8vIGEgbGluayB0aGF0IG9ubHkgaGFzIGFuIHVuZGVybGluZSB3aGVuIHlvdSBob3ZlciBvdmVyIGl0XG5AbWl4aW4gaG92ZXItbGluayB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgJjpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0gfVxuIiwiLy8gU2V0IGFsbCB0aGUgY29sb3JzIGZvciBhIGxpbmsgd2l0aCBvbmUgbWl4aW4gY2FsbC5cbi8vIE9yZGVyIG9mIGFyZ3VtZW50cyBpczpcbi8vXG4vLyAxLiBub3JtYWxcbi8vIDIuIGhvdmVyXG4vLyAzLiBhY3RpdmVcbi8vIDQuIHZpc2l0ZWRcbi8vIDUuIGZvY3VzXG4vL1xuLy8gVGhvc2Ugc3RhdGVzIG5vdCBzcGVjaWZpZWQgd2lsbCBpbmhlcml0LlxuLy8gTWl4aW4gdG8gYW4gYW5jaG9yIGxpbmsgbGlrZSBzbzpcbi8vICAgICBhXG4vLyAgICAgICArbGluay1jb2xvcnMoIzAwYywgIzBjYywgI2MwYywgI2NjYywgI2NjMClcblxuQG1peGluIGxpbmstY29sb3JzKCRub3JtYWwsICRob3ZlcjogZmFsc2UsICRhY3RpdmU6IGZhbHNlLCAkdmlzaXRlZDogZmFsc2UsICRmb2N1czogZmFsc2UpIHtcbiAgY29sb3I6ICRub3JtYWw7XG4gIEBpZiAkdmlzaXRlZCB7XG4gICAgJjp2aXNpdGVkIHtcbiAgICAgIGNvbG9yOiAkdmlzaXRlZDsgfSB9XG4gIEBpZiAkZm9jdXMge1xuICAgICY6Zm9jdXMge1xuICAgICAgY29sb3I6ICRmb2N1czsgfSB9XG4gIEBpZiAkaG92ZXIge1xuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICRob3ZlcjsgfSB9XG4gIEBpZiAkYWN0aXZlIHtcbiAgICAmOmFjdGl2ZSB7XG4gICAgICBjb2xvcjogJGFjdGl2ZTsgfSB9IH1cbiIsIi8vIEEgbGluayB0aGF0IGxvb2tzIGFuZCBhY3RzIGxpa2UgdGhlIHRleHQgaXQgaXMgY29udGFpbmVkIHdpdGhpblxuQG1peGluIHVuc3R5bGVkLWxpbmsge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0O1xuICBjdXJzb3I6IGluaGVyaXQ7XG4gICY6YWN0aXZlLCAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lOyB9IH1cbiIsIkBpbXBvcnQgXCJsaXN0cy9ob3Jpem9udGFsLWxpc3RcIjtcbkBpbXBvcnQgXCJsaXN0cy9pbmxpbmUtbGlzdFwiO1xuQGltcG9ydCBcImxpc3RzL2lubGluZS1ibG9jay1saXN0XCI7XG5AaW1wb3J0IFwibGlzdHMvYnVsbGV0c1wiO1xuIiwiLy8gSG9yaXpvbnRhbCBsaXN0IGxheW91dCBtb2R1bGUuXG4vL1xuLy8gRWFzeSBtb2RlIHVzaW5nIHNpbXBsZSBkZXNjZW5kYW50IGxpIHNlbGVjdG9yczpcbi8vXG4vLyAgIHVsLm5hdlxuLy8gICAgICtob3Jpem9udGFsLWxpc3Rcbi8vXG4vLyBBZHZhbmNlZCBtb2RlOlxuLy8gSWYgeW91IG5lZWQgdG8gdGFyZ2V0IHRoZSBsaXN0IGl0ZW1zIHVzaW5nIGEgZGlmZmVyZW50IHNlbGVjdG9yIHRoZW4gdXNlXG4vLyAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciBvbiB5b3VyIHVsL29sIGFuZCAraG9yaXpvbnRhbC1saXN0LWl0ZW0gb24geW91ciBsaS5cbi8vIFRoaXMgbWF5IGhlbHAgd2hlbiB3b3JraW5nIG9uIGxheW91dHMgaW52b2x2aW5nIG5lc3RlZCBsaXN0cy4gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lclxuLy8gICAgID4gbGlcbi8vICAgICAgICtob3Jpem9udGFsLWxpc3QtaXRlbVxuXG5AaW1wb3J0IFwiYnVsbGV0c1wiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2NsZWFyZml4XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvcmVzZXRcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9mbG9hdFwiO1xuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgc2VsZWN0b3IgdGhhdCB0YXJnZXQgYSB1bCBvciBvbCB0aGF0IGlzIG1lYW50XG4vLyB0byBoYXZlIGEgaG9yaXpvbnRhbCBsYXlvdXQuIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7IH1cblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IGxpIHNlbGVjdG9yIHRoYXQgaXMgbWVhbnQgdG8gcGFydGljaXBhdGUgaW4gYSBob3Jpem9udGFsIGxheW91dC5cbi8vIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG4vL1xuLy8gOmxhc3QtY2hpbGQgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZFxuLy8gc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDI5IGZvciB0aGUgc3VwcG9ydCBtYXRyaXhcbi8vXG4vLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4vLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcbi8vXG4vLyBTZXR0aW5nIGAkcGFkZGluZ2AgdG8gYGZhbHNlYCBkaXNhYmxlcyB0aGUgcGFkZGluZyBiZXR3ZWVuIGxpc3QgZWxlbWVudHNcbkBtaXhpbiBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIG5vLWJ1bGxldDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgQGluY2x1ZGUgZmxvYXQoJGRpcmVjdGlvbik7XG4gIEBpZiAkcGFkZGluZyB7XG4gICAgcGFkZGluZzoge1xuICAgICAgbGVmdDogJHBhZGRpbmc7XG4gICAgICByaWdodDogJHBhZGRpbmc7XG4gICAgfVxuICAgICY6Zmlyc3QtY2hpbGQsICYuZmlyc3QgeyBwYWRkaW5nLSN7JGRpcmVjdGlvbn06IDA7IH1cbiAgICAmOmxhc3QtY2hpbGQgeyBwYWRkaW5nLSN7b3Bwb3NpdGUtcG9zaXRpb24oJGRpcmVjdGlvbil9OiAwOyB9XG4gICAgJi5sYXN0IHsgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfVxuICB9XG59XG5cbi8vIEEgbGlzdChvbCx1bCkgdGhhdCBpcyBsYXllZCBvdXQgc3VjaCB0aGF0IHRoZSBlbGVtZW50cyBhcmUgZmxvYXRlZCBsZWZ0IGFuZCB3b24ndCB3cmFwLlxuLy8gVGhpcyBpcyBub3QgYW4gaW5saW5lIGxpc3QuXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0KCRwYWRkaW5nOiA0cHgsICRkaXJlY3Rpb246IGxlZnQpIHtcbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lcjtcbiAgbGkge1xuICAgIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1pdGVtKCRwYWRkaW5nLCAkZGlyZWN0aW9uKTsgfSB9XG4iLCIvLyBUdXJuIG9mZiB0aGUgYnVsbGV0IGZvciBhbiBlbGVtZW50IG9mIGEgbGlzdFxuQG1peGluIG5vLWJ1bGxldCB7XG4gIGxpc3Qtc3R5bGUtaW1hZ2UgOiBub25lO1xuICBsaXN0LXN0eWxlLXR5cGUgIDogbm9uZTtcbiAgbWFyZ2luLWxlZnQgICAgICA6IDA7XG59XG5cbi8vIHR1cm5zIG9mZiB0aGUgYnVsbGV0cyBmb3IgYW4gZW50aXJlIGxpc3RcbkBtaXhpbiBuby1idWxsZXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbGkgeyBAaW5jbHVkZSBuby1idWxsZXQ7IH1cbn1cblxuLy8gTWFrZSBhIGxpc3QodWwvb2wpIGhhdmUgYW4gaW1hZ2UgYnVsbGV0LlxuLy9cbi8vIFRoZSBtaXhpbiBzaG91bGQgYmUgdXNlZCBsaWtlIHRoaXMgZm9yIGFuIGljb24gdGhhdCBpcyA1eDc6XG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIiwgNXB4LCA3cHgpXG4vL1xuLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgaW1hZ2UgZGltZW5zaW9ucyBhcmUgbm90IHByb3ZpZGVkLFxuLy8gVGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmLlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIpXG4vL1xuQG1peGluIHByZXR0eS1idWxsZXRzKCRidWxsZXQtaWNvbiwgJHdpZHRoOiBpbWFnZS13aWR0aCgkYnVsbGV0LWljb24pLCAkaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGJ1bGxldC1pY29uKSwgJGxpbmUtaGVpZ2h0OiAxOHB4LCAkcGFkZGluZzogMTRweCkge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRidWxsZXQtaWNvbikgbm8tcmVwZWF0ICgkcGFkZGluZyAtICR3aWR0aCkgLyAyICgkbGluZS1oZWlnaHQgLSAkaGVpZ2h0KSAvIDI7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICB9XG59XG4iLCIvLyBAZG9jIG9mZlxuLy8gRXh0ZW5kcyB0aGUgYm90dG9tIG9mIHRoZSBlbGVtZW50IHRvIGVuY2xvc2UgYW55IGZsb2F0cyBpdCBjb250YWlucy5cbi8vIEBkb2Mgb25cblxuQGltcG9ydCBcImhhY2tzXCI7XG5cbi8vIFRoaXMgYmFzaWMgbWV0aG9kIGlzIHByZWZlcnJlZCBmb3IgdGhlIHVzdWFsIGNhc2UsIHdoZW4gcG9zaXRpb25lZFxuLy8gY29udGVudCB3aWxsIG5vdCBzaG93IG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyLlxuLy9cbi8vIFJlY29tbWVuZGF0aW9ucyBpbmNsdWRlIHVzaW5nIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBhIHdpZHRoLlxuLy8gQ3JlZGl0OiBbcXVpcmtzbW9kZS5vcmddKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDA1LzAzL2NsZWFyaW5nX2Zsb2F0cy5odG1sKVxuQG1peGluIGNsZWFyZml4IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cblxuLy8gVGhpcyBvbGRlciBtZXRob2QgZnJvbSBQb3NpdGlvbiBJcyBFdmVyeXRoaW5nIGNhbGxlZFxuLy8gW0Vhc3kgQ2xlYXJpbmddKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2Vhc3ljbGVhcmluZy5odG1sKVxuLy8gaGFzIHRoZSBhZHZhbnRhZ2Ugb2YgYWxsb3dpbmcgcG9zaXRpb25lZCBlbGVtZW50cyB0byBoYW5nXG4vLyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lciBhdCB0aGUgZXhwZW5zZSBvZiBtb3JlIHRyaWNreSBDU1MuXG5AbWl4aW4gbGVnYWN5LXBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQgICAgOiBcIlxcMDAyMFwiO1xuICAgIGRpc3BsYXkgICAgOiBibG9jaztcbiAgICBoZWlnaHQgICAgIDogMDtcbiAgICBjbGVhciAgICAgIDogYm90aDtcbiAgICBvdmVyZmxvdyAgIDogaGlkZGVuO1xuICAgIHZpc2liaWxpdHkgOiBoaWRkZW47XG4gIH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cblxuLy8gVGhpcyBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIFBJRSBjbGVhcmZpeCBtZXRob2QgdGhhdCByZWR1Y2VzIHRoZSBhbW91bnQgb2YgQ1NTIG91dHB1dC5cbi8vIElmIHlvdSBuZWVkIHRvIHN1cHBvcnQgRmlyZWZveCBiZWZvcmUgMy41IHlvdSBuZWVkIHRvIHVzZSBgbGVnYWN5LXBpZS1jbGVhcmZpeGAgaW5zdGVhZC5cbi8vXG4vLyBBZGFwdGVkIGZyb206IFtBIG5ldyBtaWNybyBjbGVhcmZpeCBoYWNrXShodHRwOi8vbmljb2xhc2dhbGxhZ2hlci5jb20vbWljcm8tY2xlYXJmaXgtaGFjay8pXG5AbWl4aW4gcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xufVxuIiwiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH0gQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxO1xuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gIH1cbn1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9O1xuICB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIi8vIFRoaXMgbW9kdWxlIGhhcyBtb3ZlZC5cbkBpbXBvcnQgXCIuLi8uLi9yZXNldC91dGlsaXRpZXNcIjtcbiIsIi8vIEJhc2VkIG9uIFtFcmljIE1leWVyJ3MgcmVzZXQgMi4wXShodHRwOi8vbWV5ZXJ3ZWIuY29tL2VyaWMvdG9vbHMvY3NzL3Jlc2V0L2luZGV4Lmh0bWwpXG4vLyBHbG9iYWwgcmVzZXQgcnVsZXMuXG4vLyBGb3IgbW9yZSBzcGVjaWZpYyByZXNldHMsIHVzZSB0aGUgcmVzZXQgbWl4aW5zIHByb3ZpZGVkIGJlbG93XG5AbWl4aW4gZ2xvYmFsLXJlc2V0IHtcbiAgaHRtbCwgYm9keSwgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsIFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICAvLyBVbmxpa2UgRXJpYydzIG9yaWdpbmFsIHJlc2V0LCB3ZSByZXNldCB0aGUgaHRtbCBlbGVtZW50IHRvIGJlIGNvbXBhdGlibGVcbiAgLy8gd2l0aCB0aGUgdmVydGljYWwgcmh5dGhtIG1peGlucy5cbiAgaHRtbCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm9keTsgfVxuICBvbCwgdWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWxpc3Qtc3R5bGU7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH1cbiAgQGluY2x1ZGUgcmVzZXQtaHRtbDU7IH1cblxuLy8gUmVzZXQgYWxsIGVsZW1lbnRzIHdpdGhpbiBzb21lIHNlbGVjdG9yIHNjb3BlLiBUbyByZXNldCB0aGUgc2VsZWN0b3IgaXRzZWxmLFxuLy8gbWl4aW4gdGhlIGFwcHJvcHJpYXRlIHJlc2V0IG1peGluIGZvciB0aGF0IGVsZW1lbnQgdHlwZSBhcyB3ZWxsLiBUaGlzIGNvdWxkIGJlXG4vLyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gc3R5bGUgYSBwYXJ0IG9mIHlvdXIgcGFnZSBpbiBhIGRyYW1hdGljYWxseSBkaWZmZXJlbnQgd2F5LlxuQG1peGluIG5lc3RlZC1yZXNldCB7XG4gIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLCBcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH0gfVxuXG4vLyBSZXNldCB0aGUgYm94IG1vZGVsIG1lYXN1cmVtZW50cy5cbkBtaXhpbiByZXNldC1ib3gtbW9kZWwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDsgfVxuXG4vLyBSZXNldCB0aGUgZm9udCBhbmQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIHJlc2V0LWZvbnQge1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXNpemU6IDEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG4vLyBSZXNldHMgdGhlIG91dGxpbmUgd2hlbiBmb2N1cy5cbi8vIEZvciBhY2Nlc3NpYmlsaXR5IHlvdSBuZWVkIHRvIGFwcGx5IHNvbWUgc3R5bGluZyBpbiBpdHMgcGxhY2UuXG5AbWl4aW4gcmVzZXQtZm9jdXMge1xuICBvdXRsaW5lOiAwOyB9XG5cbi8vIFJlc2V0IGEgYm9keSBlbGVtZW50LlxuQG1peGluIHJlc2V0LWJvZHkge1xuICBsaW5lLWhlaWdodDogMTsgfVxuXG4vLyBSZXNldCB0aGUgbGlzdCBzdHlsZSBvZiBhbiBlbGVtZW50LlxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUge1xuICBsaXN0LXN0eWxlOiBub25lOyB9XG5cbi8vIFJlc2V0IGEgdGFibGVcbkBtaXhpbiByZXNldC10YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwOyB9XG5cbi8vIFJlc2V0IGEgdGFibGUgY2VsbCAoYHRoYCwgYHRkYClcbkBtaXhpbiByZXNldC10YWJsZS1jZWxsIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuXG4vLyBSZXNldCBhIHF1b3RhdGlvbiAoYHFgLCBgYmxvY2txdW90ZWApXG5AbWl4aW4gcmVzZXQtcXVvdGF0aW9uIHtcbiAgcXVvdGVzOiBub25lO1xuICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjsgXG4gICAgY29udGVudDogbm9uZTsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgYm9yZGVyLlxuQG1peGluIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXIge1xuICBib3JkZXI6IG5vbmU7IH1cblxuLy8gVW5yZWNvZ25pemVkIGVsZW1lbnRzIGFyZSBkaXNwbGF5ZWQgaW5saW5lLlxuLy8gVGhpcyByZXNldCBwcm92aWRlcyBhIGJhc2ljIHJlc2V0IGZvciBibG9jayBodG1sNSBlbGVtZW50c1xuLy8gc28gdGhleSBhcmUgcmVuZGVyZWQgY29ycmVjdGx5IGluIGJyb3dzZXJzIHRoYXQgZG9uJ3QgcmVjb2duaXplIHRoZW1cbi8vIGFuZCByZXNldCBpbiBicm93c2VycyB0aGF0IGhhdmUgZGVmYXVsdCBzdHlsZXMgZm9yIHRoZW0uXG5AbWl4aW4gcmVzZXQtaHRtbDUge1xuICAje2VsZW1lbnRzLW9mLXR5cGUoaHRtbDUtYmxvY2spfSB7XG4gICAgZGlzcGxheTogYmxvY2s7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGRpc3BsYXkgb2YgaW5saW5lIGFuZCBibG9jayBlbGVtZW50cyB0byB0aGVpciBkZWZhdWx0IGRpc3BsYXlcbi8vIGFjY29yZGluZyB0byB0aGVpciB0YWcgdHlwZS4gRWxlbWVudHMgdGhhdCBoYXZlIGEgZGVmYXVsdCBkaXNwbGF5IHRoYXQgdmFyaWVzIGFjcm9zc1xuLy8gdmVyc2lvbnMgb2YgaHRtbCBvciBicm93c2VyIGFyZSBub3QgaGFuZGxlZCBoZXJlLCBidXQgdGhpcyBjb3ZlcnMgdGhlIDkwJSB1c2UgY2FzZS5cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIC8vIFR1cm4gb2ZmIHRoZSBkaXNwbGF5IGZvciBib3RoIG9mIHRoZXNlIGNsYXNzZXNcbi8vICAgICAudW5yZWdpc3RlcmVkLW9ubHksIC5yZWdpc3RlcmVkLW9ubHlcbi8vICAgICAgIGRpc3BsYXk6IG5vbmVcbi8vICAgICAvLyBOb3cgdHVybiBvbmx5IG9uZSBvZiB0aGVtIGJhY2sgb24gZGVwZW5kaW5nIG9uIHNvbWUgb3RoZXIgY29udGV4dC5cbi8vICAgICBib2R5LnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnJlZ2lzdGVyZWQtb25seVwiKVxuLy8gICAgIGJvZHkudW5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi51bnJlZ2lzdGVyZWQtb25seVwiKVxuQG1peGluIHJlc2V0LWRpc3BsYXkoJHNlbGVjdG9yOiBcIlwiLCAkaW1wb3J0YW50OiBmYWxzZSkge1xuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiaW5saW5lXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7IH0gfVxuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiYmxvY2tcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG4iLCIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfSIsIi8vIG1ha2VzIGEgbGlzdCBpbmxpbmUuXG5cbkBtaXhpbiBpbmxpbmUtbGlzdCB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgJiwgJiBsaSB7XG4gICAgbWFyZ2luOiAwcHg7XG4gICAgcGFkZGluZzogMHB4O1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgfVxufVxuXG4vLyBtYWtlcyBhbiBpbmxpbmUgbGlzdCBkZWxpbWl0ZWQgd2l0aCB0aGUgcGFzc2VkIHN0cmluZy5cbi8vIERlZmF1bHRzIHRvIG1ha2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LlxuLy9cbi8vIFBsZWFzZSBtYWtlIG5vdGUgb2YgdGhlIGJyb3dzZXIgc3VwcG9ydCBpc3N1ZXMgYmVmb3JlIHVzaW5nIHRoaXMgbWl4aW46XG4vL1xuLy8gdXNlIG9mIGBjb250ZW50YCBhbmQgYDphZnRlcmAgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZCBpbiBhbGwgYnJvd3NlcnMuXG4vLyBTZWUgcXVpcmtzbW9kZSBmb3IgdGhlIFtzdXBwb3J0IG1hdHJpeF0oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MTUpXG4vL1xuLy8gYDpsYXN0LWNoaWxkYCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkLlxuLy8gc2VlIHF1aXJrc21vZGUgZm9yIHRoZSBbc3VwcG9ydCBtYXRyaXhdKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDI5KS5cbi8vXG4vLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4vLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcblxuQG1peGluIGRlbGltaXRlZC1saXN0KCRzZXBhcmF0b3I6IFwiLCBcIikge1xuICBAaW5jbHVkZSBpbmxpbmUtbGlzdDtcbiAgbGkge1xuICAgICY6YWZ0ZXIgeyBjb250ZW50OiAkc2VwYXJhdG9yOyB9XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICY6YWZ0ZXIgeyBjb250ZW50OiBcIlwiOyB9XG4gICAgfVxuICAgICYubGFzdCB7XG4gICAgICAmOmFmdGVyIHsgY29udGVudDogXCJcIjsgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBTZWUgW2RlbGltaXRlZC1saXN0XSgjbWl4aW4tZGVsaW1pdGVkLWxpc3QpXG4vLyBAZGVwcmVjYXRlZFxuQG1peGluIGNvbW1hLWRlbGltaXRlZC1saXN0IHtcbiAgQHdhcm4gXCJjb21tYS1kZWxpbWl0ZWQtbGlzdCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGRlbGltaXRlZC1saXN0IGluc3RlYWQuXCI7XG4gIEBpbmNsdWRlIGRlbGltaXRlZC1saXN0O1xufVxuIiwiLy8gSW5saW5lLUJsb2NrIGxpc3QgbGF5b3V0IG1vZHVsZS5cbi8vXG4vLyBFYXN5IG1vZGUgdXNpbmcgc2ltcGxlIGRlc2NlbmRhbnQgbGkgc2VsZWN0b3JzOlxuLy9cbi8vICAgICB1bC5uYXYge1xuLy8gICAgICAgQGltcG9ydCBpbmxpbmUtYmxvY2stbGlzdDtcbi8vICAgICB9XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gYEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcmAgb24geW91ciB1bC9vbCBhbmRcbi8vIGBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtYCBvbiB5b3VyIGxpLiBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZ1xuLy8gb24gbGF5b3V0cyBpbnZvbHZpbmcgbmVzdGVkIGxpc3RzLiBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgICAgdWwubmF2IHtcbi8vICAgICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcjtcbi8vICAgICAgID4gbGkge1xuLy8gICAgICAgICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtO1xuLy8gICAgICAgfVxuLy8gICAgIH1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCJob3Jpem9udGFsLWxpc3RcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9mbG9hdFwiO1xuQGltcG9ydCBcIi4uLy4uL2NzczMvaW5saW5lLWJsb2NrXCI7XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBzZWxlY3RvciB0aGF0IHRhcmdldCBhIHVsIG9yIG9sIHRoYXQgaXMgbWVhbnRcbi8vIHRvIGhhdmUgYW4gaW5saW5lLWJsb2NrIGxheW91dC4gVXNlZCB0byBpbXBsZW1lbnQgYGlubGluZS1ibG9jay1saXN0YC5cbkBtaXhpbiBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyOyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCBgaW5saW5lLWJsb2NrLWxpc3RgLlxuQG1peGluIGlubGluZS1ibG9jay1saXN0LWl0ZW0oJHBhZGRpbmc6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIG5vLWJ1bGxldDtcbiAgQGluY2x1ZGUgaW5saW5lLWJsb2NrO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nO1xuICAgIH07XG4gIH1cbn1cblxuLy8gQSBsaXN0KG9sLHVsKSB0aGF0IGlzIGxheWVkIG91dCBzdWNoIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSBpbmxpbmUtYmxvY2sgYW5kIHdvbid0IHdyYXAuXG5AbWl4aW4gaW5saW5lLWJsb2NrLWxpc3QoJHBhZGRpbmc6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcjtcbiAgbGkge1xuICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWl0ZW0oJHBhZGRpbmcpOyB9IH1cbiIsIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZSA6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZSAgOiBub25lO1xuICBtYXJnaW4tbGVmdCAgICAgIDogMDtcbn1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7IEBpbmNsdWRlIG5vLWJ1bGxldDsgfVxufVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIgKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMjtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIH1cbn1cbiIsIi8vIEhvcml6b250YWwgbGlzdCBsYXlvdXQgbW9kdWxlLlxuLy9cbi8vIEVhc3kgbW9kZSB1c2luZyBzaW1wbGUgZGVzY2VuZGFudCBsaSBzZWxlY3RvcnM6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gK2hvcml6b250YWwtbGlzdC1jb250YWluZXIgb24geW91ciB1bC9vbCBhbmQgK2hvcml6b250YWwtbGlzdC1pdGVtIG9uIHlvdXIgbGkuXG4vLyBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZyBvbiBsYXlvdXRzIGludm9sdmluZyBuZXN0ZWQgbGlzdHMuIEZvciBleGFtcGxlOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdC1jb250YWluZXJcbi8vICAgICA+IGxpXG4vLyAgICAgICAraG9yaXpvbnRhbC1saXN0LWl0ZW1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL3Jlc2V0XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvZmxvYXRcIjtcblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IHNlbGVjdG9yIHRoYXQgdGFyZ2V0IGEgdWwgb3Igb2wgdGhhdCBpcyBtZWFudFxuLy8gdG8gaGF2ZSBhIGhvcml6b250YWwgbGF5b3V0LiBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuQG1peGluIGhvcml6b250YWwtbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gIEBpbmNsdWRlIGNsZWFyZml4OyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuLy9cbi8vIDpsYXN0LWNoaWxkIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWRcbi8vIHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QyOSBmb3IgdGhlIHN1cHBvcnQgbWF0cml4XG4vL1xuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBuby1idWxsZXQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIEBpbmNsdWRlIGZsb2F0KCRkaXJlY3Rpb24pO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nO1xuICAgIH1cbiAgICAmOmZpcnN0LWNoaWxkLCAmLmZpcnN0IHsgcGFkZGluZy0jeyRkaXJlY3Rpb259OiAwOyB9XG4gICAgJjpsYXN0LWNoaWxkIHsgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfVxuICAgICYubGFzdCB7IHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH1cbiAgfVxufVxuXG4vLyBBIGxpc3Qob2wsdWwpIHRoYXQgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgZWxlbWVudHMgYXJlIGZsb2F0ZWQgbGVmdCBhbmQgd29uJ3Qgd3JhcC5cbi8vIFRoaXMgaXMgbm90IGFuIGlubGluZSBsaXN0LlxuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdCgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1jb250YWluZXI7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZywgJGRpcmVjdGlvbik7IH0gfVxuIiwiLy8gVHVybiBvZmYgdGhlIGJ1bGxldCBmb3IgYW4gZWxlbWVudCBvZiBhIGxpc3RcbkBtaXhpbiBuby1idWxsZXQge1xuICBsaXN0LXN0eWxlLWltYWdlIDogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlICA6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0ICAgICAgOiAwO1xufVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHsgQGluY2x1ZGUgbm8tYnVsbGV0OyB9XG59XG5cbi8vIE1ha2UgYSBsaXN0KHVsL29sKSBoYXZlIGFuIGltYWdlIGJ1bGxldC5cbi8vXG4vLyBUaGUgbWl4aW4gc2hvdWxkIGJlIHVzZWQgbGlrZSB0aGlzIGZvciBhbiBpY29uIHRoYXQgaXMgNXg3OlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIsIDVweCwgN3B4KVxuLy9cbi8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIGltYWdlIGRpbWVuc2lvbnMgYXJlIG5vdCBwcm92aWRlZCxcbi8vIFRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGltYWdlIGl0c2VsZi5cbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiKVxuLy9cbkBtaXhpbiBwcmV0dHktYnVsbGV0cygkYnVsbGV0LWljb24sICR3aWR0aDogaW1hZ2Utd2lkdGgoJGJ1bGxldC1pY29uKSwgJGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRidWxsZXQtaWNvbiksICRsaW5lLWhlaWdodDogMThweCwgJHBhZGRpbmc6IDE0cHgpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkYnVsbGV0LWljb24pIG5vLXJlcGVhdCAoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMiAoJGxpbmUtaGVpZ2h0IC0gJGhlaWdodCkgLyAyO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgfVxufVxuIiwiLy8gQGRvYyBvZmZcbi8vIEV4dGVuZHMgdGhlIGJvdHRvbSBvZiB0aGUgZWxlbWVudCB0byBlbmNsb3NlIGFueSBmbG9hdHMgaXQgY29udGFpbnMuXG4vLyBAZG9jIG9uXG5cbkBpbXBvcnQgXCJoYWNrc1wiO1xuXG4vLyBUaGlzIGJhc2ljIG1ldGhvZCBpcyBwcmVmZXJyZWQgZm9yIHRoZSB1c3VhbCBjYXNlLCB3aGVuIHBvc2l0aW9uZWRcbi8vIGNvbnRlbnQgd2lsbCBub3Qgc2hvdyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lci5cbi8vXG4vLyBSZWNvbW1lbmRhdGlvbnMgaW5jbHVkZSB1c2luZyB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYSB3aWR0aC5cbi8vIENyZWRpdDogW3F1aXJrc21vZGUub3JnXShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAwNS8wMy9jbGVhcmluZ19mbG9hdHMuaHRtbClcbkBtaXhpbiBjbGVhcmZpeCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgb2xkZXIgbWV0aG9kIGZyb20gUG9zaXRpb24gSXMgRXZlcnl0aGluZyBjYWxsZWRcbi8vIFtFYXN5IENsZWFyaW5nXShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9lYXN5Y2xlYXJpbmcuaHRtbClcbi8vIGhhcyB0aGUgYWR2YW50YWdlIG9mIGFsbG93aW5nIHBvc2l0aW9uZWQgZWxlbWVudHMgdG8gaGFuZ1xuLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIgYXQgdGhlIGV4cGVuc2Ugb2YgbW9yZSB0cmlja3kgQ1NTLlxuQG1peGluIGxlZ2FjeS1waWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50ICAgIDogXCJcXDAwMjBcIjtcbiAgICBkaXNwbGF5ICAgIDogYmxvY2s7XG4gICAgaGVpZ2h0ICAgICA6IDA7XG4gICAgY2xlYXIgICAgICA6IGJvdGg7XG4gICAgb3ZlcmZsb3cgICA6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5IDogaGlkZGVuO1xuICB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgaXMgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBQSUUgY2xlYXJmaXggbWV0aG9kIHRoYXQgcmVkdWNlcyB0aGUgYW1vdW50IG9mIENTUyBvdXRwdXQuXG4vLyBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IEZpcmVmb3ggYmVmb3JlIDMuNSB5b3UgbmVlZCB0byB1c2UgYGxlZ2FjeS1waWUtY2xlYXJmaXhgIGluc3RlYWQuXG4vL1xuLy8gQWRhcHRlZCBmcm9tOiBbQSBuZXcgbWljcm8gY2xlYXJmaXggaGFja10oaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svKVxuQG1peGluIHBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cbiIsIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9IEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTtcbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYgeyBkaXNwbGF5OiBibG9jazsgfVxuICB9XG59XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTtcbiAgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCIvLyBUaGlzIG1vZHVsZSBoYXMgbW92ZWQuXG5AaW1wb3J0IFwiLi4vLi4vcmVzZXQvdXRpbGl0aWVzXCI7XG4iLCIvLyBCYXNlZCBvbiBbRXJpYyBNZXllcidzIHJlc2V0IDIuMF0oaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9pbmRleC5odG1sKVxuLy8gR2xvYmFsIHJlc2V0IHJ1bGVzLlxuLy8gRm9yIG1vcmUgc3BlY2lmaWMgcmVzZXRzLCB1c2UgdGhlIHJlc2V0IG1peGlucyBwcm92aWRlZCBiZWxvd1xuQG1peGluIGdsb2JhbC1yZXNldCB7XG4gIGh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLCBcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgLy8gVW5saWtlIEVyaWMncyBvcmlnaW5hbCByZXNldCwgd2UgcmVzZXQgdGhlIGh0bWwgZWxlbWVudCB0byBiZSBjb21wYXRpYmxlXG4gIC8vIHdpdGggdGhlIHZlcnRpY2FsIHJoeXRobSBtaXhpbnMuXG4gIGh0bWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJvZHk7IH1cbiAgb2wsIHVsIHtcbiAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlOyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9XG4gIEBpbmNsdWRlIHJlc2V0LWh0bWw1OyB9XG5cbi8vIFJlc2V0IGFsbCBlbGVtZW50cyB3aXRoaW4gc29tZSBzZWxlY3RvciBzY29wZS4gVG8gcmVzZXQgdGhlIHNlbGVjdG9yIGl0c2VsZixcbi8vIG1peGluIHRoZSBhcHByb3ByaWF0ZSByZXNldCBtaXhpbiBmb3IgdGhhdCBlbGVtZW50IHR5cGUgYXMgd2VsbC4gVGhpcyBjb3VsZCBiZVxuLy8gdXNlZnVsIGlmIHlvdSB3YW50IHRvIHN0eWxlIGEgcGFydCBvZiB5b3VyIHBhZ2UgaW4gYSBkcmFtYXRpY2FsbHkgZGlmZmVyZW50IHdheS5cbkBtaXhpbiBuZXN0ZWQtcmVzZXQge1xuICBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCwgXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9IH1cblxuLy8gUmVzZXQgdGhlIGJveCBtb2RlbCBtZWFzdXJlbWVudHMuXG5AbWl4aW4gcmVzZXQtYm94LW1vZGVsIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7IH1cblxuLy8gUmVzZXQgdGhlIGZvbnQgYW5kIHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiByZXNldC1mb250IHtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLy8gUmVzZXRzIHRoZSBvdXRsaW5lIHdoZW4gZm9jdXMuXG4vLyBGb3IgYWNjZXNzaWJpbGl0eSB5b3UgbmVlZCB0byBhcHBseSBzb21lIHN0eWxpbmcgaW4gaXRzIHBsYWNlLlxuQG1peGluIHJlc2V0LWZvY3VzIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vLyBSZXNldCBhIGJvZHkgZWxlbWVudC5cbkBtaXhpbiByZXNldC1ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDE7IH1cblxuLy8gUmVzZXQgdGhlIGxpc3Qgc3R5bGUgb2YgYW4gZWxlbWVudC5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4vLyBSZXNldCBhIHRhYmxlXG5AbWl4aW4gcmVzZXQtdGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG4vLyBSZXNldCBhIHRhYmxlIGNlbGwgKGB0aGAsIGB0ZGApXG5AbWl4aW4gcmVzZXQtdGFibGUtY2VsbCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLy8gUmVzZXQgYSBxdW90YXRpb24gKGBxYCwgYGJsb2NrcXVvdGVgKVxuQG1peGluIHJlc2V0LXF1b3RhdGlvbiB7XG4gIHF1b3Rlczogbm9uZTtcbiAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7IFxuICAgIGNvbnRlbnQ6IG5vbmU7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGJvcmRlci5cbkBtaXhpbiByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyIHtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi8vIFVucmVjb2duaXplZCBlbGVtZW50cyBhcmUgZGlzcGxheWVkIGlubGluZS5cbi8vIFRoaXMgcmVzZXQgcHJvdmlkZXMgYSBiYXNpYyByZXNldCBmb3IgYmxvY2sgaHRtbDUgZWxlbWVudHNcbi8vIHNvIHRoZXkgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBpbiBicm93c2VycyB0aGF0IGRvbid0IHJlY29nbml6ZSB0aGVtXG4vLyBhbmQgcmVzZXQgaW4gYnJvd3NlcnMgdGhhdCBoYXZlIGRlZmF1bHQgc3R5bGVzIGZvciB0aGVtLlxuQG1peGluIHJlc2V0LWh0bWw1IHtcbiAgI3tlbGVtZW50cy1vZi10eXBlKGh0bWw1LWJsb2NrKX0ge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBkaXNwbGF5IG9mIGlubGluZSBhbmQgYmxvY2sgZWxlbWVudHMgdG8gdGhlaXIgZGVmYXVsdCBkaXNwbGF5XG4vLyBhY2NvcmRpbmcgdG8gdGhlaXIgdGFnIHR5cGUuIEVsZW1lbnRzIHRoYXQgaGF2ZSBhIGRlZmF1bHQgZGlzcGxheSB0aGF0IHZhcmllcyBhY3Jvc3Ncbi8vIHZlcnNpb25zIG9mIGh0bWwgb3IgYnJvd3NlciBhcmUgbm90IGhhbmRsZWQgaGVyZSwgYnV0IHRoaXMgY292ZXJzIHRoZSA5MCUgdXNlIGNhc2UuXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICAvLyBUdXJuIG9mZiB0aGUgZGlzcGxheSBmb3IgYm90aCBvZiB0aGVzZSBjbGFzc2VzXG4vLyAgICAgLnVucmVnaXN0ZXJlZC1vbmx5LCAucmVnaXN0ZXJlZC1vbmx5XG4vLyAgICAgICBkaXNwbGF5OiBub25lXG4vLyAgICAgLy8gTm93IHR1cm4gb25seSBvbmUgb2YgdGhlbSBiYWNrIG9uIGRlcGVuZGluZyBvbiBzb21lIG90aGVyIGNvbnRleHQuXG4vLyAgICAgYm9keS5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi5yZWdpc3RlcmVkLW9ubHlcIilcbi8vICAgICBib2R5LnVucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIudW5yZWdpc3RlcmVkLW9ubHlcIilcbkBtaXhpbiByZXNldC1kaXNwbGF5KCRzZWxlY3RvcjogXCJcIiwgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImlubGluZVwiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogaW5saW5lOyB9IH1cbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImJsb2NrXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH0iLCIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfSIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gU2V0IGAkaW5saW5lLWJsb2NrLWFsaWdubWVudGAgdG8gYG5vbmVgIG9yIGBmYWxzZWAgdG8gZGlzYWJsZSB0aGUgb3V0cHV0XG4vLyBvZiBhIHZlcnRpY2FsLWFsaWduIHByb3BlcnR5IGluIHRoZSBpbmxpbmUtYmxvY2sgbWl4aW4uXG4vLyBPciBzZXQgaXQgdG8gYSBsZWdhbCB2YWx1ZSBmb3IgYHZlcnRpY2FsLWFsaWduYCB0byBjaGFuZ2UgdGhlIGRlZmF1bHQuXG4kaW5saW5lLWJsb2NrLWFsaWdubWVudDogbWlkZGxlICFkZWZhdWx0O1xuXG4vLyBQcm92aWRlcyBhIGNyb3NzLWJyb3dzZXIgbWV0aG9kIHRvIGltcGxlbWVudCBgZGlzcGxheTogaW5saW5lLWJsb2NrO2BcbkBtaXhpbiBpbmxpbmUtYmxvY2soJGFsaWdubWVudDogJGlubGluZS1ibG9jay1hbGlnbm1lbnQpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgZGlzcGxheTogLW1vei1pbmxpbmUtc3RhY2s7XG4gIH1cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBAaWYgJGFsaWdubWVudCBhbmQgJGFsaWdubWVudCAhPSBub25lIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogJGFsaWdubWVudDtcbiAgfVxuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgKnZlcnRpY2FsLWFsaWduOiBhdXRvO1xuICAgIHpvb206IDE7XG4gICAgKmRpc3BsYXk6IGlubGluZTtcbiAgfVxufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZSA6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZSAgOiBub25lO1xuICBtYXJnaW4tbGVmdCAgICAgIDogMDtcbn1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7IEBpbmNsdWRlIG5vLWJ1bGxldDsgfVxufVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIgKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMjtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCJ0ZXh0L2VsbGlwc2lzXCI7XG5AaW1wb3J0IFwidGV4dC9ub3dyYXBcIjtcbkBpbXBvcnQgXCJ0ZXh0L3JlcGxhY2VtZW50XCI7XG5AaW1wb3J0IFwidGV4dC9mb3JjZS13cmFwXCI7XG4iLCJAaW1wb3J0IFwiLi4vLi4vY3NzMy9zaGFyZWRcIjtcblxuLy8gVG8gZ2V0IGZ1bGwgZmlyZWZveCBzdXBwb3J0LCB5b3UgbXVzdCBpbnN0YWxsIHRoZSBlbGxpcHNpcyBwYXR0ZXJuOlxuLy9cbi8vICAgICBjb21wYXNzIGluc3RhbGwgY29tcGFzcy9lbGxpcHNpc1xuJHVzZS1tb3ppbGxhLWVsbGlwc2lzLWJpbmRpbmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBUaGlzIHRlY2huaXF1ZSwgYnkgW0p1c3RpbiBNYXh3ZWxsXShodHRwOi8vY29kZTQwNC5jb20vKSwgd2FzIG9yaWdpbmFsbHlcbi8vIHB1Ymxpc2hlZCBbaGVyZV0oaHR0cDovL21hdHRzbmlkZXIuY29tL2Nzcy9jc3Mtc3RyaW5nLXRydW5jYXRpb24td2l0aC1lbGxpcHNpcy8pLlxuLy8gRmlyZWZveCBpbXBsZW1lbnRhdGlvbiBieSBbUmlra2VydCBLb3BwZXNdKGh0dHA6Ly93d3cucmlra2VydGtvcHBlcy5jb20vdGhvdWdodHMvMjAwOC82LykuXG5AbWl4aW4gZWxsaXBzaXMoJG5vLXdyYXA6IHRydWUpIHtcbiAgQGlmICRuby13cmFwIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodGV4dC1vdmVyZmxvdywgZWxsaXBzaXMsXG4gICAgbm90KC1tb3opLFxuICAgIG5vdCgtd2Via2l0KSxcbiAgICAtbyxcbiAgICAtbXMsXG4gICAgbm90KC1raHRtbCksXG4gICAgb2ZmaWNpYWxcbiAgKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgJHVzZS1tb3ppbGxhLWVsbGlwc2lzLWJpbmRpbmcge1xuICAgIC1tb3otYmluZGluZzogc3R5bGVzaGVldC11cmwodW5xdW90ZShcInhtbC9lbGxpcHNpcy54bWwjZWxsaXBzaXNcIikpO1xuICB9XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiLy8gV2hlbiByZW1lbWJlcmluZyB3aGV0aGVyIG9yIG5vdCB0aGVyZSdzIGEgaHlwaGVuIGluIHdoaXRlLXNwYWNlIGlzIHRvbyBoYXJkXG5AbWl4aW4gbm93cmFwIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuIiwiLy8gSW5kaWNhdGVzIHRoZSBkaXJlY3Rpb24geW91IHByZWZlciB0byBtb3ZlIHlvdXIgdGV4dFxuLy8gd2hlbiBoaWRpbmcgaXQuXG4vL1xuLy8gYGxlZnRgIGlzIG1vcmUgcm9idXN0LCBlc3BlY2lhbGx5IGluIG9sZGVyIGJyb3dzZXJzLlxuLy8gYHJpZ2h0YCBzZWVtcyBoYXZlIGJldHRlciBydW50aW1lIHBlcmZvcm1hbmNlLlxuJGhpZGUtdGV4dC1kaXJlY3Rpb246IGxlZnQgIWRlZmF1bHQ7XG5cbi8vIEhpZGVzIGh0bWwgdGV4dCBhbmQgcmVwbGFjZXMgaXQgd2l0aCBhbiBpbWFnZS5cbi8vIElmIHlvdSB1c2UgdGhpcyBvbiBhbiBpbmxpbmUgZWxlbWVudCwgeW91IHdpbGwgbmVlZCB0byBjaGFuZ2UgdGhlIGRpc3BsYXkgdG8gYmxvY2sgb3IgaW5saW5lLWJsb2NrLlxuLy8gQWxzbywgaWYgdGhlIHNpemUgb2YgdGhlIGltYWdlIGRpZmZlcnMgc2lnbmlmaWNhbnRseSBmcm9tIHRoZSBmb250IHNpemUsIHlvdSdsbCBuZWVkIHRvIHNldCB0aGUgd2lkdGggYW5kL29yIGhlaWdodC5cbi8vXG4vLyBQYXJhbWV0ZXJzOlxuLy9cbi8vICogYGltZ2AgLS0gdGhlIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgcHJvamVjdCBpbWFnZSBkaXJlY3RvcnkgdG8gdGhlIGltYWdlLCBvciBhIHVybCBsaXRlcmFsLlxuLy8gKiBgeGAgLS0gdGhlIHggcG9zaXRpb24gb2YgdGhlIGJhY2tncm91bmQgaW1hZ2UuXG4vLyAqIGB5YCAtLSB0aGUgeSBwb3NpdGlvbiBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZS5cbkBtaXhpbiByZXBsYWNlLXRleHQoJGltZywgJHg6IDUwJSwgJHk6IDUwJSkge1xuICBAaW5jbHVkZSBoaWRlLXRleHQ7XG4gIGJhY2tncm91bmQ6IHtcbiAgICBAaWYgaXMtdXJsKCRpbWcpIHtcbiAgICAgIGltYWdlOiB1cmwoJGltZyk7XG4gICAgfSBAZWxzZSB7XG4gICAgICBpbWFnZTogaW1hZ2UtdXJsKCRpbWcpO1xuICAgIH1cbiAgICByZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBwb3NpdGlvbjogJHggJHk7XG4gIH07XG59XG5cbi8vIExpa2UgdGhlIGByZXBsYWNlLXRleHRgIG1peGluLCBidXQgYWxzbyBzZXRzIHRoZSB3aWR0aFxuLy8gYW5kIGhlaWdodCBvZiB0aGUgZWxlbWVudCBhY2NvcmRpbmcgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGltYWdlLlxuLy9cbi8vIElmIHlvdSBzZXQgYCRpbmxpbmVgIHRvIHRydWUsIHRoZW4gYW4gaW5saW5lIGltYWdlIChkYXRhIHVyaSkgd2lsbCBiZSB1c2VkLlxuQG1peGluIHJlcGxhY2UtdGV4dC13aXRoLWRpbWVuc2lvbnMoJGltZywgJHg6IDUwJSwgJHk6IDUwJSwgJGlubGluZTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgcmVwbGFjZS10ZXh0KGlmKCRpbmxpbmUsIGlubGluZS1pbWFnZSgkaW1nKSwgJGltZyksICR4LCAkeSk7XG4gIHdpZHRoOiBpbWFnZS13aWR0aCgkaW1nKTtcbiAgaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGltZyk7XG59XG5cbi8vIEhpZGVzIHRleHQgaW4gYW4gZWxlbWVudCBzbyB5b3UgY2FuIHNlZSB0aGUgYmFja2dyb3VuZC5cbi8vXG4vLyBUaGUgZGlyZWN0aW9uIGluZGljYXRlcyBob3cgdGhlIHRleHQgc2hvdWxkIGJlIG1vdmVkIG91dCBvZiB2aWV3LlxuLy9cbi8vIFNlZSBgJGhpZGUtdGV4dC1kaXJlY3Rpb25gIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCB0byBzZXQgdGhpcyBnbG9iYWxseVxuLy8gZm9yIHlvdXIgYXBwbGljYXRpb24uXG5AbWl4aW4gaGlkZS10ZXh0KCRkaXJlY3Rpb246ICRoaWRlLXRleHQtZGlyZWN0aW9uKSB7XG4gIEBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICRhcHByb3hpbWF0ZS1lbS12YWx1ZTogMTJweDtcbiAgICAkd2lkZXItdGhhbi1hbnktc2NyZWVuOiAtOTk5OTtcbiAgICB0ZXh0LWluZGVudDogJHdpZGVyLXRoYW4tYW55LXNjcmVlbiAqICRhcHByb3hpbWF0ZS1lbS12YWx1ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gIH0gQGVsc2Uge1xuICAgIC8vIHNsaWdodGx5IHdpZGVyIHRoYW4gdGhlIGJveCBwcmV2ZW50cyBpc3N1ZXMgd2l0aCBpbmxpbmUtYmxvY2sgZWxlbWVudHNcbiAgICB0ZXh0LWluZGVudDogMTEwJTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbn1cblxuLy8gSGlkZXMgdGV4dCBpbiBhbiBlbGVtZW50IGJ5IHNxdWlzaGluZyB0aGUgdGV4dCBpbnRvIG9ibGl2aW9uLlxuLy8gVXNlIHRoaXMgaWYgeW91IG5lZWQgdG8gaGlkZSB0ZXh0IGNvbnRhaW5lZCBpbiBhbiBpbmxpbmUgZWxlbWVudFxuLy8gYnV0IHN0aWxsIGhhdmUgaXQgcmVhZCBieSBhIHNjcmVlbiByZWFkZXIuXG5AbWl4aW4gc3F1aXNoLXRleHQge1xuICBmb250OiAwLzAgc2VyaWY7XG4gIHRleHQtc2hhZG93OiBub25lO1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4iLCIvLyBQcmV2ZW50IGxvbmcgdXJscyBhbmQgdGV4dCBmcm9tIGJyZWFraW5nIGxheW91dHNcbi8vIFtvcmlnaW5hbGx5IGZyb20gcGVyaXNoYWJsZXByZXNzLmNvbV0oaHR0cDovL3BlcmlzaGFibGVwcmVzcy5jb20vcHJlc3MvMjAxMC8wNi8wMS93cmFwcGluZy1jb250ZW50LylcbkBtaXhpbiBmb3JjZS13cmFwIHtcbiAgd2hpdGUtc3BhY2U6IHByZTsgICAgICAgICAgIC8vIENTUyAyLjBcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwOyAgICAgIC8vIENTUyAyLjFcbiAgd2hpdGUtc3BhY2U6IHByZS1saW5lOyAgICAgIC8vIENTUyAzLjBcbiAgd2hpdGUtc3BhY2U6IC1wcmUtd3JhcDsgICAgIC8vIE9wZXJhIDQtNlxuICB3aGl0ZS1zcGFjZTogLW8tcHJlLXdyYXA7ICAgLy8gT3BlcmEgN1xuICB3aGl0ZS1zcGFjZTogLW1vei1wcmUtd3JhcDsgLy8gTW96aWxsYVxuICB3aGl0ZS1zcGFjZTogLWhwLXByZS13cmFwOyAgLy8gSFAgUHJpbnRlcnNcbiAgd29yZC13cmFwOiBicmVhay13b3JkOyAgICAgIC8vIElFIDUrXG59XG4iLCJAaW1wb3J0IFwidHlwb2dyYXBoeS9saW5rc1wiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvbGlzdHNcIjtcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L3RleHRcIjtcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L3ZlcnRpY2FsX3JoeXRobVwiO1xuIiwiQGltcG9ydCBcImxpbmtzL2hvdmVyLWxpbmtcIjtcbkBpbXBvcnQgXCJsaW5rcy9saW5rLWNvbG9yc1wiO1xuQGltcG9ydCBcImxpbmtzL3Vuc3R5bGVkLWxpbmtcIjtcbiIsIi8vIGEgbGluayB0aGF0IG9ubHkgaGFzIGFuIHVuZGVybGluZSB3aGVuIHlvdSBob3ZlciBvdmVyIGl0XG5AbWl4aW4gaG92ZXItbGluayB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgJjpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0gfVxuIiwiLy8gU2V0IGFsbCB0aGUgY29sb3JzIGZvciBhIGxpbmsgd2l0aCBvbmUgbWl4aW4gY2FsbC5cbi8vIE9yZGVyIG9mIGFyZ3VtZW50cyBpczpcbi8vXG4vLyAxLiBub3JtYWxcbi8vIDIuIGhvdmVyXG4vLyAzLiBhY3RpdmVcbi8vIDQuIHZpc2l0ZWRcbi8vIDUuIGZvY3VzXG4vL1xuLy8gVGhvc2Ugc3RhdGVzIG5vdCBzcGVjaWZpZWQgd2lsbCBpbmhlcml0LlxuLy8gTWl4aW4gdG8gYW4gYW5jaG9yIGxpbmsgbGlrZSBzbzpcbi8vICAgICBhXG4vLyAgICAgICArbGluay1jb2xvcnMoIzAwYywgIzBjYywgI2MwYywgI2NjYywgI2NjMClcblxuQG1peGluIGxpbmstY29sb3JzKCRub3JtYWwsICRob3ZlcjogZmFsc2UsICRhY3RpdmU6IGZhbHNlLCAkdmlzaXRlZDogZmFsc2UsICRmb2N1czogZmFsc2UpIHtcbiAgY29sb3I6ICRub3JtYWw7XG4gIEBpZiAkdmlzaXRlZCB7XG4gICAgJjp2aXNpdGVkIHtcbiAgICAgIGNvbG9yOiAkdmlzaXRlZDsgfSB9XG4gIEBpZiAkZm9jdXMge1xuICAgICY6Zm9jdXMge1xuICAgICAgY29sb3I6ICRmb2N1czsgfSB9XG4gIEBpZiAkaG92ZXIge1xuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICRob3ZlcjsgfSB9XG4gIEBpZiAkYWN0aXZlIHtcbiAgICAmOmFjdGl2ZSB7XG4gICAgICBjb2xvcjogJGFjdGl2ZTsgfSB9IH1cbiIsIi8vIEEgbGluayB0aGF0IGxvb2tzIGFuZCBhY3RzIGxpa2UgdGhlIHRleHQgaXQgaXMgY29udGFpbmVkIHdpdGhpblxuQG1peGluIHVuc3R5bGVkLWxpbmsge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0O1xuICBjdXJzb3I6IGluaGVyaXQ7XG4gICY6YWN0aXZlLCAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lOyB9IH1cbiIsIkBpbXBvcnQgXCJsaXN0cy9ob3Jpem9udGFsLWxpc3RcIjtcbkBpbXBvcnQgXCJsaXN0cy9pbmxpbmUtbGlzdFwiO1xuQGltcG9ydCBcImxpc3RzL2lubGluZS1ibG9jay1saXN0XCI7XG5AaW1wb3J0IFwibGlzdHMvYnVsbGV0c1wiO1xuIiwiLy8gSG9yaXpvbnRhbCBsaXN0IGxheW91dCBtb2R1bGUuXG4vL1xuLy8gRWFzeSBtb2RlIHVzaW5nIHNpbXBsZSBkZXNjZW5kYW50IGxpIHNlbGVjdG9yczpcbi8vXG4vLyAgIHVsLm5hdlxuLy8gICAgICtob3Jpem9udGFsLWxpc3Rcbi8vXG4vLyBBZHZhbmNlZCBtb2RlOlxuLy8gSWYgeW91IG5lZWQgdG8gdGFyZ2V0IHRoZSBsaXN0IGl0ZW1zIHVzaW5nIGEgZGlmZmVyZW50IHNlbGVjdG9yIHRoZW4gdXNlXG4vLyAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciBvbiB5b3VyIHVsL29sIGFuZCAraG9yaXpvbnRhbC1saXN0LWl0ZW0gb24geW91ciBsaS5cbi8vIFRoaXMgbWF5IGhlbHAgd2hlbiB3b3JraW5nIG9uIGxheW91dHMgaW52b2x2aW5nIG5lc3RlZCBsaXN0cy4gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lclxuLy8gICAgID4gbGlcbi8vICAgICAgICtob3Jpem9udGFsLWxpc3QtaXRlbVxuXG5AaW1wb3J0IFwiYnVsbGV0c1wiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2NsZWFyZml4XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvcmVzZXRcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9mbG9hdFwiO1xuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgc2VsZWN0b3IgdGhhdCB0YXJnZXQgYSB1bCBvciBvbCB0aGF0IGlzIG1lYW50XG4vLyB0byBoYXZlIGEgaG9yaXpvbnRhbCBsYXlvdXQuIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7IH1cblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IGxpIHNlbGVjdG9yIHRoYXQgaXMgbWVhbnQgdG8gcGFydGljaXBhdGUgaW4gYSBob3Jpem9udGFsIGxheW91dC5cbi8vIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG4vL1xuLy8gOmxhc3QtY2hpbGQgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZFxuLy8gc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDI5IGZvciB0aGUgc3VwcG9ydCBtYXRyaXhcbi8vXG4vLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4vLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcbi8vXG4vLyBTZXR0aW5nIGAkcGFkZGluZ2AgdG8gYGZhbHNlYCBkaXNhYmxlcyB0aGUgcGFkZGluZyBiZXR3ZWVuIGxpc3QgZWxlbWVudHNcbkBtaXhpbiBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIG5vLWJ1bGxldDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgQGluY2x1ZGUgZmxvYXQoJGRpcmVjdGlvbik7XG4gIEBpZiAkcGFkZGluZyB7XG4gICAgcGFkZGluZzoge1xuICAgICAgbGVmdDogJHBhZGRpbmc7XG4gICAgICByaWdodDogJHBhZGRpbmc7XG4gICAgfVxuICAgICY6Zmlyc3QtY2hpbGQsICYuZmlyc3QgeyBwYWRkaW5nLSN7JGRpcmVjdGlvbn06IDA7IH1cbiAgICAmOmxhc3QtY2hpbGQgeyBwYWRkaW5nLSN7b3Bwb3NpdGUtcG9zaXRpb24oJGRpcmVjdGlvbil9OiAwOyB9XG4gICAgJi5sYXN0IHsgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfVxuICB9XG59XG5cbi8vIEEgbGlzdChvbCx1bCkgdGhhdCBpcyBsYXllZCBvdXQgc3VjaCB0aGF0IHRoZSBlbGVtZW50cyBhcmUgZmxvYXRlZCBsZWZ0IGFuZCB3b24ndCB3cmFwLlxuLy8gVGhpcyBpcyBub3QgYW4gaW5saW5lIGxpc3QuXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0KCRwYWRkaW5nOiA0cHgsICRkaXJlY3Rpb246IGxlZnQpIHtcbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lcjtcbiAgbGkge1xuICAgIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1pdGVtKCRwYWRkaW5nLCAkZGlyZWN0aW9uKTsgfSB9XG4iLCIvLyBUdXJuIG9mZiB0aGUgYnVsbGV0IGZvciBhbiBlbGVtZW50IG9mIGEgbGlzdFxuQG1peGluIG5vLWJ1bGxldCB7XG4gIGxpc3Qtc3R5bGUtaW1hZ2UgOiBub25lO1xuICBsaXN0LXN0eWxlLXR5cGUgIDogbm9uZTtcbiAgbWFyZ2luLWxlZnQgICAgICA6IDA7XG59XG5cbi8vIHR1cm5zIG9mZiB0aGUgYnVsbGV0cyBmb3IgYW4gZW50aXJlIGxpc3RcbkBtaXhpbiBuby1idWxsZXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbGkgeyBAaW5jbHVkZSBuby1idWxsZXQ7IH1cbn1cblxuLy8gTWFrZSBhIGxpc3QodWwvb2wpIGhhdmUgYW4gaW1hZ2UgYnVsbGV0LlxuLy9cbi8vIFRoZSBtaXhpbiBzaG91bGQgYmUgdXNlZCBsaWtlIHRoaXMgZm9yIGFuIGljb24gdGhhdCBpcyA1eDc6XG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIiwgNXB4LCA3cHgpXG4vL1xuLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgaW1hZ2UgZGltZW5zaW9ucyBhcmUgbm90IHByb3ZpZGVkLFxuLy8gVGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmLlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIpXG4vL1xuQG1peGluIHByZXR0eS1idWxsZXRzKCRidWxsZXQtaWNvbiwgJHdpZHRoOiBpbWFnZS13aWR0aCgkYnVsbGV0LWljb24pLCAkaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGJ1bGxldC1pY29uKSwgJGxpbmUtaGVpZ2h0OiAxOHB4LCAkcGFkZGluZzogMTRweCkge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRidWxsZXQtaWNvbikgbm8tcmVwZWF0ICgkcGFkZGluZyAtICR3aWR0aCkgLyAyICgkbGluZS1oZWlnaHQgLSAkaGVpZ2h0KSAvIDI7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICB9XG59XG4iLCIvLyBAZG9jIG9mZlxuLy8gRXh0ZW5kcyB0aGUgYm90dG9tIG9mIHRoZSBlbGVtZW50IHRvIGVuY2xvc2UgYW55IGZsb2F0cyBpdCBjb250YWlucy5cbi8vIEBkb2Mgb25cblxuQGltcG9ydCBcImhhY2tzXCI7XG5cbi8vIFRoaXMgYmFzaWMgbWV0aG9kIGlzIHByZWZlcnJlZCBmb3IgdGhlIHVzdWFsIGNhc2UsIHdoZW4gcG9zaXRpb25lZFxuLy8gY29udGVudCB3aWxsIG5vdCBzaG93IG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyLlxuLy9cbi8vIFJlY29tbWVuZGF0aW9ucyBpbmNsdWRlIHVzaW5nIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBhIHdpZHRoLlxuLy8gQ3JlZGl0OiBbcXVpcmtzbW9kZS5vcmddKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDA1LzAzL2NsZWFyaW5nX2Zsb2F0cy5odG1sKVxuQG1peGluIGNsZWFyZml4IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cblxuLy8gVGhpcyBvbGRlciBtZXRob2QgZnJvbSBQb3NpdGlvbiBJcyBFdmVyeXRoaW5nIGNhbGxlZFxuLy8gW0Vhc3kgQ2xlYXJpbmddKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2Vhc3ljbGVhcmluZy5odG1sKVxuLy8gaGFzIHRoZSBhZHZhbnRhZ2Ugb2YgYWxsb3dpbmcgcG9zaXRpb25lZCBlbGVtZW50cyB0byBoYW5nXG4vLyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lciBhdCB0aGUgZXhwZW5zZSBvZiBtb3JlIHRyaWNreSBDU1MuXG5AbWl4aW4gbGVnYWN5LXBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQgICAgOiBcIlxcMDAyMFwiO1xuICAgIGRpc3BsYXkgICAgOiBibG9jaztcbiAgICBoZWlnaHQgICAgIDogMDtcbiAgICBjbGVhciAgICAgIDogYm90aDtcbiAgICBvdmVyZmxvdyAgIDogaGlkZGVuO1xuICAgIHZpc2liaWxpdHkgOiBoaWRkZW47XG4gIH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cblxuLy8gVGhpcyBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIFBJRSBjbGVhcmZpeCBtZXRob2QgdGhhdCByZWR1Y2VzIHRoZSBhbW91bnQgb2YgQ1NTIG91dHB1dC5cbi8vIElmIHlvdSBuZWVkIHRvIHN1cHBvcnQgRmlyZWZveCBiZWZvcmUgMy41IHlvdSBuZWVkIHRvIHVzZSBgbGVnYWN5LXBpZS1jbGVhcmZpeGAgaW5zdGVhZC5cbi8vXG4vLyBBZGFwdGVkIGZyb206IFtBIG5ldyBtaWNybyBjbGVhcmZpeCBoYWNrXShodHRwOi8vbmljb2xhc2dhbGxhZ2hlci5jb20vbWljcm8tY2xlYXJmaXgtaGFjay8pXG5AbWl4aW4gcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xufVxuIiwiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH0gQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxO1xuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gIH1cbn1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9O1xuICB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIi8vIFRoaXMgbW9kdWxlIGhhcyBtb3ZlZC5cbkBpbXBvcnQgXCIuLi8uLi9yZXNldC91dGlsaXRpZXNcIjtcbiIsIi8vIEJhc2VkIG9uIFtFcmljIE1leWVyJ3MgcmVzZXQgMi4wXShodHRwOi8vbWV5ZXJ3ZWIuY29tL2VyaWMvdG9vbHMvY3NzL3Jlc2V0L2luZGV4Lmh0bWwpXG4vLyBHbG9iYWwgcmVzZXQgcnVsZXMuXG4vLyBGb3IgbW9yZSBzcGVjaWZpYyByZXNldHMsIHVzZSB0aGUgcmVzZXQgbWl4aW5zIHByb3ZpZGVkIGJlbG93XG5AbWl4aW4gZ2xvYmFsLXJlc2V0IHtcbiAgaHRtbCwgYm9keSwgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsIFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICAvLyBVbmxpa2UgRXJpYydzIG9yaWdpbmFsIHJlc2V0LCB3ZSByZXNldCB0aGUgaHRtbCBlbGVtZW50IHRvIGJlIGNvbXBhdGlibGVcbiAgLy8gd2l0aCB0aGUgdmVydGljYWwgcmh5dGhtIG1peGlucy5cbiAgaHRtbCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm9keTsgfVxuICBvbCwgdWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWxpc3Qtc3R5bGU7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH1cbiAgQGluY2x1ZGUgcmVzZXQtaHRtbDU7IH1cblxuLy8gUmVzZXQgYWxsIGVsZW1lbnRzIHdpdGhpbiBzb21lIHNlbGVjdG9yIHNjb3BlLiBUbyByZXNldCB0aGUgc2VsZWN0b3IgaXRzZWxmLFxuLy8gbWl4aW4gdGhlIGFwcHJvcHJpYXRlIHJlc2V0IG1peGluIGZvciB0aGF0IGVsZW1lbnQgdHlwZSBhcyB3ZWxsLiBUaGlzIGNvdWxkIGJlXG4vLyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gc3R5bGUgYSBwYXJ0IG9mIHlvdXIgcGFnZSBpbiBhIGRyYW1hdGljYWxseSBkaWZmZXJlbnQgd2F5LlxuQG1peGluIG5lc3RlZC1yZXNldCB7XG4gIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLCBcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH0gfVxuXG4vLyBSZXNldCB0aGUgYm94IG1vZGVsIG1lYXN1cmVtZW50cy5cbkBtaXhpbiByZXNldC1ib3gtbW9kZWwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDsgfVxuXG4vLyBSZXNldCB0aGUgZm9udCBhbmQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIHJlc2V0LWZvbnQge1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXNpemU6IDEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG4vLyBSZXNldHMgdGhlIG91dGxpbmUgd2hlbiBmb2N1cy5cbi8vIEZvciBhY2Nlc3NpYmlsaXR5IHlvdSBuZWVkIHRvIGFwcGx5IHNvbWUgc3R5bGluZyBpbiBpdHMgcGxhY2UuXG5AbWl4aW4gcmVzZXQtZm9jdXMge1xuICBvdXRsaW5lOiAwOyB9XG5cbi8vIFJlc2V0IGEgYm9keSBlbGVtZW50LlxuQG1peGluIHJlc2V0LWJvZHkge1xuICBsaW5lLWhlaWdodDogMTsgfVxuXG4vLyBSZXNldCB0aGUgbGlzdCBzdHlsZSBvZiBhbiBlbGVtZW50LlxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUge1xuICBsaXN0LXN0eWxlOiBub25lOyB9XG5cbi8vIFJlc2V0IGEgdGFibGVcbkBtaXhpbiByZXNldC10YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwOyB9XG5cbi8vIFJlc2V0IGEgdGFibGUgY2VsbCAoYHRoYCwgYHRkYClcbkBtaXhpbiByZXNldC10YWJsZS1jZWxsIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuXG4vLyBSZXNldCBhIHF1b3RhdGlvbiAoYHFgLCBgYmxvY2txdW90ZWApXG5AbWl4aW4gcmVzZXQtcXVvdGF0aW9uIHtcbiAgcXVvdGVzOiBub25lO1xuICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjsgXG4gICAgY29udGVudDogbm9uZTsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgYm9yZGVyLlxuQG1peGluIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXIge1xuICBib3JkZXI6IG5vbmU7IH1cblxuLy8gVW5yZWNvZ25pemVkIGVsZW1lbnRzIGFyZSBkaXNwbGF5ZWQgaW5saW5lLlxuLy8gVGhpcyByZXNldCBwcm92aWRlcyBhIGJhc2ljIHJlc2V0IGZvciBibG9jayBodG1sNSBlbGVtZW50c1xuLy8gc28gdGhleSBhcmUgcmVuZGVyZWQgY29ycmVjdGx5IGluIGJyb3dzZXJzIHRoYXQgZG9uJ3QgcmVjb2duaXplIHRoZW1cbi8vIGFuZCByZXNldCBpbiBicm93c2VycyB0aGF0IGhhdmUgZGVmYXVsdCBzdHlsZXMgZm9yIHRoZW0uXG5AbWl4aW4gcmVzZXQtaHRtbDUge1xuICAje2VsZW1lbnRzLW9mLXR5cGUoaHRtbDUtYmxvY2spfSB7XG4gICAgZGlzcGxheTogYmxvY2s7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGRpc3BsYXkgb2YgaW5saW5lIGFuZCBibG9jayBlbGVtZW50cyB0byB0aGVpciBkZWZhdWx0IGRpc3BsYXlcbi8vIGFjY29yZGluZyB0byB0aGVpciB0YWcgdHlwZS4gRWxlbWVudHMgdGhhdCBoYXZlIGEgZGVmYXVsdCBkaXNwbGF5IHRoYXQgdmFyaWVzIGFjcm9zc1xuLy8gdmVyc2lvbnMgb2YgaHRtbCBvciBicm93c2VyIGFyZSBub3QgaGFuZGxlZCBoZXJlLCBidXQgdGhpcyBjb3ZlcnMgdGhlIDkwJSB1c2UgY2FzZS5cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIC8vIFR1cm4gb2ZmIHRoZSBkaXNwbGF5IGZvciBib3RoIG9mIHRoZXNlIGNsYXNzZXNcbi8vICAgICAudW5yZWdpc3RlcmVkLW9ubHksIC5yZWdpc3RlcmVkLW9ubHlcbi8vICAgICAgIGRpc3BsYXk6IG5vbmVcbi8vICAgICAvLyBOb3cgdHVybiBvbmx5IG9uZSBvZiB0aGVtIGJhY2sgb24gZGVwZW5kaW5nIG9uIHNvbWUgb3RoZXIgY29udGV4dC5cbi8vICAgICBib2R5LnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnJlZ2lzdGVyZWQtb25seVwiKVxuLy8gICAgIGJvZHkudW5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi51bnJlZ2lzdGVyZWQtb25seVwiKVxuQG1peGluIHJlc2V0LWRpc3BsYXkoJHNlbGVjdG9yOiBcIlwiLCAkaW1wb3J0YW50OiBmYWxzZSkge1xuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiaW5saW5lXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7IH0gfVxuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiYmxvY2tcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG4iLCIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfSIsIi8vIG1ha2VzIGEgbGlzdCBpbmxpbmUuXG5cbkBtaXhpbiBpbmxpbmUtbGlzdCB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgJiwgJiBsaSB7XG4gICAgbWFyZ2luOiAwcHg7XG4gICAgcGFkZGluZzogMHB4O1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgfVxufVxuXG4vLyBtYWtlcyBhbiBpbmxpbmUgbGlzdCBkZWxpbWl0ZWQgd2l0aCB0aGUgcGFzc2VkIHN0cmluZy5cbi8vIERlZmF1bHRzIHRvIG1ha2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LlxuLy9cbi8vIFBsZWFzZSBtYWtlIG5vdGUgb2YgdGhlIGJyb3dzZXIgc3VwcG9ydCBpc3N1ZXMgYmVmb3JlIHVzaW5nIHRoaXMgbWl4aW46XG4vL1xuLy8gdXNlIG9mIGBjb250ZW50YCBhbmQgYDphZnRlcmAgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZCBpbiBhbGwgYnJvd3NlcnMuXG4vLyBTZWUgcXVpcmtzbW9kZSBmb3IgdGhlIFtzdXBwb3J0IG1hdHJpeF0oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MTUpXG4vL1xuLy8gYDpsYXN0LWNoaWxkYCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkLlxuLy8gc2VlIHF1aXJrc21vZGUgZm9yIHRoZSBbc3VwcG9ydCBtYXRyaXhdKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDI5KS5cbi8vXG4vLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4vLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcblxuQG1peGluIGRlbGltaXRlZC1saXN0KCRzZXBhcmF0b3I6IFwiLCBcIikge1xuICBAaW5jbHVkZSBpbmxpbmUtbGlzdDtcbiAgbGkge1xuICAgICY6YWZ0ZXIgeyBjb250ZW50OiAkc2VwYXJhdG9yOyB9XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICY6YWZ0ZXIgeyBjb250ZW50OiBcIlwiOyB9XG4gICAgfVxuICAgICYubGFzdCB7XG4gICAgICAmOmFmdGVyIHsgY29udGVudDogXCJcIjsgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBTZWUgW2RlbGltaXRlZC1saXN0XSgjbWl4aW4tZGVsaW1pdGVkLWxpc3QpXG4vLyBAZGVwcmVjYXRlZFxuQG1peGluIGNvbW1hLWRlbGltaXRlZC1saXN0IHtcbiAgQHdhcm4gXCJjb21tYS1kZWxpbWl0ZWQtbGlzdCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGRlbGltaXRlZC1saXN0IGluc3RlYWQuXCI7XG4gIEBpbmNsdWRlIGRlbGltaXRlZC1saXN0O1xufVxuIiwiLy8gSW5saW5lLUJsb2NrIGxpc3QgbGF5b3V0IG1vZHVsZS5cbi8vXG4vLyBFYXN5IG1vZGUgdXNpbmcgc2ltcGxlIGRlc2NlbmRhbnQgbGkgc2VsZWN0b3JzOlxuLy9cbi8vICAgICB1bC5uYXYge1xuLy8gICAgICAgQGltcG9ydCBpbmxpbmUtYmxvY2stbGlzdDtcbi8vICAgICB9XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gYEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcmAgb24geW91ciB1bC9vbCBhbmRcbi8vIGBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtYCBvbiB5b3VyIGxpLiBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZ1xuLy8gb24gbGF5b3V0cyBpbnZvbHZpbmcgbmVzdGVkIGxpc3RzLiBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgICAgdWwubmF2IHtcbi8vICAgICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcjtcbi8vICAgICAgID4gbGkge1xuLy8gICAgICAgICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtO1xuLy8gICAgICAgfVxuLy8gICAgIH1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCJob3Jpem9udGFsLWxpc3RcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9mbG9hdFwiO1xuQGltcG9ydCBcIi4uLy4uL2NzczMvaW5saW5lLWJsb2NrXCI7XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBzZWxlY3RvciB0aGF0IHRhcmdldCBhIHVsIG9yIG9sIHRoYXQgaXMgbWVhbnRcbi8vIHRvIGhhdmUgYW4gaW5saW5lLWJsb2NrIGxheW91dC4gVXNlZCB0byBpbXBsZW1lbnQgYGlubGluZS1ibG9jay1saXN0YC5cbkBtaXhpbiBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyOyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCBgaW5saW5lLWJsb2NrLWxpc3RgLlxuQG1peGluIGlubGluZS1ibG9jay1saXN0LWl0ZW0oJHBhZGRpbmc6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIG5vLWJ1bGxldDtcbiAgQGluY2x1ZGUgaW5saW5lLWJsb2NrO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nO1xuICAgIH07XG4gIH1cbn1cblxuLy8gQSBsaXN0KG9sLHVsKSB0aGF0IGlzIGxheWVkIG91dCBzdWNoIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSBpbmxpbmUtYmxvY2sgYW5kIHdvbid0IHdyYXAuXG5AbWl4aW4gaW5saW5lLWJsb2NrLWxpc3QoJHBhZGRpbmc6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcjtcbiAgbGkge1xuICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWl0ZW0oJHBhZGRpbmcpOyB9IH1cbiIsIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZSA6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZSAgOiBub25lO1xuICBtYXJnaW4tbGVmdCAgICAgIDogMDtcbn1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7IEBpbmNsdWRlIG5vLWJ1bGxldDsgfVxufVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIgKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMjtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIH1cbn1cbiIsIi8vIEhvcml6b250YWwgbGlzdCBsYXlvdXQgbW9kdWxlLlxuLy9cbi8vIEVhc3kgbW9kZSB1c2luZyBzaW1wbGUgZGVzY2VuZGFudCBsaSBzZWxlY3RvcnM6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gK2hvcml6b250YWwtbGlzdC1jb250YWluZXIgb24geW91ciB1bC9vbCBhbmQgK2hvcml6b250YWwtbGlzdC1pdGVtIG9uIHlvdXIgbGkuXG4vLyBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZyBvbiBsYXlvdXRzIGludm9sdmluZyBuZXN0ZWQgbGlzdHMuIEZvciBleGFtcGxlOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdC1jb250YWluZXJcbi8vICAgICA+IGxpXG4vLyAgICAgICAraG9yaXpvbnRhbC1saXN0LWl0ZW1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL3Jlc2V0XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvZmxvYXRcIjtcblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IHNlbGVjdG9yIHRoYXQgdGFyZ2V0IGEgdWwgb3Igb2wgdGhhdCBpcyBtZWFudFxuLy8gdG8gaGF2ZSBhIGhvcml6b250YWwgbGF5b3V0LiBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuQG1peGluIGhvcml6b250YWwtbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gIEBpbmNsdWRlIGNsZWFyZml4OyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuLy9cbi8vIDpsYXN0LWNoaWxkIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWRcbi8vIHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QyOSBmb3IgdGhlIHN1cHBvcnQgbWF0cml4XG4vL1xuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBuby1idWxsZXQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIEBpbmNsdWRlIGZsb2F0KCRkaXJlY3Rpb24pO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nO1xuICAgIH1cbiAgICAmOmZpcnN0LWNoaWxkLCAmLmZpcnN0IHsgcGFkZGluZy0jeyRkaXJlY3Rpb259OiAwOyB9XG4gICAgJjpsYXN0LWNoaWxkIHsgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfVxuICAgICYubGFzdCB7IHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH1cbiAgfVxufVxuXG4vLyBBIGxpc3Qob2wsdWwpIHRoYXQgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgZWxlbWVudHMgYXJlIGZsb2F0ZWQgbGVmdCBhbmQgd29uJ3Qgd3JhcC5cbi8vIFRoaXMgaXMgbm90IGFuIGlubGluZSBsaXN0LlxuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdCgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1jb250YWluZXI7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZywgJGRpcmVjdGlvbik7IH0gfVxuIiwiLy8gVHVybiBvZmYgdGhlIGJ1bGxldCBmb3IgYW4gZWxlbWVudCBvZiBhIGxpc3RcbkBtaXhpbiBuby1idWxsZXQge1xuICBsaXN0LXN0eWxlLWltYWdlIDogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlICA6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0ICAgICAgOiAwO1xufVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHsgQGluY2x1ZGUgbm8tYnVsbGV0OyB9XG59XG5cbi8vIE1ha2UgYSBsaXN0KHVsL29sKSBoYXZlIGFuIGltYWdlIGJ1bGxldC5cbi8vXG4vLyBUaGUgbWl4aW4gc2hvdWxkIGJlIHVzZWQgbGlrZSB0aGlzIGZvciBhbiBpY29uIHRoYXQgaXMgNXg3OlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIsIDVweCwgN3B4KVxuLy9cbi8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIGltYWdlIGRpbWVuc2lvbnMgYXJlIG5vdCBwcm92aWRlZCxcbi8vIFRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGltYWdlIGl0c2VsZi5cbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiKVxuLy9cbkBtaXhpbiBwcmV0dHktYnVsbGV0cygkYnVsbGV0LWljb24sICR3aWR0aDogaW1hZ2Utd2lkdGgoJGJ1bGxldC1pY29uKSwgJGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRidWxsZXQtaWNvbiksICRsaW5lLWhlaWdodDogMThweCwgJHBhZGRpbmc6IDE0cHgpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkYnVsbGV0LWljb24pIG5vLXJlcGVhdCAoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMiAoJGxpbmUtaGVpZ2h0IC0gJGhlaWdodCkgLyAyO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgfVxufVxuIiwiLy8gQGRvYyBvZmZcbi8vIEV4dGVuZHMgdGhlIGJvdHRvbSBvZiB0aGUgZWxlbWVudCB0byBlbmNsb3NlIGFueSBmbG9hdHMgaXQgY29udGFpbnMuXG4vLyBAZG9jIG9uXG5cbkBpbXBvcnQgXCJoYWNrc1wiO1xuXG4vLyBUaGlzIGJhc2ljIG1ldGhvZCBpcyBwcmVmZXJyZWQgZm9yIHRoZSB1c3VhbCBjYXNlLCB3aGVuIHBvc2l0aW9uZWRcbi8vIGNvbnRlbnQgd2lsbCBub3Qgc2hvdyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lci5cbi8vXG4vLyBSZWNvbW1lbmRhdGlvbnMgaW5jbHVkZSB1c2luZyB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYSB3aWR0aC5cbi8vIENyZWRpdDogW3F1aXJrc21vZGUub3JnXShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAwNS8wMy9jbGVhcmluZ19mbG9hdHMuaHRtbClcbkBtaXhpbiBjbGVhcmZpeCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgb2xkZXIgbWV0aG9kIGZyb20gUG9zaXRpb24gSXMgRXZlcnl0aGluZyBjYWxsZWRcbi8vIFtFYXN5IENsZWFyaW5nXShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9lYXN5Y2xlYXJpbmcuaHRtbClcbi8vIGhhcyB0aGUgYWR2YW50YWdlIG9mIGFsbG93aW5nIHBvc2l0aW9uZWQgZWxlbWVudHMgdG8gaGFuZ1xuLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIgYXQgdGhlIGV4cGVuc2Ugb2YgbW9yZSB0cmlja3kgQ1NTLlxuQG1peGluIGxlZ2FjeS1waWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50ICAgIDogXCJcXDAwMjBcIjtcbiAgICBkaXNwbGF5ICAgIDogYmxvY2s7XG4gICAgaGVpZ2h0ICAgICA6IDA7XG4gICAgY2xlYXIgICAgICA6IGJvdGg7XG4gICAgb3ZlcmZsb3cgICA6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5IDogaGlkZGVuO1xuICB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgaXMgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBQSUUgY2xlYXJmaXggbWV0aG9kIHRoYXQgcmVkdWNlcyB0aGUgYW1vdW50IG9mIENTUyBvdXRwdXQuXG4vLyBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IEZpcmVmb3ggYmVmb3JlIDMuNSB5b3UgbmVlZCB0byB1c2UgYGxlZ2FjeS1waWUtY2xlYXJmaXhgIGluc3RlYWQuXG4vL1xuLy8gQWRhcHRlZCBmcm9tOiBbQSBuZXcgbWljcm8gY2xlYXJmaXggaGFja10oaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svKVxuQG1peGluIHBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cbiIsIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9IEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTtcbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYgeyBkaXNwbGF5OiBibG9jazsgfVxuICB9XG59XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTtcbiAgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCIvLyBUaGlzIG1vZHVsZSBoYXMgbW92ZWQuXG5AaW1wb3J0IFwiLi4vLi4vcmVzZXQvdXRpbGl0aWVzXCI7XG4iLCIvLyBCYXNlZCBvbiBbRXJpYyBNZXllcidzIHJlc2V0IDIuMF0oaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9pbmRleC5odG1sKVxuLy8gR2xvYmFsIHJlc2V0IHJ1bGVzLlxuLy8gRm9yIG1vcmUgc3BlY2lmaWMgcmVzZXRzLCB1c2UgdGhlIHJlc2V0IG1peGlucyBwcm92aWRlZCBiZWxvd1xuQG1peGluIGdsb2JhbC1yZXNldCB7XG4gIGh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLCBcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgLy8gVW5saWtlIEVyaWMncyBvcmlnaW5hbCByZXNldCwgd2UgcmVzZXQgdGhlIGh0bWwgZWxlbWVudCB0byBiZSBjb21wYXRpYmxlXG4gIC8vIHdpdGggdGhlIHZlcnRpY2FsIHJoeXRobSBtaXhpbnMuXG4gIGh0bWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJvZHk7IH1cbiAgb2wsIHVsIHtcbiAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlOyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9XG4gIEBpbmNsdWRlIHJlc2V0LWh0bWw1OyB9XG5cbi8vIFJlc2V0IGFsbCBlbGVtZW50cyB3aXRoaW4gc29tZSBzZWxlY3RvciBzY29wZS4gVG8gcmVzZXQgdGhlIHNlbGVjdG9yIGl0c2VsZixcbi8vIG1peGluIHRoZSBhcHByb3ByaWF0ZSByZXNldCBtaXhpbiBmb3IgdGhhdCBlbGVtZW50IHR5cGUgYXMgd2VsbC4gVGhpcyBjb3VsZCBiZVxuLy8gdXNlZnVsIGlmIHlvdSB3YW50IHRvIHN0eWxlIGEgcGFydCBvZiB5b3VyIHBhZ2UgaW4gYSBkcmFtYXRpY2FsbHkgZGlmZmVyZW50IHdheS5cbkBtaXhpbiBuZXN0ZWQtcmVzZXQge1xuICBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCwgXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9IH1cblxuLy8gUmVzZXQgdGhlIGJveCBtb2RlbCBtZWFzdXJlbWVudHMuXG5AbWl4aW4gcmVzZXQtYm94LW1vZGVsIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7IH1cblxuLy8gUmVzZXQgdGhlIGZvbnQgYW5kIHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiByZXNldC1mb250IHtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLy8gUmVzZXRzIHRoZSBvdXRsaW5lIHdoZW4gZm9jdXMuXG4vLyBGb3IgYWNjZXNzaWJpbGl0eSB5b3UgbmVlZCB0byBhcHBseSBzb21lIHN0eWxpbmcgaW4gaXRzIHBsYWNlLlxuQG1peGluIHJlc2V0LWZvY3VzIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vLyBSZXNldCBhIGJvZHkgZWxlbWVudC5cbkBtaXhpbiByZXNldC1ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDE7IH1cblxuLy8gUmVzZXQgdGhlIGxpc3Qgc3R5bGUgb2YgYW4gZWxlbWVudC5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4vLyBSZXNldCBhIHRhYmxlXG5AbWl4aW4gcmVzZXQtdGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG4vLyBSZXNldCBhIHRhYmxlIGNlbGwgKGB0aGAsIGB0ZGApXG5AbWl4aW4gcmVzZXQtdGFibGUtY2VsbCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLy8gUmVzZXQgYSBxdW90YXRpb24gKGBxYCwgYGJsb2NrcXVvdGVgKVxuQG1peGluIHJlc2V0LXF1b3RhdGlvbiB7XG4gIHF1b3Rlczogbm9uZTtcbiAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7IFxuICAgIGNvbnRlbnQ6IG5vbmU7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGJvcmRlci5cbkBtaXhpbiByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyIHtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi8vIFVucmVjb2duaXplZCBlbGVtZW50cyBhcmUgZGlzcGxheWVkIGlubGluZS5cbi8vIFRoaXMgcmVzZXQgcHJvdmlkZXMgYSBiYXNpYyByZXNldCBmb3IgYmxvY2sgaHRtbDUgZWxlbWVudHNcbi8vIHNvIHRoZXkgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBpbiBicm93c2VycyB0aGF0IGRvbid0IHJlY29nbml6ZSB0aGVtXG4vLyBhbmQgcmVzZXQgaW4gYnJvd3NlcnMgdGhhdCBoYXZlIGRlZmF1bHQgc3R5bGVzIGZvciB0aGVtLlxuQG1peGluIHJlc2V0LWh0bWw1IHtcbiAgI3tlbGVtZW50cy1vZi10eXBlKGh0bWw1LWJsb2NrKX0ge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBkaXNwbGF5IG9mIGlubGluZSBhbmQgYmxvY2sgZWxlbWVudHMgdG8gdGhlaXIgZGVmYXVsdCBkaXNwbGF5XG4vLyBhY2NvcmRpbmcgdG8gdGhlaXIgdGFnIHR5cGUuIEVsZW1lbnRzIHRoYXQgaGF2ZSBhIGRlZmF1bHQgZGlzcGxheSB0aGF0IHZhcmllcyBhY3Jvc3Ncbi8vIHZlcnNpb25zIG9mIGh0bWwgb3IgYnJvd3NlciBhcmUgbm90IGhhbmRsZWQgaGVyZSwgYnV0IHRoaXMgY292ZXJzIHRoZSA5MCUgdXNlIGNhc2UuXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICAvLyBUdXJuIG9mZiB0aGUgZGlzcGxheSBmb3IgYm90aCBvZiB0aGVzZSBjbGFzc2VzXG4vLyAgICAgLnVucmVnaXN0ZXJlZC1vbmx5LCAucmVnaXN0ZXJlZC1vbmx5XG4vLyAgICAgICBkaXNwbGF5OiBub25lXG4vLyAgICAgLy8gTm93IHR1cm4gb25seSBvbmUgb2YgdGhlbSBiYWNrIG9uIGRlcGVuZGluZyBvbiBzb21lIG90aGVyIGNvbnRleHQuXG4vLyAgICAgYm9keS5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi5yZWdpc3RlcmVkLW9ubHlcIilcbi8vICAgICBib2R5LnVucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIudW5yZWdpc3RlcmVkLW9ubHlcIilcbkBtaXhpbiByZXNldC1kaXNwbGF5KCRzZWxlY3RvcjogXCJcIiwgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImlubGluZVwiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogaW5saW5lOyB9IH1cbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImJsb2NrXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH0iLCIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfSIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gU2V0IGAkaW5saW5lLWJsb2NrLWFsaWdubWVudGAgdG8gYG5vbmVgIG9yIGBmYWxzZWAgdG8gZGlzYWJsZSB0aGUgb3V0cHV0XG4vLyBvZiBhIHZlcnRpY2FsLWFsaWduIHByb3BlcnR5IGluIHRoZSBpbmxpbmUtYmxvY2sgbWl4aW4uXG4vLyBPciBzZXQgaXQgdG8gYSBsZWdhbCB2YWx1ZSBmb3IgYHZlcnRpY2FsLWFsaWduYCB0byBjaGFuZ2UgdGhlIGRlZmF1bHQuXG4kaW5saW5lLWJsb2NrLWFsaWdubWVudDogbWlkZGxlICFkZWZhdWx0O1xuXG4vLyBQcm92aWRlcyBhIGNyb3NzLWJyb3dzZXIgbWV0aG9kIHRvIGltcGxlbWVudCBgZGlzcGxheTogaW5saW5lLWJsb2NrO2BcbkBtaXhpbiBpbmxpbmUtYmxvY2soJGFsaWdubWVudDogJGlubGluZS1ibG9jay1hbGlnbm1lbnQpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgZGlzcGxheTogLW1vei1pbmxpbmUtc3RhY2s7XG4gIH1cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBAaWYgJGFsaWdubWVudCBhbmQgJGFsaWdubWVudCAhPSBub25lIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogJGFsaWdubWVudDtcbiAgfVxuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgKnZlcnRpY2FsLWFsaWduOiBhdXRvO1xuICAgIHpvb206IDE7XG4gICAgKmRpc3BsYXk6IGlubGluZTtcbiAgfVxufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZSA6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZSAgOiBub25lO1xuICBtYXJnaW4tbGVmdCAgICAgIDogMDtcbn1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7IEBpbmNsdWRlIG5vLWJ1bGxldDsgfVxufVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIgKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMjtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCJ0ZXh0L2VsbGlwc2lzXCI7XG5AaW1wb3J0IFwidGV4dC9ub3dyYXBcIjtcbkBpbXBvcnQgXCJ0ZXh0L3JlcGxhY2VtZW50XCI7XG5AaW1wb3J0IFwidGV4dC9mb3JjZS13cmFwXCI7XG4iLCJAaW1wb3J0IFwiLi4vLi4vY3NzMy9zaGFyZWRcIjtcblxuLy8gVG8gZ2V0IGZ1bGwgZmlyZWZveCBzdXBwb3J0LCB5b3UgbXVzdCBpbnN0YWxsIHRoZSBlbGxpcHNpcyBwYXR0ZXJuOlxuLy9cbi8vICAgICBjb21wYXNzIGluc3RhbGwgY29tcGFzcy9lbGxpcHNpc1xuJHVzZS1tb3ppbGxhLWVsbGlwc2lzLWJpbmRpbmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBUaGlzIHRlY2huaXF1ZSwgYnkgW0p1c3RpbiBNYXh3ZWxsXShodHRwOi8vY29kZTQwNC5jb20vKSwgd2FzIG9yaWdpbmFsbHlcbi8vIHB1Ymxpc2hlZCBbaGVyZV0oaHR0cDovL21hdHRzbmlkZXIuY29tL2Nzcy9jc3Mtc3RyaW5nLXRydW5jYXRpb24td2l0aC1lbGxpcHNpcy8pLlxuLy8gRmlyZWZveCBpbXBsZW1lbnRhdGlvbiBieSBbUmlra2VydCBLb3BwZXNdKGh0dHA6Ly93d3cucmlra2VydGtvcHBlcy5jb20vdGhvdWdodHMvMjAwOC82LykuXG5AbWl4aW4gZWxsaXBzaXMoJG5vLXdyYXA6IHRydWUpIHtcbiAgQGlmICRuby13cmFwIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodGV4dC1vdmVyZmxvdywgZWxsaXBzaXMsXG4gICAgbm90KC1tb3opLFxuICAgIG5vdCgtd2Via2l0KSxcbiAgICAtbyxcbiAgICAtbXMsXG4gICAgbm90KC1raHRtbCksXG4gICAgb2ZmaWNpYWxcbiAgKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgJHVzZS1tb3ppbGxhLWVsbGlwc2lzLWJpbmRpbmcge1xuICAgIC1tb3otYmluZGluZzogc3R5bGVzaGVldC11cmwodW5xdW90ZShcInhtbC9lbGxpcHNpcy54bWwjZWxsaXBzaXNcIikpO1xuICB9XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiLy8gV2hlbiByZW1lbWJlcmluZyB3aGV0aGVyIG9yIG5vdCB0aGVyZSdzIGEgaHlwaGVuIGluIHdoaXRlLXNwYWNlIGlzIHRvbyBoYXJkXG5AbWl4aW4gbm93cmFwIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuIiwiLy8gSW5kaWNhdGVzIHRoZSBkaXJlY3Rpb24geW91IHByZWZlciB0byBtb3ZlIHlvdXIgdGV4dFxuLy8gd2hlbiBoaWRpbmcgaXQuXG4vL1xuLy8gYGxlZnRgIGlzIG1vcmUgcm9idXN0LCBlc3BlY2lhbGx5IGluIG9sZGVyIGJyb3dzZXJzLlxuLy8gYHJpZ2h0YCBzZWVtcyBoYXZlIGJldHRlciBydW50aW1lIHBlcmZvcm1hbmNlLlxuJGhpZGUtdGV4dC1kaXJlY3Rpb246IGxlZnQgIWRlZmF1bHQ7XG5cbi8vIEhpZGVzIGh0bWwgdGV4dCBhbmQgcmVwbGFjZXMgaXQgd2l0aCBhbiBpbWFnZS5cbi8vIElmIHlvdSB1c2UgdGhpcyBvbiBhbiBpbmxpbmUgZWxlbWVudCwgeW91IHdpbGwgbmVlZCB0byBjaGFuZ2UgdGhlIGRpc3BsYXkgdG8gYmxvY2sgb3IgaW5saW5lLWJsb2NrLlxuLy8gQWxzbywgaWYgdGhlIHNpemUgb2YgdGhlIGltYWdlIGRpZmZlcnMgc2lnbmlmaWNhbnRseSBmcm9tIHRoZSBmb250IHNpemUsIHlvdSdsbCBuZWVkIHRvIHNldCB0aGUgd2lkdGggYW5kL29yIGhlaWdodC5cbi8vXG4vLyBQYXJhbWV0ZXJzOlxuLy9cbi8vICogYGltZ2AgLS0gdGhlIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgcHJvamVjdCBpbWFnZSBkaXJlY3RvcnkgdG8gdGhlIGltYWdlLCBvciBhIHVybCBsaXRlcmFsLlxuLy8gKiBgeGAgLS0gdGhlIHggcG9zaXRpb24gb2YgdGhlIGJhY2tncm91bmQgaW1hZ2UuXG4vLyAqIGB5YCAtLSB0aGUgeSBwb3NpdGlvbiBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZS5cbkBtaXhpbiByZXBsYWNlLXRleHQoJGltZywgJHg6IDUwJSwgJHk6IDUwJSkge1xuICBAaW5jbHVkZSBoaWRlLXRleHQ7XG4gIGJhY2tncm91bmQ6IHtcbiAgICBAaWYgaXMtdXJsKCRpbWcpIHtcbiAgICAgIGltYWdlOiB1cmwoJGltZyk7XG4gICAgfSBAZWxzZSB7XG4gICAgICBpbWFnZTogaW1hZ2UtdXJsKCRpbWcpO1xuICAgIH1cbiAgICByZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBwb3NpdGlvbjogJHggJHk7XG4gIH07XG59XG5cbi8vIExpa2UgdGhlIGByZXBsYWNlLXRleHRgIG1peGluLCBidXQgYWxzbyBzZXRzIHRoZSB3aWR0aFxuLy8gYW5kIGhlaWdodCBvZiB0aGUgZWxlbWVudCBhY2NvcmRpbmcgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGltYWdlLlxuLy9cbi8vIElmIHlvdSBzZXQgYCRpbmxpbmVgIHRvIHRydWUsIHRoZW4gYW4gaW5saW5lIGltYWdlIChkYXRhIHVyaSkgd2lsbCBiZSB1c2VkLlxuQG1peGluIHJlcGxhY2UtdGV4dC13aXRoLWRpbWVuc2lvbnMoJGltZywgJHg6IDUwJSwgJHk6IDUwJSwgJGlubGluZTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgcmVwbGFjZS10ZXh0KGlmKCRpbmxpbmUsIGlubGluZS1pbWFnZSgkaW1nKSwgJGltZyksICR4LCAkeSk7XG4gIHdpZHRoOiBpbWFnZS13aWR0aCgkaW1nKTtcbiAgaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGltZyk7XG59XG5cbi8vIEhpZGVzIHRleHQgaW4gYW4gZWxlbWVudCBzbyB5b3UgY2FuIHNlZSB0aGUgYmFja2dyb3VuZC5cbi8vXG4vLyBUaGUgZGlyZWN0aW9uIGluZGljYXRlcyBob3cgdGhlIHRleHQgc2hvdWxkIGJlIG1vdmVkIG91dCBvZiB2aWV3LlxuLy9cbi8vIFNlZSBgJGhpZGUtdGV4dC1kaXJlY3Rpb25gIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCB0byBzZXQgdGhpcyBnbG9iYWxseVxuLy8gZm9yIHlvdXIgYXBwbGljYXRpb24uXG5AbWl4aW4gaGlkZS10ZXh0KCRkaXJlY3Rpb246ICRoaWRlLXRleHQtZGlyZWN0aW9uKSB7XG4gIEBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICRhcHByb3hpbWF0ZS1lbS12YWx1ZTogMTJweDtcbiAgICAkd2lkZXItdGhhbi1hbnktc2NyZWVuOiAtOTk5OTtcbiAgICB0ZXh0LWluZGVudDogJHdpZGVyLXRoYW4tYW55LXNjcmVlbiAqICRhcHByb3hpbWF0ZS1lbS12YWx1ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gIH0gQGVsc2Uge1xuICAgIC8vIHNsaWdodGx5IHdpZGVyIHRoYW4gdGhlIGJveCBwcmV2ZW50cyBpc3N1ZXMgd2l0aCBpbmxpbmUtYmxvY2sgZWxlbWVudHNcbiAgICB0ZXh0LWluZGVudDogMTEwJTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbn1cblxuLy8gSGlkZXMgdGV4dCBpbiBhbiBlbGVtZW50IGJ5IHNxdWlzaGluZyB0aGUgdGV4dCBpbnRvIG9ibGl2aW9uLlxuLy8gVXNlIHRoaXMgaWYgeW91IG5lZWQgdG8gaGlkZSB0ZXh0IGNvbnRhaW5lZCBpbiBhbiBpbmxpbmUgZWxlbWVudFxuLy8gYnV0IHN0aWxsIGhhdmUgaXQgcmVhZCBieSBhIHNjcmVlbiByZWFkZXIuXG5AbWl4aW4gc3F1aXNoLXRleHQge1xuICBmb250OiAwLzAgc2VyaWY7XG4gIHRleHQtc2hhZG93OiBub25lO1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4iLCIvLyBQcmV2ZW50IGxvbmcgdXJscyBhbmQgdGV4dCBmcm9tIGJyZWFraW5nIGxheW91dHNcbi8vIFtvcmlnaW5hbGx5IGZyb20gcGVyaXNoYWJsZXByZXNzLmNvbV0oaHR0cDovL3BlcmlzaGFibGVwcmVzcy5jb20vcHJlc3MvMjAxMC8wNi8wMS93cmFwcGluZy1jb250ZW50LylcbkBtaXhpbiBmb3JjZS13cmFwIHtcbiAgd2hpdGUtc3BhY2U6IHByZTsgICAgICAgICAgIC8vIENTUyAyLjBcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwOyAgICAgIC8vIENTUyAyLjFcbiAgd2hpdGUtc3BhY2U6IHByZS1saW5lOyAgICAgIC8vIENTUyAzLjBcbiAgd2hpdGUtc3BhY2U6IC1wcmUtd3JhcDsgICAgIC8vIE9wZXJhIDQtNlxuICB3aGl0ZS1zcGFjZTogLW8tcHJlLXdyYXA7ICAgLy8gT3BlcmEgN1xuICB3aGl0ZS1zcGFjZTogLW1vei1wcmUtd3JhcDsgLy8gTW96aWxsYVxuICB3aGl0ZS1zcGFjZTogLWhwLXByZS13cmFwOyAgLy8gSFAgUHJpbnRlcnNcbiAgd29yZC13cmFwOiBicmVhay13b3JkOyAgICAgIC8vIElFIDUrXG59XG4iLCJAaW1wb3J0IFwiLi4vbGF5b3V0L2dyaWQtYmFja2dyb3VuZFwiO1xuXG4vLyBUaGUgYmFzZSBmb250IHNpemUuXG4kYmFzZS1mb250LXNpemU6IDE2cHggIWRlZmF1bHQ7XG5cbi8vIFRoZSBiYXNlIGxpbmUgaGVpZ2h0IGRldGVybWluZXMgdGhlIGJhc2ljIHVuaXQgb2YgdmVydGljYWwgcmh5dGhtLlxuJGJhc2UtbGluZS1oZWlnaHQ6IDI0cHggIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgZGVmYXVsdCBib3JkZXIgc3R5bGUgZm9yIHJoeXRobSBib3JkZXJzLlxuJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZTogc29saWQgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4kYnJvd3Nlci1kZWZhdWx0LWZvbnQtc2l6ZTogMTZweDtcblxuLy8gU2V0IHRvIGZhbHNlIGlmIHlvdSB3YW50IHRvIHVzZSBhYnNvbHV0ZSBwaXhlbHMgaW4gc2l6aW5nIHlvdXIgdHlwb2dyYXBoeS5cbiRyZWxhdGl2ZS1mb250LXNpemluZzogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gQWxsb3dzIHRoZSBgYWRqdXN0LWZvbnQtc2l6ZS10b2AgbWl4aW4gYW5kIHRoZSBgbGluZXMtZm9yLWZvbnQtc2l6ZWAgZnVuY3Rpb25cbi8vIHRvIHJvdW5kIHRoZSBsaW5lIGhlaWdodCB0byB0aGUgbmVhcmVzdCBoYWxmIGxpbmUgaGVpZ2h0IGluc3RlYWQgb2YgdGhlXG4vLyBuZWFyZXN0IGludGVncmFsIGxpbmUgaGVpZ2h0IHRvIGF2b2lkIGxhcmdlIHNwYWNpbmcgYmV0d2VlbiBsaW5lcy5cbiRyb3VuZC10by1uZWFyZXN0LWhhbGYtbGluZTogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIEVuc3VyZSB0aGVyZSBpcyBhdCBsZWFzdCB0aGlzIG1hbnkgcGl4ZWxzXG4vLyBvZiB2ZXJ0aWNhbCBwYWRkaW5nIGFib3ZlIGFuZCBiZWxvdyB0aGUgdGV4dC5cbiRtaW4tbGluZS1wYWRkaW5nOiAycHggIWRlZmF1bHQ7XG5cbi8vICRiYXNlLWZvbnQtc2l6ZSBidXQgaW4geW91ciBvdXRwdXQgdW5pdCBvZiBjaG9pY2UuXG4vLyBEZWZhdWx0cyB0byAxZW0gd2hlbiBgJHJlbGF0aXZlLWZvbnQtc2l6aW5nYCBpcyB0cnVlLlxuJGZvbnQtdW5pdDogaWYoJHJlbGF0aXZlLWZvbnQtc2l6aW5nLCAxZW0sICRiYXNlLWZvbnQtc2l6ZSkgIWRlZmF1bHQ7XG5cbi8vIFRoZSBiYXNpYyB1bml0IG9mIGZvbnQgcmh5dGhtLlxuJGJhc2Utcmh5dGhtLXVuaXQ6ICRiYXNlLWxpbmUtaGVpZ2h0IC8gJGJhc2UtZm9udC1zaXplICogJGZvbnQtdW5pdDtcblxuLy8gVGhlIGxlYWRlciBpcyB0aGUgYW1vdW50IG9mIHdoaXRlc3BhY2UgaW4gYSBsaW5lLlxuLy8gSXQgbWlnaHQgYmUgdXNlZnVsIGluIHlvdXIgY2FsY3VsYXRpb25zLlxuJGJhc2UtbGVhZGVyOiAoJGJhc2UtbGluZS1oZWlnaHQgLSAkYmFzZS1mb250LXNpemUpICogJGZvbnQtdW5pdCAvICRiYXNlLWZvbnQtc2l6ZTtcblxuLy8gVGhlIGhhbGYtbGVhZGVyIGlzIHRoZSBhbW91bnQgb2Ygd2hpdGVzcGFjZSBhYm92ZSBhbmQgYmVsb3cgYSBsaW5lLlxuLy8gSXQgbWlnaHQgYmUgdXNlZnVsIGluIHlvdXIgY2FsY3VsYXRpb25zLlxuJGJhc2UtaGFsZi1sZWFkZXI6ICRiYXNlLWxlYWRlciAvIDI7XG5cbi8vIFRydWUgaWYgYSBudW1iZXIgaGFzIGEgcmVsYXRpdmUgdW5pdC5cbkBmdW5jdGlvbiByZWxhdGl2ZS11bml0KCRudW1iZXIpIHtcbiAgQHJldHVybiB1bml0KCRudW1iZXIpID09IFwiJVwiIG9yIHVuaXQoJG51bWJlcikgPT0gXCJlbVwiIG9yIHVuaXQoJG51bWJlcikgPT0gXCJyZW1cIlxufVxuXG4vLyBUcnVlIGlmIGEgbnVtYmVyIGhhcyBhbiBhYnNvbHV0ZSB1bml0LlxuQGZ1bmN0aW9uIGFic29sdXRlLXVuaXQoJG51bWJlcikge1xuICBAcmV0dXJuIG5vdChyZWxhdGl2ZS11bml0KCRudW1iZXIpIG9yIHVuaXRsZXNzKCRudW1iZXIpKTtcbn1cblxuQGlmICRyZWxhdGl2ZS1mb250LXNpemluZyBhbmQgbm90KHJlbGF0aXZlLXVuaXQoJGZvbnQtdW5pdCkpIHtcbiAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgdHJ1ZSBidXQgJGZvbnQtdW5pdCBpcyBzZXQgdG8gI3skZm9udC11bml0fSB3aGljaCBpcyBub3QgYSByZWxhdGl2ZSB1bml0LlwiO1xufVxuXG4vLyBFc3RhYmxpc2hlcyBhIGZvbnQgYmFzZWxpbmUgZm9yIHRoZSBnaXZlbiBmb250LXNpemUuXG5AbWl4aW4gZXN0YWJsaXNoLWJhc2VsaW5lKCRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICAvLyBJRSA2IHJlZnVzZXMgdG8gcmVzaXplIGZvbnRzIHNldCBpbiBwaXhlbHMgYW5kIGl0IHdlaXJkbHkgcmVzaXplcyBmb250c1xuICAvLyB3aG9zZSByb290IGlzIHNldCBpbiBlbXMuIFNvIHdlIHNldCB0aGUgcm9vdCBmb250IHNpemUgaW4gcGVyY2VudGFnZXMgb2ZcbiAgLy8gdGhlIGRlZmF1bHQgZm9udCBzaXplLlxuICAqIGh0bWwge1xuICAgIGZvbnQtc2l6ZTogMTAwJSAqICgkZm9udC1zaXplIC8gJGJyb3dzZXItZGVmYXVsdC1mb250LXNpemUpO1xuICB9XG4gIGh0bWwge1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgICBAaW5jbHVkZSBhZGp1c3QtbGVhZGluZy10bygxLCBpZigkcmVsYXRpdmUtZm9udC1zaXppbmcsICRmb250LXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpO1xuICB9XG59XG5cbi8vIFJlc2V0cyB0aGUgbGluZS1oZWlnaHQgdG8gMSB2ZXJ0aWNhbCByaHl0aG0gdW5pdC5cbi8vIERvZXMgbm90IHdvcmsgb24gZWxlbWVudHMgd2hvc2UgZm9udC1zaXplIGlzIGRpZmZlcmVudCBmcm9tICRiYXNlLWZvbnQtc2l6ZS5cbi8vXG4vLyBAZGVwcmVjYXRlZCBUaGlzIG1peGluIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLlxuLy8gUGxlYXNlIHVzZSB0aGUgYGFkanVzdC1sZWFkaW5nLXRvYCBtaXhpbiBpbnN0ZWFkLlxuQG1peGluIHJlc2V0LWJhc2VsaW5lIHtcbiAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8oMSwgaWYoJHJlbGF0aXZlLWZvbnQtc2l6aW5nLCAkYmFzZS1mb250LXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpO1xufVxuXG4vLyBTaG93IGEgYmFja2dyb3VuZCBpbWFnZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlYnVnIHlvdXIgYWxpZ25tZW50cy5cbi8vIEluY2x1ZGUgdGhlICRpbWcgYXJndW1lbnQgaWYgeW91IHdvdWxkIHJhdGhlciB1c2UgeW91ciBvd24gaW1hZ2UgdGhhbiB0aGVcbi8vIENvbXBhc3MgZGVmYXVsdCBncmFkaWVudCBpbWFnZS5cbkBtaXhpbiBkZWJ1Zy12ZXJ0aWNhbC1hbGlnbm1lbnQoJGltZzogZmFsc2UpIHtcbiAgQGlmICRpbWcge1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkaW1nKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kKCRiYXNlLXJoeXRobS11bml0KTtcbiAgfVxufVxuXG4vLyBBZGp1c3QgYSBibG9jayB0byBoYXZlIGEgZGlmZmVyZW50IGZvbnQgc2l6ZSBhbmQgbGluZSBoZWlnaHQgdG8gbWFpbnRhaW4gdGhlXG4vLyByaHl0aG0uICRsaW5lcyBzcGVjaWZpZXMgaG93IG1hbnkgbXVsdGlwbGVzIG9mIHRoZSBiYXNlbGluZSByaHl0aG0gZWFjaCBsaW5lXG4vLyBvZiB0aGlzIGZvbnQgc2hvdWxkIHVzZSB1cC4gSXQgZG9lcyBub3QgaGF2ZSB0byBiZSBhbiBpbnRlZ2VyLCBidXQgaXRcbi8vIGRlZmF1bHRzIHRvIHRoZSBzbWFsbGVzdCBpbnRlZ2VyIHRoYXQgaXMgbGFyZ2UgZW5vdWdoIHRvIGZpdCB0aGUgZm9udC5cbi8vIFVzZSAkZnJvbS1zaXplIHRvIGFkanVzdCBmcm9tIGEgZm9udC1zaXplIG90aGVyIHRoYW4gdGhlIGJhc2UgZm9udC1zaXplLlxuQG1peGluIGFkanVzdC1mb250LXNpemUtdG8oJHRvLXNpemUsICRsaW5lczogbGluZXMtZm9yLWZvbnQtc2l6ZSgkdG8tc2l6ZSksICRmcm9tLXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaWYgbm90KCRyZWxhdGl2ZS1mb250LXNpemluZykgYW5kICRmcm9tLXNpemUgIT0gJGJhc2UtZm9udC1zaXplIHtcbiAgICBAd2FybiBcIiRyZWxhdGl2ZS1mb250LXNpemluZyBpcyBmYWxzZSBidXQgYSByZWxhdGl2ZSBmb250IHNpemUgd2FzIHBhc3NlZCB0byBhZGp1c3QtZm9udC1zaXplLXRvXCI7XG4gIH1cbiAgZm9udC1zaXplOiAkZm9udC11bml0ICogJHRvLXNpemUgLyAkZnJvbS1zaXplO1xuICBAaW5jbHVkZSBhZGp1c3QtbGVhZGluZy10bygkbGluZXMsIGlmKCRyZWxhdGl2ZS1mb250LXNpemluZywgJHRvLXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpO1xufVxuXG4vLyBBZGp1c3QgYSBibG9jayB0byBoYXZlIGRpZmZlcmVudCBsaW5lIGhlaWdodCB0byBtYWludGFpbiB0aGUgcmh5dGhtLlxuLy8gJGxpbmVzIHNwZWNpZmllcyBob3cgbWFueSBtdWx0aXBsZXMgb2YgdGhlIGJhc2VsaW5lIHJoeXRobSBlYWNoIGxpbmUgb2YgdGhpc1xuLy8gZm9udCBzaG91bGQgdXNlIHVwLiBJdCBkb2VzIG5vdCBoYXZlIHRvIGJlIGFuIGludGVnZXIsIGJ1dCBpdCBkZWZhdWx0cyB0byB0aGVcbi8vIHNtYWxsZXN0IGludGVnZXIgdGhhdCBpcyBsYXJnZSBlbm91Z2ggdG8gZml0IHRoZSBmb250LlxuQG1peGluIGFkanVzdC1sZWFkaW5nLXRvKCRsaW5lcywgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIGxpbmUtaGVpZ2h0OiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gQ2FsY3VsYXRlIHJoeXRobSB1bml0cy5cbkBmdW5jdGlvbiByaHl0aG0oXG4gICRsaW5lczogMSxcbiAgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLFxuICAkb2Zmc2V0OiAwXG4pIHtcbiAgQGlmIG5vdCgkcmVsYXRpdmUtZm9udC1zaXppbmcpIGFuZCAkZm9udC1zaXplICE9ICRiYXNlLWZvbnQtc2l6ZSB7XG4gICAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgZmFsc2UgYnV0IGEgcmVsYXRpdmUgZm9udCBzaXplIHdhcyBwYXNzZWQgdG8gdGhlIHJoeXRobSBmdW5jdGlvblwiO1xuICB9XG4gICRyaHl0aG06ICRmb250LXVuaXQgKiAoJGxpbmVzICogJGJhc2UtbGluZS1oZWlnaHQgLSAkb2Zmc2V0KSAvICRmb250LXNpemU7XG4gIC8vIFJvdW5kIHRoZSBwaXhlbHMgZG93biB0byBuZWFyZXN0IGludGVnZXIuXG4gIEBpZiB1bml0KCRyaHl0aG0pID09IHB4IHtcbiAgICAkcmh5dGhtOiBmbG9vcigkcmh5dGhtKTtcbiAgfVxuICBAcmV0dXJuICRyaHl0aG07XG59XG5cbi8vIENhbGN1bGF0ZSB0aGUgbWluaW11bSBtdWx0aXBsZSBvZiByaHl0aG0gdW5pdHMgbmVlZGVkIHRvIGNvbnRhaW4gdGhlIGZvbnQtc2l6ZS5cbkBmdW5jdGlvbiBsaW5lcy1mb3ItZm9udC1zaXplKCRmb250LXNpemUpIHtcbiAgJGxpbmVzOiBpZigkcm91bmQtdG8tbmVhcmVzdC1oYWxmLWxpbmUsXG4gICAgICAgICAgICAgIGNlaWwoMiAqICRmb250LXNpemUgLyAkYmFzZS1saW5lLWhlaWdodCkgLyAyLFxuICAgICAgICAgICAgICBjZWlsKCRmb250LXNpemUgLyAkYmFzZS1saW5lLWhlaWdodCkpO1xuICBAaWYgJGxpbmVzICogJGJhc2UtbGluZS1oZWlnaHQgLSAkZm9udC1zaXplIDwgJG1pbi1saW5lLXBhZGRpbmcgKiAyIHtcbiAgICAkbGluZXM6ICRsaW5lcyArIGlmKCRyb3VuZC10by1uZWFyZXN0LWhhbGYtbGluZSwgMC41LCAxKTtcbiAgfVxuICBAcmV0dXJuICRsaW5lcztcbn1cblxuLy8gQXBwbHkgbGVhZGluZyB3aGl0ZXNwYWNlLiBUaGUgJHByb3BlcnR5IGNhbiBiZSBtYXJnaW4gb3IgcGFkZGluZy5cbkBtaXhpbiBsZWFkZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRwcm9wZXJ0eTogbWFyZ2luKSB7XG4gICN7JHByb3BlcnR5fS10b3A6IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpO1xufVxuXG4vLyBBcHBseSBsZWFkaW5nIHdoaXRlc3BhY2UgYXMgcGFkZGluZy5cbkBtaXhpbiBwYWRkaW5nLWxlYWRlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBwYWRkaW5nLXRvcDogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIEFwcGx5IGxlYWRpbmcgd2hpdGVzcGFjZSBhcyBtYXJnaW4uXG5AbWl4aW4gbWFyZ2luLWxlYWRlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBtYXJnaW4tdG9wOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gQXBwbHkgdHJhaWxpbmcgd2hpdGVzcGFjZS4gVGhlICRwcm9wZXJ0eSBjYW4gYmUgbWFyZ2luIG9yIHBhZGRpbmcuXG5AbWl4aW4gdHJhaWxlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJHByb3BlcnR5OiBtYXJnaW4pIHtcbiAgI3skcHJvcGVydHl9LWJvdHRvbTogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIEFwcGx5IHRyYWlsaW5nIHdoaXRlc3BhY2UgYXMgcGFkZGluZy5cbkBtaXhpbiBwYWRkaW5nLXRyYWlsZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgcGFkZGluZy1ib3R0b206IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpO1xufVxuXG4vLyBBcHBseSB0cmFpbGluZyB3aGl0ZXNwYWNlIGFzIG1hcmdpbi5cbkBtaXhpbiBtYXJnaW4tdHJhaWxlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBtYXJnaW4tYm90dG9tOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gU2hvcnRoYW5kIG1peGluIHRvIGFwcGx5IHdoaXRlc3BhY2UgZm9yIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgYW5kIHBhZGRpbmcuXG5AbWl4aW4gcmh5dGhtKCRsZWFkZXI6IDAsICRwYWRkaW5nLWxlYWRlcjogMCwgJHBhZGRpbmctdHJhaWxlcjogMCwgJHRyYWlsZXI6IDAsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaW5jbHVkZSBsZWFkZXIoJGxlYWRlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHBhZGRpbmctbGVhZGVyKCRwYWRkaW5nLWxlYWRlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHBhZGRpbmctdHJhaWxlcigkcGFkZGluZy10cmFpbGVyLCAkZm9udC1zaXplKTtcbiAgQGluY2x1ZGUgdHJhaWxlcigkdHJhaWxlciwgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIEFwcGx5IGEgYm9yZGVyIGFuZCB3aGl0ZXNwYWNlIHRvIGFueSBzaWRlIHdpdGhvdXQgZGVzdHJveWluZyB0aGUgdmVydGljYWxcbi8vIHJoeXRobS4gVGhlIHdoaXRlc3BhY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIuXG5AbWl4aW4gYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyKCRzaWRlLCAkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGlmIG5vdCgkcmVsYXRpdmUtZm9udC1zaXppbmcpIGFuZCAkZm9udC1zaXplICE9ICRiYXNlLWZvbnQtc2l6ZSB7XG4gICAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgZmFsc2UgYnV0IGEgcmVsYXRpdmUgZm9udCBzaXplIHdhcyBwYXNzZWQgdG8gYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyXCI7XG4gIH1cbiAgYm9yZGVyLSN7JHNpZGV9LXN0eWxlOiAkYm9yZGVyLXN0eWxlO1xuICBib3JkZXItI3skc2lkZX0td2lkdGg6ICRmb250LXVuaXQgKiAkd2lkdGggLyAkZm9udC1zaXplO1xuICBwYWRkaW5nLSN7JHNpZGV9OiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplLCAkb2Zmc2V0OiAkd2lkdGgpO1xufVxuXG4vLyBBcHBseSBib3JkZXJzIGFuZCB3aGl0ZXNwYWNlIGVxdWFsbHkgdG8gYWxsIHNpZGVzLlxuQG1peGluIHJoeXRobS1ib3JkZXJzKCR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaWYgbm90KCRyZWxhdGl2ZS1mb250LXNpemluZykgYW5kICRmb250LXNpemUgIT0gJGJhc2UtZm9udC1zaXplIHtcbiAgICBAd2FybiBcIiRyZWxhdGl2ZS1mb250LXNpemluZyBpcyBmYWxzZSBidXQgYSByZWxhdGl2ZSBmb250IHNpemUgd2FzIHBhc3NlZCB0byByaHl0aG0tYm9yZGVyc1wiO1xuICB9XG4gIGJvcmRlcjoge1xuICAgIHN0eWxlOiAkYm9yZGVyLXN0eWxlO1xuICAgIHdpZHRoOiAkZm9udC11bml0ICogJHdpZHRoIC8gJGZvbnQtc2l6ZTtcbiAgfTtcbiAgcGFkZGluZzogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSwgJG9mZnNldDogJHdpZHRoKTtcbn1cblxuLy8gQXBwbHkgYSBsZWFkaW5nIGJvcmRlci5cbkBtaXhpbiBsZWFkaW5nLWJvcmRlcigkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGluY2x1ZGUgYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyKHRvcCwgJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xufVxuXG4vLyBBcHBseSBhIHRyYWlsaW5nIGJvcmRlci5cbkBtaXhpbiB0cmFpbGluZy1ib3JkZXIoJHdpZHRoOiAxcHgsICRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlKSB7XG4gIEBpbmNsdWRlIGFwcGx5LXNpZGUtcmh5dGhtLWJvcmRlcihib3R0b20sICR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTtcbn1cblxuLy8gQXBwbHkgYm90aCBsZWFkaW5nIGFuZCB0cmFpbGluZyBib3JkZXJzLlxuQG1peGluIGhvcml6b250YWwtYm9yZGVycygkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGluY2x1ZGUgbGVhZGluZy1ib3JkZXIoJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xuICBAaW5jbHVkZSB0cmFpbGluZy1ib3JkZXIoJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xufVxuXG4vLyBBbGlhcyBmb3IgYGhvcml6b250YWwtYm9yZGVyc2AgbWl4aW4uXG5AbWl4aW4gaC1ib3JkZXJzKCR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWJvcmRlcnMoJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xufVxuIiwiQGltcG9ydCBcIi4uL2NzczMvaW1hZ2VzXCI7XG5AaW1wb3J0IFwiLi4vY3NzMy9iYWNrZ3JvdW5kLXNpemVcIjtcblxuLy8gU2V0IHRoZSBjb2xvciBvZiB5b3VyIGNvbHVtbnNcbiRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yICAgICA6IHJnYmEoMTAwLCAxMDAsIDIyNSwgMC4yNSkgICAhZGVmYXVsdDtcbi8vIFNldCB0aGUgY29sb3Igb2YgeW91ciBndXR0ZXJzXG4kZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvciAgICAgOiByZ2JhKDAsIDAsIDAsIDApICAgICAgICAgICAgIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgdG90YWwgbnVtYmVyIG9mIGNvbHVtbnMgaW4geW91ciBncmlkXG4kZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMgICAgOiAyNCAgICAgICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyBTZXQgdGhlIHdpZHRoIG9mIHlvdXIgY29sdW1uc1xuJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGggICAgIDogMzBweCAgICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gU2V0IHRoZSB3aWR0aCBvZiB5b3VyIGd1dHRlcnNcbiRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoICAgICA6IDEwcHggICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFNldCB0aGUgb2Zmc2V0LCBpZiB5b3VyIGNvbHVtbnMgYXJlIHBhZGRlZCBpbiBmcm9tIHRoZSBjb250YWluZXIgZWRnZVxuJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQgICAgICAgICAgIDogMHB4ICAgICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIGNvbG9yIG9mIHlvdXIgYmFzZWxpbmVcbiRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IgICA6IHJnYmEoMCwgMCwgMCwgMC41KSAgICAgICAgICAhZGVmYXVsdDtcbi8vIFNldCB0aGUgaGVpZ2h0IG9mIHlvdXIgYmFzZWxpbmUgZ3JpZFxuJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1oZWlnaHQgIDogMS41ZW0gICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG4vLyB0b2dnbGUgeW91ciBjb2x1bW5zIGdyaWRzIG9uIGFuZCBvZmZcbiRzaG93LWNvbHVtbi1ncmlkLWJhY2tncm91bmRzICAgICA6IHRydWUgICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIHRvZ2dsZSB5b3VyIHZlcnRpY2FsIGdyaWRzIG9uIGFuZCBvZmZcbiRzaG93LWJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZHMgICA6IHRydWUgICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIHRvZ2dsZSBhbGwgeW91ciBncmlkcyBvbiBhbmQgb2ZmXG4kc2hvdy1ncmlkLWJhY2tncm91bmRzICAgICAgICAgICAgOiB0cnVlICAgICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG5cbi8vIG9wdGlvbmFsbHkgZm9yY2UgeW91ciBncmlkLWltYWdlIHRvIHJlbWFpbiBmbHVpZFxuLy8gbm8gbWF0dGVyIHdoYXQgdW5pdHMgeW91IHVzZWQgdG8gZGVjbGFyZWQgeW91ciBncmlkLlxuJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZCAgICAgIDogZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG5cbi8vIENyZWF0ZSB0aGUgZ3JhZGllbnQgbmVlZGVkIGZvciBiYXNlbGluZSBncmlkc1xuQGZ1bmN0aW9uIGdldC1iYXNlbGluZS1ncmFkaWVudChcbiAgJGNvbG9yIDogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvclxuKSB7XG4gICRncmFkaWVudDogbGluZWFyLWdyYWRpZW50KGJvdHRvbSwgJGNvbG9yIDUlLCByZ2JhKCRjb2xvciwwKSA1JSk7XG4gIEByZXR1cm4gJGdyYWRpZW50O1xufVxuXG4vLyBDcmVhdGUgdGhlIGNvbG9yLXN0b3BzIG5lZWRlZCBmb3IgaG9yaXpvbnRhbCBncmlkc1xuQGZ1bmN0aW9uIGJ1aWxkLWdyaWQtYmFja2dyb3VuZChcbiAgJHRvdGFsICAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zLFxuICAkY29sdW1uICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aCxcbiAgJGd1dHRlciAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGgsXG4gICRvZmZzZXQgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LFxuICAkY29sdW1uLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvcixcbiAgJGd1dHRlci1jb2xvciAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3Jcbikge1xuICAkZ3JpZDogY29tcGFjdCgpO1xuICAkZ3JpZDogYXBwZW5kKCRncmlkLCAkZ3V0dGVyLWNvbG9yICRvZmZzZXQsIGNvbW1hKTtcbiAgQGZvciAkaSBmcm9tIDAgdG8gJHRvdGFsIHtcblxuICAgIC8vICRhIHJlcHJlc2VudHMgdGhlIHN0YXJ0IG9mIHRoaXMgY29sdW1uLCBpbml0aWFsbHkgZXF1YWwgdG8gdGhlIG9mZnNldFxuICAgICRhOiAkb2Zmc2V0O1xuICAgIEBpZiAkaSA+IDAgeyAkYTogJGEgKyAoKCRjb2x1bW4gKyAkZ3V0dGVyKSAqICRpKTsgfVxuXG4gICAgLy8gJGcgcmVwcmVzZW50cyB0aGUgc3RhcnQgb2YgdGhpcyBndXR0ZXIsIGVxdWFsIHRvICRhIHBsdXMgb25lIGNvbHVtbi13aWR0aFxuICAgICRnOiAkYSArICRjb2x1bW47XG5cbiAgICAvLyAkeiByZXByZXNlbnRzIHRoZSBlbmQgb2YgYSBndXR0ZXIsIGVxdWFsIHRvICRnIHBsdXMgb25lIGd1dHRlci13aWR0aFxuICAgICR6OiAkZyArICRndXR0ZXI7XG5cbiAgICBAaWYgKHVuaXQoJGEpID09IFwiJVwiKSBhbmQgKCRpID09ICgkdG90YWwgLSAxKSkge1xuICAgICAgJHo6IDEwMCU7XG4gICAgfVxuXG4gICAgLy8gYW5kIHdlIGFkZCB0aGlzIGNvbHVtbi9ndXR0ZXIgcGFpciB0byBvdXIgZ3JpZFxuICAgICRncmlkOiBqb2luKCRncmlkLCAoJGNvbHVtbi1jb2xvciAkYSwgJGNvbHVtbi1jb2xvciAkZywgJGd1dHRlci1jb2xvciAkZywgJGd1dHRlci1jb2xvciAkeikpO1xuICB9XG5cbiAgQHJldHVybiAkZ3JpZDtcbn1cblxuLy8gUmV0dXJuIHRoZSBncmFkaWVudCBuZWVkZWQgZm9yIGhvcml6b250YWwgZ3JpZHNcbkBmdW5jdGlvbiBnZXQtY29sdW1uLWdyYWRpZW50KFxuICAkdG90YWwgICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMsXG4gICRjb2x1bW4gICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLXdpZHRoLFxuICAkZ3V0dGVyICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci13aWR0aCxcbiAgJG9mZnNldCAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQsXG4gICRjb2x1bW4tY29sb3IgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yLFxuICAkZ3V0dGVyLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvcixcbiAgJGZvcmNlLWZsdWlkICAgIDogJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZFxuKSB7XG4gICRncmlkOiB1bnF1b3RlKFwiXCIpO1xuXG4gIC8vIGRvbid0IGZvcmNlIGZsdWlkIGdyaWRzIHdoZW4gdGhleSBhcmUgYWxyZWFkeSBmbHVpZC5cbiAgQGlmIHVuaXQoJGNvbHVtbikgPT0gXCIlXCIgeyAkZm9yY2UtZmx1aWQ6IGZhbHNlOyB9XG5cbiAgQGlmICRmb3JjZS1mbHVpZCB7XG4gICAgJGdyaWQ6IGdldC1jb2x1bW4tZmx1aWQtZ3JpZCgkdG90YWwsJGNvbHVtbiwkZ3V0dGVyLCRvZmZzZXQsJGNvbHVtbi1jb2xvciwkZ3V0dGVyLWNvbG9yKTtcbiAgfSBAZWxzZSB7XG4gICAgJGdyaWQ6IGJ1aWxkLWdyaWQtYmFja2dyb3VuZCgkdG90YWwsJGNvbHVtbiwkZ3V0dGVyLCRvZmZzZXQsJGNvbHVtbi1jb2xvciwkZ3V0dGVyLWNvbG9yKTtcbiAgfVxuXG4gIC8vIHJldHVybiB0aGUgaG9yaXpvbnRhbCBncmlkIGFzIGEgZ3JhZGllbnRcbiAgJGdyYWRpZW50OiBsaW5lYXItZ3JhZGllbnQobGVmdCwgJGdyaWQpO1xuICBAcmV0dXJuICRncmFkaWVudDtcbn1cblxuLy8gQ29udmVydCBhIGdyaWQgZnJvbSBmaXhlZCB1bml0cyBpbnRvIHBlcmNlbnRhZ2VzLlxuQGZ1bmN0aW9uIGdldC1jb2x1bW4tZmx1aWQtZ3JpZChcbiAgJHRvdGFsICAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zLFxuICAkY29sdW1uICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aCxcbiAgJGd1dHRlciAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGgsXG4gICRvZmZzZXQgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LFxuICAkY29sdW1uLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvcixcbiAgJGd1dHRlci1jb2xvciAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3Jcbikge1xuICAkY29udGV4dDogKCRjb2x1bW4gKiAkdG90YWwpICsgKCRndXR0ZXIgKiAoJHRvdGFsIC0gMSkgKyAoJG9mZnNldCAqIDIpKTtcbiAgJG9mZnNldDogJG9mZnNldCAvICRjb250ZXh0ICogMTAwJTtcbiAgJGNvbHVtbjogJGNvbHVtbiAvICRjb250ZXh0ICogMTAwJTtcbiAgJGd1dHRlcjogJGd1dHRlciAvICRjb250ZXh0ICogMTAwJTtcblxuICAvLyByZXR1cm4gdGhlIGhvcml6b250YWwgZ3JpZCBhcyBhIHNldCBvZiBjb2xvci1zdG9wc1xuICAkZ3JpZDogYnVpbGQtZ3JpZC1iYWNrZ3JvdW5kKCR0b3RhbCwkY29sdW1uLCRndXR0ZXIsJG9mZnNldCwkY29sdW1uLWNvbG9yLCRndXR0ZXItY29sb3IpO1xuICBAcmV0dXJuICRncmlkO1xufVxuXG5cbi8vIEFkZCBqdXN0IHRoZSBiYXNlbGluZSBncmlkIHRvIGFuIGVsZW1lbnQncyBiYWNrZ3JvdW5kXG5AbWl4aW4gYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kKFxuICAkYmFzZWxpbmUgOiAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWhlaWdodCxcbiAgJGNvbG9yICAgIDogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvclxuKSB7XG4gIEBpZiAkc2hvdy1ncmlkLWJhY2tncm91bmRzIGFuZCAkc2hvdy1iYXNlbGluZS1ncmlkLWJhY2tncm91bmRzIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKGdldC1iYXNlbGluZS1ncmFkaWVudCgkY29sb3IpKTtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoMTAwJSAkYmFzZWxpbmUpO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wO1xuICB9XG59XG5cbi8vIEFkZCBqdXN0IHRoZSBob3Jpem9udGFsIGdyaWQgdG8gYW4gZWxlbWVudCdzIGJhY2tncm91bmRcbkBtaXhpbiBjb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kKFxuICAkdG90YWwgICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMsXG4gICRjb2x1bW4gICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLXdpZHRoLFxuICAkZ3V0dGVyICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci13aWR0aCxcbiAgJG9mZnNldCAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQsXG4gICRjb2x1bW4tY29sb3IgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yLFxuICAkZ3V0dGVyLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvcixcbiAgJGZvcmNlLWZsdWlkICAgIDogJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZFxuKSB7XG4gIEBpZiAkc2hvdy1ncmlkLWJhY2tncm91bmRzIGFuZCAkc2hvdy1jb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kcyB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShcbiAgICAgIGdldC1jb2x1bW4tZ3JhZGllbnQoJHRvdGFsLCRjb2x1bW4sJGd1dHRlciwkb2Zmc2V0LCRjb2x1bW4tY29sb3IsJGd1dHRlci1jb2xvciwgJGZvcmNlLWZsdWlkKVxuICAgICk7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCB0b3A7XG4gIH1cbn1cblxuLy8gQWRkIGJvdGggaG9yaXpvbnRhbCBhbmQgYmFzZWxpbmUgZ3JpZHMgdG8gYW4gZWxlbWVudCdzIGJhY2tncm91bmRcbkBtaXhpbiBncmlkLWJhY2tncm91bmQoXG4gICR0b3RhbCAgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtdG90YWwtY29sdW1ucyxcbiAgJGNvbHVtbiAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGgsXG4gICRndXR0ZXIgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoLFxuICAkYmFzZWxpbmUgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWhlaWdodCxcbiAgJG9mZnNldCAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQsXG4gICRjb2x1bW4tY29sb3IgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yLFxuICAkZ3V0dGVyLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvcixcbiAgJGJhc2VsaW5lLWNvbG9yIDogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcixcbiAgJGZvcmNlLWZsdWlkICAgIDogJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZFxuKSB7XG4gIEBpZiAkc2hvdy1ncmlkLWJhY2tncm91bmRzIHtcbiAgICBAaWYgJHNob3ctYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kcyBhbmQgJHNob3ctY29sdW1uLWdyaWQtYmFja2dyb3VuZHMge1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShcbiAgICAgICAgZ2V0LWJhc2VsaW5lLWdyYWRpZW50KCRiYXNlbGluZS1jb2xvciksXG4gICAgICAgIGdldC1jb2x1bW4tZ3JhZGllbnQoJHRvdGFsLCRjb2x1bW4sJGd1dHRlciwkb2Zmc2V0LCRjb2x1bW4tY29sb3IsJGd1dHRlci1jb2xvciwgJGZvcmNlLWZsdWlkKVxuICAgICAgKTtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgxMDAlICRiYXNlbGluZSwgYXV0byk7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZCgkYmFzZWxpbmUsICRiYXNlbGluZS1jb2xvcik7XG4gICAgICBAaW5jbHVkZSBjb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kKCR0b3RhbCwkY29sdW1uLCRndXR0ZXIsJG9mZnNldCwkY29sdW1uLWNvbG9yLCRndXR0ZXItY29sb3IsICRmb3JjZS1mbHVpZCk7XG4gICAgfVxuICB9XG59XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5AaW1wb3J0IFwiLi4vdXRpbGl0aWVzL2dlbmVyYWwvaGFja3NcIjtcbkBpbXBvcnQgXCIuLi9mdW5jdGlvbnNcIjtcblxuLy8gQmFja2dyb3VuZCBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gYmFja2dyb3VuZChcbiAgJGJhY2tncm91bmQtMSxcbiAgJGJhY2tncm91bmQtMjogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTM6IGZhbHNlLFxuICAkYmFja2dyb3VuZC00OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNTogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTY6IGZhbHNlLFxuICAkYmFja2dyb3VuZC03OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtODogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTk6IGZhbHNlLFxuICAkYmFja2dyb3VuZC0xMDogZmFsc2Vcbikge1xuICAkYmFja2dyb3VuZHM6IGNvbXBhY3QoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICRiYWNrZ3JvdW5kLTYsICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsICRiYWNrZ3JvdW5kLTksICRiYWNrZ3JvdW5kLTEwKTtcbiAgJG11bHQtYmdzOiAtY29tcGFzcy1saXN0LXNpemUoJGJhY2tncm91bmRzKSA+IDE7XG4gICRhZGQtcGllLWJnOiBwcmVmaXhlZCgtcGllLCAgICRiYWNrZ3JvdW5kcykgb3IgJG11bHQtYmdzO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgYW5kIHByZWZpeGVkKC1zdmcsICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgIC1zdmcoJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgIC1vd2coJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgYW5kIHByZWZpeGVkKC13ZWJraXQsICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6IC13ZWJraXQoJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgYW5kIHByZWZpeGVkKC1tb3osICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgIC1tb3ooJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgYW5kIHByZWZpeGVkKC1vLCAgICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgICAgLW8oJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgYW5kICRhZGQtcGllLWJnICAgICAgICAgICAgICAgICAgICAgeyAtcGllLWJhY2tncm91bmQ6ICAgIC1waWUoJGJhY2tncm91bmRzKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICAgICAgICAgJGJhY2tncm91bmRzIDtcbn1cblxuQG1peGluIGJhY2tncm91bmQtd2l0aC1jc3MyLWZhbGxiYWNrKFxuICAkYmFja2dyb3VuZC0xLFxuICAkYmFja2dyb3VuZC0yOiBmYWxzZSxcbiAgJGJhY2tncm91bmQtMzogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTQ6IGZhbHNlLFxuICAkYmFja2dyb3VuZC01OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNjogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTc6IGZhbHNlLFxuICAkYmFja2dyb3VuZC04OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtOTogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTEwOiBmYWxzZVxuKSB7XG4gICRiYWNrZ3JvdW5kczogY29tcGFjdCgkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yLCAkYmFja2dyb3VuZC0zLCAkYmFja2dyb3VuZC00LCAkYmFja2dyb3VuZC01LFxuICAgICAgICAgICAgICAgICAgICAgICAgJGJhY2tncm91bmQtNiwgJGJhY2tncm91bmQtNywgJGJhY2tncm91bmQtOCwgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTApO1xuICAkbXVsdC1iZ3M6IC1jb21wYXNzLWxpc3Qtc2l6ZSgkYmFja2dyb3VuZHMpID4gMTtcbiAgJHNpbXBsZS1iYWNrZ3JvdW5kOiBpZigkbXVsdC1iZ3Mgb3IgcHJlZml4ZWQoLWNzczIsICRiYWNrZ3JvdW5kcyksIC1jc3MyKC1jb21wYXNzLW50aCgkYmFja2dyb3VuZHMsIGxhc3QpKSwgZmFsc2UpO1xuICBAaWYgbm90KGJsYW5rKCRzaW1wbGUtYmFja2dyb3VuZCkpIHsgYmFja2dyb3VuZDogJHNpbXBsZS1iYWNrZ3JvdW5kOyB9XG4gIEBpbmNsdWRlIGJhY2tncm91bmQoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSxcbiAgICAgICAgICAgICAgICAgICAgICAkYmFja2dyb3VuZC02LCAkYmFja2dyb3VuZC03LCAkYmFja2dyb3VuZC04LCAkYmFja2dyb3VuZC05LCAkYmFja2dyb3VuZC0xMCk7XG59XG5cblxuLy8gQmFja2dyb3VuZCBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gYmFja2dyb3VuZC1pbWFnZShcbiAgJGltYWdlLTEsXG4gICRpbWFnZS0yOiBmYWxzZSxcbiAgJGltYWdlLTM6IGZhbHNlLFxuICAkaW1hZ2UtNDogZmFsc2UsXG4gICRpbWFnZS01OiBmYWxzZSxcbiAgJGltYWdlLTY6IGZhbHNlLFxuICAkaW1hZ2UtNzogZmFsc2UsXG4gICRpbWFnZS04OiBmYWxzZSxcbiAgJGltYWdlLTk6IGZhbHNlLFxuICAkaW1hZ2UtMTA6IGZhbHNlXG4pIHtcbiAgJGltYWdlczogY29tcGFjdCgkaW1hZ2UtMSwgJGltYWdlLTIsICRpbWFnZS0zLCAkaW1hZ2UtNCwgJGltYWdlLTUsICRpbWFnZS02LCAkaW1hZ2UtNywgJGltYWdlLTgsICRpbWFnZS05LCAkaW1hZ2UtMTApO1xuICAkYWRkLXBpZS1iZzogcHJlZml4ZWQoLXBpZSwgICAkaW1hZ2VzKSBvciAtY29tcGFzcy1saXN0LXNpemUoJGltYWdlcykgPiAxO1xuXG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICBhbmQgcHJlZml4ZWQoLXN2ZywgICAgJGltYWdlcykgeyBiYWNrZ3JvdW5kLWltYWdlOiAgICAtc3ZnKCRpbWFnZXMpOyBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAgICAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6ICAgIC1vd2coJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQoJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIGFuZCBwcmVmaXhlZCgtbW96LCAgICAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6ICAgIC1tb3ooJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIGFuZCBwcmVmaXhlZCgtbywgICAgICAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6ICAgICAgLW8oJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIGFuZCAkYWRkLXBpZS1iZyAgICAgICAgICAgICAgICB7IEB3YXJuIFwiUElFIGRvZXMgbm90IHN1cHBvcnQgYmFja2dyb3VuZC1pbWFnZS4gVXNlIEBpbmNsdWRlIGJhY2tncm91bmQoI3skaW1hZ2VzfSkgaW5zdGVhZC5cIiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgICAgICRpbWFnZXMgO1xufVxuXG4vLyBFbWl0IGEgSUUtU3BlY2lmaWMgZmlsdGVycyB0aGF0IHJlbmRlcnMgYSBzaW1wbGUgbGluZWFyIGdyYWRpZW50LlxuLy8gRm9yIHVzZSBpbiBJRSA2IC0gOC4gQmVzdCBwcmFjdGljZSB3b3VsZCBoYXZlIHlvdSBhcHBseSB0aGlzIHZpYSBhXG4vLyBjb25kaXRpb25hbCBJRSBzdHlsZXNoZWV0LCBidXQgaWYgeW91IG11c3QsIHlvdSBzaG91bGQgcGxhY2UgdGhpcyBiZWZvcmVcbi8vIGFueSBiYWNrZ3JvdW5kLWltYWdlIHByb3BlcnRpZXMgdGhhdCB5b3UgaGF2ZSBzcGVjaWZpZWQuXG4vL1xuLy8gRm9yIHRoZSBgJG9yaWVudGF0aW9uYCBwYXJhbWV0ZXIsIHlvdSBjYW4gcGFzcyBgdmVydGljYWxgIG9yIGBob3Jpem9udGFsYC5cbkBtaXhpbiBmaWx0ZXItZ3JhZGllbnQoJHN0YXJ0LWNvbG9yLCAkZW5kLWNvbG9yLCAkb3JpZW50YXRpb246IHZlcnRpY2FsKSB7XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG4gICRncmFkaWVudC10eXBlOiBpZigkb3JpZW50YXRpb24gPT0gdmVydGljYWwsIDAsIDEpO1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTgge1xuICAgIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGdyYWRpZW50VHlwZT0jeyRncmFkaWVudC10eXBlfSwgc3RhcnRDb2xvcnN0cj0nI3tpZS1oZXgtc3RyKCRzdGFydC1jb2xvcil9JywgZW5kQ29sb3JzdHI9JyN7aWUtaGV4LXN0cigkZW5kLWNvbG9yKX0nKTtcbiAgfVxufVxuXG5cbi8vIEJvcmRlciBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHByb3BlcnRpZXMgYW5kIHZhbHVlcy5cbkBtaXhpbiBib3JkZXItaW1hZ2UoJHZhbHVlKSB7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICB7ICAgIC1tb3otYm9yZGVyLWltYWdlOiAgICAtbW96KHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgeyAtd2Via2l0LWJvcmRlci1pbWFnZTogICAgLW93ZyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIHsgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IC13ZWJraXQocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICB7ICAgICAgLW8tYm9yZGVyLWltYWdlOiAgICAgIC1vKHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgeyAgICAgICAgIGJvcmRlci1pbWFnZTogICAgLXN2ZyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItaW1hZ2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlO1xufVxuXG4vLyBMaXN0IHN0eWxlIGltYWdlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBsaXN0LXN0eWxlLWltYWdlKCRpbWFnZSkge1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgYW5kIHByZWZpeGVkKC1tb3osICAgICRpbWFnZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtbW96KCRpbWFnZSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAgICAkaW1hZ2UpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLW93ZygkaW1hZ2UpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGltYWdlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6IC13ZWJraXQoJGltYWdlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgYW5kIHByZWZpeGVkKC1vLCAgICAgICRpbWFnZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAgIC1vKCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIGFuZCBwcmVmaXhlZCgtc3ZnLCAgICAkaW1hZ2UpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLXN2ZygkaW1hZ2UpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGUtaW1hZ2U6ICAgICAgICAgJGltYWdlIDtcbn1cblxuLy8gTGlzdCBzdHlsZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gbGlzdC1zdHlsZSgkdmFsdWUpIHtcbiAgJHZhbHVlOiAtY29tcGFzcy1saXN0KCR2YWx1ZSk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICBhbmQgcHJlZml4ZWQoLW1veiwgICAgJHZhbHVlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgIC1tb3ooJHZhbHVlKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICAgICR2YWx1ZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtb3dnKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkdmFsdWUpIHsgbGlzdC1zdHlsZS1pbWFnZTogLXdlYmtpdCgkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICBhbmQgcHJlZml4ZWQoLW8sICAgICAgJHZhbHVlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgICAgLW8oJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgYW5kIHByZWZpeGVkKC1zdmcsICAgICR2YWx1ZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtc3ZnKCR2YWx1ZSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC1zdHlsZS1pbWFnZTogICAgICAgICAkdmFsdWUgO1xufVxuXG4vLyBjb250ZW50IHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBjb250ZW50KCR2YWx1ZSkge1xuICAkdmFsdWU6IC1jb21wYXNzLWxpc3QoJHZhbHVlKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIGFuZCBwcmVmaXhlZCgtbW96LCAgICAkdmFsdWUpIHsgY29udGVudDogICAgLW1veigkdmFsdWUpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgICAgJHZhbHVlKSB7IGNvbnRlbnQ6ICAgIC1vd2coJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgYW5kIHByZWZpeGVkKC13ZWJraXQsICR2YWx1ZSkgeyBjb250ZW50OiAtd2Via2l0KCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIGFuZCBwcmVmaXhlZCgtbywgICAgICAkdmFsdWUpIHsgY29udGVudDogICAgICAtbygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICBhbmQgcHJlZml4ZWQoLXN2ZywgICAgJHZhbHVlKSB7IGNvbnRlbnQ6ICAgIC1zdmcoJHZhbHVlKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAgICAgICAgICR2YWx1ZSA7XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH0gQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxO1xuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gIH1cbn1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9O1xuICB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCJmdW5jdGlvbnMvbGlzdHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2dyYWRpZW50X3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29uc3RhbnRzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Rpc3BsYXlcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29sb3JzXCI7XG4iLCIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGxpc3QgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9saXN0cy5yYlxuLy9cblxuXG4vLyBjb21wYWN0IGlzIHBhcnQgb2YgbGlic2Fzc1xuXG5AZnVuY3Rpb24gLWNvbXBhc3MtbnRoKCRsaXN0LCAkcGxhY2UpIHtcbiAgLy8gWWVwLCBTYXNzLWxpc3RzIGFyZSAxLWluZGV4ZWQuXG4gIEBpZiAkcGxhY2UgPT0gXCJmaXJzdFwiIHtcbiAgICAkcGxhY2U6IDE7XG4gIH1cbiAgQGlmICRwbGFjZSA9PSBcImxhc3RcIiB7XG4gICAgJHBsYWNlOiBsZW5ndGgoJGxpc3QpO1xuICB9XG4gIEByZXR1cm4gbnRoKCRsaXN0LCAkcGxhY2UpO1xufVxuXG4vLyBjb21wYXNzX2xpc3QgY2FuJ3QgYmUgaW1wbGVtZW50ZWQgaW4gc2FzcyBzY3JpcHRcblxuQGZ1bmN0aW9uIC1jb21wYXNzLXNwYWNlLWxpc3QoJGl0ZW0xLCAkaXRlbTI6bnVsbCwgJGl0ZW0zOm51bGwsICRpdGVtNDpudWxsLCAkaXRlbTU6bnVsbCwgJGl0ZW02Om51bGwsICRpdGVtNzpudWxsLCAkaXRlbTg6bnVsbCwgJGl0ZW05Om51bGwpIHtcbiAgJGl0ZW1zOiAoKTtcbiAgLy8gU3VwcG9ydCBmb3IgcG9seW1vcnBoaXNtLlxuICBAaWYgdHlwZS1vZigkaXRlbTEpID09ICdsaXN0JyB7XG4gICAgLy8gUGFzc2luZyBhIHNpbmdsZSBhcnJheSBvZiBwcm9wZXJ0aWVzLlxuICAgICRpdGVtczogJGl0ZW0xO1xuICB9IEBlbHNlIHtcbiAgICAkaXRlbXM6ICRpdGVtMSAkaXRlbTIgJGl0ZW0zICRpdGVtNCAkaXRlbTUgJGl0ZW02ICRpdGVtNyAkaXRlbTggJGl0ZW05O1xuICB9XG5cbiAgJGZ1bGw6IGZpcnN0LXZhbHVlLW9mKCRpdGVtcyk7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCBsZW5ndGgoJGl0ZW1zKSB7XG4gICAgJGl0ZW06IG50aCgkaXRlbXMsICRpKTtcbiAgICBAaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkZnVsbDogJGZ1bGwgJGl0ZW07XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkZnVsbDtcbn1cblxuQGZ1bmN0aW9uIC1jb21wYXNzLWxpc3Qtc2l6ZSgkbGlzdCkge1xuICBAcmV0dXJuIGxlbmd0aCgkbGlzdCk7XG59XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1zbGljZSgkbGlzdCwgJHN0YXJ0LCAkZW5kOiBmYWxzZSkge1xuICBAaWYgJGVuZCA9PSBmYWxzZSB7XG4gICAgJGVuZDogbGVuZ3RoKCRsaXN0KTtcbiAgfVxuICAkZnVsbDogbnRoKCRsaXN0LCAkc3RhcnQpO1xuICBAZm9yICRpIGZyb20gJHN0YXJ0ICsgMSB0aHJvdWdoICRlbmQge1xuICAgICRmdWxsOiAkZnVsbCwgbnRoKCRsaXN0LCAkaSk7XG4gIH1cbiAgQHJldHVybiAkZnVsbDtcbn1cblxuQGZ1bmN0aW9uIHJlamVjdCgkbGlzdCwgJHJlamVjdDEsICRyZWplY3QyOm51bGwsICRyZWplY3QzOm51bGwsICRyZWplY3Q0Om51bGwsICRyZWplY3Q1Om51bGwsICRyZWplY3Q2Om51bGwsICRyZWplY3Q3Om51bGwsICRyZWplY3Q4Om51bGwsICRyZWplY3Q5Om51bGwpIHtcbiAgJHJlamVjdHM6ICRyZWplY3QxLCAkcmVqZWN0MiwgJHJlamVjdDMsICRyZWplY3Q0LCAkcmVqZWN0NSwgJHJlamVjdDYsICRyZWplY3Q3LCAkcmVqZWN0OCwgJHJlamVjdDk7XG5cbiAgJGZ1bGw6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkbGlzdCB7XG4gICAgQGlmIGluZGV4KCRyZWplY3RzLCAkaXRlbSkge31cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgJGZ1bGwge1xuICAgICAgICAkZnVsbDogJGZ1bGwsICRpdGVtO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZnVsbDogJGl0ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJGZ1bGw7XG59XG5cbkBmdW5jdGlvbiBmaXJzdC12YWx1ZS1vZigkbGlzdCkge1xuICBAcmV0dXJuIG50aCgkbGlzdCwgMSk7XG59XG5cbkBmdW5jdGlvbiBjb21wYWN0KCR2YXJzLi4uKSB7XG4gICRzZXBhcmF0b3I6IGxpc3Qtc2VwYXJhdG9yKCR2YXJzKTtcbiAgJGxpc3Q6ICgpO1xuICBAZWFjaCAkdmFyIGluICR2YXJzIHtcbiAgICAgIEBpZiAkdmFyIHtcbiAgICAgICAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkdmFyLCAkc2VwYXJhdG9yKTtcbiAgICAgIH1cbiAgfVxuICBAcmV0dXJuICRsaXN0O1xufVxuIiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY3Jvc3MgYnJvd3NlciBzdXBwb3J0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnJiXG4vLyBcblxuQGZ1bmN0aW9uIHByZWZpeGVkKCRwcmVmaXgsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5O1xuICAkcHJlZml4ZWQ6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09ICdzdHJpbmcnIHtcbiAgICAgICRwcmVmaXhlZDogJHByZWZpeGVkIG9yIHN0ci1pbmRleCgkaXRlbSwgJ3VybCcpICE9IDEgYW5kIHN0ci1pbmRleCgkaXRlbSwgJ3JnYicpICE9IDEgYW5kIHN0ci1pbmRleCgkaXRlbSwgJyMnKSAhPSAxO1xuICAgIH0gQGVsc2VpZiB0eXBlLW9mKCRpdGVtKSA9PSAnY29sb3InIHtcbiAgICB9IEBlbHNlaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkcHJlZml4ZWQ6IHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJHByZWZpeGVkO1xufVxuXG5AZnVuY3Rpb24gcHJlZml4KCRwcmVmaXgsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gICRwcm9wZXJ0aWVzOiBcIlwiO1xuXG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJHByb3BlcnR5MSkgPT0gJ2xpc3QnIHtcbiAgICAvLyBQYXNzaW5nIGEgc2luZ2xlIGFycmF5IG9mIHByb3BlcnRpZXMuXG4gICAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTE7XG4gIH0gQGVsc2Uge1xuICAgIC8vIFBhc3NpbmcgbXVsdGlwbGUgcHJvcGVydGllcy5cbiAgICAkcHJvcGVydGllczogJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OTtcbiAgfVxuXG4gICRwcm9wczogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgJGl0ZW0gPT0gbnVsbCB7fVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiBwcmVmaXhlZCgkcHJlZml4LCAkaXRlbSkge1xuICAgICAgICAkaXRlbTogI3skcHJlZml4fS0jeyRpdGVtfTtcbiAgICAgIH1cbiAgICAgIEBpZiAkcHJvcHMge1xuICAgICAgICAkcHJvcHM6ICRwcm9wcywgJGl0ZW07XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwcm9wczogJGl0ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJHByb3BzO1xufVxuXG5AZnVuY3Rpb24gLXN2ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLXN2ZycsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLW93ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLW93ZycsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLXdlYmtpdCgkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLXdlYmtpdCcsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLW1veigkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLW1veicsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLW8oJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1vJywgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7XG59XG5cbkBmdW5jdGlvbiAtcGllKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KCctcGllJywgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7XG59XG4iLCIvLyBcbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBncmFkaWVudCBzdXBwb3J0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2IvdjAuMTIuMi9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2dyYWRpZW50X3N1cHBvcnQucmJcbi8vIFxuXG5AZnVuY3Rpb24gY29sb3Itc3RvcHMoJGl0ZW0xLCAkaXRlbTI6bnVsbCwgJGl0ZW0zOm51bGwsICRpdGVtNDpudWxsLCAkaXRlbTU6bnVsbCwgJGl0ZW02Om51bGwsICRpdGVtNzpudWxsLCAkaXRlbTg6bnVsbCwgJGl0ZW05Om51bGwpIHtcbiAgJGl0ZW1zOiAkaXRlbTIsICRpdGVtMywgJGl0ZW00LCAkaXRlbTUsICRpdGVtNiwgJGl0ZW03LCAkaXRlbTgsICRpdGVtOTtcbiAgJGZ1bGw6ICRpdGVtMTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGl0ZW1zIHtcbiAgICBAaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkZnVsbDogJGZ1bGwsICRpdGVtO1xuICAgIH0gICAgXG4gIH1cbiAgQHJldHVybiAkZnVsbDtcbn0iLCIvLyBcbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjb25zdGFudHMgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jb25zdGFudHMucmJcbi8vIFxuXG5AZnVuY3Rpb24gb3Bwb3NpdGUtcG9zaXRpb24oJGZyb20pIHtcbiAgICBAaWYgKCRmcm9tID09IHRvcCkge1xuICAgICAgICBAcmV0dXJuIGJvdHRvbTtcbiAgICB9IEBlbHNlIGlmICgkZnJvbSA9PSBib3R0b20pIHtcbiAgICAgICAgQHJldHVybiB0b3A7XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gbGVmdCkge1xuICAgICAgICBAcmV0dXJuIHJpZ2h0O1xuICAgIH0gQGVsc2UgaWYgKCRmcm9tID09IHJpZ2h0KSB7XG4gICAgICAgIEByZXR1cm4gbGVmdDtcbiAgICB9IEBlbHNlIGlmICgkZnJvbSA9PSBjZW50ZXIpIHtcbiAgICAgICAgQHJldHVybiBjZW50ZXI7XG4gICAgfVxufVxuIiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZGlzcGxheSBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9kaXNwbGF5LnJiXG4vLyBcblxuQGZ1bmN0aW9uIGVsZW1lbnRzLW9mLXR5cGUoJHR5cGUpe1xuICAgIEBpZiAoJHR5cGUgPT0gYmxvY2spe1xuICAgICAgICBAcmV0dXJuIGFkZHJlc3MsIGFydGljbGUsIGFzaWRlLCBibG9ja3F1b3RlLCBjZW50ZXIsIGRpciwgZGl2LCBkZCwgZGV0YWlscywgZGwsIGR0LCBmaWVsZHNldCwgZmlnY2FwdGlvbiwgZmlndXJlLCBmb3JtLCBmb290ZXIsIGZyYW1lc2V0LCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBociwgaGVhZGVyLCBoZ3JvdXAsIGlzaW5kZXgsIG1haW4sIG1lbnUsIG5hdiwgbm9mcmFtZXMsIG5vc2NyaXB0LCBvbCwgcCwgcHJlLCBzZWN0aW9uLCBzdW1tYXJ5LCB1bDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBpbmxpbmUpe1xuICAgICAgICBAcmV0dXJuIGEsIGFiYnIsIGFjcm9ueW0sIGF1ZGlvLCBiLCBiYXNlZm9udCwgYmRvLCBiaWcsIGJyLCBjYW52YXMsIGNpdGUsIGNvZGUsIGNvbW1hbmQsIGRhdGFsaXN0LCBkZm4sIGVtLCBlbWJlZCwgZm9udCwgaSwgaW1nLCBpbnB1dCwga2V5Z2VuLCBrYmQsIGxhYmVsLCBtYXJrLCBtZXRlciwgb3V0cHV0LCBwcm9ncmVzcywgcSwgcnAsIHJ0LCBydWJ5LCBzLCBzYW1wLCBzZWxlY3QsIHNtYWxsLCBzcGFuLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHRleHRhcmVhLCB0aW1lLCB0dCwgdSwgdmFyLCB2aWRlbywgd2JyO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGlubGluZS1ibG9jayl7XG4gICAgICAgIEByZXR1cm4gaW1nO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlKXtcbiAgICAgICAgQHJldHVybiB0YWJsZTtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBsaXN0LWl0ZW0pe1xuICAgICAgICBAcmV0dXJuIGxpO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLXJvdy1ncm91cCl7XG4gICAgICAgIEByZXR1cm4gdGJvZHk7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtaGVhZGVyLWdyb3VwKXtcbiAgICAgICAgQHJldHVybiB0aGVhZDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1mb290ZXItZ3JvdXApe1xuICAgICAgICBAcmV0dXJuIHRmb290O1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLXJvdyl7XG4gICAgICAgIEByZXR1cm4gdHI7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtY2VsbCl7XG4gICAgICAgIEByZXR1cm4gdGgsIHRkO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGh0bWw1LWJsb2NrKXtcbiAgICAgICAgQHJldHVybiBhcnRpY2xlLCBhc2lkZSwgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBtYWluLCBtZW51LCBuYXYsIHNlY3Rpb24sIHN1bW1hcnk7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaHRtbDUtaW5saW5lKXtcbiAgICAgICAgQHJldHVybiBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZW1iZWQsIGtleWdlbiwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHJwLCBydCwgcnVieSwgdGltZSwgdmlkZW8sIHdicjtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBodG1sNSl7XG4gICAgICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGF1ZGlvLCBjYW52YXMsIGNvbW1hbmQsIGRhdGFsaXN0LCBkZXRhaWxzLCBlbWJlZCwgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBrZXlnZW4sIG1haW4sIG1hcmssIG1lbnUsIG1ldGVyLCBuYXYsIG91dHB1dCwgcHJvZ3Jlc3MsIHJwLCBydCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSwgdGltZSwgdmlkZW8sIHdicjtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0ZXh0LWlucHV0KXtcbiAgICAgICAgQHJldHVybiBpbnB1dCwgdGV4dGFyZWE7XG4gICAgfVxufVxuIiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29sb3JzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2NvcmUvbGliL2NvbXBhc3MvY29yZS9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2NvbG9ycy5yYlxuLy9cblxuLy8gYSBnZW5lcmljaXplZCB2ZXJzaW9uIG9mIGxpZ2h0ZW4vZGFya2VuIHNvIHRoYXQgbmVnYXRpdmUgdmFsdWVzIGNhbiBiZSB1c2VkLlxuQGZ1bmN0aW9uIGFkanVzdC1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gICAgQHJldHVybiBhZGp1c3QtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkYW1vdW50KTtcbn1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBsaWdodG5lc3MgYnkgc29tZSBwZXJjZW50YWdlLlxuLy8gSWYgdGhlIGFtb3VudCBpcyBuZWdhdGl2ZSwgdGhlIGNvbG9yIGlzIHNjYWxlZCBkYXJrZXIsIGlmIHBvc2l0aXZlLCBpdCBpcyBzY2FsZWQgbGlnaHRlci5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIGxpZ2h0IG9yIGRhcmsgY29sb3IgdW5sZXNzIHRoZSBhbW91bnQgaXMgMTAwJS5cbkBmdW5jdGlvbiBzY2FsZS1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gICAgQHJldHVybiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRhbW91bnQpO1xufVxuXG4vLyBhIGdlbmVyaWNpemVkIHZlcnNpb24gb2Ygc2F0dXJhdGUvZGVzYXR1cmF0ZSBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gYmUgdXNlZC5cbkBmdW5jdGlvbiBhZGp1c3Qtc2F0dXJhdGlvbigkY29sb3IsICRhbW91bnQpIHtcbiAgICBAcmV0dXJuIGFkanVzdC1jb2xvcigkY29sb3IsICRzYXR1cmF0aW9uOiAkYW1vdW50KTtcbn1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBzYXR1cmF0aW9uIGJ5IHNvbWUgcGVyY2VudGFnZS5cbi8vIElmIHRoZSBhbW91bnQgaXMgbmVnYXRpdmUsIHRoZSBjb2xvciBpcyBkZXNhdHVyYXRlZCwgaWYgcG9zaXRpdmUsIGl0IGlzIHNhdHVyYXRlZC5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIHNhdHVyYXRlZCBvciBkZXNhdHVyYXRlZCBjb2xvciB1bmxlc3MgdGhlIGFtb3VudCBpcyAxMDAlLlxuQGZ1bmN0aW9uIHNjYWxlLXNhdHVyYXRpb24oJGNvbG9yLCAkYW1vdW50KSB7XG4gICAgQHJldHVybiBzY2FsZS1jb2xvcigkY29sb3IsICRzYXR1cmF0aW9uOiAkYW1vdW50KTtcbn1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgICBAcmV0dXJuIG1peCgjMDAwMDAwLCAkY29sb3IsICRwZXJjZW50YWdlKTtcbn1cblxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICAgIEByZXR1cm4gbWl4KCNmZmZmZmYsICRjb2xvciwgJHBlcmNlbnRhZ2UpO1xufVxuXG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vICBvdmVycmlkZSB0byBjaGFuZ2UgdGhlIGRlZmF1bHRcbiRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIHNpemUgb2YgYmFja2dyb3VuZCBpbWFnZXMgdXNpbmcgcHgsIHdpZHRoIGFuZCBoZWlnaHQsIG9yIHBlcmNlbnRhZ2VzLlxuLy8gQ3VycmVudGx5IHN1cHBvcnRlZCBpbjogT3BlcmEsIEdlY2tvLCBXZWJraXQuXG4vL1xuLy8gKiBwZXJjZW50YWdlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJhY2tncm91bmQtb3JpZ2luIChkZWZhdWx0ID0gcGFkZGluZy1ib3gpXG4vLyAqIG1peGluIGRlZmF1bHRzIHRvOiBgJGRlZmF1bHQtYmFja2dyb3VuZC1zaXplYFxuQG1peGluIGJhY2tncm91bmQtc2l6ZShcbiAgJHNpemUtMTogJGRlZmF1bHQtYmFja2dyb3VuZC1zaXplLFxuICAkc2l6ZS0yOiBmYWxzZSxcbiAgJHNpemUtMzogZmFsc2UsXG4gICRzaXplLTQ6IGZhbHNlLFxuICAkc2l6ZS01OiBmYWxzZSxcbiAgJHNpemUtNjogZmFsc2UsXG4gICRzaXplLTc6IGZhbHNlLFxuICAkc2l6ZS04OiBmYWxzZSxcbiAgJHNpemUtOTogZmFsc2UsXG4gICRzaXplLTEwOiBmYWxzZVxuKSB7XG4gICRzaXplLTE6IGlmKHR5cGUtb2YoJHNpemUtMSkgPT0gc3RyaW5nLCB1bnF1b3RlKCRzaXplLTEpLCAkc2l6ZS0xKTtcbiAgJHNpemVzOiBjb21wYWN0KCRzaXplLTEsICRzaXplLTIsICRzaXplLTMsICRzaXplLTQsICRzaXplLTUsICRzaXplLTYsICRzaXplLTcsICRzaXplLTgsICRzaXplLTksICRzaXplLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtc2l6ZSwgJHNpemVzLCAtbW96LCAtd2Via2l0LCAtbywgbm90KC1tcyksIG5vdCgta2h0bWwpKTtcbn1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwiY3NzMy9ib3JkZXItcmFkaXVzXCI7XG5AaW1wb3J0IFwiY3NzMy9pbmxpbmUtYmxvY2tcIjtcbkBpbXBvcnQgXCJjc3MzL29wYWNpdHlcIjtcbkBpbXBvcnQgXCJjc3MzL2JveC1zaGFkb3dcIjtcbkBpbXBvcnQgXCJjc3MzL3RleHQtc2hhZG93XCI7XG5AaW1wb3J0IFwiY3NzMy9jb2x1bW5zXCI7XG5AaW1wb3J0IFwiY3NzMy9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwiY3NzMy9ib3hcIjtcbkBpbXBvcnQgXCJjc3MzL2ltYWdlc1wiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZC1jbGlwXCI7XG5AaW1wb3J0IFwiY3NzMy9iYWNrZ3JvdW5kLW9yaWdpblwiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZC1zaXplXCI7XG5AaW1wb3J0IFwiY3NzMy9mb250LWZhY2VcIjtcbkBpbXBvcnQgXCJjc3MzL3RyYW5zZm9ybVwiO1xuQGltcG9ydCBcImNzczMvdHJhbnNpdGlvblwiO1xuQGltcG9ydCBcImNzczMvYXBwZWFyYW5jZVwiO1xuQGltcG9ydCBcImNzczMvcmVnaW9uc1wiO1xuQGltcG9ydCBcImNzczMvaHlwaGVuYXRpb25cIjtcbkBpbXBvcnQgXCJjc3MzL2ZpbHRlclwiO1xuQGltcG9ydCBcImNzczMvcGllXCI7XG5AaW1wb3J0IFwiY3NzMy91c2VyLWludGVyZmFjZVwiO1xuQGltcG9ydCBcImNzczMvZmxleGJveFwiOyIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuJGRlZmF1bHQtYm9yZGVyLXJhZGl1czogNXB4ICFkZWZhdWx0O1xuXG4vLyBSb3VuZCBhbGwgY29ybmVycyBieSBhIHNwZWNpZmljIGFtb3VudCwgZGVmYXVsdHMgdG8gdmFsdWUgb2YgYCRkZWZhdWx0LWJvcmRlci1yYWRpdXNgLlxuLy9cbi8vIFdoZW4gdHdvIHZhbHVlcyBhcmUgcGFzc2VkLCB0aGUgZmlyc3QgaXMgdGhlIGhvcml6b250YWwgcmFkaXVzXG4vLyBhbmQgdGhlIHNlY29uZCBpcyB0aGUgdmVydGljYWwgcmFkaXVzLlxuLy9cbi8vIE5vdGU6IHdlYmtpdCBkb2VzIG5vdCBzdXBwb3J0IHNob3J0aGFuZCBzeW50YXggZm9yIHNldmVyYWwgY29ybmVycyBhdCBvbmNlLlxuLy8gU28gaW4gdGhlIGNhc2Ugd2hlcmUgeW91IHBhc3Mgc2V2ZXJhbCB2YWx1ZXMgb25seSB0aGUgZmlyc3Qgd2lsbCBiZSBwYXNzZWQgdG8gd2Via2l0LlxuLy9cbi8vIEV4YW1wbGVzOlxuLy9cbi8vICAgICAuc2ltcGxlICAgeyBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDRweCwgNHB4KTsgfVxuLy8gICAgIC5jb21wb3VuZCB7IEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMnB4IDVweCwgM3B4IDZweCk7IH1cbi8vICAgICAuY3JhenkgICAgeyBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDFweCAzcHggNXB4IDdweCwgMnB4IDRweCA2cHggOHB4KX1cbi8vXG4vLyBXaGljaCBnZW5lcmF0ZXM6XG4vL1xuLy8gICAgLnNpbXBsZSB7XG4vLyAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4IDRweDtcbi8vICAgICAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHggLyA0cHg7XG4vLyAgICAgIC1raHRtbC1ib3JkZXItcmFkaXVzOiA0cHggLyA0cHg7XG4vLyAgICAgIGJvcmRlci1yYWRpdXM6IDRweCAvIDRweDsgfVxuLy8gICAgXG4vLyAgICAuY29tcG91bmQge1xuLy8gICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDJweCAzcHg7XG4vLyAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogMnB4IDVweCAvIDNweCA2cHg7XG4vLyAgICAgIC1raHRtbC1ib3JkZXItcmFkaXVzOiAycHggNXB4IC8gM3B4IDZweDtcbi8vICAgICAgYm9yZGVyLXJhZGl1czogMnB4IDVweCAvIDNweCA2cHg7IH1cbi8vICAgIFxuLy8gICAgLmNyYXp5IHtcbi8vICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxcHggMnB4O1xuLy8gICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDFweCAzcHggNXB4IDdweCAvIDJweCA0cHggNnB4IDhweDtcbi8vICAgICAgLWtodG1sLWJvcmRlci1yYWRpdXM6IDFweCAzcHggNXB4IDdweCAvIDJweCA0cHggNnB4IDhweDtcbi8vICAgICAgYm9yZGVyLXJhZGl1czogMXB4IDNweCA1cHggN3B4IC8gMnB4IDRweCA2cHggOHB4OyB9XG5cbkBtaXhpbiBib3JkZXItcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMsICR2ZXJ0aWNhbC1yYWRpdXM6IGZhbHNlKSB7XG5cbiAgQGlmICR2ZXJ0aWNhbC1yYWRpdXMge1xuICAgIC8vIFdlYmtpdCBkb2Vzbid0IHVuZGVyc3RhbmQgdGhlIG9mZmljaWFsIHNob3J0aGFuZCBzeW50YXggZm9yIHNwZWNpZnlpbmdcbiAgICAvLyBhIHZlcnRpY2FsIHJhZGl1cyB1bmxlc3Mgc28gaW4gY2FzZSB0aGVyZSdzIHNldmVyYWwgd2Ugb25seSB0YWtlIHRoZSBmaXJzdC5cbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm9yZGVyLXJhZGl1cywgZmlyc3QtdmFsdWUtb2YoJHJhZGl1cykgZmlyc3QtdmFsdWUtb2YoJHZlcnRpY2FsLXJhZGl1cyksXG4gICAgICBub3QoLW1veiksXG4gICAgICAtd2Via2l0LFxuICAgICAgbm90KC1vKSxcbiAgICAgIG5vdCgtbXMpLFxuICAgICAgbm90KC1raHRtbCksXG4gICAgICBub3Qob2ZmaWNpYWwpXG4gICAgKTtcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwoXCJib3JkZXItcmFkaXVzXCIsICRyYWRpdXMgdW5xdW90ZShcIi9cIikgJHZlcnRpY2FsLXJhZGl1cyxcbiAgICAgIC1tb3osXG4gICAgICBub3QoLXdlYmtpdCksXG4gICAgICBub3QoLW8pLFxuICAgICAgbm90KC1tcyksXG4gICAgICAta2h0bWwsXG4gICAgICBvZmZpY2lhbFxuICAgICk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3JkZXItcmFkaXVzLCAkcmFkaXVzKTtcbiAgfVxufVxuXG4vLyBSb3VuZCByYWRpdXMgYXQgcG9zaXRpb24gYnkgYW1vdW50LlxuLy9cbi8vICogbGVnYWwgdmFsdWVzIGZvciBgJHZlcnRgOiBgdG9wYCwgYGJvdHRvbWBcbi8vICogbGVnYWwgdmFsdWVzIGZvciBgJGhvcnpgOiBgbGVmdGAsIGByaWdodGBcblxuQG1peGluIGJvcmRlci1jb3JuZXItcmFkaXVzKCR2ZXJ0LCAkaG9yeiwgJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICAvLyBTdXBwb3J0IGZvciBtb3ppbGxhJ3Mgc3ludGF4IGZvciBzcGVjaWZ5aW5nIGEgY29ybmVyXG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChcImJvcmRlci1yYWRpdXMtI3skdmVydH0jeyRob3J6fVwiLCAkcmFkaXVzLFxuICAgIC1tb3osXG4gICAgbm90KC13ZWJraXQpLFxuICAgIG5vdCgtbyksXG4gICAgbm90KC1tcyksXG4gICAgbm90KC1raHRtbCksXG4gICAgbm90KG9mZmljaWFsKVxuICApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoXCJib3JkZXItI3skdmVydH0tI3skaG9yen0tcmFkaXVzXCIsICRyYWRpdXMsXG4gICAgbm90KC1tb3opLFxuICAgIC13ZWJraXQsXG4gICAgbm90KC1vKSxcbiAgICBub3QoLW1zKSxcbiAgICAta2h0bWwsXG4gICAgb2ZmaWNpYWxcbiAgKTtcbiAgXG59XG5cbi8vIFJvdW5kIHRvcC1sZWZ0IGNvcm5lciBvbmx5XG5cbkBtaXhpbiBib3JkZXItdG9wLWxlZnQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLWNvcm5lci1yYWRpdXModG9wLCBsZWZ0LCAkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCB0b3AtcmlnaHQgY29ybmVyIG9ubHlcblxuQG1peGluIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLWNvcm5lci1yYWRpdXModG9wLCByaWdodCwgJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90dG9tLWxlZnQgY29ybmVyIG9ubHlcblxuQG1peGluIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItY29ybmVyLXJhZGl1cyhib3R0b20sIGxlZnQsICRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdHRvbS1yaWdodCBjb3JuZXIgb25seVxuXG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItY29ybmVyLXJhZGl1cyhib3R0b20sIHJpZ2h0LCAkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCBib3RoIHRvcCBjb3JuZXJzIGJ5IGFtb3VudFxuQG1peGluIGJvcmRlci10b3AtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cygkcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMoJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90aCByaWdodCBjb3JuZXJzIGJ5IGFtb3VudFxuQG1peGluIGJvcmRlci1yaWdodC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItdG9wLXJpZ2h0LXJhZGl1cygkcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMoJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90aCBib3R0b20gY29ybmVycyBieSBhbW91bnRcbkBtaXhpbiBib3JkZXItYm90dG9tLXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMoJHJhZGl1cyk7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzKCRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdGggbGVmdCBjb3JuZXJzIGJ5IGFtb3VudFxuQG1peGluIGJvcmRlci1sZWZ0LXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtbGVmdC1yYWRpdXMoJHJhZGl1cyk7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMoJHJhZGl1cyk7IH1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFNldCBgJGlubGluZS1ibG9jay1hbGlnbm1lbnRgIHRvIGBub25lYCBvciBgZmFsc2VgIHRvIGRpc2FibGUgdGhlIG91dHB1dFxuLy8gb2YgYSB2ZXJ0aWNhbC1hbGlnbiBwcm9wZXJ0eSBpbiB0aGUgaW5saW5lLWJsb2NrIG1peGluLlxuLy8gT3Igc2V0IGl0IHRvIGEgbGVnYWwgdmFsdWUgZm9yIGB2ZXJ0aWNhbC1hbGlnbmAgdG8gY2hhbmdlIHRoZSBkZWZhdWx0LlxuJGlubGluZS1ibG9jay1hbGlnbm1lbnQ6IG1pZGRsZSAhZGVmYXVsdDtcblxuLy8gUHJvdmlkZXMgYSBjcm9zcy1icm93c2VyIG1ldGhvZCB0byBpbXBsZW1lbnQgYGRpc3BsYXk6IGlubGluZS1ibG9jaztgXG5AbWl4aW4gaW5saW5lLWJsb2NrKCRhbGlnbm1lbnQ6ICRpbmxpbmUtYmxvY2stYWxpZ25tZW50KSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIGRpc3BsYXk6IC1tb3otaW5saW5lLXN0YWNrO1xuICB9XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgQGlmICRhbGlnbm1lbnQgYW5kICRhbGlnbm1lbnQgIT0gbm9uZSB7XG4gICAgdmVydGljYWwtYWxpZ246ICRhbGlnbm1lbnQ7XG4gIH1cbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgICp2ZXJ0aWNhbC1hbGlnbjogYXV0bztcbiAgICB6b29tOiAxO1xuICAgICpkaXNwbGF5OiBpbmxpbmU7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFByb3ZpZGVzIGNyb3NzLWJyb3dzZXIgQ1NTIG9wYWNpdHkuIFRha2VzIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMSBhcyB0aGUgYXJndW1lbnQsIGUuZy4gMC41IGZvciA1MCUgb3BhY2l0eS5cbi8vXG4vLyAgICAgQHBhcmFtICRvcGFjaXR5XG4vLyAgICAgICAgIEEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMSwgd2hlcmUgMCBpcyB0cmFuc3BhcmVudCBhbmQgMSBpcyBvcGFxdWUuXG5cbkBtaXhpbiBvcGFjaXR5KCRvcGFjaXR5KSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllOCB7XG4gICAgZmlsdGVyOiB1bnF1b3RlKFwicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9I3tyb3VuZCgkb3BhY2l0eSAqIDEwMCl9KVwiKTtcbiAgfVxuICBvcGFjaXR5OiAkb3BhY2l0eTtcbn1cblxuLy8gTWFrZSBhbiBlbGVtZW50IGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQuXG5AbWl4aW4gdHJhbnNwYXJlbnQgeyBAaW5jbHVkZSBvcGFjaXR5KDApOyB9XG5cbi8vIE1ha2UgYW4gZWxlbWVudCBjb21wbGV0ZWx5IG9wYXF1ZS5cbkBtaXhpbiBvcGFxdWUgeyBAaW5jbHVkZSBvcGFjaXR5KDEpOyB9XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiLy8gQGRvYyBvZmZcbi8vIFRoZXNlIGRlZmF1bHRzIG1ha2UgdGhlIGFyZ3VtZW50cyBvcHRpb25hbCBmb3IgdGhpcyBtaXhpblxuLy8gSWYgeW91IGxpa2UsIHNldCBkaWZmZXJlbnQgZGVmYXVsdHMgYmVmb3JlIGltcG9ydGluZy5cbi8vIEBkb2Mgb25cblxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG5cbi8vIFRoZSBkZWZhdWx0IGNvbG9yIGZvciBib3ggc2hhZG93c1xuJGRlZmF1bHQtYm94LXNoYWRvdy1jb2xvcjogIzMzMzMzMyAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgaG9yaXpvbnRhbCBvZmZzZXQuIFBvc2l0aXZlIGlzIHRvIHRoZSByaWdodC5cbiRkZWZhdWx0LWJveC1zaGFkb3ctaC1vZmZzZXQ6IDBweCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgdmVydGljYWwgb2Zmc2V0LiBQb3NpdGl2ZSBpcyBkb3duLlxuJGRlZmF1bHQtYm94LXNoYWRvdy12LW9mZnNldDogMHB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBibHVyIGxlbmd0aC5cbiRkZWZhdWx0LWJveC1zaGFkb3ctYmx1cjogNXB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBzcHJlYWQgbGVuZ3RoLlxuJGRlZmF1bHQtYm94LXNoYWRvdy1zcHJlYWQgOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgc2hhZG93IGluc2V0OiBpbnNldCBvciBmYWxzZSAoZm9yIHN0YW5kYXJkIHNoYWRvdykuXG4kZGVmYXVsdC1ib3gtc2hhZG93LWluc2V0IDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFByb3ZpZGVzIGNyb3NzLWJyb3dzZXIgZm9yIFdlYmtpdCwgR2Vja28sIGFuZCBDU1MzIGJveCBzaGFkb3dzIHdoZW4gb25lIG9yIG1vcmUgYm94XG4vLyBzaGFkb3dzIGFyZSBuZWVkZWQuXG4vLyBFYWNoIHNoYWRvdyBhcmd1bWVudCBzaG91bGQgYWRoZXJlIHRvIHRoZSBzdGFuZGFyZCBjc3MzIHN5bnRheCBmb3IgdGhlXG4vLyBib3gtc2hhZG93IHByb3BlcnR5LlxuQG1peGluIGJveC1zaGFkb3coXG4gICRzaGFkb3ctMSA6IGRlZmF1bHQsXG4gICRzaGFkb3ctMiA6IGZhbHNlLFxuICAkc2hhZG93LTMgOiBmYWxzZSxcbiAgJHNoYWRvdy00IDogZmFsc2UsXG4gICRzaGFkb3ctNSA6IGZhbHNlLFxuICAkc2hhZG93LTYgOiBmYWxzZSxcbiAgJHNoYWRvdy03IDogZmFsc2UsXG4gICRzaGFkb3ctOCA6IGZhbHNlLFxuICAkc2hhZG93LTkgOiBmYWxzZSxcbiAgJHNoYWRvdy0xMDogZmFsc2Vcbikge1xuICBAaWYgJHNoYWRvdy0xID09IGRlZmF1bHQge1xuICAgICRzaGFkb3ctMSA6IC1jb21wYXNzLXNwYWNlLWxpc3QoY29tcGFjdChpZigkZGVmYXVsdC1ib3gtc2hhZG93LWluc2V0LCBpbnNldCwgZmFsc2UpLCAkZGVmYXVsdC1ib3gtc2hhZG93LWgtb2Zmc2V0LCAkZGVmYXVsdC1ib3gtc2hhZG93LXYtb2Zmc2V0LCAkZGVmYXVsdC1ib3gtc2hhZG93LWJsdXIsICRkZWZhdWx0LWJveC1zaGFkb3ctc3ByZWFkLCAkZGVmYXVsdC1ib3gtc2hhZG93LWNvbG9yKSk7XG4gIH1cbiAgJHNoYWRvdyA6IGNvbXBhY3QoJHNoYWRvdy0xLCAkc2hhZG93LTIsICRzaGFkb3ctMywgJHNoYWRvdy00LCAkc2hhZG93LTUsICRzaGFkb3ctNiwgJHNoYWRvdy03LCAkc2hhZG93LTgsICRzaGFkb3ctOSwgJHNoYWRvdy0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtc2hhZG93LCAkc2hhZG93LFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gUHJvdmlkZXMgYSBzaW5nbGUgY3Jvc3MtYnJvd3NlciBDU1MgYm94IHNoYWRvdyBmb3IgV2Via2l0LCBHZWNrbywgYW5kIENTUzMuXG4vLyBJbmNsdWRlcyBkZWZhdWx0IGFyZ3VtZW50cyBmb3IgaG9yaXpvbnRhbCBvZmZzZXQsIHZlcnRpY2FsIG9mZnNldCwgYmx1ciBsZW5ndGgsIHNwcmVhZCBsZW5ndGgsIGNvbG9yIGFuZCBpbnNldC5cbkBtaXhpbiBzaW5nbGUtYm94LXNoYWRvdyhcbiAgJGhvZmYgICA6ICRkZWZhdWx0LWJveC1zaGFkb3ctaC1vZmZzZXQsXG4gICR2b2ZmICAgOiAkZGVmYXVsdC1ib3gtc2hhZG93LXYtb2Zmc2V0LFxuICAkYmx1ciAgIDogJGRlZmF1bHQtYm94LXNoYWRvdy1ibHVyLFxuICAkc3ByZWFkIDogJGRlZmF1bHQtYm94LXNoYWRvdy1zcHJlYWQsXG4gICRjb2xvciAgOiAkZGVmYXVsdC1ib3gtc2hhZG93LWNvbG9yLFxuICAkaW5zZXQgIDogJGRlZmF1bHQtYm94LXNoYWRvdy1pbnNldFxuKSB7XG4gIEBpZiBub3QgKCRpbnNldCA9PSB0cnVlIG9yICRpbnNldCA9PSBmYWxzZSBvciAkaW5zZXQgPT0gaW5zZXQpIHtcbiAgICBAd2FybiBcIiRpbnNldCBleHBlY3RlZCB0byBiZSB0cnVlIG9yIHRoZSBpbnNldCBrZXl3b3JkLiBHb3QgI3skaW5zZXR9IGluc3RlYWQuIFVzaW5nOiBpbnNldFwiO1xuICB9XG5cbiAgQGlmICRjb2xvciA9PSBub25lIHtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KG5vbmUpO1xuICB9IEBlbHNlIHtcbiAgICAkZnVsbCAgIDogJGhvZmYgJHZvZmY7XG4gICAgQGlmICRibHVyICAgeyAkZnVsbDogJGZ1bGwgJGJsdXI7ICAgfVxuICAgIEBpZiAkc3ByZWFkIHsgJGZ1bGw6ICRmdWxsICRzcHJlYWQ7IH1cbiAgICBAaWYgJGNvbG9yICB7ICRmdWxsOiAkZnVsbCAkY29sb3I7ICB9XG4gICAgQGlmICRpbnNldCAgeyAkZnVsbDogaW5zZXQgJGZ1bGw7ICAgfVxuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGZ1bGwpO1xuICB9XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBUaGVzZSBkZWZhdWx0cyBtYWtlIHRoZSBhcmd1bWVudHMgb3B0aW9uYWwgZm9yIHRoaXMgbWl4aW5cbi8vIElmIHlvdSBsaWtlLCBzZXQgZGlmZmVyZW50IGRlZmF1bHRzIGluIHlvdXIgcHJvamVjdFxuXG4kZGVmYXVsdC10ZXh0LXNoYWRvdy1jb2xvcjogICAgI2FhYSAhZGVmYXVsdDtcbiRkZWZhdWx0LXRleHQtc2hhZG93LWgtb2Zmc2V0OiAwcHggICFkZWZhdWx0O1xuJGRlZmF1bHQtdGV4dC1zaGFkb3ctdi1vZmZzZXQ6IDBweCAgIWRlZmF1bHQ7XG4kZGVmYXVsdC10ZXh0LXNoYWRvdy1ibHVyOiAgICAgMXB4ICAhZGVmYXVsdDtcbiRkZWZhdWx0LXRleHQtc2hhZG93LXNwcmVhZDogICBmYWxzZSAgIWRlZmF1bHQ7XG5cbi8vIFByb3ZpZGVzIGNyb3NzLWJyb3dzZXIgdGV4dCBzaGFkb3dzIHdoZW4gb25lIG9yIG1vcmUgc2hhZG93cyBhcmUgbmVlZGVkLlxuLy8gRWFjaCBzaGFkb3cgYXJndW1lbnQgc2hvdWxkIGFkaGVyZSB0byB0aGUgc3RhbmRhcmQgY3NzMyBzeW50YXggZm9yIHRoZVxuLy8gdGV4dC1zaGFkb3cgcHJvcGVydHkuXG4vL1xuLy8gTm90ZTogaWYgYW55IHNoYWRvdyBoYXMgYSBzcHJlYWQgcGFyYW1ldGVyLCB0aGlzIHdpbGwgY2F1c2UgdGhlIG1peGluXG4vLyB0byBlbWl0IHRoZSBzaGFkb3cgZGVjbGFyYXRpb24gdHdpY2UsIGZpcnN0IHdpdGhvdXQgdGhlIHNwcmVhZCxcbi8vIHRoZW4gd2l0aCB0aGUgc3ByZWFkIGluY2x1ZGVkLiBUaGlzIGFsbG93cyB5b3UgdG8gcHJvZ3Jlc3NpdmVseVxuLy8gZW5oYW5jZSB0aGUgYnJvd3NlcnMgdGhhdCBkbyBzdXBwb3J0IHRoZSBzcHJlYWQgcGFyYW1ldGVyLlxuQG1peGluIHRleHQtc2hhZG93KFxuICAkc2hhZG93LTEgOiBkZWZhdWx0LFxuICAkc2hhZG93LTIgOiBmYWxzZSxcbiAgJHNoYWRvdy0zIDogZmFsc2UsXG4gICRzaGFkb3ctNCA6IGZhbHNlLFxuICAkc2hhZG93LTUgOiBmYWxzZSxcbiAgJHNoYWRvdy02IDogZmFsc2UsXG4gICRzaGFkb3ctNyA6IGZhbHNlLFxuICAkc2hhZG93LTggOiBmYWxzZSxcbiAgJHNoYWRvdy05IDogZmFsc2UsXG4gICRzaGFkb3ctMTA6IGZhbHNlXG4pIHtcbiAgQGlmICRzaGFkb3ctMSA9PSBkZWZhdWx0IHtcbiAgICAkc2hhZG93LTE6IGNvbXBhY3QoJGRlZmF1bHQtdGV4dC1zaGFkb3ctaC1vZmZzZXQgJGRlZmF1bHQtdGV4dC1zaGFkb3ctdi1vZmZzZXQgJGRlZmF1bHQtdGV4dC1zaGFkb3ctYmx1ciAkZGVmYXVsdC10ZXh0LXNoYWRvdy1zcHJlYWQgJGRlZmF1bHQtdGV4dC1zaGFkb3ctY29sb3IpO1xuICB9XG4gICRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkOiBqb2luKCgpLCgpLGNvbW1hKTtcbiAgJHNoYWRvd3M6IGpvaW4oKCksKCksY29tbWEpO1xuICAkaGFzLXNwcmVhZDogZmFsc2U7XG4gIEBlYWNoICRzaGFkb3cgaW4gY29tcGFjdCgkc2hhZG93LTEsICRzaGFkb3ctMiwgJHNoYWRvdy0zLCAkc2hhZG93LTQsICRzaGFkb3ctNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzaGFkb3ctNiwgJHNoYWRvdy03LCAkc2hhZG93LTgsICRzaGFkb3ctOSwgJHNoYWRvdy0xMCkge1xuICAgIEBpZiBsZW5ndGgoJHNoYWRvdykgPiA0IHtcbiAgICAgICRoYXMtc3ByZWFkOiB0cnVlO1xuICAgICAgJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQ6IGFwcGVuZCgkc2hhZG93cy13aXRob3V0LXNwcmVhZCwgbnRoKCRzaGFkb3csMSkgbnRoKCRzaGFkb3csMikgbnRoKCRzaGFkb3csMykgbnRoKCRzaGFkb3csNSkpO1xuICAgICAgJHNoYWRvd3M6IGFwcGVuZCgkc2hhZG93cywgJHNoYWRvdyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkOiBhcHBlbmQoJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQsICRzaGFkb3cpO1xuICAgICAgJHNoYWRvd3M6IGFwcGVuZCgkc2hhZG93cywgJHNoYWRvdyk7XG4gICAgfVxuICB9XG4gIEBpZiAkaGFzLXNwcmVhZCB7XG4gICAgdGV4dC1zaGFkb3c6ICRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkO1xuICB9XG4gIHRleHQtc2hhZG93OiAkc2hhZG93cztcbn1cblxuLy8gUHJvdmlkZXMgYSBzaW5nbGUgY3Jvc3MtYnJvd3NlciBDU1MgdGV4dCBzaGFkb3cuXG4vL1xuLy8gUHJvdmlkZXMgc2Vuc2libGUgZGVmYXVsdHMgZm9yIHRoZSBjb2xvciwgaG9yaXpvbnRhbCBvZmZzZXQsIHZlcnRpY2FsIG9mZnNldCwgYmx1ciwgYW5kIHNwcmVhZFxuLy8gYWNjb3JkaW5nIHRvIHRoZSBjb25maWd1cmF0aW9uIGRlZmF1bHRzIGFib3ZlLlxuQG1peGluIHNpbmdsZS10ZXh0LXNoYWRvdyhcbiAgJGhvZmY6IGZhbHNlLFxuICAkdm9mZjogZmFsc2UsXG4gICRibHVyOiBmYWxzZSxcbiAgJHNwcmVhZDogZmFsc2UsXG4gICRjb2xvcjogZmFsc2Vcbikge1xuICAvLyBBIGxvdCBvZiBwZW9wbGUgdGhpbmsgdGhlIGNvbG9yIGNvbWVzIGZpcnN0LiBJdCBkb2Vzbid0LlxuICBAaWYgdHlwZS1vZigkaG9mZikgPT0gY29sb3Ige1xuICAgICR0ZW1wLWNvbG9yOiAkaG9mZjtcbiAgICAkaG9mZjogJHZvZmY7XG4gICAgJHZvZmY6ICRibHVyO1xuICAgICRibHVyOiAkc3ByZWFkO1xuICAgICRzcHJlYWQ6ICRjb2xvcjtcbiAgICAkY29sb3I6ICR0ZW1wLWNvbG9yO1xuICB9XG4gIC8vIENhbid0IHJlbHkgb24gZGVmYXVsdCBhc3NpZ25tZW50IHdpdGggbXVsdGlwbGUgc3VwcG9ydGVkIGFyZ3VtZW50IG9yZGVycy5cbiAgJGhvZmY6ICAgaWYoJGhvZmYsICAgJGhvZmYsICAgJGRlZmF1bHQtdGV4dC1zaGFkb3ctaC1vZmZzZXQpO1xuICAkdm9mZjogICBpZigkdm9mZiwgICAkdm9mZiwgICAkZGVmYXVsdC10ZXh0LXNoYWRvdy12LW9mZnNldCk7XG4gICRibHVyOiAgIGlmKCRibHVyLCAgICRibHVyLCAgICRkZWZhdWx0LXRleHQtc2hhZG93LWJsdXIgICAgKTtcbiAgJHNwcmVhZDogaWYoJHNwcmVhZCwgJHNwcmVhZCwgJGRlZmF1bHQtdGV4dC1zaGFkb3ctc3ByZWFkICApO1xuICAkY29sb3I6ICBpZigkY29sb3IsICAkY29sb3IsICAkZGVmYXVsdC10ZXh0LXNoYWRvdy1jb2xvciAgICk7XG4gIC8vIFdlIGRvbid0IG5lZWQgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIHRoaXMgcHJvcGVydHkuXG4gIEBpZiAkY29sb3IgPT0gbm9uZSBvciAkaG9mZiA9PSBub25lIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXNoYWRvdyhub25lKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgdGV4dC1zaGFkb3coY29tcGFjdCgkaG9mZiAkdm9mZiAkYmx1ciAkc3ByZWFkICRjb2xvcikpO1xuICB9XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBTcGVjaWZ5IHRoZSBzaG9ydGhhbmQgYGNvbHVtbnNgIHByb3BlcnR5LlxuLy9cbi8vIEV4YW1wbGU6XG4vL1xuLy8gICAgIEBpbmNsdWRlIGNvbHVtbnMoMjBlbSAyKVxuQG1peGluIGNvbHVtbnMoJHdpZHRoLWFuZC1jb3VudCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1ucywgJHdpZHRoLWFuZC1jb3VudCxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gU3BlY2lmeSB0aGUgbnVtYmVyIG9mIGNvbHVtbnNcbkBtaXhpbiBjb2x1bW4tY291bnQoJGNvdW50KSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tY291bnQsICRjb3VudCxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gU3BlY2lmeSB0aGUgZ2FwIGJldHdlZW4gY29sdW1ucyBlLmcuIGAyMHB4YFxuQG1peGluIGNvbHVtbi1nYXAoJHdpZHRoKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tZ2FwLCAkd2lkdGgsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIFNwZWNpZnkgdGhlIHdpZHRoIG9mIGNvbHVtbnMgZS5nLiBgMTAwcHhgXG5AbWl4aW4gY29sdW1uLXdpZHRoKCR3aWR0aCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXdpZHRoLCAkd2lkdGgsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIFNwZWNpZnkgdGhlIHdpZHRoIG9mIHRoZSBydWxlIGJldHdlZW4gY29sdW1ucyBlLmcuIGAxcHhgXG5AbWl4aW4gY29sdW1uLXJ1bGUtd2lkdGgoJHdpZHRoKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tcnVsZS13aWR0aCwgJHdpZHRoLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBTcGVjaWZ5IHRoZSBzdHlsZSBvZiB0aGUgcnVsZSBiZXR3ZWVuIGNvbHVtbnMgZS5nLiBgZG90dGVkYC5cbi8vIFRoaXMgd29ya3MgbGlrZSBib3JkZXItc3R5bGUuXG5AbWl4aW4gY29sdW1uLXJ1bGUtc3R5bGUoJHN0eWxlKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tcnVsZS1zdHlsZSwgdW5xdW90ZSgkc3R5bGUpLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBTcGVjaWZ5IHRoZSBjb2xvciBvZiB0aGUgcnVsZSBiZXR3ZWVuIGNvbHVtbnMgZS5nLiBgYmx1ZWAuXG4vLyBUaGlzIHdvcmtzIGxpa2UgYm9yZGVyLWNvbG9yLlxuQG1peGluIGNvbHVtbi1ydWxlLWNvbG9yKCRjb2xvcikge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXJ1bGUtY29sb3IsICRjb2xvcixcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gTWl4aW4gZW5jb21wYXNzaW5nIGFsbCBjb2x1bW4gcnVsZSBwcm9wZXJ0aWVzXG4vLyBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgICAgQGluY2x1ZGUgY29sdW1uLXJ1bGUoMXB4LCBzb2xpZCwgI2MwMClcbi8vXG4vLyBPciB0aGUgdmFsdWVzIGNhbiBiZSBzcGFjZSBzZXBhcmF0ZWQ6XG4vL1xuLy8gICAgIEBpbmNsdWRlIGNvbHVtbi1ydWxlKDFweCBzb2xpZCAjYzAwKVxuQG1peGluIGNvbHVtbi1ydWxlKCR3aWR0aCwgJHN0eWxlOiBmYWxzZSwgJGNvbG9yOiBmYWxzZSkge1xuICAkZnVsbCA6IC1jb21wYXNzLXNwYWNlLWxpc3QoY29tcGFjdCgkd2lkdGgsICRzdHlsZSwgJGNvbG9yKSk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tcnVsZSwgJGZ1bGwsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIE1peGluIGZvciBzZXR0aW5nIGNvbHVtbi1icmVhay1iZWZvcmVcbi8vXG4vLyAqIGxlZ2FsIHZhbHVlcyBhcmUgYXV0bywgYWx3YXlzLCBhdm9pZCwgbGVmdCwgcmlnaHQsIHBhZ2UsIGNvbHVtbiwgYXZvaWQtcGFnZSwgYXZvaWQtY29sdW1uXG4vL1xuLy8gIEV4YW1wbGU6IFxuLy8gICAgaDIuYmVmb3JlIHtAaW5jbHVkZSBjb2x1bW4tYnJlYWstYmVmb3JlKGFsd2F5cyk7fVxuLy9cbi8vICBXaGljaCBnZW5lcmF0ZXM6IFxuLy9cbi8vICBoMi5iZWZvcmUgeyAgICBcbi8vICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWJlZm9yZTogYWx3YXlzO1xuLy8gICAgY29sdW1uLWJyZWFrLWJlZm9yZTogYWx3YXlzO31cbkBtaXhpbiBjb2x1bW4tYnJlYWstYmVmb3JlKCR2YWx1ZTogYXV0byl7XG4gICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLWJyZWFrLWJlZm9yZSwgJHZhbHVlLCBub3QoLW1veiksIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWwgKTtcbn1cblxuLy8gTWl4aW4gZm9yIHNldHRpbmcgY29sdW1uLWJyZWFrLWFmdGVyXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGFsd2F5cywgYXZvaWQsIGxlZnQsIHJpZ2h0LCBwYWdlLCBjb2x1bW4sIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy9cbi8vICBFeGFtcGxlOiBcbi8vICAgIGgyLmFmdGVyIHtAaW5jbHVkZSBjb2x1bW4tYnJlYWstYWZ0ZXIoYWx3YXlzKTsgfVxuLy9cbi8vICBXaGljaCBnZW5lcmF0ZXM6IFxuLy9cbi8vICBoMi5hZnRlciB7XG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1hZnRlcjogYWx3YXlzO1xuLy8gICAgY29sdW1uLWJyZWFrLWFmdGVyOiBhbHdheXM7IH1cbkBtaXhpbiBjb2x1bW4tYnJlYWstYWZ0ZXIoJHZhbHVlOiBhdXRvKXtcbiAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tYnJlYWstYWZ0ZXIsICR2YWx1ZSwgbm90KC1tb3opLCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsICk7XG59XG5cbi8vIE1peGluIGZvciBzZXR0aW5nIGNvbHVtbi1icmVhay1pbnNpZGVcbi8vXG4vLyAqIGxlZ2FsIHZhbHVlcyBhcmUgYXV0bywgYXZvaWQsIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy9cbi8vICBFeGFtcGxlOiBcbi8vICAgIGgyLmluc2lkZSB7QGluY2x1ZGUgY29sdW1uLWJyZWFrLWluc2lkZSgpO31cbi8vICBXaGljaCBnZW5lcmF0ZXM6IFxuLy8gIFxuLy8gIGgyLmluc2lkZSB7XG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1pbnNpZGU6IGF1dG87XG4vLyAgICBjb2x1bW4tYnJlYWstaW5zaWRlOiBhdXRvO31cbkBtaXhpbiBjb2x1bW4tYnJlYWstaW5zaWRlKCR2YWx1ZTogYXV0byl7XG4gICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLWJyZWFrLWluc2lkZSwgJHZhbHVlLCBub3QoLW1veiksIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWwgKTtcbn1cblxuLy8gQWxsLXB1cnBvc2UgbWl4aW4gZm9yIHNldHRpbmcgY29sdW1uIGJyZWFrcy5cbi8vXG4vLyAqIGxlZ2FsIHZhbHVlcyBmb3IgJHR5cGUgOiBiZWZvcmUsIGFmdGVyLCBpbnNpZGUgXG4vLyAqIGxlZ2FsIHZhbHVlcyBmb3IgJyR2YWx1ZScgYXJlIGRlcGVuZGVudCBvbiAkdHlwZVxuLy8gICAgKiB3aGVuICR0eXBlID0gYmVmb3JlLCBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGFsd2F5cywgYXZvaWQsIGxlZnQsIHJpZ2h0LCBwYWdlLCBjb2x1bW4sIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy8gICAgKiB3aGVuICR0eXBlID0gYWZ0ZXIsIGxlZ2FsIHZhbHVlcyBhcmUgYXV0bywgYWx3YXlzLCBhdm9pZCwgbGVmdCwgcmlnaHQsIHBhZ2UsIGNvbHVtbiwgYXZvaWQtcGFnZSwgYXZvaWQtY29sdW1uXG4vLyAgICAqIHdoZW4gJHR5cGUgPSBpbnNpZGUsIGxlZ2FsIHZhbHVlcyBhcmUgYXV0bywgYXZvaWQsIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy8gIFxuLy8gIEV4YW1wbGVzOiBcbi8vICAgIGgyLmJlZm9yZSB7QGluY2x1ZGUgY29sdW1uLWJyZWFrKGJlZm9yZSwgYWx3YXlzKTt9XG4vLyAgICBoMi5hZnRlciB7QGluY2x1ZGUgY29sdW1uLWJyZWFrKGFmdGVyLCBhbHdheXMpOyB9XG4vLyAgICBoMi5pbnNpZGUge0BpbmNsdWRlIGNvbHVtbi1icmVhayhpbnNpZGUpOyB9XG4vL1xuLy8gIFdoaWNoIGdlbmVyYXRlczogXG4vLyAgaDIuYmVmb3JlIHsgICAgXG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1iZWZvcmU6IGFsd2F5cztcbi8vICAgIGNvbHVtbi1icmVhay1iZWZvcmU6IGFsd2F5czt9XG4vLyAgXG4vLyAgaDIuYWZ0ZXIge1xuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstYWZ0ZXI6IGFsd2F5cztcbi8vICAgIGNvbHVtbi1icmVhay1hZnRlcjogYWx3YXlzOyB9XG4vL1xuLy8gIGgyLmluc2lkZSB7XG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1pbnNpZGU6IGF1dG87XG4vLyAgICBjb2x1bW4tYnJlYWstaW5zaWRlOiBhdXRvO31cbiBcbkBtaXhpbiBjb2x1bW4tYnJlYWsoJHR5cGU6IGJlZm9yZSwgJHZhbHVlOiBhdXRvKXtcbiAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChcImNvbHVtbi1icmVhay0jeyR0eXBlfVwiLCAkdmFsdWUsIG5vdCgtbW96KSwgLXdlYmtpdCwgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbCApO1xufSIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIENoYW5nZSB0aGUgYm94IG1vZGVsIGZvciBNb3ppbGxhLCBXZWJraXQsIElFOCBhbmQgdGhlIGZ1dHVyZVxuLy9cbi8vIEBwYXJhbSAkYnNcbi8vICAgWyBjb250ZW50LWJveCB8IGJvcmRlci1ib3ggXVxuXG5AbWl4aW4gYm94LXNpemluZygkYnMpIHtcbiAgJGJzOiB1bnF1b3RlKCRicyk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtc2l6aW5nLCAkYnMsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gZGlzcGxheTpib3g7IG11c3QgYmUgdXNlZCBmb3IgYW55IG9mIHRoZSBvdGhlciBmbGV4Ym94IG1peGlucyB0byB3b3JrIHByb3Blcmx5XG5AbWl4aW4gZGlzcGxheS1ib3gge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwtdmFsdWUoZGlzcGxheSwgYm94LFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIERlZmF1bHQgYm94IG9yaWVudGF0aW9uLCBhc3N1bWluZyB0aGF0IHRoZSB1c2VyIHdhbnRzIHNvbWV0aGluZyBsZXNzIGJsb2NrLWxpa2VcbiRkZWZhdWx0LWJveC1vcmllbnQ6IGhvcml6b250YWwgIWRlZmF1bHQ7XG5cbi8vIEJveCBvcmllbnRhdGlvbiBbIGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGlubGluZS1heGlzIHwgYmxvY2stYXhpcyB8IGluaGVyaXQgXVxuQG1peGluIGJveC1vcmllbnQoXG4gICRvcmllbnRhdGlvbjogJGRlZmF1bHQtYm94LW9yaWVudFxuKSB7XG4gICRvcmllbnRhdGlvbiA6IHVucXVvdGUoJG9yaWVudGF0aW9uKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1vcmllbnQsICRvcmllbnRhdGlvbixcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBEZWZhdWx0IGJveC1hbGlnblxuJGRlZmF1bHQtYm94LWFsaWduOiBzdHJldGNoICFkZWZhdWx0O1xuXG4vLyBCb3ggYWxpZ24gWyBzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaCBdXG5AbWl4aW4gYm94LWFsaWduKFxuICAkYWxpZ25tZW50OiAkZGVmYXVsdC1ib3gtYWxpZ25cbikge1xuICAkYWxpZ25tZW50IDogdW5xdW90ZSgkYWxpZ25tZW50KTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1hbGlnbiwgJGFsaWdubWVudCxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBEZWZhdWx0IGJveCBmbGV4XG4kZGVmYXVsdC1ib3gtZmxleDogMCAhZGVmYXVsdDtcblxuLy8gbWl4aW4gd2hpY2ggdGFrZXMgYW4gaW50IGFyZ3VtZW50IGZvciBib3ggZmxleC4gQXBwbHkgdGhpcyB0byB0aGUgY2hpbGRyZW4gaW5zaWRlIHRoZSBib3guXG4vL1xuLy8gRm9yIGV4YW1wbGU6IFwiZGl2LmRpc3BsYXktYm94ID4gZGl2LmNoaWxkLWJveFwiIHdvdWxkIGdldCB0aGUgYm94IGZsZXggbWl4aW4uXG5AbWl4aW4gYm94LWZsZXgoXG4gICRmbGV4OiAkZGVmYXVsdC1ib3gtZmxleFxuKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtZmxleCwgJGZsZXgsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gRGVmYXVsdCBmbGV4IGdyb3VwXG4kZGVmYXVsdC1ib3gtZmxleC1ncm91cDogMSAhZGVmYXVsdDtcblxuLy8gbWl4aW4gd2hpY2ggdGFrZXMgYW4gaW50IGFyZ3VtZW50IGZvciBmbGV4aWJsZSBncm91cGluZ1xuQG1peGluIGJveC1mbGV4LWdyb3VwKFxuICAkZ3JvdXA6ICRkZWZhdWx0LWJveC1mbGV4LWdyb3VwXG4pIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1mbGV4LWdyb3VwLCAkZ3JvdXAsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gZGVmYXVsdCBmb3Igb3JkaW5hbCBncm91cFxuJGRlZmF1bHQtYm94LW9yZGluYWwtZ3JvdXA6IDEgIWRlZmF1bHQ7XG5cbi8vIG1peGluIHdoaWNoIHRha2VzIGFuIGludCBhcmd1bWVudCBmb3Igb3JkaW5hbCBncm91cGluZyBhbmQgcmVhcnJhbmdpbmcgdGhlIG9yZGVyXG5AbWl4aW4gYm94LW9yZGluYWwtZ3JvdXAoXG4gICRncm91cDogJGRlZmF1bHQtb3JkaW5hbC1mbGV4LWdyb3VwXG4pIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1vcmRpbmFsLWdyb3VwLCAkZ3JvdXAsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gQm94IGRpcmVjdGlvbiBkZWZhdWx0IHZhbHVlXG4kZGVmYXVsdC1ib3gtZGlyZWN0aW9uOiBub3JtYWwgIWRlZmF1bHQ7XG5cbi8vIG1peGluIGZvciBib3gtZGlyZWN0aW9uIFsgbm9ybWFsIHwgcmV2ZXJzZSB8IGluaGVyaXQgXVxuQG1peGluIGJveC1kaXJlY3Rpb24oXG4gICRkaXJlY3Rpb246ICRkZWZhdWx0LWJveC1kaXJlY3Rpb25cbikge1xuICAkZGlyZWN0aW9uOiB1bnF1b3RlKCRkaXJlY3Rpb24pO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LWRpcmVjdGlvbiwgJGRpcmVjdGlvbixcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBkZWZhdWx0IGZvciBib3ggbGluZXNcbiRkZWZhdWx0LWJveC1saW5lczogc2luZ2xlICFkZWZhdWx0O1xuXG4vLyBtaXhpbiBmb3IgYm94IGxpbmVzIFsgc2luZ2xlIHwgbXVsdGlwbGUgXVxuQG1peGluIGJveC1saW5lcyhcbiAgJGxpbmVzOiAkZGVmYXVsdC1ib3gtbGluZXNcbikge1xuICAkbGluZXM6IHVucXVvdGUoJGxpbmVzKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1saW5lcywgJGxpbmVzLFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIGRlZmF1bHQgZm9yIGJveCBwYWNrXG4kZGVmYXVsdC1ib3gtcGFjazogc3RhcnQgIWRlZmF1bHQ7XG5cbi8vIG1peGluIGZvciBib3ggcGFjayBbIHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSBdXG5AbWl4aW4gYm94LXBhY2soXG4gICRwYWNrOiAkZGVmYXVsdC1ib3gtcGFja1xuKSB7XG4gICRwYWNrOiB1bnF1b3RlKCRwYWNrKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1wYWNrLCAkcGFjayxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufSIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5AaW1wb3J0IFwiLi4vdXRpbGl0aWVzL2dlbmVyYWwvaGFja3NcIjtcbkBpbXBvcnQgXCIuLi9mdW5jdGlvbnNcIjtcblxuLy8gQmFja2dyb3VuZCBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gYmFja2dyb3VuZChcbiAgJGJhY2tncm91bmQtMSxcbiAgJGJhY2tncm91bmQtMjogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTM6IGZhbHNlLFxuICAkYmFja2dyb3VuZC00OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNTogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTY6IGZhbHNlLFxuICAkYmFja2dyb3VuZC03OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtODogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTk6IGZhbHNlLFxuICAkYmFja2dyb3VuZC0xMDogZmFsc2Vcbikge1xuICAkYmFja2dyb3VuZHM6IGNvbXBhY3QoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICRiYWNrZ3JvdW5kLTYsICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsICRiYWNrZ3JvdW5kLTksICRiYWNrZ3JvdW5kLTEwKTtcbiAgJG11bHQtYmdzOiAtY29tcGFzcy1saXN0LXNpemUoJGJhY2tncm91bmRzKSA+IDE7XG4gICRhZGQtcGllLWJnOiBwcmVmaXhlZCgtcGllLCAgICRiYWNrZ3JvdW5kcykgb3IgJG11bHQtYmdzO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgYW5kIHByZWZpeGVkKC1zdmcsICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgIC1zdmcoJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgIC1vd2coJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgYW5kIHByZWZpeGVkKC13ZWJraXQsICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6IC13ZWJraXQoJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgYW5kIHByZWZpeGVkKC1tb3osICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgIC1tb3ooJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgYW5kIHByZWZpeGVkKC1vLCAgICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgICAgLW8oJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgYW5kICRhZGQtcGllLWJnICAgICAgICAgICAgICAgICAgICAgeyAtcGllLWJhY2tncm91bmQ6ICAgIC1waWUoJGJhY2tncm91bmRzKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICAgICAgICAgJGJhY2tncm91bmRzIDtcbn1cblxuQG1peGluIGJhY2tncm91bmQtd2l0aC1jc3MyLWZhbGxiYWNrKFxuICAkYmFja2dyb3VuZC0xLFxuICAkYmFja2dyb3VuZC0yOiBmYWxzZSxcbiAgJGJhY2tncm91bmQtMzogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTQ6IGZhbHNlLFxuICAkYmFja2dyb3VuZC01OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNjogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTc6IGZhbHNlLFxuICAkYmFja2dyb3VuZC04OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtOTogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTEwOiBmYWxzZVxuKSB7XG4gICRiYWNrZ3JvdW5kczogY29tcGFjdCgkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yLCAkYmFja2dyb3VuZC0zLCAkYmFja2dyb3VuZC00LCAkYmFja2dyb3VuZC01LFxuICAgICAgICAgICAgICAgICAgICAgICAgJGJhY2tncm91bmQtNiwgJGJhY2tncm91bmQtNywgJGJhY2tncm91bmQtOCwgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTApO1xuICAkbXVsdC1iZ3M6IC1jb21wYXNzLWxpc3Qtc2l6ZSgkYmFja2dyb3VuZHMpID4gMTtcbiAgJHNpbXBsZS1iYWNrZ3JvdW5kOiBpZigkbXVsdC1iZ3Mgb3IgcHJlZml4ZWQoLWNzczIsICRiYWNrZ3JvdW5kcyksIC1jc3MyKC1jb21wYXNzLW50aCgkYmFja2dyb3VuZHMsIGxhc3QpKSwgZmFsc2UpO1xuICBAaWYgbm90KGJsYW5rKCRzaW1wbGUtYmFja2dyb3VuZCkpIHsgYmFja2dyb3VuZDogJHNpbXBsZS1iYWNrZ3JvdW5kOyB9XG4gIEBpbmNsdWRlIGJhY2tncm91bmQoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSxcbiAgICAgICAgICAgICAgICAgICAgICAkYmFja2dyb3VuZC02LCAkYmFja2dyb3VuZC03LCAkYmFja2dyb3VuZC04LCAkYmFja2dyb3VuZC05LCAkYmFja2dyb3VuZC0xMCk7XG59XG5cblxuLy8gQmFja2dyb3VuZCBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gYmFja2dyb3VuZC1pbWFnZShcbiAgJGltYWdlLTEsXG4gICRpbWFnZS0yOiBmYWxzZSxcbiAgJGltYWdlLTM6IGZhbHNlLFxuICAkaW1hZ2UtNDogZmFsc2UsXG4gICRpbWFnZS01OiBmYWxzZSxcbiAgJGltYWdlLTY6IGZhbHNlLFxuICAkaW1hZ2UtNzogZmFsc2UsXG4gICRpbWFnZS04OiBmYWxzZSxcbiAgJGltYWdlLTk6IGZhbHNlLFxuICAkaW1hZ2UtMTA6IGZhbHNlXG4pIHtcbiAgJGltYWdlczogY29tcGFjdCgkaW1hZ2UtMSwgJGltYWdlLTIsICRpbWFnZS0zLCAkaW1hZ2UtNCwgJGltYWdlLTUsICRpbWFnZS02LCAkaW1hZ2UtNywgJGltYWdlLTgsICRpbWFnZS05LCAkaW1hZ2UtMTApO1xuICAkYWRkLXBpZS1iZzogcHJlZml4ZWQoLXBpZSwgICAkaW1hZ2VzKSBvciAtY29tcGFzcy1saXN0LXNpemUoJGltYWdlcykgPiAxO1xuXG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICBhbmQgcHJlZml4ZWQoLXN2ZywgICAgJGltYWdlcykgeyBiYWNrZ3JvdW5kLWltYWdlOiAgICAtc3ZnKCRpbWFnZXMpOyBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAgICAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6ICAgIC1vd2coJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQoJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIGFuZCBwcmVmaXhlZCgtbW96LCAgICAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6ICAgIC1tb3ooJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIGFuZCBwcmVmaXhlZCgtbywgICAgICAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6ICAgICAgLW8oJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIGFuZCAkYWRkLXBpZS1iZyAgICAgICAgICAgICAgICB7IEB3YXJuIFwiUElFIGRvZXMgbm90IHN1cHBvcnQgYmFja2dyb3VuZC1pbWFnZS4gVXNlIEBpbmNsdWRlIGJhY2tncm91bmQoI3skaW1hZ2VzfSkgaW5zdGVhZC5cIiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgICAgICRpbWFnZXMgO1xufVxuXG4vLyBFbWl0IGEgSUUtU3BlY2lmaWMgZmlsdGVycyB0aGF0IHJlbmRlcnMgYSBzaW1wbGUgbGluZWFyIGdyYWRpZW50LlxuLy8gRm9yIHVzZSBpbiBJRSA2IC0gOC4gQmVzdCBwcmFjdGljZSB3b3VsZCBoYXZlIHlvdSBhcHBseSB0aGlzIHZpYSBhXG4vLyBjb25kaXRpb25hbCBJRSBzdHlsZXNoZWV0LCBidXQgaWYgeW91IG11c3QsIHlvdSBzaG91bGQgcGxhY2UgdGhpcyBiZWZvcmVcbi8vIGFueSBiYWNrZ3JvdW5kLWltYWdlIHByb3BlcnRpZXMgdGhhdCB5b3UgaGF2ZSBzcGVjaWZpZWQuXG4vL1xuLy8gRm9yIHRoZSBgJG9yaWVudGF0aW9uYCBwYXJhbWV0ZXIsIHlvdSBjYW4gcGFzcyBgdmVydGljYWxgIG9yIGBob3Jpem9udGFsYC5cbkBtaXhpbiBmaWx0ZXItZ3JhZGllbnQoJHN0YXJ0LWNvbG9yLCAkZW5kLWNvbG9yLCAkb3JpZW50YXRpb246IHZlcnRpY2FsKSB7XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG4gICRncmFkaWVudC10eXBlOiBpZigkb3JpZW50YXRpb24gPT0gdmVydGljYWwsIDAsIDEpO1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTgge1xuICAgIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGdyYWRpZW50VHlwZT0jeyRncmFkaWVudC10eXBlfSwgc3RhcnRDb2xvcnN0cj0nI3tpZS1oZXgtc3RyKCRzdGFydC1jb2xvcil9JywgZW5kQ29sb3JzdHI9JyN7aWUtaGV4LXN0cigkZW5kLWNvbG9yKX0nKTtcbiAgfVxufVxuXG5cbi8vIEJvcmRlciBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHByb3BlcnRpZXMgYW5kIHZhbHVlcy5cbkBtaXhpbiBib3JkZXItaW1hZ2UoJHZhbHVlKSB7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICB7ICAgIC1tb3otYm9yZGVyLWltYWdlOiAgICAtbW96KHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgeyAtd2Via2l0LWJvcmRlci1pbWFnZTogICAgLW93ZyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIHsgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IC13ZWJraXQocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICB7ICAgICAgLW8tYm9yZGVyLWltYWdlOiAgICAgIC1vKHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgeyAgICAgICAgIGJvcmRlci1pbWFnZTogICAgLXN2ZyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItaW1hZ2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlO1xufVxuXG4vLyBMaXN0IHN0eWxlIGltYWdlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBsaXN0LXN0eWxlLWltYWdlKCRpbWFnZSkge1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgYW5kIHByZWZpeGVkKC1tb3osICAgICRpbWFnZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtbW96KCRpbWFnZSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAgICAkaW1hZ2UpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLW93ZygkaW1hZ2UpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGltYWdlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6IC13ZWJraXQoJGltYWdlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgYW5kIHByZWZpeGVkKC1vLCAgICAgICRpbWFnZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAgIC1vKCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIGFuZCBwcmVmaXhlZCgtc3ZnLCAgICAkaW1hZ2UpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLXN2ZygkaW1hZ2UpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGUtaW1hZ2U6ICAgICAgICAgJGltYWdlIDtcbn1cblxuLy8gTGlzdCBzdHlsZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gbGlzdC1zdHlsZSgkdmFsdWUpIHtcbiAgJHZhbHVlOiAtY29tcGFzcy1saXN0KCR2YWx1ZSk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICBhbmQgcHJlZml4ZWQoLW1veiwgICAgJHZhbHVlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgIC1tb3ooJHZhbHVlKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICAgICR2YWx1ZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtb3dnKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkdmFsdWUpIHsgbGlzdC1zdHlsZS1pbWFnZTogLXdlYmtpdCgkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICBhbmQgcHJlZml4ZWQoLW8sICAgICAgJHZhbHVlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgICAgLW8oJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgYW5kIHByZWZpeGVkKC1zdmcsICAgICR2YWx1ZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtc3ZnKCR2YWx1ZSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC1zdHlsZS1pbWFnZTogICAgICAgICAkdmFsdWUgO1xufVxuXG4vLyBjb250ZW50IHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBjb250ZW50KCR2YWx1ZSkge1xuICAkdmFsdWU6IC1jb21wYXNzLWxpc3QoJHZhbHVlKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIGFuZCBwcmVmaXhlZCgtbW96LCAgICAkdmFsdWUpIHsgY29udGVudDogICAgLW1veigkdmFsdWUpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgICAgJHZhbHVlKSB7IGNvbnRlbnQ6ICAgIC1vd2coJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgYW5kIHByZWZpeGVkKC13ZWJraXQsICR2YWx1ZSkgeyBjb250ZW50OiAtd2Via2l0KCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIGFuZCBwcmVmaXhlZCgtbywgICAgICAkdmFsdWUpIHsgY29udGVudDogICAgICAtbygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICBhbmQgcHJlZml4ZWQoLXN2ZywgICAgJHZhbHVlKSB7IGNvbnRlbnQ6ICAgIC1zdmcoJHZhbHVlKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAgICAgICAgICR2YWx1ZSA7XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH0gQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxO1xuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gIH1cbn1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9O1xuICB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCJmdW5jdGlvbnMvbGlzdHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2dyYWRpZW50X3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29uc3RhbnRzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Rpc3BsYXlcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29sb3JzXCI7XG4iLCIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGxpc3QgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9saXN0cy5yYlxuLy9cblxuXG4vLyBjb21wYWN0IGlzIHBhcnQgb2YgbGlic2Fzc1xuXG5AZnVuY3Rpb24gLWNvbXBhc3MtbnRoKCRsaXN0LCAkcGxhY2UpIHtcbiAgLy8gWWVwLCBTYXNzLWxpc3RzIGFyZSAxLWluZGV4ZWQuXG4gIEBpZiAkcGxhY2UgPT0gXCJmaXJzdFwiIHtcbiAgICAkcGxhY2U6IDE7XG4gIH1cbiAgQGlmICRwbGFjZSA9PSBcImxhc3RcIiB7XG4gICAgJHBsYWNlOiBsZW5ndGgoJGxpc3QpO1xuICB9XG4gIEByZXR1cm4gbnRoKCRsaXN0LCAkcGxhY2UpO1xufVxuXG4vLyBjb21wYXNzX2xpc3QgY2FuJ3QgYmUgaW1wbGVtZW50ZWQgaW4gc2FzcyBzY3JpcHRcblxuQGZ1bmN0aW9uIC1jb21wYXNzLXNwYWNlLWxpc3QoJGl0ZW0xLCAkaXRlbTI6bnVsbCwgJGl0ZW0zOm51bGwsICRpdGVtNDpudWxsLCAkaXRlbTU6bnVsbCwgJGl0ZW02Om51bGwsICRpdGVtNzpudWxsLCAkaXRlbTg6bnVsbCwgJGl0ZW05Om51bGwpIHtcbiAgJGl0ZW1zOiAoKTtcbiAgLy8gU3VwcG9ydCBmb3IgcG9seW1vcnBoaXNtLlxuICBAaWYgdHlwZS1vZigkaXRlbTEpID09ICdsaXN0JyB7XG4gICAgLy8gUGFzc2luZyBhIHNpbmdsZSBhcnJheSBvZiBwcm9wZXJ0aWVzLlxuICAgICRpdGVtczogJGl0ZW0xO1xuICB9IEBlbHNlIHtcbiAgICAkaXRlbXM6ICRpdGVtMSAkaXRlbTIgJGl0ZW0zICRpdGVtNCAkaXRlbTUgJGl0ZW02ICRpdGVtNyAkaXRlbTggJGl0ZW05O1xuICB9XG5cbiAgJGZ1bGw6IGZpcnN0LXZhbHVlLW9mKCRpdGVtcyk7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCBsZW5ndGgoJGl0ZW1zKSB7XG4gICAgJGl0ZW06IG50aCgkaXRlbXMsICRpKTtcbiAgICBAaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkZnVsbDogJGZ1bGwgJGl0ZW07XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkZnVsbDtcbn1cblxuQGZ1bmN0aW9uIC1jb21wYXNzLWxpc3Qtc2l6ZSgkbGlzdCkge1xuICBAcmV0dXJuIGxlbmd0aCgkbGlzdCk7XG59XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1zbGljZSgkbGlzdCwgJHN0YXJ0LCAkZW5kOiBmYWxzZSkge1xuICBAaWYgJGVuZCA9PSBmYWxzZSB7XG4gICAgJGVuZDogbGVuZ3RoKCRsaXN0KTtcbiAgfVxuICAkZnVsbDogbnRoKCRsaXN0LCAkc3RhcnQpO1xuICBAZm9yICRpIGZyb20gJHN0YXJ0ICsgMSB0aHJvdWdoICRlbmQge1xuICAgICRmdWxsOiAkZnVsbCwgbnRoKCRsaXN0LCAkaSk7XG4gIH1cbiAgQHJldHVybiAkZnVsbDtcbn1cblxuQGZ1bmN0aW9uIHJlamVjdCgkbGlzdCwgJHJlamVjdDEsICRyZWplY3QyOm51bGwsICRyZWplY3QzOm51bGwsICRyZWplY3Q0Om51bGwsICRyZWplY3Q1Om51bGwsICRyZWplY3Q2Om51bGwsICRyZWplY3Q3Om51bGwsICRyZWplY3Q4Om51bGwsICRyZWplY3Q5Om51bGwpIHtcbiAgJHJlamVjdHM6ICRyZWplY3QxLCAkcmVqZWN0MiwgJHJlamVjdDMsICRyZWplY3Q0LCAkcmVqZWN0NSwgJHJlamVjdDYsICRyZWplY3Q3LCAkcmVqZWN0OCwgJHJlamVjdDk7XG5cbiAgJGZ1bGw6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkbGlzdCB7XG4gICAgQGlmIGluZGV4KCRyZWplY3RzLCAkaXRlbSkge31cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgJGZ1bGwge1xuICAgICAgICAkZnVsbDogJGZ1bGwsICRpdGVtO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZnVsbDogJGl0ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJGZ1bGw7XG59XG5cbkBmdW5jdGlvbiBmaXJzdC12YWx1ZS1vZigkbGlzdCkge1xuICBAcmV0dXJuIG50aCgkbGlzdCwgMSk7XG59XG5cbkBmdW5jdGlvbiBjb21wYWN0KCR2YXJzLi4uKSB7XG4gICRzZXBhcmF0b3I6IGxpc3Qtc2VwYXJhdG9yKCR2YXJzKTtcbiAgJGxpc3Q6ICgpO1xuICBAZWFjaCAkdmFyIGluICR2YXJzIHtcbiAgICAgIEBpZiAkdmFyIHtcbiAgICAgICAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkdmFyLCAkc2VwYXJhdG9yKTtcbiAgICAgIH1cbiAgfVxuICBAcmV0dXJuICRsaXN0O1xufVxuIiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY3Jvc3MgYnJvd3NlciBzdXBwb3J0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnJiXG4vLyBcblxuQGZ1bmN0aW9uIHByZWZpeGVkKCRwcmVmaXgsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5O1xuICAkcHJlZml4ZWQ6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09ICdzdHJpbmcnIHtcbiAgICAgICRwcmVmaXhlZDogJHByZWZpeGVkIG9yIHN0ci1pbmRleCgkaXRlbSwgJ3VybCcpICE9IDEgYW5kIHN0ci1pbmRleCgkaXRlbSwgJ3JnYicpICE9IDEgYW5kIHN0ci1pbmRleCgkaXRlbSwgJyMnKSAhPSAxO1xuICAgIH0gQGVsc2VpZiB0eXBlLW9mKCRpdGVtKSA9PSAnY29sb3InIHtcbiAgICB9IEBlbHNlaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkcHJlZml4ZWQ6IHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJHByZWZpeGVkO1xufVxuXG5AZnVuY3Rpb24gcHJlZml4KCRwcmVmaXgsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gICRwcm9wZXJ0aWVzOiBcIlwiO1xuXG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJHByb3BlcnR5MSkgPT0gJ2xpc3QnIHtcbiAgICAvLyBQYXNzaW5nIGEgc2luZ2xlIGFycmF5IG9mIHByb3BlcnRpZXMuXG4gICAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTE7XG4gIH0gQGVsc2Uge1xuICAgIC8vIFBhc3NpbmcgbXVsdGlwbGUgcHJvcGVydGllcy5cbiAgICAkcHJvcGVydGllczogJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OTtcbiAgfVxuXG4gICRwcm9wczogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgJGl0ZW0gPT0gbnVsbCB7fVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiBwcmVmaXhlZCgkcHJlZml4LCAkaXRlbSkge1xuICAgICAgICAkaXRlbTogI3skcHJlZml4fS0jeyRpdGVtfTtcbiAgICAgIH1cbiAgICAgIEBpZiAkcHJvcHMge1xuICAgICAgICAkcHJvcHM6ICRwcm9wcywgJGl0ZW07XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwcm9wczogJGl0ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJHByb3BzO1xufVxuXG5AZnVuY3Rpb24gLXN2ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLXN2ZycsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLW93ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLW93ZycsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLXdlYmtpdCgkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLXdlYmtpdCcsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLW1veigkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLW1veicsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLW8oJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1vJywgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7XG59XG5cbkBmdW5jdGlvbiAtcGllKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KCctcGllJywgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7XG59XG4iLCIvLyBcbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBncmFkaWVudCBzdXBwb3J0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2IvdjAuMTIuMi9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2dyYWRpZW50X3N1cHBvcnQucmJcbi8vIFxuXG5AZnVuY3Rpb24gY29sb3Itc3RvcHMoJGl0ZW0xLCAkaXRlbTI6bnVsbCwgJGl0ZW0zOm51bGwsICRpdGVtNDpudWxsLCAkaXRlbTU6bnVsbCwgJGl0ZW02Om51bGwsICRpdGVtNzpudWxsLCAkaXRlbTg6bnVsbCwgJGl0ZW05Om51bGwpIHtcbiAgJGl0ZW1zOiAkaXRlbTIsICRpdGVtMywgJGl0ZW00LCAkaXRlbTUsICRpdGVtNiwgJGl0ZW03LCAkaXRlbTgsICRpdGVtOTtcbiAgJGZ1bGw6ICRpdGVtMTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGl0ZW1zIHtcbiAgICBAaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkZnVsbDogJGZ1bGwsICRpdGVtO1xuICAgIH0gICAgXG4gIH1cbiAgQHJldHVybiAkZnVsbDtcbn0iLCIvLyBcbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjb25zdGFudHMgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jb25zdGFudHMucmJcbi8vIFxuXG5AZnVuY3Rpb24gb3Bwb3NpdGUtcG9zaXRpb24oJGZyb20pIHtcbiAgICBAaWYgKCRmcm9tID09IHRvcCkge1xuICAgICAgICBAcmV0dXJuIGJvdHRvbTtcbiAgICB9IEBlbHNlIGlmICgkZnJvbSA9PSBib3R0b20pIHtcbiAgICAgICAgQHJldHVybiB0b3A7XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gbGVmdCkge1xuICAgICAgICBAcmV0dXJuIHJpZ2h0O1xuICAgIH0gQGVsc2UgaWYgKCRmcm9tID09IHJpZ2h0KSB7XG4gICAgICAgIEByZXR1cm4gbGVmdDtcbiAgICB9IEBlbHNlIGlmICgkZnJvbSA9PSBjZW50ZXIpIHtcbiAgICAgICAgQHJldHVybiBjZW50ZXI7XG4gICAgfVxufVxuIiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZGlzcGxheSBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9kaXNwbGF5LnJiXG4vLyBcblxuQGZ1bmN0aW9uIGVsZW1lbnRzLW9mLXR5cGUoJHR5cGUpe1xuICAgIEBpZiAoJHR5cGUgPT0gYmxvY2spe1xuICAgICAgICBAcmV0dXJuIGFkZHJlc3MsIGFydGljbGUsIGFzaWRlLCBibG9ja3F1b3RlLCBjZW50ZXIsIGRpciwgZGl2LCBkZCwgZGV0YWlscywgZGwsIGR0LCBmaWVsZHNldCwgZmlnY2FwdGlvbiwgZmlndXJlLCBmb3JtLCBmb290ZXIsIGZyYW1lc2V0LCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBociwgaGVhZGVyLCBoZ3JvdXAsIGlzaW5kZXgsIG1haW4sIG1lbnUsIG5hdiwgbm9mcmFtZXMsIG5vc2NyaXB0LCBvbCwgcCwgcHJlLCBzZWN0aW9uLCBzdW1tYXJ5LCB1bDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBpbmxpbmUpe1xuICAgICAgICBAcmV0dXJuIGEsIGFiYnIsIGFjcm9ueW0sIGF1ZGlvLCBiLCBiYXNlZm9udCwgYmRvLCBiaWcsIGJyLCBjYW52YXMsIGNpdGUsIGNvZGUsIGNvbW1hbmQsIGRhdGFsaXN0LCBkZm4sIGVtLCBlbWJlZCwgZm9udCwgaSwgaW1nLCBpbnB1dCwga2V5Z2VuLCBrYmQsIGxhYmVsLCBtYXJrLCBtZXRlciwgb3V0cHV0LCBwcm9ncmVzcywgcSwgcnAsIHJ0LCBydWJ5LCBzLCBzYW1wLCBzZWxlY3QsIHNtYWxsLCBzcGFuLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHRleHRhcmVhLCB0aW1lLCB0dCwgdSwgdmFyLCB2aWRlbywgd2JyO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGlubGluZS1ibG9jayl7XG4gICAgICAgIEByZXR1cm4gaW1nO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlKXtcbiAgICAgICAgQHJldHVybiB0YWJsZTtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBsaXN0LWl0ZW0pe1xuICAgICAgICBAcmV0dXJuIGxpO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLXJvdy1ncm91cCl7XG4gICAgICAgIEByZXR1cm4gdGJvZHk7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtaGVhZGVyLWdyb3VwKXtcbiAgICAgICAgQHJldHVybiB0aGVhZDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1mb290ZXItZ3JvdXApe1xuICAgICAgICBAcmV0dXJuIHRmb290O1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLXJvdyl7XG4gICAgICAgIEByZXR1cm4gdHI7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtY2VsbCl7XG4gICAgICAgIEByZXR1cm4gdGgsIHRkO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGh0bWw1LWJsb2NrKXtcbiAgICAgICAgQHJldHVybiBhcnRpY2xlLCBhc2lkZSwgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBtYWluLCBtZW51LCBuYXYsIHNlY3Rpb24sIHN1bW1hcnk7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaHRtbDUtaW5saW5lKXtcbiAgICAgICAgQHJldHVybiBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZW1iZWQsIGtleWdlbiwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHJwLCBydCwgcnVieSwgdGltZSwgdmlkZW8sIHdicjtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBodG1sNSl7XG4gICAgICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGF1ZGlvLCBjYW52YXMsIGNvbW1hbmQsIGRhdGFsaXN0LCBkZXRhaWxzLCBlbWJlZCwgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBrZXlnZW4sIG1haW4sIG1hcmssIG1lbnUsIG1ldGVyLCBuYXYsIG91dHB1dCwgcHJvZ3Jlc3MsIHJwLCBydCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSwgdGltZSwgdmlkZW8sIHdicjtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0ZXh0LWlucHV0KXtcbiAgICAgICAgQHJldHVybiBpbnB1dCwgdGV4dGFyZWE7XG4gICAgfVxufVxuIiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29sb3JzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2NvcmUvbGliL2NvbXBhc3MvY29yZS9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2NvbG9ycy5yYlxuLy9cblxuLy8gYSBnZW5lcmljaXplZCB2ZXJzaW9uIG9mIGxpZ2h0ZW4vZGFya2VuIHNvIHRoYXQgbmVnYXRpdmUgdmFsdWVzIGNhbiBiZSB1c2VkLlxuQGZ1bmN0aW9uIGFkanVzdC1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gICAgQHJldHVybiBhZGp1c3QtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkYW1vdW50KTtcbn1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBsaWdodG5lc3MgYnkgc29tZSBwZXJjZW50YWdlLlxuLy8gSWYgdGhlIGFtb3VudCBpcyBuZWdhdGl2ZSwgdGhlIGNvbG9yIGlzIHNjYWxlZCBkYXJrZXIsIGlmIHBvc2l0aXZlLCBpdCBpcyBzY2FsZWQgbGlnaHRlci5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIGxpZ2h0IG9yIGRhcmsgY29sb3IgdW5sZXNzIHRoZSBhbW91bnQgaXMgMTAwJS5cbkBmdW5jdGlvbiBzY2FsZS1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gICAgQHJldHVybiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRhbW91bnQpO1xufVxuXG4vLyBhIGdlbmVyaWNpemVkIHZlcnNpb24gb2Ygc2F0dXJhdGUvZGVzYXR1cmF0ZSBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gYmUgdXNlZC5cbkBmdW5jdGlvbiBhZGp1c3Qtc2F0dXJhdGlvbigkY29sb3IsICRhbW91bnQpIHtcbiAgICBAcmV0dXJuIGFkanVzdC1jb2xvcigkY29sb3IsICRzYXR1cmF0aW9uOiAkYW1vdW50KTtcbn1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBzYXR1cmF0aW9uIGJ5IHNvbWUgcGVyY2VudGFnZS5cbi8vIElmIHRoZSBhbW91bnQgaXMgbmVnYXRpdmUsIHRoZSBjb2xvciBpcyBkZXNhdHVyYXRlZCwgaWYgcG9zaXRpdmUsIGl0IGlzIHNhdHVyYXRlZC5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIHNhdHVyYXRlZCBvciBkZXNhdHVyYXRlZCBjb2xvciB1bmxlc3MgdGhlIGFtb3VudCBpcyAxMDAlLlxuQGZ1bmN0aW9uIHNjYWxlLXNhdHVyYXRpb24oJGNvbG9yLCAkYW1vdW50KSB7XG4gICAgQHJldHVybiBzY2FsZS1jb2xvcigkY29sb3IsICRzYXR1cmF0aW9uOiAkYW1vdW50KTtcbn1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgICBAcmV0dXJuIG1peCgjMDAwMDAwLCAkY29sb3IsICRwZXJjZW50YWdlKTtcbn1cblxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICAgIEByZXR1cm4gbWl4KCNmZmZmZmYsICRjb2xvciwgJHBlcmNlbnRhZ2UpO1xufVxuXG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBwYWRkaW5nLWJveGAgLS0gdGhlIGJveCBtb2RlbCB1c2VkIGJ5IG1vZGVybiBicm93c2Vycy5cbi8vXG4vLyBJZiB5b3Ugd2lzaCB0byBkbyBzbywgeW91IGNhbiBvdmVycmlkZSB0aGUgZGVmYXVsdCBjb25zdGFudCB3aXRoIGBib3JkZXItYm94YFxuLy9cbi8vIFRvIG92ZXJyaWRlIHRvIHRoZSBkZWZhdWx0IGJvcmRlci1ib3ggbW9kZWwsIHVzZSB0aGlzIGNvZGU6XG4vLyAgICAgJGRlZmF1bHQtYmFja2dyb3VuZC1jbGlwOiBib3JkZXItYm94XG5cbiRkZWZhdWx0LWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3ggIWRlZmF1bHQ7XG5cbi8vIENsaXAgdGhlIGJhY2tncm91bmQgKGltYWdlIGFuZCBjb2xvcikgYXQgdGhlIGVkZ2Ugb2YgdGhlIHBhZGRpbmcgb3IgYm9yZGVyLlxuLy9cbi8vIExlZ2FsIFZhbHVlczpcbi8vXG4vLyAgICogcGFkZGluZy1ib3hcbi8vICAgKiBib3JkZXItYm94XG4vLyAgICogdGV4dFxuXG5AbWl4aW4gYmFja2dyb3VuZC1jbGlwKCRjbGlwOiAkZGVmYXVsdC1iYWNrZ3JvdW5kLWNsaXApIHtcbiAgLy8gd2Via2l0IGFuZCBtb3ppbGxhIHVzZSB0aGUgZGVwcmVjYXRlZCBzaG9ydCBbYm9yZGVyIHwgcGFkZGluZ11cbiAgJGNsaXA6IHVucXVvdGUoJGNsaXApO1xuICAkZGVwcmVjYXRlZDogJGNsaXA7XG4gIEBpZiAkY2xpcCA9PSBwYWRkaW5nLWJveCB7ICRkZXByZWNhdGVkOiBwYWRkaW5nOyB9XG4gIEBpZiAkY2xpcCA9PSBib3JkZXItYm94IHsgJGRlcHJlY2F0ZWQ6IGJvcmRlcjsgfVxuICAvLyBTdXBwb3J0IGZvciB3ZWJraXQgYW5kIG1vemlsbGEncyB1c2Ugb2YgdGhlIGRlcHJlY2F0ZWQgc2hvcnQgZm9ybVxuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2dyb3VuZC1jbGlwLCAkZGVwcmVjYXRlZCxcbiAgICAtbW96LFxuICAgIC13ZWJraXQsXG4gICAgbm90KC1vKSxcbiAgICBub3QoLW1zKSxcbiAgICBub3QoLWtodG1sKSxcbiAgICBub3Qgb2ZmaWNpYWxcbiAgKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtY2xpcCwgJGNsaXAsXG4gICAgbm90KC1tb3opLFxuICAgIG5vdCgtd2Via2l0KSxcbiAgICBub3QoLW8pLFxuICAgIG5vdCgtbXMpLFxuICAgIC1raHRtbCxcbiAgICBvZmZpY2lhbFxuICApO1xufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIi8vIE92ZXJyaWRlIGAkZGVmYXVsdC1iYWNrZ3JvdW5kLW9yaWdpbmAgdG8gY2hhbmdlIHRoZSBkZWZhdWx0LlxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbiRkZWZhdWx0LWJhY2tncm91bmQtb3JpZ2luOiBjb250ZW50LWJveCAhZGVmYXVsdDtcblxuLy8gUG9zaXRpb24gdGhlIGJhY2tncm91bmQgb2ZmIHRoZSBlZGdlIG9mIHRoZSBwYWRkaW5nLCBib3JkZXIgb3IgY29udGVudFxuLy9cbi8vICogUG9zc2libGUgdmFsdWVzOlxuLy8gICAqIGBwYWRkaW5nLWJveGBcbi8vICAgKiBgYm9yZGVyLWJveGBcbi8vICAgKiBgY29udGVudC1ib3hgXG4vLyAqIGJyb3dzZXIgZGVmYXVsdHMgdG8gYHBhZGRpbmctYm94YFxuLy8gKiBtaXhpbiBkZWZhdWx0cyB0byBgY29udGVudC1ib3hgXG5cblxuQG1peGluIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW46ICRkZWZhdWx0LWJhY2tncm91bmQtb3JpZ2luKSB7XG4gICRvcmlnaW46IHVucXVvdGUoJG9yaWdpbik7XG4gIC8vIHdlYmtpdCBhbmQgbW96aWxsYSB1c2UgdGhlIGRlcHJlY2F0ZWQgc2hvcnQgW2JvcmRlciB8IHBhZGRpbmcgfCBjb250ZW50XVxuICAkZGVwcmVjYXRlZDogJG9yaWdpbjtcbiAgQGlmICRvcmlnaW4gPT0gcGFkZGluZy1ib3ggeyAkZGVwcmVjYXRlZDogcGFkZGluZzsgfVxuICBAaWYgJG9yaWdpbiA9PSBib3JkZXItYm94ICB7ICRkZXByZWNhdGVkOiBib3JkZXI7ICB9XG4gIEBpZiAkb3JpZ2luID09IGNvbnRlbnQtYm94IHsgJGRlcHJlY2F0ZWQ6IGNvbnRlbnQ7IH1cblxuICAvLyBTdXBwb3J0IGZvciB3ZWJraXQgYW5kIG1vemlsbGEncyB1c2Ugb2YgdGhlIGRlcHJlY2F0ZWQgc2hvcnQgZm9ybVxuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2dyb3VuZC1vcmlnaW4sICRkZXByZWNhdGVkLFxuICAgIC1tb3osXG4gICAgLXdlYmtpdCxcbiAgICBub3QoLW8pLFxuICAgIG5vdCgtbXMpLFxuICAgIG5vdCgta2h0bWwpLFxuICAgIG5vdCBvZmZpY2lhbFxuICApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2dyb3VuZC1vcmlnaW4sICRvcmlnaW4sXG4gICAgbm90KC1tb3opLFxuICAgIG5vdCgtd2Via2l0KSxcbiAgICAtbyxcbiAgICAtbXMsXG4gICAgLWtodG1sLFxuICAgIG9mZmljaWFsXG4gICk7XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyAgb3ZlcnJpZGUgdG8gY2hhbmdlIHRoZSBkZWZhdWx0XG4kZGVmYXVsdC1iYWNrZ3JvdW5kLXNpemU6IDEwMCUgYXV0byAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSBzaXplIG9mIGJhY2tncm91bmQgaW1hZ2VzIHVzaW5nIHB4LCB3aWR0aCBhbmQgaGVpZ2h0LCBvciBwZXJjZW50YWdlcy5cbi8vIEN1cnJlbnRseSBzdXBwb3J0ZWQgaW46IE9wZXJhLCBHZWNrbywgV2Via2l0LlxuLy9cbi8vICogcGVyY2VudGFnZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiYWNrZ3JvdW5kLW9yaWdpbiAoZGVmYXVsdCA9IHBhZGRpbmctYm94KVxuLy8gKiBtaXhpbiBkZWZhdWx0cyB0bzogYCRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZWBcbkBtaXhpbiBiYWNrZ3JvdW5kLXNpemUoXG4gICRzaXplLTE6ICRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZSxcbiAgJHNpemUtMjogZmFsc2UsXG4gICRzaXplLTM6IGZhbHNlLFxuICAkc2l6ZS00OiBmYWxzZSxcbiAgJHNpemUtNTogZmFsc2UsXG4gICRzaXplLTY6IGZhbHNlLFxuICAkc2l6ZS03OiBmYWxzZSxcbiAgJHNpemUtODogZmFsc2UsXG4gICRzaXplLTk6IGZhbHNlLFxuICAkc2l6ZS0xMDogZmFsc2Vcbikge1xuICAkc2l6ZS0xOiBpZih0eXBlLW9mKCRzaXplLTEpID09IHN0cmluZywgdW5xdW90ZSgkc2l6ZS0xKSwgJHNpemUtMSk7XG4gICRzaXplczogY29tcGFjdCgkc2l6ZS0xLCAkc2l6ZS0yLCAkc2l6ZS0zLCAkc2l6ZS00LCAkc2l6ZS01LCAkc2l6ZS02LCAkc2l6ZS03LCAkc2l6ZS04LCAkc2l6ZS05LCAkc2l6ZS0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZ3JvdW5kLXNpemUsICRzaXplcywgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCgtbXMpLCBub3QoLWtodG1sKSk7XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBDcm9zcy1icm93c2VyIHN1cHBvcnQgZm9yIEBmb250LWZhY2UuIFN1cHBvcnRzIElFLCBHZWNrbywgV2Via2l0LCBPcGVyYS5cbi8vXG4vLyAqICRuYW1lIGlzIHJlcXVpcmVkLCBhcmJpdHJhcnksIGFuZCB3aGF0IHlvdSB3aWxsIHVzZSBpbiBmb250IHN0YWNrcy5cbi8vICogJGZvbnQtZmlsZXMgaXMgcmVxdWlyZWQgdXNpbmcgZm9udC1maWxlcygncmVsYXRpdmUvbG9jYXRpb24nLCAnZm9ybWF0JykuXG4vLyAgIGZvciBiZXN0IHJlc3VsdHMgdXNlIHRoaXMgb3JkZXI6IHdvZmYsIG9wZW50eXBlL3RydWV0eXBlLCBzdmdcbi8vICogJGVvdCBpcyByZXF1aXJlZCBieSBJRSwgYW5kIGlzIGEgcmVsYXRpdmUgbG9jYXRpb24gb2YgdGhlIGVvdCBmaWxlLlxuLy8gKiAkd2VpZ2h0IHNob3dzIGlmIHRoZSBmb250IGlzIGJvbGQsIGRlZmF1bHRzIHRvIG5vcm1hbFxuLy8gKiAkc3R5bGUgZGVmYXVsdHMgdG8gbm9ybWFsLCBtaWdodCBiZSBhbHNvIGl0YWxpY1xuLy8gKiBGb3IgYW5kcm9pZCAyLjIgQ29tcGF0aWJsaXR5LCBwbGVhc2UgZW5zdXJlIHRoYXQgeW91ciB3ZWIgcGFnZSBoYXNcbi8vICAgYSBtZXRhIHZpZXdwb3J0IHRhZy5cbi8vICogVG8gc3VwcG9ydCBpT1MgPCA0LjIsIGFuIFNWRyBmaWxlIG11c3QgYmUgcHJvdmlkZWRcbi8vXG4vLyBJZiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBvdGhlciBmb3JtYXRzIGNoZWNrIG91dCB0aGUgRm9udCBTcXVpcnJlbFxuLy8gW2ZvbnQgZ2VuZXJhdG9yXShodHRwOi8vd3d3LmZvbnRzcXVpcnJlbC5jb20vZm9udGZhY2UvZ2VuZXJhdG9yKVxuLy9cblxuLy8gSW4gb3JkZXIgdG8gcmVmZXIgdG8gYSBzcGVjaWZpYyBzdHlsZSBvZiB0aGUgZm9udCBpbiB5b3VyIHN0eWxlc2hlZXRzIGFzIFxuLy8gZS5nLiBcImZvbnQtc3R5bGU6IGl0YWxpYztcIiwgIHlvdSBtYXkgYWRkIGEgY291cGxlIG9mIEBmb250LWZhY2UgaW5jbHVkZXNcbi8vIGNvbnRhaW5pbmcgdGhlIHJlc3BlY3RpdmUgZm9udCBmaWxlcyBmb3IgZWFjaCBzdHlsZSBhbmQgc3BlY3lpbmdcbi8vIHJlc3BlY3RpdmUgdGhlICRzdHlsZSBwYXJhbWV0ZXIuXG5cbi8vIE9yZGVyIG9mIHRoZSBpbmNsdWRlcyBtYXR0ZXJzLCBhbmQgaXQgaXM6IG5vcm1hbCwgYm9sZCwgaXRhbGljLCBib2xkK2l0YWxpYy5cblxuQG1peGluIGZvbnQtZmFjZShcbiAgJG5hbWUsIFxuICAkZm9udC1maWxlcywgXG4gICRlb3Q6IGZhbHNlLFxuICAkd2VpZ2h0OiBmYWxzZSxcbiAgJHN0eWxlOiBmYWxzZVxuKSB7XG4gICRpZWZvbnQ6IHVucXVvdGUoXCIjeyRlb3R9PyNpZWZpeFwiKTtcbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6IHF1b3RlKCRuYW1lKTtcbiAgICBAaWYgJGVvdCB7XG4gICAgICBzcmM6IGZvbnQtdXJsKCRlb3QpO1xuICAgICAgJGZvbnQtZmlsZXM6IGZvbnQtdXJsKCRpZWZvbnQpIHVucXVvdGUoXCJmb3JtYXQoJ2VvdCcpXCIpLCAkZm9udC1maWxlczsgXG4gICAgfVxuICAgIHNyYzogJGZvbnQtZmlsZXM7XG4gICAgQGlmICR3ZWlnaHQge1xuICAgICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgfVxuICAgIEBpZiAkc3R5bGUge1xuICAgICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIH1cbiAgfVxufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gQGRvYyBvZmZcbi8vIE5vdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2FmYXJpLCBDaHJvbWUsIGFuZCBGaXJlZm94IGFsbCBzdXBwb3J0IDNEIHRyYW5zZm9ybXMuIEhvd2V2ZXIsXG4vLyBvbmx5IGluIHRoZSBtb3N0IHJlY2VudCBidWlsZHMuIFlvdSBzaG91bGQgYWxzbyBwcm92aWRlIGZhbGxiYWNrIDJkIHN1cHBvcnQgZm9yXG4vLyBPcGVyYSBhbmQgSUUuIElFMTAgaXMgc2xhdGVkIHRvIGhhdmUgM2QgZW5hYmxlZCwgYnV0IGlzIGN1cnJlbnRseSB1bnJlbGVhc2VkLlxuLy8gVG8gbWFrZSB0aGF0IGVhc3ksIGFsbCAyRCB0cmFuc2Zvcm1zIGluY2x1ZGUgYW4gYnJvd3Nlci10YXJnZXRpbmcgdG9nZ2xlICgkb25seTNkKVxuLy8gdG8gc3dpdGNoIGJldHdlZW4gdGhlIHR3byBzdXBwb3J0IGxpc3RzLiBUaGUgdG9nZ2xlIGRlZmF1bHRzIHRvICdmYWxzZScgKDJEKSxcbi8vIGFuZCBhbHNvIGFjY2VwdHMgJ3RydWUnICgzRCkuIEN1cnJlbnRseSB0aGUgbGlzdHMgYXJlIGFzIGZvbGxvd3M6XG4vLyAyRDogTW96aWxsYSwgV2Via2l0LCBPcGVyYSwgT2ZmaWNpYWxcbi8vIDNEOiBXZWJraXQsIEZpcmVmb3guXG5cbi8vIEF2YWlsYWJsZSBUcmFuc2Zvcm1zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBTY2FsZSAoMmQgYW5kIDNkKVxuLy8gLSBSb3RhdGUgKDJkIGFuZCAzZClcbi8vIC0gVHJhbnNsYXRlICgyZCBhbmQgM2QpXG4vLyAtIFNrZXcgKDJkIG9ubHkpXG5cbi8vIFRyYW5zZm9ybSBQYXJhbWV0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBUcmFuc2Zvcm0gT3JpZ2luICgyZCBhbmQgM2QpXG4vLyAtIFBlcnNwZWN0aXZlICgzZClcbi8vIC0gUGVyc3BlY3RpdmUgT3JpZ2luICgzZClcbi8vIC0gVHJhbnNmb3JtIFN0eWxlICgzZClcbi8vIC0gQmFja2ZhY2UgVmlzaWJpbGl0eSAoM2QpXG5cbi8vIE1peGlucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gdHJhbnNmb3JtLW9yaWdpblxuLy8gIC0gc2hvcnRjdXRzOiAgdHJhbnNmb3JtLW9yaWdpbjJkLCB0cmFuc2Zvcm0tb3JpZ2luM2Rcbi8vICAtIGhlbHBlcnM6ICAgIGFwcGx5LW9yaWdpblxuLy8gdHJhbnNmb3JtXG4vLyAgLSBzaG9ydGN1dHM6ICB0cmFuc2Zvcm0yZCwgdHJhbnNmb3JtM2Rcbi8vICAtIGhlbHBlcnM6ICAgIHNpbXBsZS10cmFuc2Zvcm0sIGNyZWF0ZS10cmFuc2Zvcm1cbi8vIHBlcnNwZWN0aXZlXG4vLyAgLSBoZWxwZXJzOiAgICBwZXJzcGVjdGl2ZS1vcmlnaW5cbi8vIHRyYW5zZm9ybS1zdHlsZVxuLy8gYmFja2ZhY2UtdmlzaWJpbGl0eVxuLy8gc2NhbGVcbi8vICAtIHNob3J0Y3V0czogIHNjYWxlWCwgc2NhbGVZLCBzY2FsZVosIHNjYWxlM2Rcbi8vIHJvdGF0ZVxuLy8gIC0gc2hvcnRjdXRzOiAgcm90YXRlWCwgcm90YXRlWSwgcm90YXRlM2Rcbi8vIHRyYW5zbGF0ZVxuLy8gIC0gc2hvcnRjdXRzOiAgdHJhbnNsYXRlWCwgdHJhbnNsYXRlWSwgdHJhbnNsYXRlWiwgdHJhbnNsYXRlM2Rcbi8vIHNrZXdcbi8vICAtIHNob3J0Y3V0czogIHNrZXdYLCBza2V3WVxuXG4vLyBEZWZhdWx0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBkb2Mgb25cblxuLy8gVGhlIGRlZmF1bHQgeC1vcmlnaW4gZm9yIHRyYW5zZm9ybXNcbiRkZWZhdWx0LW9yaWdpbi14ICAgIDogNTAlICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gVGhlIGRlZmF1bHQgeS1vcmlnaW4gZm9yIHRyYW5zZm9ybXNcbiRkZWZhdWx0LW9yaWdpbi15ICAgIDogNTAlICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gVGhlIGRlZmF1bHQgei1vcmlnaW4gZm9yIHRyYW5zZm9ybXNcbiRkZWZhdWx0LW9yaWdpbi16ICAgIDogNTAlICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG5cbi8vIFRoZSBkZWZhdWx0IHgtbXVsdGlwbGllciBmb3Igc2NhbGluZ1xuJGRlZmF1bHQtc2NhbGUteCAgICAgOiAxLjI1ICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyBUaGUgZGVmYXVsdCB5LW11bHRpcGxpZXIgZm9yIHNjYWxpbmdcbiRkZWZhdWx0LXNjYWxlLXkgICAgIDogJGRlZmF1bHQtc2NhbGUteCAgICAgICFkZWZhdWx0O1xuLy8gVGhlIGRlZmF1bHQgei1tdWx0aXBsaWVyIGZvciBzY2FsaW5nXG4kZGVmYXVsdC1zY2FsZS16ICAgICA6ICRkZWZhdWx0LXNjYWxlLXggICAgICAhZGVmYXVsdDtcblxuXG4vLyBUaGUgZGVmYXVsdCBhbmdsZSBmb3Igcm90YXRpb25zXG4kZGVmYXVsdC1yb3RhdGUgICAgICA6IDQ1ZGVnICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcblxuXG4vLyBUaGUgZGVmYXVsdCB4LXZlY3RvciBmb3IgdGhlIGF4aXMgb2YgM2Qgcm90YXRpb25zXG4kZGVmYXVsdC12ZWN0b3IteCAgICA6IDEgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHktdmVjdG9yIGZvciB0aGUgYXhpcyBvZiAzZCByb3RhdGlvbnNcbiRkZWZhdWx0LXZlY3Rvci15ICAgIDogMSAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gVGhlIGRlZmF1bHQgei12ZWN0b3IgZm9yIHRoZSBheGlzIG9mIDNkIHJvdGF0aW9uc1xuJGRlZmF1bHQtdmVjdG9yLXogICAgOiAxICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG5cblxuLy8gVGhlIGRlZmF1bHQgeC1sZW5ndGggZm9yIHRyYW5zbGF0aW9uc1xuJGRlZmF1bHQtdHJhbnNsYXRlLXggOiAxZW0gICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyBUaGUgZGVmYXVsdCB5LWxlbmd0aCBmb3IgdHJhbnNsYXRpb25zXG4kZGVmYXVsdC10cmFuc2xhdGUteSA6ICRkZWZhdWx0LXRyYW5zbGF0ZS14ICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHotbGVuZ3RoIGZvciB0cmFuc2xhdGlvbnNcbiRkZWZhdWx0LXRyYW5zbGF0ZS16IDogJGRlZmF1bHQtdHJhbnNsYXRlLXggICFkZWZhdWx0O1xuXG5cbi8vIFRoZSBkZWZhdWx0IHgtYW5nbGUgZm9yIHNrZXdpbmdcbiRkZWZhdWx0LXNrZXcteCAgICAgIDogNWRlZyAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gVGhlIGRlZmF1bHQgeS1hbmdsZSBmb3Igc2tld2luZ1xuJGRlZmF1bHQtc2tldy15ICAgICAgOiA1ZGVnICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG5cblxuLy8gKipUcmFuc2Zvcm0tb3JpZ2luKipcbi8vIFRyYW5zZm9ybS1vcmlnaW4gc2VudCBhcyBhIGNvbXBsZXRlIHN0cmluZ1xuLy9cbi8vICAgICBAaW5jbHVkZSBhcHBseS1vcmlnaW4oIG9yaWdpbiBbLCAzRC1vbmx5IF0gKVxuLy9cbi8vIHdoZXJlICdvcmlnaW4nIGlzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3QgY29udGFpbmluZyAxLTMgKHgveS96KSBjb29yZGluYXRlc1xuLy8gaW4gcGVyY2VudGFnZXMsIGFic29sdXRlIChweCwgY20sIGluLCBlbSBldGMuLikgb3IgcmVsYXRpdmVcbi8vIChsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20sIGNlbnRlcikgdW5pdHNcbi8vXG4vLyBAcGFyYW0gb25seTNkIFNldCB0aGlzIHRvIHRydWUgdG8gb25seSBhcHBseSB0aGlzXG4vLyBtaXhpbiB3aGVyZSBicm93c2VycyBoYXZlIDNEIHN1cHBvcnQuXG5AbWl4aW4gYXBwbHktb3JpZ2luKCRvcmlnaW4sICRvbmx5M2QpIHtcbiAgJG9ubHkzZDogJG9ubHkzZCBvciAtY29tcGFzcy1saXN0LXNpemUoLWNvbXBhc3MtbGlzdCgkb3JpZ2luKSkgPiAyO1xuICBAaWYgJG9ubHkzZCB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zZm9ybS1vcmlnaW4sICRvcmlnaW4sXG4gICAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgICApO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNmb3JtLW9yaWdpbiwgJG9yaWdpbixcbiAgICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICAgICk7XG4gIH1cbn1cblxuLy8gVHJhbnNmb3JtLW9yaWdpbiBzZW50IGFzIGluZGl2aWR1YWwgYXJndW1lbnRzOlxuLy9cbi8vICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKCBbIG9yaWdpbi14LCBvcmlnaW4teSwgb3JpZ2luLXosIDNELW9ubHkgXSApXG4vL1xuLy8gd2hlcmUgdGhlIDMgJ29yaWdpbi0nIGFyZ3VtZW50cyByZXByZXNlbnQgeC95L3ogY29vcmRpbmF0ZXMuXG4vL1xuLy8gKipOT1RFOioqIHNldHRpbmcgeiBjb29yZGluYXRlcyB0cmlnZ2VycyAzRCBzdXBwb3J0IGxpc3QsIGxlYXZlIGZhbHNlIGZvciAyRCBzdXBwb3J0XG5AbWl4aW4gdHJhbnNmb3JtLW9yaWdpbihcbiAgJG9yaWdpbi14OiAkZGVmYXVsdC1vcmlnaW4teCxcbiAgJG9yaWdpbi15OiAkZGVmYXVsdC1vcmlnaW4teSxcbiAgJG9yaWdpbi16OiBmYWxzZSxcbiAgJG9ubHkzZDogICBpZigkb3JpZ2luLXosIHRydWUsIGZhbHNlKVxuKSB7XG4gICRvcmlnaW46IHVucXVvdGUoJycpO1xuICBAaWYgJG9yaWdpbi14IG9yICRvcmlnaW4teSBvciAkb3JpZ2luLXoge1xuICAgIEBpZiAkb3JpZ2luLXggeyAkb3JpZ2luOiAkb3JpZ2luLXg7IH0gQGVsc2UgeyAkb3JpZ2luOiA1MCU7IH1cbiAgICBAaWYgJG9yaWdpbi15IHsgJG9yaWdpbjogJG9yaWdpbiAkb3JpZ2luLXk7IH0gQGVsc2UgeyBAaWYgJG9yaWdpbi16IHsgJG9yaWdpbjogJG9yaWdpbiA1MCU7IH19XG4gICAgQGlmICRvcmlnaW4teiB7ICRvcmlnaW46ICRvcmlnaW4gJG9yaWdpbi16OyB9XG4gICAgQGluY2x1ZGUgYXBwbHktb3JpZ2luKCRvcmlnaW4sICRvbmx5M2QpO1xuICB9XG59XG5cblxuLy8gVHJhbnNmb3JtIHNlbnQgYXMgYSBjb21wbGV0ZSBzdHJpbmc6XG4vL1xuLy8gICAgIEBpbmNsdWRlIHRyYW5zZm9ybSggdHJhbnNmb3JtcyBbLCAzRC1vbmx5IF0gKVxuLy9cbi8vIHdoZXJlICd0cmFuc2Zvcm1zJyBpcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGFsbCB0aGUgdHJhbnNmb3JtcyB0byBiZSBhcHBsaWVkLlxuQG1peGluIHRyYW5zZm9ybShcbiAgJHRyYW5zZm9ybSxcbiAgJG9ubHkzZDogZmFsc2Vcbikge1xuICBAaWYgJG9ubHkzZCB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zZm9ybSwgJHRyYW5zZm9ybSxcbiAgICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2Zvcm0sICR0cmFuc2Zvcm0sXG4gICAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgICApO1xuICB9XG59XG5cbi8vIFNob3J0Y3V0IHRvIHRhcmdldCBhbGwgYnJvd3NlcnMgd2l0aCAyRCB0cmFuc2Zvcm0gc3VwcG9ydFxuQG1peGluIHRyYW5zZm9ybTJkKCR0cmFucykge1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCBmYWxzZSk7XG59XG5cbi8vIFNob3J0Y3V0IHRvIHRhcmdldCBvbmx5IGJyb3dzZXJzIHdpdGggM0QgdHJhbnNmb3JtIHN1cHBvcnRcbkBtaXhpbiB0cmFuc2Zvcm0zZCgkdHJhbnMpIHtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgdHJ1ZSk7XG59XG5cbi8vIEBkb2Mgb2ZmXG4vLyAzRCBQYXJhbWV0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBkb2Mgb25cblxuLy8gU2V0IHRoZSBwZXJzcGVjdGl2ZSBvZiAzRCB0cmFuc2Zvcm1zIG9uIHRoZSBjaGlsZHJlbiBvZiBhbiBlbGVtZW50OlxuLy9cbi8vICAgICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoIHBlcnNwZWN0aXZlIClcbi8vXG4vLyB3aGVyZSAncGVyc3BlY3RpdmUnIGlzIGEgdW5pdGxlc3MgbnVtYmVyIHJlcHJlc2VudGluZyB0aGUgZGVwdGggb2YgdGhlXG4vLyB6LWF4aXMuIFRoZSBoaWdoZXIgdGhlIHBlcnNwZWN0aXZlLCB0aGUgbW9yZSBleGFnZ2VyYXRlZCB0aGUgZm9yZXNob3J0ZW5pbmcuXG4vLyB2YWx1ZXMgZnJvbSA1MDAgdG8gMTAwMCBhcmUgbW9yZS1vci1sZXNzIFwibm9ybWFsXCIgLSBhIGdvb2Qgc3RhcnRpbmctcG9pbnQuXG5AbWl4aW4gcGVyc3BlY3RpdmUoJHApIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHBlcnNwZWN0aXZlLCAkcCxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gU2V0IHRoZSBvcmlnaW4gcG9zaXRpb24gZm9yIHRoZSBwZXJzcGVjdGl2ZVxuLy9cbi8vICAgICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUtb3JpZ2luKG9yaWdpbi14IFtvcmlnaW4teV0pXG4vL1xuLy8gd2hlcmUgdGhlIHR3byBhcmd1bWVudHMgcmVwcmVzZW50IHgveSBjb29yZGluYXRlc1xuQG1peGluIHBlcnNwZWN0aXZlLW9yaWdpbigkb3JpZ2luOiA1MCUpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHBlcnNwZWN0aXZlLW9yaWdpbiwgJG9yaWdpbixcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gRGV0ZXJtaW5lIHdoZXRoZXIgYSAzRCBvYmplY3RzIGNoaWxkcmVuIGFsc28gbGl2ZSBpbiB0aGUgZ2l2ZW4gM0Qgc3BhY2Vcbi8vXG4vLyAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1zdHlsZSggWyBzdHlsZSBdIClcbi8vXG4vLyB3aGVyZSBgc3R5bGVgIGNhbiBiZSBlaXRoZXIgYGZsYXRgIG9yIGBwcmVzZXJ2ZS0zZGAuXG4vLyBCcm93c2VycyBkZWZhdWx0IHRvIGBmbGF0YCwgbWl4aW4gZGVmYXVsdHMgdG8gYHByZXNlcnZlLTNkYC5cbkBtaXhpbiB0cmFuc2Zvcm0tc3R5bGUoJHN0eWxlOiBwcmVzZXJ2ZS0zZCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNmb3JtLXN0eWxlLCAkc3R5bGUsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIERldGVybWluZSB0aGUgdmlzaWJpbGl0eSBvZiBhbiBlbGVtZW50IHdoZW4gaXQncyBiYWNrIGlzIHR1cm5lZFxuLy9cbi8vICAgICBAaW5jbHVkZSBiYWNrZmFjZS12aXNpYmlsaXR5KCBbIHZpc2liaWxpdHkgXSApXG4vL1xuLy8gd2hlcmUgYHZpc2liaWxpdHlgIGNhbiBiZSBlaXRoZXIgYHZpc2libGVgIG9yIGBoaWRkZW5gLlxuLy8gQnJvd3NlcnMgZGVmYXVsdCB0byB2aXNpYmxlLCBtaXhpbiBkZWZhdWx0cyB0byBoaWRkZW5cbkBtaXhpbiBiYWNrZmFjZS12aXNpYmlsaXR5KCR2aXNpYmlsaXR5OiBoaWRkZW4pIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tmYWNlLXZpc2liaWxpdHksICR2aXNpYmlsaXR5LFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBAZG9jIG9mZlxuLy8gVHJhbnNmb3JtIFBhcnRpYWxzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGVzZSB3b3JrIHdlbGwgb24gdGhlaXIgb3duLCBidXQgdGhleSBkb24ndCBhZGQgdG8gZWFjaCBvdGhlciwgdGhleSBvdmVycmlkZS5cbi8vIFVzZSBhbG9uZyB3aXRoIHRyYW5zZm9ybSBwYXJhbWV0ZXIgbWl4aW5zIHRvIGFkanVzdCBvcmlnaW4sIHBlcnNwZWN0aXZlIGFuZCBzdHlsZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblxuLy8gU2NhbGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIFNjYWxlIGFuIG9iamVjdCBhbG9uZyB0aGUgeCBhbmQgeSBheGlzOlxuLy9cbi8vICAgICAgQGluY2x1ZGUgc2NhbGUoIFsgc2NhbGUteCwgc2NhbGUteSwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vL1xuLy8gd2hlcmUgdGhlICdzY2FsZS0nIGFyZ3VtZW50cyBhcmUgdW5pdGxlc3MgbXVsdGlwbGllcnMgb2YgdGhlIHggYW5kIHkgZGltZW5zaW9uc1xuLy8gYW5kIHBlcnNwZWN0aXZlLCB3aGljaCB3b3JrcyB0aGUgc2FtZSBhcyB0aGUgc3RhbmQtYWxvbmUgcGVyc3BlY3RpdmUgcHJvcGVydHkvbWl4aW5cbi8vIGJ1dCBhcHBsaWVzIHRvIHRoZSBpbmRpdmlkdWFsIGVsZW1lbnQgKG11bHRpcGxpZWQgd2l0aCBhbnkgcGFyZW50IHBlcnNwZWN0aXZlKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBzY2FsZShcbiAgJHNjYWxlLXg6ICAgICAkZGVmYXVsdC1zY2FsZS14LFxuICAkc2NhbGUteTogICAgICRzY2FsZS14LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiBzY2FsZSgkc2NhbGUteCwgJHNjYWxlLXkpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuLy8gU2NhbGUgYW4gb2JqZWN0IGFsb25nIHRoZSB4IGF4aXNcbi8vIEBpbmNsdWRlIHNjYWxlWCggWyBzY2FsZS14LCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2NhbGVYKFxuICAkc2NhbGU6ICAgICAgICRkZWZhdWx0LXNjYWxlLXgsXG4gICRwZXJzcGVjdGl2ZTogZmFsc2UsXG4gICRvbmx5M2Q6ICAgICAgZmFsc2Vcbikge1xuICAkdHJhbnM6IHNjYWxlWCgkc2NhbGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuLy8gU2NhbGUgYW4gb2JqZWN0IGFsb25nIHRoZSB5IGF4aXNcbi8vIEBpbmNsdWRlIHNjYWxlWSggWyBzY2FsZS15LCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2NhbGVZKFxuICAkc2NhbGU6ICAgICAgICRkZWZhdWx0LXNjYWxlLXksXG4gICRwZXJzcGVjdGl2ZTogZmFsc2UsXG4gICRvbmx5M2Q6ICAgICAgZmFsc2Vcbikge1xuICAkdHJhbnM6IHNjYWxlWSgkc2NhbGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuLy8gU2NhbGUgYW4gb2JqZWN0IGFsb25nIHRoZSB6IGF4aXNcbi8vIEBpbmNsdWRlIHNjYWxlWiggWyBzY2FsZS16LCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2NhbGVaKFxuICAkc2NhbGU6ICRkZWZhdWx0LXNjYWxlLXosXG4gICRwZXJzcGVjdGl2ZTogZmFsc2Vcbikge1xuICAkdHJhbnM6IHNjYWxlWigkc2NhbGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpO1xufVxuXG4vLyBTY2FsZSBhbmQgb2JqZWN0IGFsb25nIGFsbCB0aHJlZSBheGlzXG4vLyBAaW5jbHVkZSBzY2FsZTNkKCBbIHNjYWxlLXgsIHNjYWxlLXksIHNjYWxlLXosIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBzY2FsZTNkKFxuICAkc2NhbGUteDogICAgICRkZWZhdWx0LXNjYWxlLXgsXG4gICRzY2FsZS15OiAgICAgJGRlZmF1bHQtc2NhbGUteSxcbiAgJHNjYWxlLXo6ICAgICAkZGVmYXVsdC1zY2FsZS16LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlXG4pIHtcbiAgJHRyYW5zOiBzY2FsZTNkKCRzY2FsZS14LCAkc2NhbGUteSwgJHNjYWxlLXopO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpO1xufVxuXG4vLyBAZG9jIG9mZlxuLy8gUm90YXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIFJvdGF0ZSBhbiBvYmplY3QgYXJvdW5kIHRoZSB6IGF4aXMgICgyRClcbi8vIEBpbmNsdWRlIHJvdGF0ZSggWyByb3RhdGlvbiwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vLyB3aGVyZSAncm90YXRpb24nIGlzIGFuIGFuZ2xlIHNldCBpbiBkZWdyZWVzIChkZWcpIG9yIHJhZGlhbiAocmFkKSB1bml0c1xuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiByb3RhdGUoXG4gICRyb3RhdGU6ICAgICAgJGRlZmF1bHQtcm90YXRlLFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiByb3RhdGUoJHJvdGF0ZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpO1xufVxuXG4vLyBBIGxvbmdjdXQgZm9yICdyb3RhdGUnIGluIGNhc2UgeW91IGZvcmdldCB0aGF0ICd6JyBpcyBpbXBsaWVkXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHJvdGF0ZVooXG4gICRyb3RhdGU6ICAgICAgJGRlZmF1bHQtcm90YXRlLFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgQGluY2x1ZGUgcm90YXRlKCRyb3RhdGUsICRwZXJzcGVjdGl2ZSwgJG9ubHkzZCk7XG59XG5cbi8vIFJvdGF0ZSBhbiBvYmplY3QgYXJvdW5kIHRoZSB4IGF4aXMgKDNEKVxuLy8gQGluY2x1ZGUgcm90YXRlWCggWyByb3RhdGlvbiwgcGVyc3BlY3RpdmUgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHJvdGF0ZVgoXG4gICRyb3RhdGU6ICRkZWZhdWx0LXJvdGF0ZSxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZVxuKSB7XG4gICR0cmFuczogcm90YXRlWCgkcm90YXRlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTtcbn1cblxuLy8gUm90YXRlIGFuIG9iamVjdCBhcm91bmQgdGhlIHkgYXhpcyAoM0QpXG4vLyBAaW5jbHVkZSByb3RhdGUoIFsgcm90YXRpb24sIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiByb3RhdGVZKFxuICAkcm90YXRlOiAkZGVmYXVsdC1yb3RhdGUsXG4gICRwZXJzcGVjdGl2ZTogZmFsc2Vcbikge1xuICAkdHJhbnM6IHJvdGF0ZVkoJHJvdGF0ZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7XG59XG5cbi8vIFJvdGF0ZSBhbiBvYmplY3QgYXJvdW5kIGFuIGFyYml0cmFyeSBheGlzICgzRClcbi8vIEBpbmNsdWRlIHJvdGF0ZSggWyB2ZWN0b3IteCwgdmVjdG9yLXksIHZlY3Rvci16LCByb3RhdGlvbiwgcGVyc3BlY3RpdmUgXSApXG4vLyB3aGVyZSB0aGUgJ3ZlY3Rvci0nIGFyZ3VtZW50cyBhY2NlcHQgdW5pdGxlc3MgbnVtYmVycy5cbi8vIFRoZXNlIG51bWJlcnMgYXJlIG5vdCBpbXBvcnRhbnQgb24gdGhlaXIgb3duLCBidXQgaW4gcmVsYXRpb24gdG8gb25lIGFub3RoZXJcbi8vIGNyZWF0aW5nIGFuIGF4aXMgZnJvbSB5b3VyIHRyYW5zZm9ybS1vcmlnaW4sIGFsb25nIHRoZSBheGlzIG9mIFh4ID0gWXkgPSBaei5cbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gcm90YXRlM2QoXG4gICR2ZWN0b3IteDogJGRlZmF1bHQtdmVjdG9yLXgsXG4gICR2ZWN0b3IteTogJGRlZmF1bHQtdmVjdG9yLXksXG4gICR2ZWN0b3ItejogJGRlZmF1bHQtdmVjdG9yLXosXG4gICRyb3RhdGU6ICRkZWZhdWx0LXJvdGF0ZSxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZVxuKSB7XG4gICR0cmFuczogcm90YXRlM2QoJHZlY3Rvci14LCAkdmVjdG9yLXksICR2ZWN0b3IteiwgJHJvdGF0ZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7XG59XG5cbi8vIEBkb2Mgb2ZmXG4vLyBUcmFuc2xhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBkb2Mgb25cblxuLy8gTW92ZSBhbiBvYmplY3QgYWxvbmcgdGhlIHggb3IgeSBheGlzICgyRClcbi8vIEBpbmNsdWRlIHRyYW5zbGF0ZSggWyB0cmFuc2xhdGUteCwgdHJhbnNsYXRlLXksIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy8gd2hlcmUgdGhlICd0cmFuc2xhdGUtJyBhcmd1bWVudHMgYWNjZXB0IGFueSBkaXN0YW5jZSBpbiBwZXJjZW50YWdlcyBvciBhYnNvbHV0ZSAocHgsIGNtLCBpbiwgZW0gZXRjLi4pIHVuaXRzLlxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiB0cmFuc2xhdGUoXG4gICR0cmFuc2xhdGUteDogJGRlZmF1bHQtdHJhbnNsYXRlLXgsXG4gICR0cmFuc2xhdGUteTogJGRlZmF1bHQtdHJhbnNsYXRlLXksXG4gICRwZXJzcGVjdGl2ZTogZmFsc2UsXG4gICRvbmx5M2Q6ICAgICAgZmFsc2Vcbikge1xuICAkdHJhbnM6IHRyYW5zbGF0ZSgkdHJhbnNsYXRlLXgsICR0cmFuc2xhdGUteSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpO1xufVxuXG4vLyBNb3ZlIGFuIG9iamVjdCBhbG9uZyB0aGUgeCBheGlzICgyRClcbi8vIEBpbmNsdWRlIHRyYW5zbGF0ZSggWyB0cmFuc2xhdGUteCwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHRyYW5zbGF0ZVgoXG4gICR0cmFucy14OiAgICAgJGRlZmF1bHQtdHJhbnNsYXRlLXgsXG4gICRwZXJzcGVjdGl2ZTogZmFsc2UsXG4gICRvbmx5M2Q6ICAgICAgZmFsc2Vcbikge1xuICAkdHJhbnM6IHRyYW5zbGF0ZVgoJHRyYW5zLXgpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuLy8gTW92ZSBhbiBvYmplY3QgYWxvbmcgdGhlIHkgYXhpcyAoMkQpXG4vLyBAaW5jbHVkZSB0cmFuc2xhdGUoIFsgdHJhbnNsYXRlLXksIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiB0cmFuc2xhdGVZKFxuICAkdHJhbnMteTogICAgICRkZWZhdWx0LXRyYW5zbGF0ZS15LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiB0cmFuc2xhdGVZKCR0cmFucy15KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIE1vdmUgYW4gb2JqZWN0IGFsb25nIHRoZSB6IGF4aXMgKDNEKVxuLy8gQGluY2x1ZGUgdHJhbnNsYXRlKCBbIHRyYW5zbGF0ZS16LCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gdHJhbnNsYXRlWihcbiAgJHRyYW5zLXo6ICAgICAkZGVmYXVsdC10cmFuc2xhdGUteixcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZVxuKSB7XG4gICR0cmFuczogdHJhbnNsYXRlWigkdHJhbnMteik7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7XG59XG5cbi8vIE1vdmUgYW4gb2JqZWN0IGFsb25nIHRoZSB4LCB5IGFuZCB6IGF4aXMgKDNEKVxuLy8gQGluY2x1ZGUgdHJhbnNsYXRlKCBbIHRyYW5zbGF0ZS14LCB0cmFuc2xhdGUteSwgdHJhbnNsYXRlLXosIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiB0cmFuc2xhdGUzZChcbiAgJHRyYW5zbGF0ZS14OiAkZGVmYXVsdC10cmFuc2xhdGUteCxcbiAgJHRyYW5zbGF0ZS15OiAkZGVmYXVsdC10cmFuc2xhdGUteSxcbiAgJHRyYW5zbGF0ZS16OiAkZGVmYXVsdC10cmFuc2xhdGUteixcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZVxuKSB7XG4gICR0cmFuczogdHJhbnNsYXRlM2QoJHRyYW5zbGF0ZS14LCAkdHJhbnNsYXRlLXksICR0cmFuc2xhdGUteik7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7XG59XG5cbi8vIEBkb2Mgb2ZmXG4vLyBTa2V3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBkb2Mgb25cblxuLy8gU2tldyBhbiBlbGVtZW50OlxuLy9cbi8vICAgICBAaW5jbHVkZSBza2V3KCBbIHNrZXcteCwgc2tldy15LCAzRC1vbmx5IF0gKVxuLy9cbi8vIHdoZXJlIHRoZSAnc2tldy0nIGFyZ3VtZW50cyBhY2NlcHQgY3NzIGFuZ2xlcyBpbiBkZWdyZWVzIChkZWcpIG9yIHJhZGlhbiAocmFkKSB1bml0cy5cbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2tldyhcbiAgJHNrZXcteDogJGRlZmF1bHQtc2tldy14LFxuICAkc2tldy15OiAkZGVmYXVsdC1za2V3LXksXG4gICRvbmx5M2Q6IGZhbHNlXG4pIHtcbiAgJHRyYW5zOiBza2V3KCRza2V3LXgsICRza2V3LXkpO1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuLy8gU2tldyBhbiBlbGVtZW50IGFsb25nIHRoZSB4IGF4aXpcbi8vXG4vLyAgICAgQGluY2x1ZGUgc2tldyggWyBza2V3LXgsIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNrZXdYKFxuICAkc2tldy14OiAkZGVmYXVsdC1za2V3LXgsXG4gICRvbmx5M2Q6IGZhbHNlXG4pIHtcbiAgJHRyYW5zOiBza2V3WCgkc2tldy14KTtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIFNrZXcgYW4gZWxlbWVudCBhbG9uZyB0aGUgeSBheGlzXG4vL1xuLy8gICAgIEBpbmNsdWRlIHNrZXcoIFsgc2tldy15LCAzRC1vbmx5IF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBza2V3WShcbiAgJHNrZXcteTogJGRlZmF1bHQtc2tldy15LFxuICAkb25seTNkOiBmYWxzZVxuKSB7XG4gICR0cmFuczogc2tld1koJHNrZXcteSk7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpO1xufVxuXG5cbi8vIEZ1bGwgdHJhbnNmb3JtIG1peGluc1xuLy8gRm9yIHNldHRpbmdzIGFueSBjb21iaW5hdGlvbiBvZiB0cmFuc2Zvcm1zIGFzIGFyZ3VtZW50c1xuLy8gVGhlc2UgYXJlIGNvbXBsZXggYW5kIG5vdCBoaWdobHkgcmVjb21tZW5kZWQgZm9yIGRhaWx5IHVzZS4gVGhleSBhcmUgbWFpbmx5XG4vLyBoZXJlIGZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5IHB1cnBvc2VzLlxuLy9cbi8vICogdGhleSBpbmNsdWRlIG9yaWdpbiBhZGp1c3RtZW50c1xuLy8gKiBzY2FsZSB0YWtlcyBhIG11bHRpcGxpZXIgKHVuaXRsZXNzKSwgcm90YXRlIGFuZCBza2V3IHRha2UgZGVncmVlcyAoZGVnKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBjcmVhdGUtdHJhbnNmb3JtKFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkc2NhbGUteDogICAgIGZhbHNlLFxuICAkc2NhbGUteTogICAgIGZhbHNlLFxuICAkc2NhbGUtejogICAgIGZhbHNlLFxuICAkcm90YXRlLXg6ICAgIGZhbHNlLFxuICAkcm90YXRlLXk6ICAgIGZhbHNlLFxuICAkcm90YXRlLXo6ICAgIGZhbHNlLFxuICAkcm90YXRlM2Q6ICAgIGZhbHNlLFxuICAkdHJhbnMteDogICAgIGZhbHNlLFxuICAkdHJhbnMteTogICAgIGZhbHNlLFxuICAkdHJhbnMtejogICAgIGZhbHNlLFxuICAkc2tldy14OiAgICAgIGZhbHNlLFxuICAkc2tldy15OiAgICAgIGZhbHNlLFxuICAkb3JpZ2luLXg6ICAgIGZhbHNlLFxuICAkb3JpZ2luLXk6ICAgIGZhbHNlLFxuICAkb3JpZ2luLXo6ICAgIGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiB1bnF1b3RlKFwiXCIpO1xuXG4gIC8vIHBlcnNwZWN0aXZlXG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgOyB9XG5cbiAgLy8gc2NhbGVcbiAgQGlmICRzY2FsZS14IGFuZCAkc2NhbGUteSB7XG4gICAgQGlmICRzY2FsZS16IHsgJHRyYW5zOiAkdHJhbnMgc2NhbGUzZCgkc2NhbGUteCwgJHNjYWxlLXksICRzY2FsZS16KTsgfVxuICAgIEBlbHNlIHsgJHRyYW5zOiAkdHJhbnMgc2NhbGUoJHNjYWxlLXgsICRzY2FsZS15KTsgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgJHNjYWxlLXggeyAkdHJhbnM6ICR0cmFucyBzY2FsZVgoJHNjYWxlLXgpOyB9XG4gICAgQGlmICRzY2FsZS15IHsgJHRyYW5zOiAkdHJhbnMgc2NhbGVZKCRzY2FsZS15KTsgfVxuICAgIEBpZiAkc2NhbGUteiB7ICR0cmFuczogJHRyYW5zIHNjYWxlWigkc2NhbGUteik7IH1cbiAgfVxuXG4gIC8vIHJvdGF0ZVxuICBAaWYgJHJvdGF0ZS14IHsgJHRyYW5zOiAkdHJhbnMgcm90YXRlWCgkcm90YXRlLXgpOyB9XG4gIEBpZiAkcm90YXRlLXkgeyAkdHJhbnM6ICR0cmFucyByb3RhdGVZKCRyb3RhdGUteSk7IH1cbiAgQGlmICRyb3RhdGUteiB7ICR0cmFuczogJHRyYW5zIHJvdGF0ZVooJHJvdGF0ZS16KTsgfVxuICBAaWYgJHJvdGF0ZTNkIHsgJHRyYW5zOiAkdHJhbnMgcm90YXRlM2QoJHJvdGF0ZTNkKTsgfVxuXG4gIC8vIHRyYW5zbGF0ZVxuICBAaWYgJHRyYW5zLXggYW5kICR0cmFucy15IHtcbiAgICBAaWYgJHRyYW5zLXogeyAkdHJhbnM6ICR0cmFucyB0cmFuc2xhdGUzZCgkdHJhbnMteCwgJHRyYW5zLXksICR0cmFucy16KTsgfVxuICAgIEBlbHNlIHsgJHRyYW5zOiAkdHJhbnMgdHJhbnNsYXRlKCR0cmFucy14LCAkdHJhbnMteSk7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmICR0cmFucy14IHsgJHRyYW5zOiAkdHJhbnMgdHJhbnNsYXRlWCgkdHJhbnMteCk7IH1cbiAgICBAaWYgJHRyYW5zLXkgeyAkdHJhbnM6ICR0cmFucyB0cmFuc2xhdGVZKCR0cmFucy15KTsgfVxuICAgIEBpZiAkdHJhbnMteiB7ICR0cmFuczogJHRyYW5zIHRyYW5zbGF0ZVooJHRyYW5zLXopOyB9XG4gIH1cblxuICAvLyBza2V3XG4gIEBpZiAkc2tldy14IGFuZCAkc2tldy15IHsgJHRyYW5zOiAkdHJhbnMgc2tldygkc2tldy14LCAkc2tldy15KTsgfVxuICBAZWxzZSB7XG4gICAgQGlmICRza2V3LXggeyAkdHJhbnM6ICR0cmFucyBza2V3WCgkc2tldy14KTsgfVxuICAgIEBpZiAkc2tldy15IHsgJHRyYW5zOiAkdHJhbnMgc2tld1koJHNrZXcteSk7IH1cbiAgfVxuXG4gIC8vIGFwcGx5IGl0IVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbigkb3JpZ2luLXgsICRvcmlnaW4teSwgJG9yaWdpbi16LCAkb25seTNkKTtcbn1cblxuXG4vLyBBIHNpbXBsaWZpZWQgc2V0IG9mIG9wdGlvbnNcbi8vIGJhY2t3YXJkcy1jb21wYXRpYmxlIHdpdGggdGhlIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlICd0cmFuc2Zvcm0nIG1peGluXG5AbWl4aW4gc2ltcGxlLXRyYW5zZm9ybShcbiAgJHNjYWxlOiAgICBmYWxzZSxcbiAgJHJvdGF0ZTogICBmYWxzZSxcbiAgJHRyYW5zLXg6ICBmYWxzZSxcbiAgJHRyYW5zLXk6ICBmYWxzZSxcbiAgJHNrZXcteDogICBmYWxzZSxcbiAgJHNrZXcteTogICBmYWxzZSxcbiAgJG9yaWdpbi14OiBmYWxzZSxcbiAgJG9yaWdpbi15OiBmYWxzZVxuKSB7XG4gIEBpbmNsdWRlIGNyZWF0ZS10cmFuc2Zvcm0oXG4gICAgZmFsc2UsXG4gICAgJHNjYWxlLCAkc2NhbGUsIGZhbHNlLFxuICAgIGZhbHNlLCBmYWxzZSwgJHJvdGF0ZSwgZmFsc2UsXG4gICAgJHRyYW5zLXgsICR0cmFucy15LCBmYWxzZSxcbiAgICAkc2tldy14LCAkc2tldy15LFxuICAgICRvcmlnaW4teCwgJG9yaWdpbi15LCBmYWxzZSxcbiAgICBmYWxzZVxuICApO1xufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gQ1NTIFRyYW5zaXRpb25zXG4vLyBDdXJyZW50bHkgb25seSB3b3JrcyBpbiBXZWJraXQuXG4vL1xuLy8gKiBleHBlY3RlZCBpbiBDU1MzLCBGaXJlRm94IDMuNi83IGFuZCBPcGVyYSBQcmVzdG8gMi4zXG4vLyAqIFdlJ2xsIGJlIHByZXBhcmVkLlxuLy9cbi8vIEluY2x1ZGluZyB0aGlzIHN1Ym1vZHVsZSBzZXRzIGZvbGxvd2luZyBkZWZhdWx0cyBmb3IgdGhlIG1peGluczpcbi8vXG4vLyAgICAgJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSA6IGFsbFxuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24gOiAxc1xuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24gOiBmYWxzZVxuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXkgICAgOiBmYWxzZVxuLy9cbi8vIE92ZXJyaWRlIHRoZW0gaWYgeW91IGxpa2UuIFRpbWluZy1mdW5jdGlvbiBhbmQgZGVsYXkgYXJlIHNldCB0byBmYWxzZSBmb3IgYnJvd3NlciBkZWZhdWx0cyAoZWFzZSwgMHMpLlxuXG4kZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5OiBhbGwgIWRlZmF1bHQ7XG5cbiRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb246IDFzICFkZWZhdWx0O1xuXG4kZGVmYXVsdC10cmFuc2l0aW9uLWZ1bmN0aW9uOiBmYWxzZSAhZGVmYXVsdDtcblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheTogZmFsc2UgIWRlZmF1bHQ7XG5cbiR0cmFuc2l0aW9uYWJsZS1wcmVmaXhlZC12YWx1ZXM6IHRyYW5zZm9ybSwgdHJhbnNmb3JtLW9yaWdpbiAhZGVmYXVsdDtcblxuLy8gT25lIG9yIG1vcmUgcHJvcGVydGllcyB0byB0cmFuc2l0aW9uXG4vL1xuLy8gKiBmb3IgbXVsdGlwbGUsIHVzZSBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4vLyAqIGFsc28gYWNjZXB0cyBcImFsbFwiIG9yIFwibm9uZVwiXG5cbkBtaXhpbiB0cmFuc2l0aW9uLXByb3BlcnR5KCRwcm9wZXJ0eS0xOiAkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5LFxuICAkcHJvcGVydHktMiA6IGZhbHNlLFxuICAkcHJvcGVydHktMyA6IGZhbHNlLFxuICAkcHJvcGVydHktNCA6IGZhbHNlLFxuICAkcHJvcGVydHktNSA6IGZhbHNlLFxuICAkcHJvcGVydHktNiA6IGZhbHNlLFxuICAkcHJvcGVydHktNyA6IGZhbHNlLFxuICAkcHJvcGVydHktOCA6IGZhbHNlLFxuICAkcHJvcGVydHktOSA6IGZhbHNlLFxuICAkcHJvcGVydHktMTA6IGZhbHNlXG4pIHtcbiAgQGlmIHR5cGUtb2YoJHByb3BlcnR5LTEpID09IHN0cmluZyB7ICRwcm9wZXJ0eS0xOiB1bnF1b3RlKCRwcm9wZXJ0eS0xKTsgfVxuICAkcHJvcGVydGllczogY29tcGFjdCgkcHJvcGVydHktMSwgJHByb3BlcnR5LTIsICRwcm9wZXJ0eS0zLCAkcHJvcGVydHktNCwgJHByb3BlcnR5LTUsICRwcm9wZXJ0eS02LCAkcHJvcGVydHktNywgJHByb3BlcnR5LTgsICRwcm9wZXJ0eS05LCAkcHJvcGVydHktMTApO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAgICAgICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHkgOiBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigtd2Via2l0LCAkcHJvcGVydGllcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgICAgICAgLW1vei10cmFuc2l0aW9uLXByb3BlcnR5IDogcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oLW1veiwgICAgJHByb3BlcnRpZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgICAgICAgLW8tdHJhbnNpdGlvbi1wcm9wZXJ0eSA6IHByZWZpeGVkLWZvci10cmFuc2l0aW9uKC1vLCAgICAgICRwcm9wZXJ0aWVzKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tcHJvcGVydHkgOiAkcHJvcGVydGllcztcbn1cblxuLy8gT25lIG9yIG1vcmUgZHVyYXRpb25zIGluIHNlY29uZHNcbi8vXG4vLyAqIGZvciBtdWx0aXBsZSwgdXNlIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Rcbi8vICogdGhlc2UgZHVyYXRpb25zIHdpbGwgYWZmZWN0IHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBzYW1lIGxpc3QgcG9zaXRpb25cblxuQG1peGluIHRyYW5zaXRpb24tZHVyYXRpb24oJGR1cmF0aW9uLTE6ICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24sXG4gICRkdXJhdGlvbi0yIDogZmFsc2UsXG4gICRkdXJhdGlvbi0zIDogZmFsc2UsXG4gICRkdXJhdGlvbi00IDogZmFsc2UsXG4gICRkdXJhdGlvbi01IDogZmFsc2UsXG4gICRkdXJhdGlvbi02IDogZmFsc2UsXG4gICRkdXJhdGlvbi03IDogZmFsc2UsXG4gICRkdXJhdGlvbi04IDogZmFsc2UsXG4gICRkdXJhdGlvbi05IDogZmFsc2UsXG4gICRkdXJhdGlvbi0xMDogZmFsc2Vcbikge1xuICBAaWYgdHlwZS1vZigkZHVyYXRpb24tMSkgPT0gc3RyaW5nIHsgJGR1cmF0aW9uLTE6IHVucXVvdGUoJGR1cmF0aW9uLTEpOyB9XG4gICRkdXJhdGlvbnM6IGNvbXBhY3QoJGR1cmF0aW9uLTEsICRkdXJhdGlvbi0yLCAkZHVyYXRpb24tMywgJGR1cmF0aW9uLTQsICRkdXJhdGlvbi01LCAkZHVyYXRpb24tNiwgJGR1cmF0aW9uLTcsICRkdXJhdGlvbi04LCAkZHVyYXRpb24tOSwgJGR1cmF0aW9uLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zaXRpb24tZHVyYXRpb24sICRkdXJhdGlvbnMsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gT25lIG9yIG1vcmUgdGltaW5nIGZ1bmN0aW9uc1xuLy9cbi8vICogWyBlYXNlIHwgbGluZWFyIHwgZWFzZS1pbiB8IGVhc2Utb3V0IHwgZWFzZS1pbi1vdXQgfCBjdWJpYy1iZXppZXIoeDEsIHkxLCB4MiwgeTIpXVxuLy8gKiBGb3IgbXVsdGlwbGUsIHVzZSBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4vLyAqIFRoZXNlIGZ1bmN0aW9ucyB3aWxsIGVmZmVjdCB0aGUgcHJvcGVydGllcyBpbiB0aGUgc2FtZSBsaXN0IHBvc2l0aW9uXG5cbkBtaXhpbiB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbigkZnVuY3Rpb24tMTogJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbixcbiAgJGZ1bmN0aW9uLTIgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTMgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTQgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTUgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTYgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTcgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTggOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTkgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTEwOiBmYWxzZVxuKSB7XG4gICRmdW5jdGlvbi0xOiB1bnF1b3RlKCRmdW5jdGlvbi0xKTtcbiAgJGZ1bmN0aW9uczogY29tcGFjdCgkZnVuY3Rpb24tMSwgJGZ1bmN0aW9uLTIsICRmdW5jdGlvbi0zLCAkZnVuY3Rpb24tNCwgJGZ1bmN0aW9uLTUsICRmdW5jdGlvbi02LCAkZnVuY3Rpb24tNywgJGZ1bmN0aW9uLTgsICRmdW5jdGlvbi05LCAkZnVuY3Rpb24tMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24sICRmdW5jdGlvbnMsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gT25lIG9yIG1vcmUgdHJhbnNpdGlvbi1kZWxheXMgaW4gc2Vjb25kc1xuLy9cbi8vICogZm9yIG11bHRpcGxlLCB1c2UgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuLy8gKiB0aGVzZSBkZWxheXMgd2lsbCBlZmZlY3QgdGhlIHByb3BlcnRpZXMgaW4gdGhlIHNhbWUgbGlzdCBwb3NpdGlvblxuXG5AbWl4aW4gdHJhbnNpdGlvbi1kZWxheSgkZGVsYXktMTogJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheSxcbiAgJGRlbGF5LTIgOiBmYWxzZSxcbiAgJGRlbGF5LTMgOiBmYWxzZSxcbiAgJGRlbGF5LTQgOiBmYWxzZSxcbiAgJGRlbGF5LTUgOiBmYWxzZSxcbiAgJGRlbGF5LTYgOiBmYWxzZSxcbiAgJGRlbGF5LTcgOiBmYWxzZSxcbiAgJGRlbGF5LTggOiBmYWxzZSxcbiAgJGRlbGF5LTkgOiBmYWxzZSxcbiAgJGRlbGF5LTEwOiBmYWxzZVxuKSB7XG4gIEBpZiB0eXBlLW9mKCRkZWxheS0xKSA9PSBzdHJpbmcgeyAkZGVsYXktMTogdW5xdW90ZSgkZGVsYXktMSk7IH1cbiAgJGRlbGF5czogY29tcGFjdCgkZGVsYXktMSwgJGRlbGF5LTIsICRkZWxheS0zLCAkZGVsYXktNCwgJGRlbGF5LTUsICRkZWxheS02LCAkZGVsYXktNywgJGRlbGF5LTgsICRkZWxheS05LCAkZGVsYXktMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNpdGlvbi1kZWxheSwgJGRlbGF5cyxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBUcmFuc2l0aW9uIGFsbC1pbi1vbmUgc2hvcnRoYW5kXG5cbkBtaXhpbiBzaW5nbGUtdHJhbnNpdGlvbihcbiAgJHByb3BlcnR5OiAkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5LFxuICAkZHVyYXRpb246ICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24sXG4gICRmdW5jdGlvbjogJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbixcbiAgJGRlbGF5OiAkZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5XG4pIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb21wYWN0KCRwcm9wZXJ0eSAkZHVyYXRpb24gJGZ1bmN0aW9uICRkZWxheSkpO1xufVxuXG5AbWl4aW4gdHJhbnNpdGlvbihcbiAgJHRyYW5zaXRpb24tMSA6IGRlZmF1bHQsXG4gICR0cmFuc2l0aW9uLTIgOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tMyA6IGZhbHNlLFxuICAkdHJhbnNpdGlvbi00IDogZmFsc2UsXG4gICR0cmFuc2l0aW9uLTUgOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tNiA6IGZhbHNlLFxuICAkdHJhbnNpdGlvbi03IDogZmFsc2UsXG4gICR0cmFuc2l0aW9uLTggOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tOSA6IGZhbHNlLFxuICAkdHJhbnNpdGlvbi0xMDogZmFsc2Vcbikge1xuICBAaWYgJHRyYW5zaXRpb24tMSA9PSBkZWZhdWx0IHtcbiAgICAkdHJhbnNpdGlvbi0xIDogY29tcGFjdCgkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5ICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24gJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbiAkZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5KTtcbiAgfVxuICAkdHJhbnNpdGlvbnM6IGZhbHNlO1xuICBAaWYgdHlwZS1vZigkdHJhbnNpdGlvbi0xKSA9PSBsaXN0IGFuZCB0eXBlLW9mKG50aCgkdHJhbnNpdGlvbi0xLDEpKSA9PSBsaXN0IHtcbiAgICAkdHJhbnNpdGlvbnM6IGpvaW4oJHRyYW5zaXRpb24tMSwgY29tcGFjdCgkdHJhbnNpdGlvbi0yLCAkdHJhbnNpdGlvbi0zLCAkdHJhbnNpdGlvbi00LCAkdHJhbnNpdGlvbi01LCAkdHJhbnNpdGlvbi02LCAkdHJhbnNpdGlvbi03LCAkdHJhbnNpdGlvbi04LCAkdHJhbnNpdGlvbi05LCAkdHJhbnNpdGlvbi0xMCksIGNvbW1hKTtcbiAgfSBAZWxzZSB7XG4gICAgJHRyYW5zaXRpb25zIDogY29tcGFjdCgkdHJhbnNpdGlvbi0xLCAkdHJhbnNpdGlvbi0yLCAkdHJhbnNpdGlvbi0zLCAkdHJhbnNpdGlvbi00LCAkdHJhbnNpdGlvbi01LCAkdHJhbnNpdGlvbi02LCAkdHJhbnNpdGlvbi03LCAkdHJhbnNpdGlvbi04LCAkdHJhbnNpdGlvbi05LCAkdHJhbnNpdGlvbi0xMCk7XG4gIH1cbiAgJGRlbGF5czogY29tbWEtbGlzdCgpO1xuICAkaGFzLWRlbGF5czogZmFsc2U7XG4gICR3ZWJraXQtdmFsdWU6IGNvbW1hLWxpc3QoKTtcbiAgJG1vei12YWx1ZTogY29tbWEtbGlzdCgpO1xuICAkby12YWx1ZTogY29tbWEtbGlzdCgpO1xuXG4gIC8vIFRoaXMgYmxvY2sgY2FuIGJlIG1hZGUgY29uc2lkZXJhYmx5IHNpbXBsZXIgYXQgdGhlIHBvaW50IGluIHRpbWUgdGhhdFxuICAvLyB3ZSBubyBsb25nZXIgbmVlZCB0byBkZWFsIHdpdGggdGhlIGRpZmZlcmVuY2VzIGluIGhvdyBkZWxheXMgYXJlIHRyZWF0ZWQuXG4gIEBlYWNoICR0cmFuc2l0aW9uIGluICR0cmFuc2l0aW9ucyB7XG4gICAgLy8gRXh0cmFjdCB0aGUgdmFsdWVzIGZyb20gdGhlIGxpc3RcbiAgICAvLyAodGhpcyB3b3VsZCBiZSBjbGVhbmVyIGlmIG50aCB0b29rIGEgM3JkIGFyZ3VtZW50IHRvIHByb3ZpZGUgYSBkZWZhdWx0IHZhbHVlKS5cbiAgICAkcHJvcGVydHk6IG50aCgkdHJhbnNpdGlvbiwgMSk7XG4gICAgJGR1cmF0aW9uOiBmYWxzZTtcbiAgICAkdGltaW5nLWZ1bmN0aW9uOiBmYWxzZTtcbiAgICAkZGVsYXk6IGZhbHNlO1xuICAgIEBpZiBsZW5ndGgoJHRyYW5zaXRpb24pID4gMSB7ICRkdXJhdGlvbjogICAgICAgIG50aCgkdHJhbnNpdGlvbiwgMik7IH1cbiAgICBAaWYgbGVuZ3RoKCR0cmFuc2l0aW9uKSA+IDIgeyAkdGltaW5nLWZ1bmN0aW9uOiBudGgoJHRyYW5zaXRpb24sIDMpOyB9XG4gICAgQGlmIGxlbmd0aCgkdHJhbnNpdGlvbikgPiAzIHsgJGRlbGF5OiAgICAgICAgICAgbnRoKCR0cmFuc2l0aW9uLCA0KTsgJGhhcy1kZWxheXM6IHRydWU7IH1cblxuICAgIC8vIElmIGEgZGVsYXkgaXMgcHJvdmlkZWQgd2l0aG91dCBhIHRpbWluZyBmdW5jdGlvblxuICAgIEBpZiBpcy10aW1lKCR0aW1pbmctZnVuY3Rpb24pIGFuZCBub3QoJGRlbGF5KSB7ICRkZWxheTogJHRpbWluZy1mdW5jdGlvbjsgJHRpbWluZy1mdW5jdGlvbjogZmFsc2U7ICRoYXMtZGVsYXlzOiB0cnVlOyB9XG5cbiAgICAvLyBLZWVwIGEgbGlzdCBvZiBkZWxheXMgaW4gY2FzZSBvbmUgaXMgc3BlY2lmaWVkXG4gICAgJGRlbGF5czogYXBwZW5kKCRkZWxheXMsIGlmKCRkZWxheSwgJGRlbGF5LCAwcykpO1xuXG4gICAgJHdlYmtpdC12YWx1ZTogYXBwZW5kKCR3ZWJraXQtdmFsdWUsIGNvbXBhY3QoKHByZWZpeGVkLWZvci10cmFuc2l0aW9uKC13ZWJraXQsICRwcm9wZXJ0eSkgJGR1cmF0aW9uICR0aW1pbmctZnVuY3Rpb24pLi4uKSk7XG4gICAgICAgJG1vei12YWx1ZTogYXBwZW5kKCAgICRtb3otdmFsdWUsIGNvbXBhY3QoKHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCAgIC1tb3osICRwcm9wZXJ0eSkgJGR1cmF0aW9uICR0aW1pbmctZnVuY3Rpb24gJGRlbGF5KS4uLikpO1xuICAgICAgICAgJG8tdmFsdWU6IGFwcGVuZCggICAgICRvLXZhbHVlLCBjb21wYWN0KChwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbiggICAgIC1vLCAkcHJvcGVydHkpICRkdXJhdGlvbiAkdGltaW5nLWZ1bmN0aW9uICRkZWxheSkuLi4pKTtcbiAgfVxuXG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbiA6ICR3ZWJraXQtdmFsdWU7XG4gICAgLy8gb2xkIHdlYmtpdCBkb2Vzbid0IHN1cHBvcnQgdGhlIGRlbGF5IHBhcmFtZXRlciBpbiB0aGUgc2hvcnRoYW5kIHNvIHdlIHByb2dyZXNzaXZlbHkgZW5oYW5jZSBpdC5cbiAgICBAaWYgJGhhcy1kZWxheXMgICAgICAgICAgICAgICAgICAgICAgIHsgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5IDogJGRlbGF5czsgICAgICAgfSB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgICAgICAgIC1tb3otdHJhbnNpdGlvbiA6ICRtb3otdmFsdWU7ICAgIH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAgICAgICAtby10cmFuc2l0aW9uIDogJG8tdmFsdWU7ICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24gOiAkdHJhbnNpdGlvbnM7XG59XG5cbi8vIGNvZXJjZSBhIGxpc3QgdG8gYmUgY29tbWEgZGVsaW1pdGVkIG9yIG1ha2UgYSBuZXcsIGVtcHR5IGNvbW1hIGRlbGltaXRlZCBsaXN0LlxuQGZ1bmN0aW9uIGNvbW1hLWxpc3QoJGxpc3Q6ICgpKSB7XG4gIEByZXR1cm4gam9pbigoKSwgJGxpc3QsIGNvbW1hKTtcbn1cblxuLy8gUmV0dXJucyBgJHByb3BlcnR5YCB3aXRoIHRoZSBnaXZlbiBwcmVmaXggaWYgaXQgaXMgZm91bmQgaW4gYCR0cmFuc2l0aW9uYWJsZS1wcmVmaXhlZC12YWx1ZXNgLlxuQGZ1bmN0aW9uIHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCRwcmVmaXgsICRwcm9wZXJ0eSkge1xuICBAaWYgdHlwZS1vZigkcHJvcGVydHkpID09IGxpc3Qge1xuICAgICRuZXctbGlzdDogY29tbWEtbGlzdCgpO1xuICAgIEBlYWNoICR2IGluICRwcm9wZXJ0eSB7XG4gICAgICAkbmV3LWxpc3Q6IGFwcGVuZCgkbmV3LWxpc3QsIHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCRwcmVmaXgsICR2KSk7XG4gICAgfVxuICAgIEByZXR1cm4gJG5ldy1saXN0O1xuICB9IEBlbHNlIHtcbiAgICBAaWYgaW5kZXgoJHRyYW5zaXRpb25hYmxlLXByZWZpeGVkLXZhbHVlcywgJHByb3BlcnR5KSB7XG4gICAgICBAcmV0dXJuICN7JHByZWZpeH0tI3skcHJvcGVydHl9O1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHJldHVybiAkcHJvcGVydHk7XG4gICAgfVxuICB9XG59XG5cbi8vIENoZWNrcyBpZiB0aGUgdmFsdWUgZ2l2ZW4gaXMgYSB1bml0IG9mIHRpbWUuXG5AZnVuY3Rpb24gaXMtdGltZSgkdmFsdWUpIHtcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBudW1iZXIge1xuICAgIEByZXR1cm4gbm90KG5vdChpbmRleChzIG1zLCB1bml0KCR2YWx1ZSkpKSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIENoYW5nZSB0aGUgYXBwZWFyYW5jZSBmb3IgTW96aWxsYSwgV2Via2l0IGFuZCBwb3NzaWJseSB0aGUgZnV0dXJlLlxuLy8gVGhlIGFwcGVhcmFuY2UgcHJvcGVydHkgaXMgY3VycmVudGx5IG5vdCBwcmVzZW50IGluIGFueSBuZXdlciBDU1Mgc3BlY2lmaWNhdGlvbi5cbi8vXG4vLyBUaGVyZSBpcyBubyBvZmZpY2lhbCBsaXN0IG9mIGFjY2VwdGVkIHZhbHVlcywgYnV0IHlvdSBtaWdodCBjaGVjayB0aGVzZSBzb3VyY2U6XG4vLyAgIE1vemlsbGEgOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi9DU1MvLW1vei1hcHBlYXJhbmNlXG4vLyAgIFdlYmtpdCAgOiBodHRwOi8vY29kZS5nb29nbGUuY29tL3Avd2Via2l0LW1pcnJvci9zb3VyY2UvYnJvd3NlL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluP3NwZWM9c3ZuZjFhZWE1NTlkY2QwMjVhODk0NmFhN2RhNmU0ZTgzMDZmNWMxYjYwNCZyPTYzYzdkMWFmNDQ0MzBiMzE0MjMzZmVhMzQyYzNkZGIyYTA1MmUzNjVcbi8vICAgKHNlYXJjaCBmb3IgJ2FwcGVhcmFuY2UnIHdpdGhpbiB0aGUgcGFnZSlcblxuQG1peGluIGFwcGVhcmFuY2UoJGFwKSB7XG4gICRhcDogdW5xdW90ZSgkYXApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYXBwZWFyYW5jZSwgJGFwLFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFdlYmtpdCwgSUUxMCBhbmQgZnV0dXJlIHN1cHBvcnQgZm9yIFtDU1MgUmVnaW9uc10oaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy1yZWdpb25zLylcbi8vXG4vLyAkdGFyZ2V0IGlzIGEgdmFsdWUgeW91IHVzZSB0byBsaW5rIHR3byByZWdpb25zIG9mIHlvdXIgY3NzLiBHaXZlIHRoZSBzb3VyY2Ugb2YgeW91ciBjb250ZW50IHRoZSBmbG93LWludG8gcHJvcGVydHksIGFuZCBnaXZlIHlvdXIgdGFyZ2V0IGNvbnRhaW5lciB0aGUgZmxvdy1mcm9tIHByb3BlcnR5LlxuLy9cbi8vIEZvciBhIHZpc3VhbCBleHBsYW5hdGlvbiwgc2VlIHRoZSBkaWFncmFtcyBhdCBDaHJpcyBDb3lpZXInc1xuLy8gW0NTUy1Ucmlja3NdKGh0dHA6Ly9jc3MtdHJpY2tzLmNvbS9jb250ZW50LWZvbGRpbmcvKVxuXG5AbWl4aW4gZmxvdy1pbnRvKCR0YXJnZXQpIHtcbiAgJHRhcmdldDogdW5xdW90ZSgkdGFyZ2V0KTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGZsb3ctaW50bywgJHRhcmdldCxcbiAgICBub3QoLW1veiksIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG5vdCBvZmZpY2lhbFxuICApO1xufVxuXG5AbWl4aW4gZmxvdy1mcm9tKCR0YXJnZXQpIHtcbiAgJHRhcmdldDogdW5xdW90ZSgkdGFyZ2V0KTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGZsb3ctZnJvbSwgJHRhcmdldCxcbiAgICBub3QoLW1veiksIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG5vdCBvZmZpY2lhbFxuICApO1xufSIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIE1peGlucyB0byBzdXBwb3J0IHNwZWNpZmljIENTUyBUZXh0IExldmVsIDMgZWxlbWVudHNcbi8vXG4vL1xuLy9cbi8vIE1peGluIGZvciB3b3JkLWJyZWFrIHByb3BlcnRpZXNcbi8vIGh0dHA6Ly93d3cudzMub3JnL2NzczMtdGV4dC8jd29yZC1icmVha1xuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yICR0eXBlIDogbm9ybWFsLCBrZWVwLWFsbCwgYnJlYWstYWxsXG4vL1xuLy8gRXhhbXBsZTpcbi8vICAgIHAud29yZEJyZWFrIHtAaW5jbHVkZSB3b3JkLWJyZWFrKGJyZWFrLWFsbCk7fVxuLy9cbi8vIFdoaWNoIGdlbmVyYXRlczpcbi8vICAgIHAud29yZEJyZWFrIHtcbi8vICAgICAgLW1zLXdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbi8vICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuLy8gICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO31cbi8vXG5AbWl4aW4gd29yZC1icmVhaygkdmFsdWU6IG5vcm1hbCl7XG4gIEBpZiAkdmFsdWUgPT0gYnJlYWstYWxsIHtcbiAgICAvL01vc3QgYnJvd3NlcnMgaGFuZGxlIHRoZSBicmVhay1hbGwgY2FzZSB0aGUgc2FtZS4uLlxuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh3b3JkLWJyZWFrLCAkdmFsdWUsXG4gICAgICBub3QoLW1veiksIG5vdCgtd2Via2l0KSwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgICApO1xuICAgIC8vV2Via2l0IGhhbmRsZXMgYnJlYWstYWxsIGRpZmZlcmVudGx5Li4uIGFzIGJyZWFrLXdvcmRcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwod29yZC1icmVhaywgYnJlYWstd29yZCxcbiAgICAgIG5vdCgtbW96KSwgbm90KC13ZWJraXQpLCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHdvcmQtYnJlYWssICR2YWx1ZSxcbiAgICAgIG5vdCgtbW96KSwgbm90KC13ZWJraXQpLCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICAgICk7XG4gIH1cbn1cblxuLy8gTWl4aW4gZm9yIHRoZSBoeXBoZW5zIHByb3BlcnR5XG4vL1xuLy8gVzNDIHNwZWNpZmljYXRpb246IGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtdGV4dC8jaHlwaGVuc1xuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yICR0eXBlIDogYXV0bywgbWFudWFsLCBub25lXG4vL1xuLy8gRXhhbXBsZTpcbi8vICBwIHtcbi8vICAgIEBpbmNsdWRlIGh5cGhlbnMoYXV0byk7fVxuLy8gV2hpY2ggZ2VuZXJhdGVzOlxuLy8gIHAge1xuLy8gICAgLW1vei1oeXBoZW5zOiBhdXRvO1xuLy8gICAgLXdlYmtpdC1oeXBoZW5zOiBhdXRvO1xuLy8gICAgaHlwaGVuczogYXV0bzt9XG4vL1xuQG1peGluIGh5cGhlbnMoJHZhbHVlOiBhdXRvKXtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGh5cGhlbnMsICR2YWx1ZSxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIE1peGluIGZvciB4LWJyb3dzZXIgaHlwaGVuYXRpb24gYmFzZWQgb24gQGF1Y2hlbmJlcmcncyBwb3N0OlxuLy8gUmVtb3ZlcyB0aGUgbmVlZCBmb3IgdGhlIDx3YnIvPiBIVE1MIHRhZ1xuLy8gaHR0cDovL2Jsb2cua2VubmV0aC5pby9ibG9nLzIwMTIvMDMvMDQvd29yZC13cmFwcGluZy1oeXBlcm5hdGlvbi11c2luZy1jc3MvXG4vL1xuLy8gIEV4YW1wbGU6XG4vLyAgZGl2IHtAaW5jbHVkZSBoeXBoZW5hdGlvbjt9XG4vL1xuLy8gIFdoaWNoIGdlbmVyYXRlczpcbi8vICAgIGRpdiB7XG4vLyAgICAgIC1tcy13b3JkLWJyZWFrOiBicmVhay1hbGw7XG4vLyAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbi8vICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbi8vICAgICAgLW1vei1oeXBoZW5zOiBhdXRvO1xuLy8gICAgICAtd2Via2l0LWh5cGhlbnM6IGF1dG87XG4vLyAgICAgIGh5cGhlbnM6IGF1dG87fVxuLy9cbkBtaXhpbiBoeXBoZW5hdGlvbntcbiAgQGluY2x1ZGUgd29yZC1icmVhayhicmVhay1hbGwpO1xuICBAaW5jbHVkZSBoeXBoZW5zO1xufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gUHJvdmlkZXMgY3Jvc3MtYnJvd3NlciBzdXBwb3J0IGZvciB0aGUgdXBjb21pbmcgKD8pIGNzczMgZmlsdGVyIHByb3BlcnR5LlxuLy9cbi8vIEVhY2ggZmlsdGVyIGFyZ3VtZW50IHNob3VsZCBhZGhlcmUgdG8gdGhlIHN0YW5kYXJkIGNzczMgc3ludGF4IGZvciB0aGVcbi8vIGZpbHRlciBwcm9wZXJ0eS5cbkBtaXhpbiBmaWx0ZXIgKFxuICAkZmlsdGVyLTEsXG4gICRmaWx0ZXItMiA6IGZhbHNlLFxuICAkZmlsdGVyLTMgOiBmYWxzZSxcbiAgJGZpbHRlci00IDogZmFsc2UsXG4gICRmaWx0ZXItNSA6IGZhbHNlLFxuICAkZmlsdGVyLTYgOiBmYWxzZSxcbiAgJGZpbHRlci03IDogZmFsc2UsXG4gICRmaWx0ZXItOCA6IGZhbHNlLFxuICAkZmlsdGVyLTkgOiBmYWxzZSxcbiAgJGZpbHRlci0xMDogZmFsc2Vcbikge1xuICAkZmlsdGVyIDogY29tcGFjdCgkZmlsdGVyLTEsICRmaWx0ZXItMiwgJGZpbHRlci0zLCAkZmlsdGVyLTQsICRmaWx0ZXItNSwgJGZpbHRlci02LCAkZmlsdGVyLTcsICRmaWx0ZXItOCwgJGZpbHRlci05LCAkZmlsdGVyLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGZpbHRlciwgJGZpbHRlcixcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHVzZSBTYXNzJ3MgQGV4dGVuZCBkaXJlY3RpdmUgdG8gYXBwbHkgdGhlIGJlaGF2aW9yXG4vLyB0byB5b3VyIFBJRSBlbGVtZW50cy4gVG8gYXNzaXN0IHlvdSwgQ29tcGFzcyBwcm92aWRlcyB0aGlzIHZhcmlhYmxlLlxuLy8gV2hlbiBzZXQsIGl0IHdpbGwgY2F1c2UgdGhlIGBAaW5jbHVkZSBwaWVgIG1peGluIHRvIGV4dGVuZCB0aGlzIGNsYXNzLlxuLy8gVGhlIGNsYXNzIG5hbWUgeW91IHByb3ZpZGUgc2hvdWxkICoqbm90KiogaW5jbHVkZSB0aGUgYC5gLlxuJHBpZS1iYXNlLWNsYXNzOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgYXBwcm9hY2ggdG8gdXNpbmcgUElFLlxuLy8gQ2FuIGJlIG9uZSBvZjpcbi8vXG4vLyAqIHJlbGF0aXZlIChkZWZhdWx0KVxuLy8gKiB6LWluZGV4XG4vLyAqIG5vbmVcbiRwaWUtZGVmYXVsdC1hcHByb2FjaDogcmVsYXRpdmUgIWRlZmF1bHQ7XG5cbi8vIFRoZSBsb2NhdGlvbiBvZiB5b3VyIFBJRSBiZWhhdmlvciBmaWxlXG4vLyBUaGlzIHNob3VsZCBiZSByb290LXJlbGF0aXZlIHRvIHlvdXIgd2ViIHNlcnZlclxuLy8gcmVsYXRpdmUgYXNzZXRzIGRvbid0IHdvcmsuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXRcbi8vIHlvdSBzZXQgdGhpcyB5b3Vyc2VsZi5cbiRwaWUtYmVoYXZpb3I6IHN0eWxlc2hlZXQtdXJsKFwiUElFLmh0Y1wiKSAhZGVmYXVsdDtcblxuLy8gV2hlbiB1c2luZyB0aGUgei1pbmRleCBhcHByb2FjaCwgdGhlXG4vLyBmaXJzdCBhbmNlc3RvciBvZiB0aGUgUElFIGVsZW1lbnQgYXRcbi8vIG9yIGJlZm9yZSB0aGUgY29udGFpbmVyJ3Mgb3BhcXVlIGJhY2tncm91bmRcbi8vIHNob3VsZCBoYXZlIGEgei1pbmRleCBzZXQgYXMgd2VsbCB0byBlbnN1cmVcbi8vIHByb3BlcnQgei1pbmRleCBzdGFja2luZy5cbi8vXG4vLyBUaGUgYCRwb3NpdGlvbmAgYXJndW1lbnQgbXVzdCBiZSBzb21lIG5vbi1zdGF0aWNcbi8vIHZhbHVlIChhYnNvbHV0ZSwgcmVsYXRpdmUsIGV0Yy4pXG5AbWl4aW4gcGllLWNvbnRhaW5lcigkei1pbmRleDogMCwgJHBvc2l0aW9uOiByZWxhdGl2ZSkge1xuICB6LWluZGV4OiAkei1pbmRleDtcbiAgcG9zaXRpb246ICRwb3NpdGlvbjtcbn1cblxuLy8gUElFIGVsZW1lbnRzIG11c3QgaGF2ZSB0aGlzIGJlaGF2aW9yIGF0dGFjaGVkIHRvIHRoZW0uXG4vLyBJRSBpcyBicm9rZW4gLS0gaXQgZG9lc24ndCB0aGluayBvZiBiZWhhdmlvciB1cmxzIGFzXG4vLyByZWxhdGl2ZSB0byB0aGUgc3R5bGVzaGVldC4gSXQgY29uc2lkZXJzIHRoZW0gcmVsYXRpdmVcbi8vIHRvIHRoZSB3ZWJwYWdlLiBBcyBhIHJlc3VsdCwgeW91IGNhbm5vdCByZWxpYWJseSB1c2Vcbi8vIGNvbXBhc3MncyByZWxhdGl2ZV9hc3NldHMgd2l0aCBQSUUuXG4vL1xuLy8gKiBgJGFwcHJvYWNoYCAtIG9uZSBvZjogcmVsYXRpdmUsIHotaW5kZXgsIG9yIG5vbmVcbi8vICogYCR6LWluZGV4YCAtIHdoZW4gdXNpbmcgdGhlIHotaW5kZXggYXBwcm9hY2gsIHRoaXNcbi8vICAgICAgICAgICAgICAgIGlzIHRoZSB6LWluZGV4IHRoYXQgaXMgYXBwbGllZC5cbkBtaXhpbiBwaWUtZWxlbWVudChcbiAgJGFwcHJvYWNoOiAkcGllLWRlZmF1bHQtYXBwcm9hY2gsXG4gICR6LWluZGV4OiAwXG4pIHtcbiAgYmVoYXZpb3I6ICRwaWUtYmVoYXZpb3I7XG4gIEBpZiAkYXBwcm9hY2ggPT0gcmVsYXRpdmUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuICBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gei1pbmRleCB7XG4gICAgei1pbmRleDogJHotaW5kZXg7XG4gIH1cbn1cblxuLy8gYSBzbWFydCBtaXhpbiB0aGF0IGtub3dzIHRvIGV4dGVuZCBvciBpbmNsdWRlIHBpZS1lbGVtZW50IGFjY29yZGluZ1xuLy8gdG8geW91ciBzdHlsZXNoZWV0J3MgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMuXG5AbWl4aW4gcGllKCRiYXNlLWNsYXNzOiAkcGllLWJhc2UtY2xhc3MpIHtcbiAgQGlmICRiYXNlLWNsYXNzIHtcbiAgICBAZXh0ZW5kIC4jeyRiYXNlLWNsYXNzfTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgcGllLWVsZW1lbnQ7XG4gIH1cbn1cblxuLy8gV2F0Y2ggYCRuYCBsZXZlbHMgb2YgYW5jZXN0b3JzIGZvciBjaGFuZ2VzIHRvIHRoZWlyIGNsYXNzIGF0dHJpYnV0ZVxuLy8gU28gdGhhdCBjYXNjYWRpbmcgc3R5bGVzIHdpbGwgd29yayBjb3JyZWN0bHkgb24gdGhlIFBJRSBlbGVtZW50LlxuQG1peGluIHBpZS13YXRjaC1hbmNlc3RvcnMoJG4pIHtcbiAgLXBpZS13YXRjaC1hbmNlc3RvcnM6ICRuO1xufVxuIiwiLy8gVXNlciBJbnRlcmZhY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGlzIGZpbGUgY2FuIGJlIGV4cGFuZGVkIHRvIGhhbmRsZSBhbGwgdGhlIHVzZXIgaW50ZXJmYWNlIHByb3BlcnRpZXMgYXNcbi8vIHRoZXkgYmVjb21lIGF2YWlsYWJsZSBpbiBicm93c2Vyczpcbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDAvV0QtY3NzMy11c2VyaW50LTIwMDAwMjE2XG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cblxuLy8gVGhpcyBwcm9wZXJ0eSBjb250cm9scyB0aGUgc2VsZWN0aW9uIG1vZGVsIGFuZCBncmFudWxhcml0eSBvZiBhbiBlbGVtZW50LlxuLy9cbi8vIEBwYXJhbSAkc2VsZWN0XG4vLyAgIFsgbm9uZSB8IHRleHQgfCB0b2dnbGUgfCBlbGVtZW50IHwgZWxlbWVudHMgfCBhbGwgfCBpbmhlcml0IF1cbkBtaXhpbiB1c2VyLXNlbGVjdCgkc2VsZWN0KSB7XG4gICRzZWxlY3Q6IHVucXVvdGUoJHNlbGVjdCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh1c2VyLXNlbGVjdCwgJHNlbGVjdCxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIC1raHRtbCwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gU3R5bGUgdGhlIGh0bWw1IGlucHV0IHBsYWNlaG9sZGVyIGluIGJyb3dzZXJzIHRoYXQgc3VwcG9ydCBpdC5cbi8vXG4vLyBUaGUgc3R5bGVzIGZvciB0aGUgaW5wdXQgcGxhY2Vob2xkZXIgYXJlIHBhc3NlZCBhcyBtaXhpbiBjb250ZW50XG4vLyBhbmQgdGhlIHNlbGVjdG9yIGNvbWVzIGZyb20gdGhlIG1peGluJ3MgY29udGV4dC5cbi8vXG4vLyBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgICAgI3tlbGVtZW50cy1vZi10eXBlKHRleHQtaW5wdXQpfSB7XG4vLyAgICAgICBAaW5jbHVkZSBpbnB1dC1wbGFjZWhvbGRlciB7XG4vLyAgICAgICAgIGNvbG9yOiAjYmZiZmJmO1xuLy8gICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4vLyAgICAgICB9XG4vLyAgICAgfVxuLy9cbi8vIGlmIHlvdSB3YW50IHRvIGFwcGx5IHRoZSBwbGFjZWhvbGRlciBzdHlsZXMgdG8gYWxsIGVsZW1lbnRzIHN1cHBvcnRpbmdcbi8vIHRoZSBgaW5wdXQtcGxhY2Vob2xkZXJgIHBzZXVkbyBjbGFzcyAoYmV3YXJlIG9mIHBlcmZvcm1hbmNlIGltcGFjdHMpOlxuLy9cbi8vICAgICAqIHtcbi8vICAgICAgIEBpbmNsdWRlIGlucHV0LXBsYWNlaG9sZGVyIHtcbi8vICAgICAgICAgY29sb3I6ICNiZmJmYmY7XG4vLyAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbi8vICAgICAgIH1cbi8vICAgICB9XG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIge1xuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG4gICY6LW1vei1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG4gICY6Oi1tb3otcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxuICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsgQGNvbnRlbnQ7IH1cbn1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBUaGlzIGlzIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIGZvciBhbGwgdGhlIG90aGVyIG1peGlucyBpbiB0aGlzIG1vZHVsZS5cbi8vIEl0IGlzIHRoZSBvbmx5IHdheSB0byBhY2Nlc3MgcHJlZml4IHN1cHBvcnQgZm9yIG9sZGVyIHZlcnNpb25zIG9mIHRoZSBzcGVjLlxuLy8gRGV2aWF0ZXMgZnJvbSBjYW5vbmljYWwgQ29tcGFzcyBpbXBsZW1lbnRhdGlvbiBieSBkcm9wcGluZyBzdXBwb3J0IGZvclxuLy8gb2xkZXIgdmVyc2lvbnMgb2YgdGhlIEZsZXhib3ggc3BlYy5cbi8vXG4vLyBgJHByb3BlcnRpZXNgOiBtYXAgb2YgcHJvcGVydHktdmFsdWUgcGFpcnMgdGhhdCBzaG91bGQgYmUgcHJlZml4ZWRcbkBtaXhpbiBmbGV4Ym94KCRwcm9wZXJ0aWVzKSB7XG4gIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiAkcHJvcCA9PSBkaXNwbGF5IHtcbiAgICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbC12YWx1ZShkaXNwbGF5LCAkdmFsdWUsIG5vdCgtbW96KSwgLXdlYmtpdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCgkcHJvcCwgJHZhbHVlLCBub3QoLW1veiksIC13ZWJraXQsIG5vdCgtbyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbCk7XG4gICAgfVxuICB9XG59XG5cbi8vIFZhbHVlcyBmb3IgJGRpc3BsYXkgYXJlOiBmbGV4IChkZWZhdWx0KSwgaW5saW5lLWZsZXhcbkBtaXhpbiBkaXNwbGF5LWZsZXgoJGRpc3BsYXk6IGZsZXgpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZGlzcGxheTogJGRpc3BsYXkpKTtcbn1cblxuLy8gVmFsdWVzOiByb3cgfCByb3ctcmV2ZXJzZSB8IGNvbHVtbiB8IGNvbHVtbi1yZXZlcnNlXG5AbWl4aW4gZmxleC1kaXJlY3Rpb24oJGRpcmVjdGlvbikge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LWRpcmVjdGlvbjogJGRpcmVjdGlvbikpO1xufVxuXG4vLyBWYWx1ZXM6IG5vd3JhcCB8IHdyYXAgfCB3cmFwLXJldmVyc2VcbkBtaXhpbiBmbGV4LXdyYXAoJHdyYXApIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleC13cmFwOiAkd3JhcCkpO1xufVxuXG4vLyBTaG9ydGhhbmQgZm9yIGZsZXgtZGlyZWN0aW9uIGFuZCBmbGV4LXdyYXAuXG5AbWl4aW4gZmxleC1mbG93KCRmbG93KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtZmxvdzogJGZsb3cpKTtcbn1cblxuLy8gQWNjZXB0cyBhbiBpbnRlZ2VyXG5AbWl4aW4gb3JkZXIoJG9yZGVyKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKG9yZGVyOiAkb3JkZXIpKTtcbn1cblxuLy8gU2hvcnRoYW5kIGZvciBmbGV4LWdyb3csIGZsZXgtc2hyaW5rIGFuZCBvcHRpb25hbGx5IGZsZXgtYmFzaXMuXG4vLyBTcGFjZSBzZXBhcmF0ZWQsIGluIHRoYXQgb3JkZXIuXG5AbWl4aW4gZmxleCgkZmxleCkge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4OiAkZmxleCkpO1xufVxuXG4vLyBBY2NlcHRzIGEgbnVtYmVyLlxuQG1peGluIGZsZXgtZ3JvdygkZmxleC1ncm93KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtZ3JvdzogJGZsZXgtZ3JvdykpO1xufVxuXG4vLyBBY2NlcHRzIGEgbnVtYmVyLlxuQG1peGluIGZsZXgtc2hyaW5rKCRmbGV4LXNocmluaykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LXNocmluazogJGZsZXgtc2hyaW5rKSk7XG59XG5cbi8vIEFjY2VwdHMgYW55IGxlZ2FsIHZhbHVlIGZvciB0aGUgd2lkdGggcHJvcGVydHkuXG5AbWl4aW4gZmxleC1iYXNpcygkZmxleC1iYXNpcykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LWJhc2lzOiAkZmxleC1iYXNpcykpO1xufVxuXG4vLyBMZWdhbCB2YWx1ZXM6IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmRcbkBtaXhpbiBqdXN0aWZ5LWNvbnRlbnQoJGp1c3RpZnktY29udGVudCkge1xuICBAaW5jbHVkZSBmbGV4Ym94KChqdXN0aWZ5LWNvbnRlbnQ6ICRqdXN0aWZ5LWNvbnRlbnQpKTtcbn1cblxuLy8gTGVnYWwgdmFsdWVzOiBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2hcbkBtaXhpbiBhbGlnbi1pdGVtcygkYWxpZ24taXRlbXMpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoYWxpZ24taXRlbXM6ICRhbGlnbi1pdGVtcykpO1xufVxuXG4vLyBMZWdhbCB2YWx1ZXM6IGF1dG8gfCBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2hcbkBtaXhpbiBhbGlnbi1zZWxmKCRhbGlnbi1zZWxmKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGFsaWduLXNlbGY6ICRhbGlnbi1zZWxmKSk7XG59XG5cbi8vIExlZ2FsIHZhbHVlczogZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZCB8IHN0cmV0Y2hcbkBtaXhpbiBhbGlnbi1jb250ZW50KCRhbGlnbi1jb250ZW50KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGFsaWduLWNvbnRlbnQ6ICRhbGlnbi1jb250ZW50KSk7XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFFQUEsaUJBQWlCO0FBT2pCLG1CQUFtQjtBQTZCbkIsOEJBQThCO0FBa0I5QixpQ0FBaUM7QUN0RGpDLEFBQUEsWUFBWSxDQUFDO0VBQ1gsV0FBVyxFQUFFLElBQUksR0FDbEI7O0FBQ0QsQUFBQSxjQUFjLENBQUM7RUFDYixhQUFhLEVBQUUsVUFBVTtFQUN6QixTQUFTLEVBQUUsVUFBVSxHQUN0Qjs7QUFDRCxBQUFlLGNBQUQsQ0FBQyxDQUFDO0FBQ2hCLEFBQWUsY0FBRCxDQUFDLEtBQUssQ0FBQztFQUNuQixLQUFLLEVBQUUsT0FBTyxHQUNmOztBQUNELEFBQWUsY0FBRCxDQUFDLENBQUMsQUFBQSxNQUFNLENBQUM7RUFDckIsS0FBSyxFQUFFLE9BQU87RUFDZCxlQUFlLEVBQUUsSUFBSSxHQUN0Qjs7QUFDRCxBQUFBLG1CQUFtQixDQUFDO0VBQ2xCLFFBQVEsRUFBRSxRQUFRO0VBQ2xCLEtBQUssRUFBRSxNQUFNO0VBQ2IsR0FBRyxFQUFFLE1BQU07RUFD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 */