
.linkColor[data-v-28db082c] {
  color: white;
}

.linkColor[data-v-3cb58b40] {
  color: white;
}

.linkColor[data-v-3c995c3e] {
  color: white;
}
.pt-10[data-v-3c995c3e] {
  padding-top: 10px;
}

.termsagree,
.custom-checkbox {
  position: unset !important;
}


.profileLogo[data-v-f1fdd698] {
  height: 200px !important;
  background: #110a1a;
  position: relative;
  margin-top: 1px;
}
.profileLogo .vue-advanced-cropper[data-v-f1fdd698] {
  position: unset !important;
}
































































































































































































































































































































































































































































































.errortxt[data-v-1fb4738c] {
  color: red;
}

.lifecycleWidgetspace[data-v-10c4097a] {
  width: calc(100% - 425px);
}
.lifecycle[data-v-10c4097a] {
  font-size: 16px;
  /* margin-top: 100px;*/
}
svg[data-v-10c4097a] {
  height: 100%;
  width: 100%;
}
.stageText[data-v-10c4097a] {
  fill: #ffffff;
  font-family: 'Inter var', sans-serif;
  font-size: 0.18rem;
}
.phaseText[data-v-10c4097a] {
  fill: #ffffff;
  font-family: 'Inter var', sans-serif;
  font-size: 0.18rem;
}
.crText[data-v-10c4097a] {
  fill: #ffffff;
  font-family: 'Inter var', sans-serif;
  font-size: 0.18rem;
}
.selected.CRrect[data-v-10c4097a] {
  fill: #fff;
  stroke: #7800ff;
  stroke-width: 1;
}
#app[data-v-10c4097a] {
  background-color: black;
}
path[data-v-10c4097a] {
  fill: transparent;
}
.svgContainer[data-v-10c4097a] {
  width: 800px;
  /*height:800px;*/
}
.custom-red[data-v-10c4097a] {
  background-color: red;
}

.dropzone-over[data-v-d2c7bd86] {
  position: absolute !important;
  z-index: 9999 !important;
}
.addImageModal[data-v-d2c7bd86] {
  z-index: 9998;
}

.dropzone-over[data-v-226c3191] {
  position: absolute !important;
  z-index: 9999 !important;
}
.addDocumentModal[data-v-226c3191] {
}

.modal-1000[data-v-2842dab7] {
  width: 1048px;
  margin-left: -222px !important;
}

.spinner[data-v-d8cc55d6] {
    margin: 10px auto 0;
    width: 70px;
    text-align: center;
}
.spinner > div[data-v-d8cc55d6] {
    width: 18px;
    height: 18px;
    background-color: #7800FF;

    border-radius: 100%;
    display: inline-block;
    -webkit-animation: sk-bouncedelay-data-v-d8cc55d6 1.4s infinite ease-in-out both;
    animation: sk-bouncedelay-data-v-d8cc55d6 1.4s infinite ease-in-out both;
}
.spinner .bounce1[data-v-d8cc55d6] {
    -webkit-animation-delay: -0.32s;
    animation-delay: -0.32s;
}
.spinner .bounce2[data-v-d8cc55d6] {
    -webkit-animation-delay: -0.16s;
    animation-delay: -0.16s;
}
@-webkit-keyframes sk-bouncedelay-data-v-d8cc55d6 {
0%, 80%, 100% { -webkit-transform: scale(0)
}
40% { -webkit-transform: scale(1.0)
}
}
@keyframes sk-bouncedelay-data-v-d8cc55d6 {
0%, 80%, 100% { 
        -webkit-transform: scale(0);
        transform: scale(0);
}
40% { 
        -webkit-transform: scale(1.0);
        transform: scale(1.0);
}
}

.btnunlink[data-v-44c743d6] {
  width: auto;
  border-radius: 100px;
  line-height: 10px;
  font-size: 13px;
  background: #7b6c8f;
  text-align: center;
  font-weight: 700;
  display: inline-block;
  color: #110a1a;
  cursor: pointer;
  padding-left: 11px;
  padding-right: 11px;
  padding-top: 7px;
  padding-bottom: 7px;
  box-shadow: 0px 2px 4px #000000;
  margin-right: 5px;
}
.h-30[data-v-44c743d6] {
  height: 30px;
}

.v-popper--theme-dropdown .v-popper__inner {
  background: #5a4f65 !important;
  color: #fff !important;
  padding: 15px !important;
  border-radius: 0px !important;
}
.v-popper--theme-dropdown .v-popper__inner div {
  position: relative;
}
.v-popper--theme-dropdown .v-popper__inner div input {
  /* background: #110a1a !important;
  border: none;
  color: #fff !important; */
}
.v-popper--theme-dropdown .v-popper__arrow {
  border-color: #5a4f65 !important;
}
.v-popper__popper.v-popper--theme-dropdown {
  /* margin-top: -11px !important; */
  top: -35px !important;
}

.disabled .dropdown-toggle::after {
  display: none;
}
.insightsaccordion #Laccordion .card {
  background: transparent;
  border: none !important;
}
.insightsaccordion #Laccordion .card.bdrtophead {
  border-top: solid 1px #110a1a !important;
}
.insightsaccordion #Laccordion .card.bdrbottomhead {
  border-bottom: solid 1px #110a1a !important;
}
.insightsaccordion #Laccordion .card .card-header {
  padding: 0px;
  border: none !important;
  border-radius: none;
  background: transparent;
  /*-------Start InsightsAccordian------*/
}
.insightsaccordion #Laccordion .card .card-header h5.mb-0>a {
  display: block;
  position: relative;
}
.insightsaccordion #Laccordion .card .card-header h5.mb-0>a.mainhead:hover {
  background: #5a4f65;
}
.insightsaccordion #Laccordion .card .card-header h5.mb-0>a:after {
  content: '\F106';
  font-family: 'FontAwesome';
  position: absolute;
  right: 15px;
  top: 7px;
}
.insightsaccordion #Laccordion .card .card-header h5.mb-0>a[aria-expanded='true']:after {
  content: '\F107';
}
.insightsaccordion #Laccordion .card .card-header.bdrtophead {
  border-top: solid 1px #110a1a !important;
}
.insightsaccordion #Laccordion .card .card-header.bdrbottomhead {
  border-bottom: solid 1px #110a1a !important;
}
.insightsaccordion #Laccordion .card .card-body {
  padding: 0px;
}
.insightsaccordion #Laccordion .card .card-body .menulevelone {
  padding-left: 26px;
  font-size: 13px;
}
.insightsaccordion #Laccordion .card .card-body .menulevelone a {
  padding: 6px 22px;
}
.insightsaccordion #Laccordion .card .card-body .menuleveltwo {
  padding-left: 26px;
  font-size: 13px;
}
.insightsaccordion #Laccordion .card .card-body .menuleveltwo a {
  padding: 3px 22px;
}
.insightsaccordion #Laccordion .card .card-body .menuleveltwo .accordianCheck label {
  color: #a294b5;
}
.ck {
  z-index: 9999 !important;
}















































































































































































.disabled .dropdown-toggle[data-v-64842c9a]::after {
  display: none;
}

.accordianCheck input[data-v-e7f918ca] {
  padding: 0;
  height: initial;
  width: initial;
  margin-bottom: 0;
  display: block;
  cursor: pointer;
}
.accordianCheck input:checked+label[data-v-e7f918ca]:after {
  content: '';
  display: block;
  position: absolute;
  top: 0px;
  left: 0px;
  width: 13px;
  height: 13px;
  width: 13px;
  background: #7801ff;
  border-radius: 2px;
  border: 1px solid #000000;
}

.disabled .dropdown-toggle[data-v-1493d16a]::after {
  display: none;
}

.dropdown.kpiWidgetDropdown:hover .dropdown-menu[data-v-ec63099c] {
  display: block;
  margin-top: -16px !important;
  margin-left: 19px !important;
}
.performance-heading[data-v-ec63099c] {
  font-size: 10px !important;
}
.performance-box[data-v-ec63099c] {
  padding: 8px !important;
  min-height: 40px !important;
}
.performance-arrow[data-v-ec63099c] {
  font-size: 12px !important;
}
.performance-arrow-icon[data-v-ec63099c] {
  font-size: 12px !important;
}
.performance-row[data-v-ec63099c] {
  display: flex !important;
  align-items: center !important;
  gap: 6px !important;
}

.disabled .dropdown-toggle[data-v-3a6adecc]::after {
  display: none;
}

.modal-backdrop {
  /* bug fix - no overlay */
  display: none;
}

.dropdown:hover .dropdown-menu[data-v-70048097] {
  display: block;
  margin-top: -16px !important;
  margin-left: 19px !important;
}

.accordianCheck input[data-v-970e16e4] {
  padding: 0;
  height: initial;
  width: initial;
  margin-bottom: 0;
  display: block;
  cursor: pointer;
}
.accordianCheck input:checked+label[data-v-970e16e4]:after {
  content: '';
  display: block;
  position: absolute;
  top: 0px;
  left: 0px;
  width: 13px;
  height: 13px;
  width: 13px;
  background: #7801ff;
  border-radius: 2px;
  border: 1px solid #000000;
}

.tooltipClass[data-v-6ecfec57] {
  color: red !important;
}

.dropdown:hover .dropdown-menu.ins[data-v-b03aed38] {
  display: block;
  margin-top: -16px !important;
  margin-left: 19px !important;
}

.dropdown:hover .dropdown-menu.insnew[data-v-354c9226] {
  display: block;
  margin-top: -16px !important;
  margin-left: 19px !important;
}

.dropdown:hover .dropdown-menu.insnew[data-v-058a2611] {
  display: block;
  margin-top: -16px !important;
  margin-left: 19px !important;
}

.dropdown:hover .dropdown-menu.motMenu[data-v-1afdc8c0] {
  display: block;
  margin-top: -16px !important;
  margin-left: 19px !important;
}

.dropdown:hover .dropdown-menu.motMenu[data-v-14962a80] {
  display: block;
  margin-top: -16px !important;
  margin-left: 19px !important;
}

.dropdown:hover .dropdown-menu.motMenu[data-v-9e93d632] {
  display: block;
  margin-top: -16px !important;
  margin-left: 19px !important;
}

.dropdown:hover .dropdown-menu.insnew[data-v-b7afa7ae] {
  display: block;
  margin-top: -16px !important;
  margin-left: 19px !important;
}

.mt65[data-v-ef0bbcea] {
  margin-top: 65px !important;
}

.dropdown.kpiWidgetDropdown:hover .dropdown-menu[data-v-98a6e79e] {
  display: block;
  margin-top: -16px !important;
  margin-left: 19px !important;
}

.checkbox[data-v-caa9b574] {
  position: relative;
  z-index: 100000;
}
.noLCConnected[data-v-caa9b574] {
  background: -webkit-linear-gradient(left, #650000 10%, #730000 100%);
}

.hide[data-v-0583ee00] {
  visibility: hidden !important;
}
.nonotific[data-v-0583ee00] {
  text-align: center;
  vertical-align: middle;
  font-size: 15px;
}

.lifecycle[data-v-cfbc544a] {
  font-size: 16px;
  /* margin-top: 100px;*/
}
svg[data-v-cfbc544a] {
  height: 100%;
  width: 100%;
}
.stageText[data-v-cfbc544a] {
  fill: #ffffff;
  font-family: 'Inter var', sans-serif;
  font-size: 0.18rem;
}
.phaseText[data-v-cfbc544a] {
  fill: #ffffff;
  font-family: 'Inter var', sans-serif;
  font-size: 0.18rem;
}
.crText[data-v-cfbc544a] {
  fill: #ffffff;
  font-family: 'Inter var', sans-serif;
  font-size: 0.18rem;
}
.selected.CRrect[data-v-cfbc544a] {
  fill: #fff;
  stroke: #7800ff;
  stroke-width: 1;
}
#app[data-v-cfbc544a] {
  background-color: black;
}
path[data-v-cfbc544a] {
  fill: transparent;
}
.svgContainer[data-v-cfbc544a] {
  width: 800px;
  /*height:800px;*/
}
.smallerCircleview .crText.selected[data-v-cfbc544a] {
  fill: #000;
}



















































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































.maincontainer[data-v-06b60dca] {
  padding-top: 74px;
}

.dropdown:hover .dropdown-menu[data-v-e67ed17e] {
  display: block;
  margin-top: -16px !important;
  margin-left: 19px !important;
}

.dropdown:hover .dropdown-menu[data-v-6d23d2fa] {
  display: block;
  margin-top: -16px !important;
  margin-left: 19px !important;
}

.dropdown:hover .dropdown-menu[data-v-cca8ab24] {
  display: block;
  margin-top: -16px !important;
  margin-left: 19px !important;
}

.dropdown:hover .dropdown-menu.motMenu[data-v-96c72572] {
  display: block;
  margin-top: -16px !important;
  margin-left: 19px !important;
}

.echarts {
  width: 600px;
  height: 400px;
}

.dropdown:hover .dropdown-menu.motMenu[data-v-1ab1d09d] {
  display: block;
  margin-top: -16px !important;
  margin-left: 19px !important;
}































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































.dim_active a[data-v-04b91c60] {
  color: white !important;
}

.mb-85[data-v-2e144ed0] {
  margin-bottom: 85px !important;
}






























































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































.smloader[data-v-73b73344] {
  position: fixed;
  width: 100%;
  height: 73%;
  z-index: 99;
  background: rgba(255, 255, 255, 0.7);
  left: 0;
  top: 55px;
  /* display: block; */
  text-align: center;
}
.smloader img[data-v-73b73344] {
  width: 60px;
  height: 40px;
  margin: 0 auto;
}
.echarts[data-v-73b73344] {
  width: 100%;
  height: 100%;
}
.chart-wrapper[data-v-73b73344] {
  width: 100%;
  /* height: 290px; */
  margin-top: 5px;
}
.delicon[data-v-73b73344] {
  z-index: 99;
  position: relative;
}
.thumbnail li .graphset[data-v-73b73344] {
  padding: 15px 20px;
  position: relative;
  height: 100%;
  margin-bottom: 0px;
  border: 1px solid var(--Border_Divider);
  border-radius: 5px;
}
.datepickerInfo[data-v-73b73344] {
  width: 100% !important;
}

/* .input-group-addon{
  right: 0px!important;
  top: -1px!important;
}

.mapsuserselect{
  width:100%!important;
} */
.connect-data-row>.mapsuserselect[data-v-73b73344] {
  width: 100% !important;
}
.connect-data-row .input-group-addon[data-v-73b73344] {
  right: 0px !important;
  top: -1px !important;
}

.smloader[data-v-c75db9e0] {
  position: fixed;
  width: 100%;
  height: 73%;
  z-index: 99;
  background: rgba(255, 255, 255, 0.7);
  left: 0;
  top: 55px;
  /* display: block; */
  text-align: center;
}
.smloader img[data-v-c75db9e0] {
  width: 60px;
  height: 40px;
  margin: 0 auto;
}
.echarts[data-v-c75db9e0] {
  width: 100%;
  height: 100%;
}
.chart-wrapper[data-v-c75db9e0] {
  width: 100%;
  height: 290px;
  margin-top: 5px;
}
.delicon[data-v-c75db9e0] {
  z-index: 99;
  position: relative;
}
.thumbnail li .graphset[data-v-c75db9e0] {
  padding: 15px 20px;
  position: relative;
  height: 100%;
  margin-bottom: 0px;
  border: 1px solid var(--Border_Divider);
  border-radius: 5px;
}
.datepickerInfo[data-v-c75db9e0] {
  width: 100% !important;
}

/* .input-group-addon{
  right: 0px!important;
  top: -1px!important;
}

.mapsuserselect{
  width:100%!important;
} */
.connect-data-row>.mapsuserselect[data-v-c75db9e0] {
  width: 100% !important;
}
.connect-data-row .input-group-addon[data-v-c75db9e0] {
  right: 0px !important;
  top: -1px !important;
}

.accordianCheck input[data-v-043a69b2] {
  padding: 0;
  height: initial;
  width: initial;
  margin-bottom: 0;
  display: block;
  cursor: pointer;
}
.accordianCheck input:checked + label[data-v-043a69b2]:after {
  content: '';
  display: block;
  position: absolute;
  top: 0px;
  left: 0px;
  width: 13px;
  height: 13px;
  width: 13px;
  background: #7801ff;
  border-radius: 2px;
  border: 1px solid #000000;
}

.tooltipClass[data-v-510c3776] {
  color: red !important;
}

.accordianCheck input[data-v-51e22d69] {
  padding: 0;
  height: initial;
  width: initial;
  margin-bottom: 0;
  display: block;
  cursor: pointer;
}
.accordianCheck input:checked + label[data-v-51e22d69]:after {
  content: '';
  display: block;
  position: absolute;
  top: 0px;
  left: 0px;
  width: 13px;
  height: 13px;
  width: 13px;
  background: #7801ff;
  border-radius: 2px;
  border: 1px solid #000000;
}

.accordianCheck input[data-v-2bc48260] {
  padding: 0;
  height: initial;
  width: initial;
  margin-bottom: 0;
  display: block;
  cursor: pointer;
}
.accordianCheck input:checked+label[data-v-2bc48260]:after {
  content: '';
  display: block;
  position: absolute;
  top: 0px;
  left: 0px;
  width: 13px;
  height: 13px;
  width: 13px;
  background: #7801ff;
  border-radius: 2px;
  border: 1px solid #000000;
}

.dragdropBg[data-v-439e4ffc] {
  z-index: 9999;
}
.maincontainer[data-v-439e4ffc] {
  padding-top: 0 !important;
}
.extraHeaderSpace[data-v-439e4ffc] {
  overflow-x: hidden !important;
}
.mymapsFilterOptionsMain[data-v-439e4ffc] {
  margin-top: 50px !important;
}
.stickyMaps[data-v-439e4ffc] {
  position: -webkit-sticky;
  /* Safari */
  position: sticky;
  top: 111px !important;
  left: 0px !important;
  z-index: 99;
  background: #110a1a;
}
.compare_width10[data-v-439e4ffc] {
  position: -webkit-sticky;
  /* Safari */
  position: sticky;
  left: 0px !important;
  z-index: 50;
  background: #110a1a;
}
.compareMaps[data-v-439e4ffc] {
  overflow-y: visible;
  height: 100%;
}
.compareRow[data-v-439e4ffc] {
  overflow-x: visible;
  height: 100%;
}
.highlightGroup[data-v-439e4ffc] {
  border: solid 1px #7800ff !important;
}

.accordianCheck input[data-v-43f858ce] {
  padding: 0;
  height: initial;
  width: initial;
  margin-bottom: 0;
  display: block;
  cursor: pointer;
}
.accordianCheck input:checked + label[data-v-43f858ce]:after {
  content: '';
  display: block;
  position: absolute;
  top: 0px;
  left: 0px;
  width: 13px;
  height: 13px;
  width: 13px;
  background: #7801ff;
  border-radius: 2px;
  border: 1px solid #000000;
}





























































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































.vue-swatches__check__wrapper{position:absolute;width:100%;height:100%}.vue-swatches__check__circle{width:21px;height:21px;border-radius:50%;background-color:rgba(0,0,0,.15)}.vue-swatches__check__path{fill:#fff}.vue-swatches__swatch{position:relative;display:inline-block;font-size:0}.vue-swatches__swatch:focus,.vue-swatches__swatch:hover{opacity:.9;box-shadow:inset 0 0 2px rgba(0,0,0,.75);outline:none}.vue-swatches__swatch.vue-swatches__swatch--border,.vue-swatches__swatch.vue-swatches__swatch--selected{box-shadow:inset 0 0 2px rgba(0,0,0,.75)}.vue-swatches__swatch__label{position:absolute;left:0;right:0;color:#666;font-size:10px;font-weight:700;text-align:center}.vue-swatches__swatch .vue-swatches__diagonal__wrapper{position:absolute}fieldset[disabled] .vue-swatches{pointer-events:none}.vue-swatches{position:relative;display:inline-block;outline:none}.vue-swatches__trigger__wrapper{display:inline-block;cursor:pointer}.vue-swatches__trigger.vue-swatches--is-empty{border:2px solid #ccc}.vue-swatches__trigger.vue-swatches--is-disabled{cursor:not-allowed}.vue-swatches__container{box-sizing:content-box}.vue-swatches__container.vue-swatches--inline{font-size:0}.vue-swatches__container:not(.vue-swatches--inline){position:absolute;display:block;overflow:auto;border-radius:5px;box-shadow:0 2px 3px rgba(10,10,10,.2),0 0 0 1px rgba(10,10,10,.2);z-index:50}.vue-swatches__wrapper{background-color:inherit;box-sizing:content-box}.vue-swatches__row{font-size:0}.vue-swatches__fallback__wrapper{display:table}.vue-swatches__fallback__input--wrapper{display:table-cell;padding-right:10px;width:100%;font-size:14px}.vue-swatches__fallback__input{width:100%;padding-top:6px;padding-bottom:6px;border-radius:5px;border:1px solid #dcdcdc;color:#35495e;background:#fff}.vue-swatches__fallback__button{display:table-cell;padding:6px 15px;border:0;cursor:pointer;font-weight:700;color:#fff;background-color:#3571c8;border-radius:5px}.vue-swatches-show-hide-enter-active,.vue-swatches-show-hide-leave-active{transition:all .3s ease}.vue-swatches-show-hide-enter,.vue-swatches-show-hide-leave-active{opacity:0}.vue-swatches--has-children-centered{display:flex;align-items:center;justify-content:center}.vue-swatches__diagonal__wrapper{width:100%;height:100%}.vue-swatches__diagonal{width:75%;height:75%;background:linear-gradient(to top right,transparent 0,transparent calc(50% - 2.4px),#de080a 50%,transparent calc(50% + 2.4px),transparent)}

































































































































































































































































































































































































































































































.dropzone-over[data-v-263f25f0] {
  position: absolute !important;
  z-index: 9999 !important;
}
.addDocumentModal[data-v-263f25f0] {
}

.dropdown:hover .dropdown-menu[data-v-61cbdc41] {
  display: block;
  margin-top: -16px !important;
  margin-left: 19px !important;
}
























































































































































































































































































































































































































































































































































































































































































































































































































































.dragdropBg[data-v-10c7fb66] {
  z-index: 9999;
}
.maincontainer[data-v-10c7fb66] {
  padding-top: 0 !important;
}
.extraHeaderSpace[data-v-10c7fb66] {
  overflow-x: hidden !important;
}
.mymapsFilterOptionsMain[data-v-10c7fb66] {
  margin-top: 50px !important;
}
.stickyMaps[data-v-10c7fb66] {
  position: -webkit-sticky;
  /* Safari */
  position: sticky;
  top: 111px !important;
  left: 0px !important;
  z-index: 99;
  background: #110a1a;
}
.compare_width10[data-v-10c7fb66] {
  position: -webkit-sticky;
  /* Safari */
  position: sticky;
  left: 0px !important;
  z-index: 50;
  background: #110a1a;
}
.compareMaps[data-v-10c7fb66] {
  overflow-y: visible;
  height: 100%;
}
.compareRow[data-v-10c7fb66] {
  overflow-x: visible;
  height: 100%;
}
.highlightGroup[data-v-10c7fb66] {
  border: solid 1px #7800ff !important;
}

.v-popper--theme-dropdown .v-popper__inner {
  background: #5a4f65 !important;
  color: #fff !important;
  padding: 15px !important;
  border-radius: 0px !important;
  border: 1px solid #5a4f65 !important;
}
.v-popper--theme-dropdown .v-popper__arrow-outer {
  border-color: #5a4f65 !important
}
.v-popper--theme-dropdown .v-popper__arrow-inner {
  border-color: #5a4f65 !important
}
.v-popper--theme-dropdown .v-popper__inner div {
  position: relative;
}
.v-popper--theme-dropdown .v-popper__arrow {
  border-color: #5a4f65 !important;
}
.v-popper__popper.v-popper--theme-dropdown {
  top: -35px !important;
}
.theme-light .v-popper--theme-dropdown .v-popper__inner {
  border: 1px solid #d8d8d8 !important;
}
.theme-light .v-popper--theme-dropdown .v-popper__arrow-outer {
  border-color: #d8d8d8 !important
}
.theme-light .v-popper--theme-dropdown .v-popper__arrow-inner {
  border-color: #d8d8d8 !important
}
.super-flow__menu-container .super-flow__menu{position:absolute;outline:none;width:180px;padding:4px 0;border:1px solid #b4b4b4;box-shadow:0 8px 16px 0 rgba(0,0,0,.3);overflow:hidden;border-radius:3px;z-index:10;background-color:#fff;margin:0}.super-flow__menu-container .super-flow__menu-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;box-sizing:content-box;width:170px;min-height:26px;line-height:26px;cursor:pointer;position:relative;padding:0 4px}.super-flow__menu-container .super-flow__menu-item:last-child{margin:0}.super-flow__menu-container .super-flow__menu-item:last-child:after{display:none}.super-flow__menu-container .super-flow__menu-item:hover{background-color:#eee}.super-flow__menu-container .super-flow__menu-item-icon{float:left;width:26px;height:26px}.super-flow__menu-container .super-flow__menu-item-content{float:left;display:inline-block;color:#333;font-size:14px;line-height:26px;width:144px;font-weight:400}.super-flow__menu-container .super-flow__menu-item>div{position:absolute;top:0;left:0;right:0;bottom:0}.super-flow__menu-container .super-flow__menu-item.is-disabled{cursor:no-drop}.super-flow__menu-container .super-flow__menu-item.is-disabled>span{color:#999}.super-flow__menu-container .super-flow__menu-item.is-disabled:hover{background-color:transparent}.super-flow__menu-container .super-flow__menu-line{width:100%;margin:4px 0;border-bottom:1px solid #b4b4b4;height:0}.super-flow__menu-container .super-flow__menu-line:last-child{display:none}.super-flow__menu-container .flow__menu-mask{content:"";position:fixed;top:0;bottom:0;right:0;left:0;z-index:10;background-color:transparent}.super-flow__node{box-shadow:1px 2px 8px rgba(0,0,0,.2);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:absolute;background-color:#fff;border:1px solid #b4b4b4;z-index:1;outline:none}.super-flow__node.can-move{cursor:move}.super-flow__node-header{background-color:green}.super-flow__node .node-side{position:absolute;cursor:crosshair}.super-flow__node .node-side-top{top:-5px;right:0;left:0;height:10px}.super-flow__node .node-side-right{top:0;right:-5px;bottom:0;width:10px}.super-flow__node .node-side-bottom{right:0;bottom:-5px;left:0;height:10px}.super-flow__node .node-side-left{top:0;bottom:0;left:-5px;width:10px}.super-flow__node:hover{box-shadow:1px 2px 8px rgba(0,0,0,.4)}.super-flow__node.isSelect{z-index:2}.super-flow__line{position:absolute;z-index:0}.super-flow__line.inPath{cursor:pointer}.super-flow__mark-line{position:absolute;z-index:0;border:1px solid transparent}.super-flow{font-family:Apple System,SF Pro SC,SF Pro Display,Helvetica Neue,Arial,PingFang SC,Hiragino Sans GB,STHeiti,Microsoft YaHei,Microsoft JhengHei,Source Han Sans SC,Noto Sans CJK SC,Source Han Sans CN,sans-serif;position:relative;background-color:transparent;width:100%;height:100%;overflow:hidden}.super-flow>.select-all__mask{position:absolute;background-color:rgba(85,175,255,.1);z-index:20;border:1px dashed #55abfc;cursor:move;outline:none}
.maincontainer[data-v-67565b2c] {
  padding-top: 0 !important;
}
.toUpper[data-v-67565b2c] {
  text-transform: capitalize;
}
.ahighlight[data-v-67565b2c] {
  background: #03ac00 !important;
  border-radius: 3px;
}
.ihighlight[data-v-67565b2c] {
  background: #ae6725 !important;
  border-radius: 3px;
}
.animate-bottom[data-v-67565b2c] {
  position: relative;
  animation: animatebottom 0.4s;
}
.empty-drag-slot-100[data-v-67565b2c] {
  height: 60px;
  position: absolute;
  z-index: 90;
  width: calc(100% - 40px);
}
.invisible[data-v-67565b2c] {
  visibility: hidden;
}
.addEmotionModal[data-v-67565b2c],
.selectIconModal[data-v-67565b2c],
.addIconModal[data-v-67565b2c],
.addImageModal[data-v-67565b2c],
.addBrandModal[data-v-67565b2c] {
  z-index: 9999;
}
.extraHeaderSpace[data-v-67565b2c] {
  overflow: auto;
}
.rightWrapper[data-v-67565b2c] {
  overflow: inherit !important;
}
.leftwrapper[data-v-67565b2c] {
  left: 0 !important;
}
.episodeleftWrapper[data-v-67565b2c] {
  z-index: 3 !important;
}
.journeyStickyHeader[data-v-67565b2c] {
  z-index: 15 !important;
}
.sticky[data-v-67565b2c] {
  position: fixed;
  top: 112px;
  z-index: 999;
}
.journysticky[data-v-67565b2c] {
  position: fixed;
  top: 65px;
  z-index: 999;
}
.stickyRight[data-v-67565b2c] {
  height: 400px !important;
}
.journeyStickyHeaderText p[data-v-67565b2c] {
  margin: 5px 0px -195px;
}
.journeyStickyHeaderLeft[data-v-67565b2c] {
  margin-top: 60px !important;
  margin-left: 16px;
}
.journeyStickyBar[data-v-67565b2c] {
  display: block !important;
  background: #110a1a;
  height: 50px;
  padding: 10px 15px;
  color: #fff;
  font-size: 13px;
  position: fixed;
  top: 62px;
  width: 101%;
  text-align: center;
  z-index: 9;
  left: 0;
  margin-left: -15px !important;
}
.journeyfixed[data-v-67565b2c] {
  position: fixed;
  left: 0;
  right: 0;
  width: 100%;
  height: 400px;
  background: #110a1a;
  top: 53px;
  z-index: 100;
}
.stickyJourny[data-v-67565b2c] {
  position: -webkit-sticky;
  position: sticky;
  top: 99px !important;
  left: 0px !important;
  z-index: 5;
  background: #110a1a;
}
.stickyJourneyContent[data-v-67565b2c] {
  position: -webkit-sticky;
  position: sticky;
  top: 100px !important;
  left: 0px !important;
  z-index: 5;
  background: #110a1a;
}
#addLaneModal[data-v-67565b2c] {
  z-index: 1051;
}
.tooltip.bs-tooltip-bottom[data-v-67565b2c] {
  margin-top: 11px !important;
}
.tooltip.bs-tooltip-top[data-v-67565b2c] {
  margin-bottom: 11px !important;
}
.toCapitalFirst[data-v-67565b2c] {
  text-transform: capitalize;
}
.selectedSection[data-v-67565b2c] {
  border: 1px solid #8568fe;
}
.tp-size-options[data-v-67565b2c] {
  display: flex;
  gap: 5px;
  align-items: center;
  margin-bottom: 5px;
}
.tp-size-option[data-v-67565b2c] {
  padding: 2px 6px;
  border: 1px solid #ddd;
  background: #f8f9fa;
  border-radius: 3px;
  cursor: pointer;
  font-size: 11px;
  font-weight: bold;
  transition: all 0.2s;
}
.tp-size-option[data-v-67565b2c]:hover {
  background: #e9ecef;
  border-color: #adb5bd;
}
.tp-size-option.active[data-v-67565b2c] {
  background: #007bff;
  color: white;
  border-color: #007bff;
}


.errortxt[data-v-4754776e] {
  color: red;
}



































































































































































.errortxt[data-v-8134884e] {
  color: red;
}

.dropzone-over[data-v-e5cf808e] {
  position: absolute !important;
  z-index: 9999 !important;
}
.addImageModal[data-v-e5cf808e] {
  z-index: 9998;
}

.draggable-item[data-v-56f63213] {
  width: 200px;
  min-width: 200px;
  box-sizing: border-box;
  text-align: center;
}
.ghost[data-v-56f63213] {
  opacity: 0.5;
  background: red;
}
.chosen[data-v-56f63213] {
  opacity: 0.5;
  background: orange;
}
.drag[data-v-56f63213] {
  opacity: 0;
  background: green;
}
#app[data-v-56f63213] {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
}
.resize1[data-v-56f63213] {
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 5px;
  width: 100px;
  height: 100px;
  overflow: hidden;
  background-color: #c3e2ce;
  min-width: 100px;
  max-width: 200px;
}
.resize[data-v-56f63213] {
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 5px;
  width: 100px;
  height: 100px;
  overflow: hidden;
  resize: horizontal;
  background-color: #c3e2ce;
  min-width: 100px;
  max-width: 200px;
}
.width-14-empty[data-v-56f63213] {
  min-width: 0px !important;
  padding: 0px !important;
}

.addtouchpointModal[data-v-ed2bc2d4] {
  z-index: 9997;
}
.addWidgetModal[data-v-ed2bc2d4],
.addBrandModal[data-v-ed2bc2d4],
.addContactReasonModal[data-v-ed2bc2d4] {
  z-index: 9999;
}
.tp-size-options[data-v-ed2bc2d4] {
  display: flex;
  gap: 0;
  justify-content: stretch;
  align-items: center;
  margin-top: 8px;
  width: 100%;
}
.tp-size-option[data-v-ed2bc2d4] {
  flex: 1 1 0;
  height: 40px;
  display: flex;
  justify-content: center;
  align-items: center;
  background: #e6f9e6;
  color: #1ca21c;
  border: 2px solid #1ca21c;
  border-radius: 0;
  font-weight: bold;
  cursor: pointer;
  transition: background 0.2s, color 0.2s;
  font-size: 18px;
}
.tp-size-option[data-v-ed2bc2d4]:not(:last-child) {
  border-right: none;
}
.tp-size-option.active[data-v-ed2bc2d4] {
  background: #a7adae;
  color: #fff;
}

.flow-container {
  position: relative;
  display: flex;
  align-items: flex-start;
}
.super-flow-base-demo {
  margin-left: 50px;
}
.super-flow__node {
  background-color: transparent !important;
}
.resize-handle {
  position: absolute;
  width: 10px;
  height: 10px;
  right: 0;
  bottom: 0;
  background-color: gray;
  cursor: nwse-resize;
}


.widget-selection-container[data-v-052ab78c] {
  padding: 0;
}
/* Responsive adjustments */
@media (max-width: 768px) {
.widget-types-grid[data-v-052ab78c] {
    grid-template-columns: 1fr;
    gap: 10px;
}
.widget-option-content[data-v-052ab78c] {
    padding: 12px;
}
.preset-options[data-v-052ab78c] {
    flex-direction: column;
    gap: 10px;
}
.modal-footer[data-v-052ab78c] {
    flex-direction: column;
    gap: 15px;
    align-items: stretch;
}
.footer-buttons[data-v-052ab78c] {
    justify-content: center;
}
.text[data-v-052ab78c] {
    font-size: 14px;
    font-weight: 400;
}
}
















































































































/* Add any scoped styles if needed */



























































































































































/* Add any touchpoint lane specific styles here */

.tooltip-content[data-v-0630a680] {
    max-width: 250px;
}
.tooltip-title[data-v-0630a680] {
    font-weight: 600;
    margin-bottom: 6px;
}
.tooltip-desc[data-v-0630a680] {
    font-size: 13px;
    color: #ccc;
    line-height: 1.4;
}

.performanceColumnsContainer[data-v-f92bb13c] {
    display: grid;
    gap: 15px;
    grid-template-columns: 1fr;
}
.performanceColumn[data-v-f92bb13c] {
    background: white;
    border: 1px solid #e0e0e0;
    border-radius: 4px;
    padding: 15px;
}
.performanceFilledSlot[data-v-f92bb13c] {
    background: white;
    border: 1px solid #e0e0e0;
    border-radius: 4px;
    padding: 15px;
    position: relative;
}
.perf-slot-header[data-v-f92bb13c] {
    display: flex;
    justify-content: flex-end;
    margin-bottom: 4px;
    min-height: 20px;
}
.perf-slot-menu[data-v-f92bb13c] {
    position: relative;
}
.perf-slot-menu .dropdown-menu[data-v-f92bb13c] {
    display: none;
    position: absolute;
    right: 0;
    top: 100%;
    min-width: 110px;
    z-index: 1050;
}
.perf-slot-menu:hover .dropdown-menu[data-v-f92bb13c] {
    display: block;
}
.columnHeader[data-v-f92bb13c] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
    padding-bottom: 10px;
    border-bottom: 1px solid #eee;
}
.columnTitle[data-v-f92bb13c] {
    font-weight: 600;
    color: #333;
}
.columnBody[data-v-f92bb13c] {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.columnBody .form-group[data-v-f92bb13c] {
    margin-bottom: 0;
}
.columnBody input[data-v-f92bb13c],
.columnBody select[data-v-f92bb13c] {
    padding: 8px;
    font-size: 13px;
}
.addColumnBtn[data-v-f92bb13c] {
    width: 100%;
    margin-top: 10px;
}
.performanceViewMode[data-v-f92bb13c] {
    padding: 20px;
}
.performanceColumnsView[data-v-f92bb13c] {
    display: grid;
    gap: 15px;
    grid-template-columns: 1fr;
}
.performanceColumnView[data-v-f92bb13c] {
    background: white;
    border: 1px solid #ddd;
    border-radius: 4px;
    padding: 15px;
    text-align: center;
}
.columnViewContent[data-v-f92bb13c] {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.columnViewName[data-v-f92bb13c] {
    font-size: 12px;
    color: #999;
    text-transform: uppercase;
    font-weight: 600;
}
.columnViewValue[data-v-f92bb13c] {
    font-size: 20px;
    font-weight: 700;
    color: #333;
}
.hideWidget[data-v-f92bb13c] {
    opacity: 0.6;
}
.widget-type-list[data-v-f92bb13c] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 20px;
}
.widget-type-item[data-v-f92bb13c] {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    cursor: pointer;
    transition: all 0.3s ease;
    text-align: center;
    min-height: 180px;
}
.widget-type-icon-container img[data-v-f92bb13c] {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}
.darktheme-icon[data-v-f92bb13c] {
    display: block;
}
.lighttheme-icon[data-v-f92bb13c] {
    display: none;
}
.theme-light .darktheme-icon[data-v-f92bb13c] {
    display: none;
}
.theme-light .lighttheme-icon[data-v-f92bb13c] {
    display: block;
}
.widget-type-content[data-v-f92bb13c] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    flex: 1;
}
.performanceSlots[data-v-f92bb13c] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
    width: 100%;
}
.performanceSlot[data-v-f92bb13c] {
    min-width: 100%;
}
.emptySlot[data-v-f92bb13c] {
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: #777;
}
.perf-empty-readonly[data-v-f92bb13c] {
    cursor: default;
    background: #f9f9f9;
    border: 1px dashed #ddd;
}
.addSlotBody[data-v-f92bb13c] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
}
.addSlotText[data-v-f92bb13c] {
    font-size: 12px;
}
.addColumnBtn[data-v-f92bb13c] {
    transition: width 0.25s ease;
}
.addBtnText[data-v-f92bb13c] {
    margin-left: 8px;
}
.perf-slider-input[data-v-f92bb13c] {
    width: 100%;
    cursor: pointer;
}
.ghost[data-v-f92bb13c] {
    opacity: 0.5;
    background: #f5f5f5;
}
.drag[data-v-f92bb13c] {
    opacity: 1;
}

.perf-custom-field-block[data-v-bd7609a0] {
  width: 100%;
  padding: 4px 0;
}
.perf-cf-row[data-v-bd7609a0] {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.perf-cf-col[data-v-bd7609a0] {
  flex: 1 1 auto;
  min-width: 0;
}
.perf-cf-label[data-v-bd7609a0] {
  font-size: 10px;
  font-weight: 600;
  color: #999;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  margin-bottom: 3px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.perf-cf-options[data-v-bd7609a0] {
  display: flex;
  flex-wrap: wrap;
  gap: 3px;
}
.perf-cf-option[data-v-bd7609a0] {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  font-size: 10px;
  font-weight: 500;
  color: #fff;
  padding: 2px 6px;
  border-radius: 3px;
  line-height: 1.4;
  white-space: nowrap;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
}
.perf-cf-count[data-v-bd7609a0] {
  font-size: 9px;
  opacity: 0.85;
  white-space: nowrap;
}
.perf-cf-empty[data-v-bd7609a0] {
  font-size: 11px;
  color: #bbb;
}

.custom-field-title[data-v-7f1b1da6] {
    font-weight: 600;
    margin-bottom: 8px;
}
.no-options[data-v-7f1b1da6] {
    color: #888;
    font-size: 13px;
}
.selected-items[data-v-7f1b1da6] {
    margin-top: 8px;
}
.item[data-v-7f1b1da6] {
    display: inline-block;
    background: #f0f0f0;
    border-radius: 12px;
    padding: 2px 10px;
    margin-right: 6px;
    margin-bottom: 4px;
}
.delete[data-v-7f1b1da6] {
    margin-left: 6px;
    cursor: pointer;
    color: #d00;
}
.field-type[data-v-7f1b1da6] {
    color: #888;
    font-size: 12px;
}












































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































/* .ckeditor ul,li {
        list-style-type: disc !important;
    }

    .ckeditor ol,li {
        list-style-type: decimal !important;
    } */
/*.maincontainer {*/
/*padding-top: 74px;*/
/*}*/
.maincontainer[data-v-3102f960] {
  padding-top: 0 !important;
}
.fixedJourneyClass[data-v-3102f960] {
  position: fixed;
  left: 0;
  top: 50px;
  width: 100vw;
  z-index: 10;
  height: 50px;
}
.fixedFullJourneyClass[data-v-3102f960] {
  position: fixed;
  left: 0;
  top: 50px;
  width: 100vw;
  z-index: 10;
}
.fixedFullJourneyRightClass[data-v-3102f960] {
  position: fixed;
}
.fixedEpisodeClass[data-v-3102f960] {
  position: fixed;
  left: 0;
  width: 100vw;
  z-index: 10;
  height: 50px;
}
.fixedEpisodeMapOpen[data-v-3102f960] {
  top: 450px;
  min-height: 0px;
}
.fixedEpisodeMapClose[data-v-3102f960] {
  top: 112px;
  min-height: 0px;
}
.fixedJourneyEpisodeTopClass[data-v-3102f960] {
  margin-top: 50px;
}
.fixedEpisodeLanesTopClass[data-v-3102f960] {
  margin-top: 100px;
}

/*.fixedEpisodeClass {*/
/*position: fixed;*/
/*left: 0;*/
/*top: 112px;*/
/*width: 100vw;*/
/*z-index: 10;*/
/*height: 50px;*/
/*}*/
.navbar.vue-fixed-header--isFixed[data-v-3102f960] {
  position: fixed;
  left: 0;
  top: 0;
  width: 100vw;
  z-index: 10;
}

/* .presentMainContainer .episodesMainDiv.stickyEpisodes .topMoreActions{
        top: 120px;
    } */
.extraHeaderSpace[data-v-3102f960] {
  padding-bottom: 65px;
  overflow: auto;
}
.rightWrapper[data-v-3102f960] {
  overflow: inherit !important;
}
.mainHTMLCustomClass[data-v-3102f960] {
  padding-top: 65px;
}
.bodyClassMapCloseEpOpen[data-v-3102f960] {
  margin-top: 110px;
}
.bodyClassMapCloseEpClose[data-v-3102f960] {
  margin-top: 168px;
}
.bodyClassMapOpenEpClose[data-v-3102f960] {
  margin-top: 550px;
}
.episodeleftWrapper[data-v-3102f960] {
  z-index: 4 !important;
}
.journeyStickyHeader[data-v-3102f960] {
  z-index: 15 !important;
}
.sticky[data-v-3102f960] {
  position: fixed;
  top: 112px;
  z-index: 999;
}
.journysticky[data-v-3102f960] {
  position: fixed;
  top: 65px;
  z-index: 999;
}
.stickyRight[data-v-3102f960] {
  height: 400px !important;
}
.journeyStickyHeaderText p[data-v-3102f960] {
  margin: 5px 0px -195px;
}
.journeyStickyHeaderLeft[data-v-3102f960] {
  margin-top: 60px !important;
  margin-left: 16px;
}
.stickyJourneyBar[data-v-3102f960] {
  display: block !important;
  background: #110a1a;
  height: 50px;
  padding: 10px 15px;
  color: #fff;
  font-size: 13px;
  position: fixed;
  top: 50px;
  width: 101%;
  text-align: center;
  z-index: 90;
  left: 0;
  margin-left: -15px !important;
}
.journeyStickyBar[data-v-3102f960] {
  display: block !important;
  background: #110a1a;
  height: 50px;
  padding: 10px 15px;
  color: #fff;
  font-size: 13px;
  position: fixed;
  top: 50px;
  width: 101%;
  text-align: center;
  z-index: 9;
  left: 0;
  margin-left: -15px !important;
}
.journeyfixed[data-v-3102f960] {
  position: fixed;
  left: 0;
  right: 0;
  width: 100%;
  height: 400px;
  background: #110a1a;
  top: 53px;
  z-index: 98;
}
.leftwrapper[data-v-3102f960] {
  left: 0 !important;
}
.stickyJourny[data-v-3102f960] {
  position: -webkit-sticky;
  /* Safari */
  position: sticky;
  top: 99px !important;
  left: 0px !important;
  z-index: 5;
  background: #110a1a;
}
.stickyJourneyContent[data-v-3102f960] {
  position: -webkit-sticky;
  /* Safari */
  position: sticky;
  top: 100px !important;
  /* width: 100%; */
  left: 0px !important;
  z-index: 5;
  background: #110a1a;
}
.stickJournycomments[data-v-3102f960] {
  width: calc(100% - 350px);
  left: 350px;
}
.tooltip[data-v-3102f960] {
&.bs-tooltip-bottom {
    margin-top: 11px !important;
}
&.bs-tooltip-top {
    margin-bottom: 11px !important;
}
}

.maincontainer[data-v-118b368e] {
  padding-top: 74px;
}

.tooltip-content[data-v-2ccfb7f5] {
    max-width: 250px;
}
.tooltip-title[data-v-2ccfb7f5] {
    font-weight: 600;
    margin-bottom: 6px;
}
.tooltip-desc[data-v-2ccfb7f5] {
    font-size: 13px;
    color: #ccc;
    line-height: 1.4;
}









































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































/* .ckeditor ul,li {
        list-style-type: disc !important;
    }

    .ckeditor ol,li {
        list-style-type: decimal !important;
    } */
/*.maincontainer {*/
/*padding-top: 74px;*/
/*}*/
.maincontainer[data-v-345b2219] {
  padding-top: 0 !important;
}
.fixedJourneyClass[data-v-345b2219] {
  position: fixed;
  left: 0;
  top: 50px;
  width: 100vw;
  z-index: 10;
  height: 50px;
}
.fixedFullJourneyClass[data-v-345b2219] {
  position: fixed;
  left: 0;
  top: 50px;
  width: 100vw;
  z-index: 10;
}
.fixedFullJourneyRightClass[data-v-345b2219] {
  position: fixed;
}
.fixedEpisodeClass[data-v-345b2219] {
  position: fixed;
  left: 0;
  width: 100vw;
  z-index: 10;
  height: 50px;
}
.fixedEpisodeMapOpen[data-v-345b2219] {
  top: 450px;
  min-height: 0px;
}
.fixedEpisodeMapClose[data-v-345b2219] {
  top: 112px;
  min-height: 0px;
}
.fixedJourneyEpisodeTopClass[data-v-345b2219] {
  margin-top: 50px;
}
.fixedEpisodeLanesTopClass[data-v-345b2219] {
  margin-top: 100px;
}

/*.fixedEpisodeClass {*/
/*position: fixed;*/
/*left: 0;*/
/*top: 112px;*/
/*width: 100vw;*/
/*z-index: 10;*/
/*height: 50px;*/
/*}*/
.navbar.vue-fixed-header--isFixed[data-v-345b2219] {
  position: fixed;
  left: 0;
  top: 0;
  width: 100vw;
  z-index: 10;
}

/* .presentMainContainer .episodesMainDiv.stickyEpisodes .topMoreActions{
        top: 120px;
    } */
.extraHeaderSpace[data-v-345b2219] {
  padding-bottom: 65px;
  overflow: auto;
}
.rightWrapper[data-v-345b2219] {
  overflow: inherit !important;
}
.mainHTMLCustomClass[data-v-345b2219] {
  padding-top: 65px;
}
.bodyClassMapCloseEpOpen[data-v-345b2219] {
  margin-top: 110px;
}
.bodyClassMapCloseEpClose[data-v-345b2219] {
  margin-top: 168px;
}
.bodyClassMapOpenEpClose[data-v-345b2219] {
  margin-top: 550px;
}
.episodeleftWrapper[data-v-345b2219] {
  z-index: 4 !important;
}
.journeyStickyHeader[data-v-345b2219] {
  z-index: 15 !important;
}
.sticky[data-v-345b2219] {
  position: fixed;
  top: 112px;
  z-index: 999;
}
.journysticky[data-v-345b2219] {
  position: fixed;
  top: 65px;
  z-index: 999;
}
.stickyRight[data-v-345b2219] {
  height: 400px !important;
}
.journeyStickyHeaderText p[data-v-345b2219] {
  margin: 5px 0px -195px;
}
.journeyStickyHeaderLeft[data-v-345b2219] {
  margin-top: 60px !important;
  margin-left: 16px;
}
.stickyJourneyBar[data-v-345b2219] {
  display: block !important;
  background: #110a1a;
  height: 50px;
  padding: 10px 15px;
  color: #fff;
  font-size: 13px;
  position: fixed;
  top: 50px;
  width: 101%;
  text-align: center;
  z-index: 90;
  left: 0;
  margin-left: -15px !important;
}
.journeyStickyBar[data-v-345b2219] {
  display: block !important;
  background: #110a1a;
  height: 50px;
  padding: 10px 15px;
  color: #fff;
  font-size: 13px;
  position: fixed;
  top: 50px;
  width: 101%;
  text-align: center;
  z-index: 9;
  left: 0;
  margin-left: -15px !important;
}
.journeyfixed[data-v-345b2219] {
  position: fixed;
  left: 0;
  right: 0;
  width: 100%;
  height: 400px;
  background: #110a1a;
  top: 53px;
  z-index: 98;
}
.leftwrapper[data-v-345b2219] {
  left: 0 !important;
}
.stickyJourny[data-v-345b2219] {
  position: -webkit-sticky;
  /* Safari */
  position: sticky;
  top: 99px !important;
  left: 0px !important;
  z-index: 5;
  background: #110a1a;
}
.stickyJourneyContent[data-v-345b2219] {
  position: -webkit-sticky;
  /* Safari */
  position: sticky;
  top: 100px !important;
  /* width: 100%; */
  left: 0px !important;
  z-index: 5;
  background: #110a1a;
}
.stickJournycomments[data-v-345b2219] {
  width: calc(100% - 350px);
  left: 350px;
}
.tooltip[data-v-345b2219] {
&.bs-tooltip-bottom {
    margin-top: 11px !important;
}
&.bs-tooltip-top {
    margin-bottom: 11px !important;
}
}
.skeleton-main[data-v-345b2219] {
  display: none;
}
.skeleton-block[data-v-345b2219] {
  display: none;
}
.skeleton[data-v-345b2219] {
  display: block !important;
}
















































































































































































/*    .maincontainer{
        padding-top: 74px;
    }*/

.ellipsis {
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
  word-wrap: break-word;
}
.super-flow-base-demo {
  width: 100%;
  height: 800px;
  margin: 0 auto;
  background-color: #f5f5f5;
  overflow: scroll;
}
.super-flow-base-demo .super-flow {
  width: 1800px;
  height: 1000px;
}
.super-flow-base-demo .super-flow__node .flow-node>header {
  font-size: 14px;
  height: 32px;
  line-height: 32px;
  padding: 0 12px;
  color: #ffffff;
}
.super-flow-base-demo .super-flow__node .flow-node>section {
  text-align: center;
  line-height: 20px;
  overflow: hidden;
  padding: 6px 12px;
  word-break: break-all;
}
.super-flow-base-demo .super-flow__node .flow-node.flow-node-start>header {
  background-color: #55abfc;
}
.super-flow-base-demo .super-flow__node .flow-node.flow-node-condition>header {
  background-color: #bc1d16;
}
.super-flow-base-demo .super-flow__node .flow-node.flow-node-customerJourney>header {
  background-color: rgba(188,181,58,0.76);
}
.super-flow-base-demo .super-flow__node .flow-node.flow-node-backStage>header {
  background-color: #30b95c;
}
.super-flow-base-demo .super-flow__node .flow-node.flow-node-support>header {
  height: 50px;
  line-height: 50px;
  background-color: #55abfc;
}


























































































































































/* To load component smoothly*/
.fade-enter-active, .fade-leave-active {
    transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
    opacity: 0;
}
.text-tiny {
    font-size: 0.7em;
}
.text-small {
    font-size: 0.85em;
}
.text-big {
    font-size: 1.4em;
}
.text-huge {
    font-size: 1.8em;
}
.resize-observer[data-v-8859cc6c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-8859cc6c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper--theme-dropdown .v-popper__inner{background:#fff;color:#000;padding:6px;border-radius:6px;border:1px solid #ddd;box-shadow:0 6px 30px rgba(0,0,0,.1)}.v-popper--theme-dropdown .v-popper__arrow-inner{visibility:visible;border-color:#fff}.v-popper--theme-dropdown .v-popper__arrow-outer{border-color:#ddd}.v-popper{width:-webkit-max-content;width:-moz-max-content;width:max-content}.v-popper__popper{z-index:10000}.v-popper__popper.v-popper__popper--hidden{visibility:hidden;opacity:0;transition:opacity .15s,visibility .15s}.v-popper__popper.v-popper__popper--shown{visibility:visible;opacity:1;transition:opacity .15s}.v-popper__popper.v-popper__popper--skip-transition,.v-popper__popper.v-popper__popper--skip-transition>.v-popper__wrapper{transition:none!important}.v-popper__inner{position:relative;box-sizing:border-box}.v-popper__arrow-container{width:10px;height:10px}.v-popper__arrow-inner,.v-popper__arrow-outer{border-style:solid;position:absolute;top:0;left:0;width:0;height:0}.v-popper__arrow-inner{visibility:hidden;border-width:7px}.v-popper__arrow-outer{border-width:6px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{left:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{left:-1px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{border-bottom-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{border-top-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{top:-4px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{top:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{top:-1px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{border-left-width:0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{left:-4px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{left:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer{border-right-width:0;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner{left:-2px}.v-popper--theme-tooltip .v-popper__inner{background:rgba(0,0,0,.8);color:#fff;border-radius:6px;padding:7px 12px 6px}.v-popper--theme-tooltip .v-popper__arrow-outer{border-color:rgba(0,0,0,.8)}
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi92dWUvY29tcG9uZW50cy9yZWdpc3RyYXRpb24vUGF5bWVudE9wdGlvbnMudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL3JlZ2lzdHJhdGlvbi9TdGVwMTEudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL3JlZ2lzdHJhdGlvbi9TdGVwMTIudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL3JlZ2lzdHJhdGlvbi9PbmxpbmVQYXltZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi92dWUvY29tcG9uZW50cy9jb21tb24vdnVlL2NvbXBvbmVudHMvY29tbW9uL0ltYWdlQ3JvcHBlci52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvY29tbW9uL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9BZGRUZWFtLnZ1ZSIsIndlYnBhY2s6Ly8vLi92dWUvY29tcG9uZW50cy9MaWZlQ3ljbGUvdnVlL2NvbXBvbmVudHMvTGlmZUN5Y2xlL0xpZmVDeWNsZS52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvY29tbW9uL21vZGFscy9NZWRpYS52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvY29tbW9uL21vZGFscy9Eb2N1bWVudHMudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9qaXJhL0ppcmFJc3N1ZXMudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9Mb2FkZXIudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9qaXJhL0ppcmFEZXRhaWxzLnZ1ZSIsIndlYnBhY2s6Ly8vLi92dWUvY29tcG9uZW50cy9jb21tb24vRmlsdGVyTWVudS52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvY29tbW9uL0FkZEluc2lnaHQudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9pbnNpZ2h0cy9BaUluc2lnaHRzUHJldmlldy52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvY29tbW9uL2NoYW5uZWxzL0NoYW5uZWxzTGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvY29tbW9uL2NoYW5uZWxzL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9jaGFubmVscy9DaGFubmVsRm9ybS52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvY29tbW9uL3dpZGdldHMvS3BpLnZ1ZSIsIndlYnBhY2s6Ly8vLi92dWUvY29tcG9uZW50cy9jb21tb24vY2hhbm5lbHMvQWlDaGFubmVsUHJldmlldy52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvY29tbW9uL3BlcnNvbmEvdnVlL2NvbXBvbmVudHMvY29tbW9uL3BlcnNvbmEvUGVyc29uYUZvcm0udnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL01hcHMvUGFydHMvUGVyc29uYS52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvY29udHJvbGNlbnRlci9tb3RzL01vdHNMaXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi92dWUvY29tcG9uZW50cy9jb21tb24vTWFwc1RyZWUudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi93aWRnZXRzL0ltcHJvdmVtZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi92dWUvY29tcG9uZW50cy9jb21tb24vd2lkZ2V0cy9JbnNpZ2h0LnZ1ZSIsIndlYnBhY2s6Ly8vLi92dWUvY29tcG9uZW50cy9jb21tb24vd2lkZ2V0cy9DaGFubmVsLnZ1ZSIsIndlYnBhY2s6Ly8vLi92dWUvY29tcG9uZW50cy9jb21tb24vd2lkZ2V0cy9Nb3QudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi93aWRnZXRzL0xpbmtXaWRnZXQudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi93aWRnZXRzL0hpZXJhcmNoeVdpZGdldC52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvY29tbW9uL3dpZGdldHMvUGVyc29uYXMudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9rcGkvS3BpRm9ybS52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvY29tbW9uL3dpZGdldHMvS3Bpcy52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvdXNlcm1hbmFnZW1lbnQvQ3hMaWZlY3ljbGUudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9oZWFkZXIvU2V0dGluZ3NIZWFkZXIudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL3VzZXJtYW5hZ2VtZW50L0xpZmVDeWNsZS52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvTWFwcy9QYXJ0cy9Db21tZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi92dWUvY29tcG9uZW50cy9NYXBzL1BhcnRzL0ltcHJvdmVtZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi92dWUvY29tcG9uZW50cy9NYXBzL1BhcnRzL0luc2lnaHQudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL01hcHMvUGFydHMvQ2hhbm5lbC52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvY29tbW9uL3dpZGdldHMvVGltZWxpbmVXaWRnZXQudnVlIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUtZWNoYXJ0cy9jb21wb25lbnRzL0VDaGFydHMudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi93aWRnZXRzL1RleHRXaWRnZXROZXcudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9oZWFkZXIvVXNlclNpZGViYXJNZW51LnZ1ZSIsIndlYnBhY2s6Ly8vLi92dWUvY29tcG9uZW50cy91c2VybWFuYWdlbWVudC9sb2dzL0dhbGF4eUxvZ3MudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL3VzZXJtYW5hZ2VtZW50L1F1ZXN0aW9ucy52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvdXNlcm1hbmFnZW1lbnQvdnVlL2NvbXBvbmVudHMvdXNlcm1hbmFnZW1lbnQvUXVlc3Rpb25zVGVzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvdXNlcm1hbmFnZW1lbnQvdnVlL2NvbXBvbmVudHMvdXNlcm1hbmFnZW1lbnQvSW1wcm92ZW1lbnQudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9oZWFkZXIvTGVmdFNpZGVNZW51RmlsdGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi92dWUvY29tcG9uZW50cy91c2VybWFuYWdlbWVudC92dWUvY29tcG9uZW50cy91c2VybWFuYWdlbWVudC9JbnNpZ2h0LnZ1ZSIsIndlYnBhY2s6Ly8vLi92dWUvY29tcG9uZW50cy9jb250cm9sY2VudGVyL21vdHMvTU9Ucy52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvY29udHJvbGNlbnRlci9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL3VzZXJtYW5hZ2VtZW50L0RhdGFDaGFubmVscy52dWUiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZS1zd2F0Y2hlcy9kaXN0L3Z1ZS1zd2F0Y2hlcy5jc3MiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvTWFwcy9QYXJ0cy9Eb2N1bWVudHNMaWJyYXJ5LnZ1ZSIsIndlYnBhY2s6Ly8vLi92dWUvY29tcG9uZW50cy91c2VybWFuYWdlbWVudC9BbGxrcGlzLnZ1ZSIsIndlYnBhY2s6Ly8vLi92dWUvY29tcG9uZW50cy9NYXBzL01hcHMudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9GaWx0ZXJCYXIudnVlIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUtc3VwZXItZmxvdy9saWIvaW5kZXguY3NzIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL01hcHMvRWRpdE1hcC52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvY29tbW9uL2hlYWRlci9NYXBIZWFkZXIudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9oZWFkZXIvcGFydHMvRXhwb3J0TWFwLnZ1ZSIsIndlYnBhY2s6Ly8vLi92dWUvY29tcG9uZW50cy9jb21tb24vdnVlL2NvbXBvbmVudHMvY29tbW9uL01lZGlhTGlicmFyeS52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvTWFwcy9QYXJ0cy9FcGlzb2RlR3JvdXBFZGl0LnZ1ZSIsIndlYnBhY2s6Ly8vLi92dWUvY29tcG9uZW50cy9NYXBzL1BhcnRzL1RvdWNocG9pbnQudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL01hcHMvUGFydHMvRnJhbWV3b3JrTGFuZS52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvTWFwcy9QYXJ0cy9UUFNpemVPcHRpb25zLnZ1ZSIsIndlYnBhY2s6Ly8vLi92dWUvY29tcG9uZW50cy9NYXBzL1BhcnRzL1dpZGdldEl0ZW0udnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL01hcHMvUGFydHMvVG91Y2hwb2ludExhbmUudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL01hcHMvUGFydHMvVG91Y2hwb2ludEVkaXQudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL01hcHMvUGFydHMvUGVyZm9ybWFuY2VCbG9jay52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvY29tbW9uL2N1c3RvbUZpZWxkL3ZpZXdNb2RlUGVyZm9ybWFuY2UudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL01hcHMvUGFydHMvQ3VzdG9tRmllbGRTZWxlY3RNb2RhbC52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvTWFwcy9QcmVzZW50YXRpb24udnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL01hcHMvUGFydHMvTGlzdE9mQ29tbWVudHMudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL01hcHMvUGFydHMvVG91Y2hwb2ludFByZXNlbnQudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL01hcHMvU2hhcmUudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL1Rlc3QvR3JhcGgudnVlIiwid2VicGFjazovLy8uL3Z1ZS9jb21wb25lbnRzL1Rlc3QvVGVzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vdnVlL2Fzc2V0cy9jc3MvbWFpbi5jc3MiLCJ3ZWJwYWNrOi8vLy4vdnVlL2NvbXBvbmVudHMvQXBwLnZ1ZSIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdi10b29sdGlwL2Rpc3Qvdi10b29sdGlwLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBa3ZCQTtFQUNFLGFBQWE7Q0FDZDs7QUN5TUQ7RUFDRSxhQUFhO0NBQ2Q7O0FDN2hCRDtFQUNFLGFBQWE7Q0FDZDtBQUNEO0VBQ0Usa0JBQWtCO0NBQ25COztBQ3VDRDs7RUFDSTtDQTVjSDs7O0FDaUtEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0FDQTtBQUVBO0VBQ0E7Q0FDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzBRQTtFQUNBO0NBQ0E7O0FDZ3JFQTtFQUNBO0NBQ0E7QUFFQTtFQUNBO0VBQ0E7Q0FDQTtBQUVBO0VBQ0E7RUFDQTtDQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7Q0FDQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0NBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtDQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7Q0FDQTtBQUVBO0VBQ0E7Q0FDQTtBQUVBO0VBQ0E7Q0FDQTtBQUVBO0VBQ0E7RUFDQTtDQUNBO0FBRUE7RUFDQTtDQUNBOztBQ3ZyRUE7RUFDRSw4QkFBOEI7RUFDOUIseUJBQXlCO0NBQzFCO0FBRUQ7RUFDRSxjQUFjO0NBQ2Y7O0FDekREO0VBQ0UsOEJBQThCO0VBQzlCLHlCQUF5QjtDQUMxQjtBQUVEO0NBQ0M7O0FDZ0VEO0VBQ0UsY0FBYztFQUNkLCtCQUErQjtDQUNoQzs7QUNoZkQ7SUFDSSxvQkFBb0I7SUFDcEIsWUFBWTtJQUNaLG1CQUFtQjtDQUN0QjtBQUVEO0lBQ0ksWUFBWTtJQUNaLGFBQWE7SUFDYiwwQkFBMEI7O0lBRTFCLG9CQUFvQjtJQUNwQixzQkFBc0I7SUFDdEIsaUZBQWlFO0lBQ2pFLHlFQUF5RDtDQUM1RDtBQUVEO0lBQ0ksZ0NBQWdDO0lBQ2hDLHdCQUF3QjtDQUMzQjtBQUVEO0lBQ0ksZ0NBQWdDO0lBQ2hDLHdCQUF3QjtDQUMzQjtBQUVEO0FBQ0ksZ0JBQWdCLDJCQUEyQjtDQUFFO0FBQzdDLE1BQU0sNkJBQTZCO0NBQUU7Q0FDeEM7QUFFRDtBQUNJO1FBQ0ksNEJBQTRCO1FBQzVCLG9CQUFvQjtDQUN2QjtBQUFDO1FBQ0UsOEJBQThCO1FBQzlCLHNCQUFzQjtDQUN6QjtDQUNKOztBQ3NIRDtFQUNFLFlBQVk7RUFDWixxQkFBcUI7RUFDckIsa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQixvQkFBb0I7RUFDcEIsbUJBQW1CO0VBQ25CLGlCQUFpQjtFQUNqQixzQkFBc0I7RUFDdEIsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIsb0JBQW9CO0VBQ3BCLGlCQUFpQjtFQUNqQixvQkFBb0I7RUFDcEIsZ0NBQWdDO0VBQ2hDLGtCQUFrQjtDQUNuQjtBQUVEO0VBQ0UsYUFBYTtDQUNkOztBQ2k2QkQ7RUFDRSwrQkFBK0I7RUFDL0IsdUJBQXVCO0VBQ3ZCLHlCQUF5QjtFQUN6Qiw4QkFBOEI7Q0FDL0I7QUFFRDtFQUNFLG1CQUFtQjtDQUNwQjtBQUVEO0VBQ0U7OzRCQUUwQjtDQUMzQjtBQUVEO0VBQ0UsaUNBQWlDO0NBQ2xDO0FBRUQ7RUFDRSxtQ0FBbUM7RUFDbkMsc0JBQXNCO0NBQ3ZCOztBQ2dsQkQ7RUFDRSxjQUFjO0NBQ2Y7QUFFRDtFQUNFLHdCQUF3QjtFQUN4Qix3QkFBd0I7Q0FDekI7QUFFRDtFQUNFLHlDQUF5QztDQUMxQztBQUVEO0VBQ0UsNENBQTRDO0NBQzdDO0FBRUQ7RUFDRSxhQUFhO0VBQ2Isd0JBQXdCO0VBQ3hCLG9CQUFvQjtFQUNwQix3QkFBd0I7RUFDeEIsd0NBQXdDO0NBQ3pDO0FBRUQ7RUFDRSxlQUFlO0VBQ2YsbUJBQW1CO0NBQ3BCO0FBRUQ7RUFDRSxvQkFBb0I7Q0FDckI7QUFFRDtFQUNFLGlCQUFhO0VBQ2IsMkJBQTJCO0VBQzNCLG1CQUFtQjtFQUNuQixZQUFZO0VBQ1osU0FBUztDQUNWO0FBRUQ7RUFDRSxpQkFBYTtDQUNkO0FBRUQ7RUFDRSx5Q0FBeUM7Q0FDMUM7QUFFRDtFQUNFLDRDQUE0QztDQUM3QztBQUVEO0VBQ0UsYUFBYTtDQUNkO0FBRUQ7RUFDRSxtQkFBbUI7RUFDbkIsZ0JBQWdCO0NBQ2pCO0FBRUQ7RUFDRSxrQkFBa0I7Q0FDbkI7QUFFRDtFQUNFLG1CQUFtQjtFQUNuQixnQkFBZ0I7Q0FDakI7QUFFRDtFQUNFLGtCQUFrQjtDQUNuQjtBQUVEO0VBQ0UsZUFBZTtDQUNoQjtBQUVEO0VBQ0UseUJBQXlCO0NBQzFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzErQ0Q7RUFDRSxjQUFjO0NBQ2Y7O0FDV0Q7RUFDRSxXQUFXO0VBQ1gsZ0JBQWdCO0VBQ2hCLGVBQWU7RUFDZixpQkFBaUI7RUFDakIsZUFBZTtFQUNmLGdCQUFnQjtDQUNqQjtBQUVEO0VBQ0UsWUFBWTtFQUNaLGVBQWU7RUFDZixtQkFBbUI7RUFDbkIsU0FBUztFQUNULFVBQVU7RUFDVixZQUFZO0VBQ1osYUFBYTtFQUNiLFlBQVk7RUFDWixvQkFBb0I7RUFDcEIsbUJBQW1CO0VBQ25CLDBCQUEwQjtDQUMzQjs7QUMyUEQ7RUFDQTtDQUNBOztBQy9iQTtFQUNFLGVBQWU7RUFDZiw2QkFBNkI7RUFDN0IsNkJBQTZCO0NBQzlCO0FBRUQ7RUFDRSwyQkFBMkI7Q0FDNUI7QUFFRDtFQUNFLHdCQUF3QjtFQUN4Qiw0QkFBNEI7Q0FDN0I7QUFFRDtFQUNFLDJCQUEyQjtDQUM1QjtBQUVEO0VBQ0UsMkJBQTJCO0NBQzVCO0FBRUQ7RUFDRSx5QkFBeUI7RUFDekIsK0JBQStCO0VBQy9CLG9CQUFvQjtDQUNyQjs7QUN1SUQ7RUFDRSxjQUFjO0NBQ2Y7O0FDdWlCRDtFQUNBO0VBQ0E7Q0FDQTs7QUNqcUJBO0VBQ0UsZUFBZTtFQUNmLDZCQUE2QjtFQUM3Qiw2QkFBNkI7Q0FDOUI7O0FDaUpEO0VBQ0UsV0FBVztFQUNYLGdCQUFnQjtFQUNoQixlQUFlO0VBQ2YsaUJBQWlCO0VBQ2pCLGVBQWU7RUFDZixnQkFBZ0I7Q0FDakI7QUFFRDtFQUNFLFlBQVk7RUFDWixlQUFlO0VBQ2YsbUJBQW1CO0VBQ25CLFNBQVM7RUFDVCxVQUFVO0VBQ1YsWUFBWTtFQUNaLGFBQWE7RUFDYixZQUFZO0VBQ1osb0JBQW9CO0VBQ3BCLG1CQUFtQjtFQUNuQiwwQkFBMEI7Q0FDM0I7O0FDMkdEO0VBQ0Usc0JBQXNCO0NBQ3ZCOztBQ2xQRDtFQUNFLGVBQWU7RUFDZiw2QkFBNkI7RUFDN0IsNkJBQTZCO0NBQzlCOztBQ1lEO0VBQ0UsZUFBZTtFQUNmLDZCQUE2QjtFQUM3Qiw2QkFBNkI7Q0FDOUI7O0FDY0Q7RUFDRSxlQUFlO0VBQ2YsNkJBQTZCO0VBQzdCLDZCQUE2QjtDQUM5Qjs7QUNtRUQ7RUFDRSxlQUFlO0VBQ2YsNkJBQTZCO0VBQzdCLDZCQUE2QjtDQUM5Qjs7QUNnQkQ7RUFDRSxlQUFlO0VBQ2YsNkJBQTZCO0VBQzdCLDZCQUE2QjtDQUM5Qjs7QUNoQkQ7RUFDRSxlQUFlO0VBQ2YsNkJBQTZCO0VBQzdCLDZCQUE2QjtDQUM5Qjs7QUNoRkQ7RUFDRSxlQUFlO0VBQ2YsNkJBQTZCO0VBQzdCLDZCQUE2QjtDQUM5Qjs7QUNtS0Q7RUFDRSw0QkFBNEI7Q0FDN0I7O0FDdlVEO0VBQ0UsZUFBZTtFQUNmLDZCQUE2QjtFQUM3Qiw2QkFBNkI7Q0FDOUI7O0FDd2tDRDtFQUNFLG1CQUFtQjtFQUNuQixnQkFBZ0I7Q0FDakI7QUFFRDtFQUNFLHFFQUFxRTtDQUN0RTs7QUN0OUJEO0VBQ0UsOEJBQThCO0NBQy9CO0FBRUQ7RUFDRSxtQkFBbUI7RUFDbkIsdUJBQXVCO0VBQ3ZCLGdCQUFnQjtDQUNqQjs7QUNyTEQ7RUFDRSxnQkFBZ0I7RUFDaEIsdUJBQXVCO0NBQ3hCO0FBRUQ7RUFDRSxhQUFhO0VBQ2IsWUFBWTtDQUNiO0FBRUQ7RUFDRSxjQUFjO0VBQ2QscUNBQXFDO0VBQ3JDLG1CQUFtQjtDQUNwQjtBQUVEO0VBQ0UsY0FBYztFQUNkLHFDQUFxQztFQUNyQyxtQkFBbUI7Q0FDcEI7QUFFRDtFQUNFLGNBQWM7RUFDZCxxQ0FBcUM7RUFDckMsbUJBQW1CO0NBQ3BCO0FBRUQ7RUFDRSxXQUFXO0VBQ1gsZ0JBQWdCO0VBQ2hCLGdCQUFnQjtDQUNqQjtBQUVEO0VBQ0Usd0JBQXdCO0NBQ3pCO0FBRUQ7RUFDRSxrQkFBa0I7Q0FDbkI7QUFFRDtFQUNFLGFBQWE7RUFDYixpQkFBaUI7Q0FDbEI7QUFDRDtFQUNFLFdBQVc7Q0FDWjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNNRDtFQUNFLGtCQUFrQjtDQUNuQjs7QUN5REQ7RUFDRSxlQUFlO0VBQ2YsNkJBQTZCO0VBQzdCLDZCQUE2QjtDQUM5Qjs7QUNnQ0Q7RUFDRSxlQUFlO0VBQ2YsNkJBQTZCO0VBQzdCLDZCQUE2QjtDQUM5Qjs7QUNHRDtFQUNFLGVBQWU7RUFDZiw2QkFBNkI7RUFDN0IsNkJBQTZCO0NBQzlCOztBQ2REO0VBQ0UsZUFBZTtFQUNmLDZCQUE2QjtFQUM3Qiw2QkFBNkI7Q0FDOUI7O0FDNU1EO0VBQ0UsYUFBYTtFQUNiLGNBQWM7Q0FDZjs7QUNpSUQ7RUFDRSxlQUFlO0VBQ2YsNkJBQTZCO0VBQzdCLDZCQUE2QjtDQUM5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDNk1EO0VBQ0Usd0JBQXdCO0NBQ3pCOztBQzRQRDtFQUNFLCtCQUErQjtDQUNoQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3N3RkQ7RUFDRSxnQkFBZ0I7RUFDaEIsWUFBWTtFQUNaLFlBQVk7RUFDWixZQUFZO0VBQ1oscUNBQXFDO0VBQ3JDLFFBQVE7RUFDUixVQUFVO0VBQ1YscUJBQXFCO0VBQ3JCLG1CQUFtQjtDQUNwQjtBQUVEO0VBQ0UsWUFBWTtFQUNaLGFBQWE7RUFDYixlQUFlO0NBQ2hCO0FBRUQ7RUFDRSxZQUFZO0VBQ1osYUFBYTtDQUNkO0FBRUQ7RUFDRSxZQUFZO0VBQ1osb0JBQW9CO0VBQ3BCLGdCQUFnQjtDQUNqQjtBQUVEO0VBQ0UsWUFBWTtFQUNaLG1CQUFtQjtDQUNwQjtBQUVEO0VBQ0UsbUJBQW1CO0VBQ25CLG1CQUFtQjtFQUNuQixhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLHdDQUF3QztFQUN4QyxtQkFBbUI7Q0FDcEI7QUFFRDtFQUNFLHVCQUF1QjtDQUN4Qjs7QUFFRDs7Ozs7OztJQU9JO0FBQ0o7RUFDRSx1QkFBdUI7Q0FDeEI7QUFFRDtFQUNFLHNCQUFzQjtFQUN0QixxQkFBcUI7Q0FDdEI7O0FDM3hFRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7Q0FDQTtBQUVBO0VBQ0E7RUFDQTtDQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7Q0FDQTtBQUVBO0VBQ0E7RUFDQTtDQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0FDQTtBQUVBO0VBQ0E7Q0FDQTs7QUFFQTs7Ozs7OztJQU9BO0FBQ0E7RUFDQTtDQUNBO0FBRUE7RUFDQTtFQUNBO0NBQ0E7O0FDNVVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0NBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0FDQTs7QUM1R0E7RUFDRSxzQkFBc0I7Q0FDdkI7O0FDalpEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0NBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0FDQTs7QUNsSEE7RUFDRSxXQUFXO0VBQ1gsZ0JBQWdCO0VBQ2hCLGVBQWU7RUFDZixpQkFBaUI7RUFDakIsZUFBZTtFQUNmLGdCQUFnQjtDQUNqQjtBQUVEO0VBQ0UsWUFBWTtFQUNaLGVBQWU7RUFDZixtQkFBbUI7RUFDbkIsU0FBUztFQUNULFVBQVU7RUFDVixZQUFZO0VBQ1osYUFBYTtFQUNiLFlBQVk7RUFDWixvQkFBb0I7RUFDcEIsbUJBQW1CO0VBQ25CLDBCQUEwQjtDQUMzQjs7QUM4NEJEO0VBQ0UsY0FBYztDQUNmO0FBRUQ7RUFDRSwwQkFBMEI7Q0FDM0I7QUFFRDtFQUNFLDhCQUE4QjtDQUMvQjtBQUVEO0VBQ0UsNEJBQTRCO0NBQzdCO0FBRUQ7RUFDRSx5QkFBeUI7RUFDekIsWUFBWTtFQUNaLGlCQUFpQjtFQUNqQixzQkFBc0I7RUFDdEIscUJBQXFCO0VBQ3JCLFlBQVk7RUFDWixvQkFBb0I7Q0FDckI7QUFFRDtFQUNFLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1osaUJBQWlCO0VBQ2pCLHFCQUFxQjtFQUNyQixZQUFZO0VBQ1osb0JBQW9CO0NBQ3JCO0FBRUQ7RUFDRSxvQkFBb0I7RUFDcEIsYUFBYTtDQUNkO0FBRUQ7RUFDRSxvQkFBb0I7RUFDcEIsYUFBYTtDQUNkO0FBRUQ7RUFDRSxxQ0FBcUM7Q0FDdEM7O0FDMWlDRDtFQUNFLFdBQVc7RUFDWCxnQkFBZ0I7RUFDaEIsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixlQUFlO0VBQ2YsZ0JBQWdCO0NBQ2pCO0FBRUQ7RUFDRSxZQUFZO0VBQ1osZUFBZTtFQUNmLG1CQUFtQjtFQUNuQixTQUFTO0VBQ1QsVUFBVTtFQUNWLFlBQVk7RUFDWixhQUFhO0VBQ2IsWUFBWTtFQUNaLG9CQUFvQjtFQUNwQixtQkFBbUI7RUFDbkIsMEJBQTBCO0NBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQy9PRCw4QkFBOEIsa0JBQWtCLFdBQVcsV0FBVyxDQUFDLDZCQUE2QixXQUFXLFlBQVksa0JBQWtCLGdDQUFnQyxDQUFDLDJCQUEyQixTQUFTLENBQUMsc0JBQXNCLGtCQUFrQixxQkFBcUIsV0FBVyxDQUFDLHdEQUF3RCxXQUFXLHlDQUF5QyxZQUFZLENBQUMsd0dBQXdHLHdDQUF3QyxDQUFDLDZCQUE2QixrQkFBa0IsT0FBTyxRQUFRLFdBQVcsZUFBZSxnQkFBZ0IsaUJBQWlCLENBQUMsdURBQXVELGlCQUFpQixDQUFDLGlDQUFpQyxtQkFBbUIsQ0FBQyxjQUFjLGtCQUFrQixxQkFBcUIsWUFBWSxDQUFDLGdDQUFnQyxxQkFBcUIsY0FBYyxDQUFDLDhDQUE4QyxxQkFBcUIsQ0FBQyxpREFBaUQsa0JBQWtCLENBQUMseUJBQXlCLHNCQUFzQixDQUFDLDhDQUE4QyxXQUFXLENBQUMsb0RBQW9ELGtCQUFrQixjQUFjLGNBQWMsa0JBQWtCLG1FQUFtRSxVQUFVLENBQUMsdUJBQXVCLHlCQUF5QixzQkFBc0IsQ0FBQyxtQkFBbUIsV0FBVyxDQUFDLGlDQUFpQyxhQUFhLENBQUMsd0NBQXdDLG1CQUFtQixtQkFBbUIsV0FBVyxjQUFjLENBQUMsK0JBQStCLFdBQVcsZ0JBQWdCLG1CQUFtQixrQkFBa0IseUJBQXlCLGNBQWMsZUFBZSxDQUFDLGdDQUFnQyxtQkFBbUIsaUJBQWlCLFNBQVMsZUFBZSxnQkFBZ0IsV0FBVyx5QkFBeUIsaUJBQWlCLENBQUMsMEVBQTBFLHVCQUF1QixDQUFDLG1FQUFtRSxTQUFTLENBQUMscUNBQXFDLGFBQWEsbUJBQW1CLHNCQUFzQixDQUFDLGlDQUFpQyxXQUFXLFdBQVcsQ0FBQyx3QkFBd0IsVUFBVSxXQUFXLDBJQUEwSSxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQytjdjRFO0VBQ0UsOEJBQThCO0VBQzlCLHlCQUF5QjtDQUMxQjtBQUVEO0NBQ0M7O0FDdlFEO0VBQ0UsZUFBZTtFQUNmLDZCQUE2QjtFQUM3Qiw2QkFBNkI7Q0FDOUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzIwRUQ7RUFDRSxjQUFjO0NBQ2Y7QUFFRDtFQUNFLDBCQUEwQjtDQUMzQjtBQUVEO0VBQ0UsOEJBQThCO0NBQy9CO0FBRUQ7RUFDRSw0QkFBNEI7Q0FDN0I7QUFFRDtFQUNFLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1osaUJBQWlCO0VBQ2pCLHNCQUFzQjtFQUN0QixxQkFBcUI7RUFDckIsWUFBWTtFQUNaLG9CQUFvQjtDQUNyQjtBQUVEO0VBQ0UseUJBQXlCO0VBQ3pCLFlBQVk7RUFDWixpQkFBaUI7RUFDakIscUJBQXFCO0VBQ3JCLFlBQVk7RUFDWixvQkFBb0I7Q0FDckI7QUFFRDtFQUNFLG9CQUFvQjtFQUNwQixhQUFhO0NBQ2Q7QUFFRDtFQUNFLG9CQUFvQjtFQUNwQixhQUFhO0NBQ2Q7QUFFRDtFQUNFLHFDQUFxQztDQUN0Qzs7QUM5d0REO0VBQ0UsK0JBQStCO0VBQy9CLHVCQUF1QjtFQUN2Qix5QkFBeUI7RUFDekIsOEJBQThCO0VBQzlCLHFDQUFxQztDQUN0QztBQUVEO0VBQ0UsZ0NBQWdDO0NBQ2pDO0FBRUQ7RUFDRSxnQ0FBZ0M7Q0FDakM7QUFFRDtFQUNFLG1CQUFtQjtDQUNwQjtBQUVEO0VBQ0UsaUNBQWlDO0NBQ2xDO0FBRUQ7RUFDRSxzQkFBc0I7Q0FDdkI7QUFFRDtFQUNFLHFDQUFxQztDQUN0QztBQUVEO0VBQ0UsZ0NBQWdDO0NBQ2pDO0FBRUQ7RUFDRSxnQ0FBZ0M7Q0FDakM7QUNwMkJELDhDQUE4QyxrQkFBa0IsYUFBYSxZQUFZLGNBQWMseUJBQXlCLHVDQUF1QyxnQkFBZ0Isa0JBQWtCLFdBQVcsc0JBQXNCLFFBQVEsQ0FBQyxtREFBbUQseUJBQXlCLHNCQUFzQixxQkFBcUIsaUJBQWlCLHVCQUF1QixZQUFZLGdCQUFnQixpQkFBaUIsZUFBZSxrQkFBa0IsYUFBYSxDQUFDLDhEQUE4RCxRQUFRLENBQUMsb0VBQW9FLFlBQVksQ0FBQyx5REFBeUQscUJBQXFCLENBQUMsd0RBQXdELFdBQVcsV0FBVyxXQUFXLENBQUMsMkRBQTJELFdBQVcscUJBQXFCLFdBQVcsZUFBZSxpQkFBaUIsWUFBWSxlQUFlLENBQUMsdURBQXVELGtCQUFrQixNQUFNLE9BQU8sUUFBUSxRQUFRLENBQUMsK0RBQStELGNBQWMsQ0FBQyxvRUFBb0UsVUFBVSxDQUFDLHFFQUFxRSw0QkFBNEIsQ0FBQyxtREFBbUQsV0FBVyxhQUFhLGdDQUFnQyxRQUFRLENBQUMsOERBQThELFlBQVksQ0FBQyw2Q0FBNkMsV0FBVyxlQUFlLE1BQU0sU0FBUyxRQUFRLE9BQU8sV0FBVyw0QkFBNEIsQ0FBQyxrQkFBa0Isc0NBQXNDLHlCQUF5QixzQkFBc0IscUJBQXFCLGlCQUFpQixrQkFBa0Isc0JBQXNCLHlCQUF5QixVQUFVLFlBQVksQ0FBQywyQkFBMkIsV0FBVyxDQUFDLHlCQUF5QixzQkFBc0IsQ0FBQyw2QkFBNkIsa0JBQWtCLGdCQUFnQixDQUFDLGlDQUFpQyxTQUFTLFFBQVEsT0FBTyxXQUFXLENBQUMsbUNBQW1DLE1BQU0sV0FBVyxTQUFTLFVBQVUsQ0FBQyxvQ0FBb0MsUUFBUSxZQUFZLE9BQU8sV0FBVyxDQUFDLGtDQUFrQyxNQUFNLFNBQVMsVUFBVSxVQUFVLENBQUMsd0JBQXdCLHFDQUFxQyxDQUFDLDJCQUEyQixTQUFTLENBQUMsa0JBQWtCLGtCQUFrQixTQUFTLENBQUMseUJBQXlCLGNBQWMsQ0FBQyx1QkFBdUIsa0JBQWtCLFVBQVUsNEJBQTRCLENBQUMsWUFBWSxpTkFBaU4sa0JBQWtCLDZCQUE2QixXQUFXLFlBQVksZUFBZSxDQUFDLDhCQUE4QixrQkFBa0IscUNBQXFDLFdBQVcsMEJBQTBCLFlBQVksWUFBWSxDO0FDazlnQjMrRjtFQUNFO0NBajlnQkQ7QUFrOWdCQTtFQUdDO0NBajlnQkQ7QUFrOWdCQTtFQUdDO0VBQ0E7Q0FqOWdCRDtBQWs5Z0JBO0VBR0M7RUFDQTtDQWo5Z0JEO0FBazlnQkE7RUFHQztFQUNBO0NBajlnQkQ7QUFrOWdCQTtFQUdDO0VBQ0E7RUFDQTtFQUNBO0NBajlnQkQ7QUFrOWdCQTtFQUdDO0NBajlnQkQ7QUFrOWdCQTs7Ozs7RUFPQztDQWo5Z0JEO0FBazlnQkE7RUFHQztDQWo5Z0JEO0FBazlnQkE7RUFHQztDQWo5Z0JEO0FBazlnQkE7RUFHQztDQWo5Z0JEO0FBazlnQkE7RUFHQztDQWo5Z0JEO0FBazlnQkE7RUFHQztDQWo5Z0JEO0FBazlnQkE7RUFHQztFQUNBO0VBQ0E7Q0FqOWdCRDtBQWs5Z0JBO0VBR0M7RUFDQTtFQUNBO0NBajlnQkQ7QUFrOWdCQTtFQUdDO0NBajlnQkQ7QUFrOWdCQTtFQUdDO0NBajlnQkQ7QUFrOWdCQTtFQUdDO0VBQ0E7Q0FqOWdCRDtBQWs5Z0JBO0VBR0M7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0FqOWdCRDtBQWs5Z0JBO0VBR0M7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDQWo5Z0JEO0FBazlnQkE7RUFHQztFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0FsOWdCRDtBQW05Z0JBO0VBR0M7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0NBbjlnQkQ7QUFvOWdCQTtFQUdDO0NBbjlnQkQ7QUFvOWdCQTtFQUlHO0NBcDlnQkg7QUFrOWdCRDtFQU1JO0NBcDlnQkg7QUFxOWdCRTtFQUlEO0NBcjlnQkQ7QUFzOWdCQTtFQUdDO0NBcjlnQkQ7QUFzOWdCQTtFQUdDO0VBQ0E7RUFDQTtFQUNBO0NBcjlnQkQ7QUFzOWdCQTtFQUdDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0FyOWdCRDtBQXM5Z0JBO0VBR0M7RUFDQTtDQXI5Z0JEO0FBczlnQkE7RUFHQztFQUNBO0VBQ0E7Q0FyOWdCRDs7O0FDMmJEO0VBQ0UsV0FBVztDQUNaOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzRKRDtFQUNFLFdBQVc7Q0FDWjs7QUNyUkQ7RUFDQTtFQUNBO0NBQ0E7QUFFQTtFQUNBO0NBQ0E7O0FDNUtBO0VBQ0UsYUFBYTtFQUNiLGlCQUFpQjtFQUNqQix1QkFBdUI7RUFDdkIsbUJBQW1CO0NBQ3BCO0FBRUQ7RUFDRSxhQUFhO0VBQ2IsZ0JBQWdCO0NBQ2pCO0FBRUQ7RUFDRSxhQUFhO0VBQ2IsbUJBQW1CO0NBQ3BCO0FBRUQ7RUFDRSxXQUFXO0VBQ1gsa0JBQWtCO0NBQ25CO0FBRUQ7RUFDRSxjQUFjO0VBQ2Qsd0JBQXdCO0VBQ3hCLG9CQUFvQjtFQUNwQixnQkFBZ0I7Q0FDakI7QUFFRDtFQUNFLGNBQWM7RUFDZCx3QkFBd0I7RUFDeEIsb0JBQW9CO0VBQ3BCLFlBQVk7RUFDWixhQUFhO0VBQ2IsY0FBYztFQUNkLGlCQUFpQjtFQUNqQiwwQkFBMEI7RUFDMUIsaUJBQWlCO0VBQ2pCLGlCQUFpQjtDQUNsQjtBQUVEO0VBQ0UsY0FBYztFQUNkLHdCQUF3QjtFQUN4QixvQkFBb0I7RUFDcEIsWUFBWTtFQUNaLGFBQWE7RUFDYixjQUFjO0VBQ2QsaUJBQWlCO0VBQ2pCLG1CQUFtQjtFQUNuQiwwQkFBMEI7RUFDMUIsaUJBQWlCO0VBQ2pCLGlCQUFpQjtDQUNsQjtBQUVEO0VBQ0UsMEJBQTBCO0VBQzFCLHdCQUF3QjtDQUN6Qjs7QUM2L0JEO0VBQ0UsY0FBYztDQUNmO0FBRUQ7OztFQUdFLGNBQWM7Q0FDZjtBQUVEO0VBQ0UsY0FBYztFQUNkLE9BQU87RUFDUCx5QkFBeUI7RUFDekIsb0JBQW9CO0VBQ3BCLGdCQUFnQjtFQUNoQixZQUFZO0NBQ2I7QUFFRDtFQUNFLFlBQVk7RUFDWixhQUFhO0VBQ2IsY0FBYztFQUNkLHdCQUF3QjtFQUN4QixvQkFBb0I7RUFDcEIsb0JBQW9CO0VBQ3BCLGVBQWU7RUFDZiwwQkFBMEI7RUFDMUIsaUJBQWlCO0VBQ2pCLGtCQUFrQjtFQUNsQixnQkFBZ0I7RUFDaEIsd0NBQXdDO0VBQ3hDLGdCQUFnQjtDQUNqQjtBQUVEO0VBQ0UsbUJBQW1CO0NBQ3BCO0FBRUQ7RUFDRSxvQkFBb0I7RUFDcEIsWUFBWTtDQUNiOztBQ3QzQkQ7RUFDRTtFQUNBO0VBQ0E7Q0EvakJEO0FBZ2tCQTtFQUVDO0NBOWpCRDtBQWdrQkE7RUFFQztDQTlqQkQ7QUErakJBO0VBSUM7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0EvakJEOzs7QUN3Y0Q7RUFDRSxXQUFXO0NBQ1o7QUFDRCw0QkFBNEI7QUFDNUI7QUFDRTtJQUNFLDJCQUEyQjtJQUMzQixVQUFVO0NBQ1g7QUFFRDtJQUNFLGNBQWM7Q0FDZjtBQUVEO0lBQ0UsdUJBQXVCO0lBQ3ZCLFVBQVU7Q0FDWDtBQUdEO0lBQ0UsdUJBQXVCO0lBQ3ZCLFVBQVU7SUFDVixxQkFBcUI7Q0FDdEI7QUFFRDtJQUNFLHdCQUF3QjtDQUN6QjtBQUVEO0lBQ0UsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtDQUNsQjtDQUNGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2haRCxxQ0FBcUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzJDckMsa0RBQWtEOztBQ3lRbEQ7SUFDSSxpQkFBaUI7Q0FDcEI7QUFFRDtJQUNJLGlCQUFpQjtJQUNqQixtQkFBbUI7Q0FDdEI7QUFFRDtJQUNJLGdCQUFnQjtJQUNoQixZQUFZO0lBQ1osaUJBQWlCO0NBQ3BCOztBQ3dORDtJQUNJLGNBQWM7SUFDZCxVQUFVO0lBQ1YsMkJBQTJCO0NBQzlCO0FBRUQ7SUFDSSxrQkFBa0I7SUFDbEIsMEJBQTBCO0lBQzFCLG1CQUFtQjtJQUNuQixjQUFjO0NBQ2pCO0FBRUQ7SUFDSSxrQkFBa0I7SUFDbEIsMEJBQTBCO0lBQzFCLG1CQUFtQjtJQUNuQixjQUFjO0lBQ2QsbUJBQW1CO0NBQ3RCO0FBRUQ7SUFDSSxjQUFjO0lBQ2QsMEJBQTBCO0lBQzFCLG1CQUFtQjtJQUNuQixpQkFBaUI7Q0FDcEI7QUFFRDtJQUNJLG1CQUFtQjtDQUN0QjtBQUVEO0lBQ0ksY0FBYztJQUNkLG1CQUFtQjtJQUNuQixTQUFTO0lBQ1QsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixjQUFjO0NBQ2pCO0FBRUQ7SUFDSSxlQUFlO0NBQ2xCO0FBRUQ7SUFDSSxjQUFjO0lBQ2QsK0JBQStCO0lBQy9CLG9CQUFvQjtJQUNwQixvQkFBb0I7SUFDcEIscUJBQXFCO0lBQ3JCLDhCQUE4QjtDQUNqQztBQUVEO0lBQ0ksaUJBQWlCO0lBQ2pCLFlBQVk7Q0FDZjtBQUVEO0lBQ0ksY0FBYztJQUNkLHVCQUF1QjtJQUN2QixVQUFVO0NBQ2I7QUFFRDtJQUNJLGlCQUFpQjtDQUNwQjtBQUVEOztJQUVJLGFBQWE7SUFDYixnQkFBZ0I7Q0FDbkI7QUFFRDtJQUNJLFlBQVk7SUFDWixpQkFBaUI7Q0FDcEI7QUFFRDtJQUNJLGNBQWM7Q0FDakI7QUFFRDtJQUNJLGNBQWM7SUFDZCxVQUFVO0lBQ1YsMkJBQTJCO0NBQzlCO0FBRUQ7SUFDSSxrQkFBa0I7SUFDbEIsdUJBQXVCO0lBQ3ZCLG1CQUFtQjtJQUNuQixjQUFjO0lBQ2QsbUJBQW1CO0NBQ3RCO0FBRUQ7SUFDSSxjQUFjO0lBQ2QsdUJBQXVCO0lBQ3ZCLFVBQVU7Q0FDYjtBQUVEO0lBQ0ksZ0JBQWdCO0lBQ2hCLFlBQVk7SUFDWiwwQkFBMEI7SUFDMUIsaUJBQWlCO0NBQ3BCO0FBRUQ7SUFDSSxnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLFlBQVk7Q0FDZjtBQUVEO0lBQ0ksYUFBYTtDQUNoQjtBQUVEO0lBQ0ksY0FBYztJQUNkLDZEQUE2RDtJQUM3RCxVQUFVO0NBQ2I7QUFFRDtJQUNJLGNBQWM7SUFDZCx1QkFBdUI7SUFDdkIsNEJBQTRCO0lBQzVCLG9CQUFvQjtJQUNwQixnQkFBZ0I7SUFDaEIsMEJBQTBCO0lBQzFCLG1CQUFtQjtJQUNuQixrQkFBa0I7Q0FDckI7QUFFRDtJQUNJLGdCQUFnQjtJQUNoQixpQkFBaUI7SUFDakIsb0JBQW9CO0NBQ3ZCO0FBRUQ7SUFDSSxlQUFlO0NBQ2xCO0FBRUQ7SUFDSSxjQUFjO0NBQ2pCO0FBRUQ7SUFDSSxjQUFjO0NBQ2pCO0FBRUQ7SUFDSSxlQUFlO0NBQ2xCO0FBRUQ7SUFDSSxjQUFjO0lBQ2QsdUJBQXVCO0lBQ3ZCLFNBQVM7SUFDVCxRQUFRO0NBQ1g7QUFJRDtJQUNJLGNBQWM7SUFDZCxzQ0FBc0M7SUFDdEMsVUFBVTtJQUNWLFlBQVk7Q0FDZjtBQUNEO0lBQ0ksZ0JBQWdCO0NBQ25CO0FBS0Q7SUFDSSxjQUFjO0lBQ2Qsb0JBQW9CO0lBQ3BCLHdCQUF3QjtJQUN4QixnQkFBZ0I7SUFDaEIsWUFBWTtDQUNmO0FBRUQ7SUFDSSxnQkFBZ0I7SUFDaEIsb0JBQW9CO0lBQ3BCLHdCQUF3QjtDQUMzQjtBQUVEO0lBQ0ksY0FBYztJQUNkLHVCQUF1QjtJQUN2QixvQkFBb0I7SUFDcEIsU0FBUztDQUNaO0FBRUQ7SUFDSSxnQkFBZ0I7Q0FDbkI7QUFFRDtJQUNJLDZCQUE2QjtDQUNoQztBQUVEO0lBQ0ksaUJBQWlCO0NBQ3BCO0FBSUQ7SUFDSSxZQUFZO0lBQ1osZ0JBQWdCO0NBQ25CO0FBUUQ7SUFDSSxhQUFhO0lBQ2Isb0JBQW9CO0NBQ3ZCO0FBSUQ7SUFDSSxXQUFXO0NBQ2Q7O0FDN3hCRDtFQUNFLFlBQVk7RUFDWixlQUFlO0NBQ2hCO0FBRUQ7RUFDRSxjQUFjO0VBQ2QsZ0JBQWdCO0VBQ2hCLFNBQVM7Q0FDVjtBQUVEO0VBQ0UsZUFBZTtFQUNmLGFBQWE7Q0FDZDtBQUVEO0VBQ0UsZ0JBQWdCO0VBQ2hCLGlCQUFpQjtFQUNqQixZQUFZO0VBQ1osMEJBQTBCO0VBQzFCLHNCQUFzQjtFQUN0QixtQkFBbUI7RUFDbkIsb0JBQW9CO0VBQ3BCLGlCQUFpQjtFQUNqQix3QkFBd0I7Q0FDekI7QUFFRDtFQUNFLGNBQWM7RUFDZCxnQkFBZ0I7RUFDaEIsU0FBUztDQUNWO0FBRUQ7RUFDRSxxQkFBcUI7RUFDckIsb0JBQW9CO0VBQ3BCLFNBQVM7RUFDVCxnQkFBZ0I7RUFDaEIsaUJBQWlCO0VBQ2pCLFlBQVk7RUFDWixpQkFBaUI7RUFDakIsbUJBQW1CO0VBQ25CLGlCQUFpQjtFQUNqQixvQkFBb0I7RUFDcEIsZ0JBQWdCO0VBQ2hCLGlCQUFpQjtFQUNqQix3QkFBd0I7Q0FDekI7QUFFRDtFQUNFLGVBQWU7RUFDZixjQUFjO0VBQ2Qsb0JBQW9CO0NBQ3JCO0FBRUQ7RUFDRSxnQkFBZ0I7RUFDaEIsWUFBWTtDQUNiOztBQ3dCRDtJQUNJLGlCQUFpQjtJQUNqQixtQkFBbUI7Q0FDdEI7QUFFRDtJQUNJLFlBQVk7SUFDWixnQkFBZ0I7Q0FDbkI7QUFFRDtJQUNJLGdCQUFnQjtDQUNuQjtBQUVEO0lBQ0ksc0JBQXNCO0lBQ3RCLG9CQUFvQjtJQUNwQixvQkFBb0I7SUFDcEIsa0JBQWtCO0lBQ2xCLGtCQUFrQjtJQUNsQixtQkFBbUI7Q0FDdEI7QUFFRDtJQUNJLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsWUFBWTtDQUNmO0FBRUQ7SUFDSSxZQUFZO0lBQ1osZ0JBQWdCO0NBQ25COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2c4SkQ7Ozs7OztRQU1RO0FBQ1Isb0JBQW9CO0FBQ3BCLHNCQUFzQjtBQUN0QixLQUFLO0FBQ0w7RUFDRSwwQkFBMEI7Q0FDM0I7QUFFRDtFQUNFLGdCQUFnQjtFQUNoQixRQUFRO0VBQ1IsVUFBVTtFQUNWLGFBQWE7RUFDYixZQUFZO0VBQ1osYUFBYTtDQUNkO0FBRUQ7RUFDRSxnQkFBZ0I7RUFDaEIsUUFBUTtFQUNSLFVBQVU7RUFDVixhQUFhO0VBQ2IsWUFBWTtDQUNiO0FBRUQ7RUFDRSxnQkFBZ0I7Q0FDakI7QUFFRDtFQUNFLGdCQUFnQjtFQUNoQixRQUFRO0VBQ1IsYUFBYTtFQUNiLFlBQVk7RUFDWixhQUFhO0NBQ2Q7QUFFRDtFQUNFLFdBQVc7RUFDWCxnQkFBZ0I7Q0FDakI7QUFFRDtFQUNFLFdBQVc7RUFDWCxnQkFBZ0I7Q0FDakI7QUFFRDtFQUNFLGlCQUFpQjtDQUNsQjtBQUVEO0VBQ0Usa0JBQWtCO0NBQ25COztBQUVELHdCQUF3QjtBQUN4QixvQkFBb0I7QUFDcEIsWUFBWTtBQUNaLGVBQWU7QUFDZixpQkFBaUI7QUFDakIsZ0JBQWdCO0FBQ2hCLGlCQUFpQjtBQUNqQixLQUFLO0FBRUw7RUFDRSxnQkFBZ0I7RUFDaEIsUUFBUTtFQUNSLE9BQU87RUFDUCxhQUFhO0VBQ2IsWUFBWTtDQUNiOztBQUVEOztRQUVRO0FBQ1I7RUFDRSxxQkFBcUI7RUFDckIsZUFBZTtDQUNoQjtBQUVEO0VBQ0UsNkJBQTZCO0NBQzlCO0FBRUQ7RUFDRSxrQkFBa0I7Q0FDbkI7QUFFRDtFQUNFLGtCQUFrQjtDQUNuQjtBQUVEO0VBQ0Usa0JBQWtCO0NBQ25CO0FBRUQ7RUFDRSxrQkFBa0I7Q0FDbkI7QUFFRDtFQUNFLHNCQUFzQjtDQUN2QjtBQUVEO0VBQ0UsdUJBQXVCO0NBQ3hCO0FBRUQ7RUFDRSxnQkFBZ0I7RUFDaEIsV0FBVztFQUNYLGFBQWE7Q0FDZDtBQUVEO0VBQ0UsZ0JBQWdCO0VBQ2hCLFVBQVU7RUFDVixhQUFhO0NBQ2Q7QUFFRDtFQUNFLHlCQUF5QjtDQUMxQjtBQUVEO0VBQ0UsdUJBQXVCO0NBQ3hCO0FBRUQ7RUFDRSw0QkFBNEI7RUFDNUIsa0JBQWtCO0NBQ25CO0FBRUQ7RUFDRSwwQkFBMEI7RUFDMUIsb0JBQW9CO0VBQ3BCLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsWUFBWTtFQUNaLGdCQUFnQjtFQUNoQixnQkFBZ0I7RUFDaEIsVUFBVTtFQUNWLFlBQVk7RUFDWixtQkFBbUI7RUFDbkIsWUFBWTtFQUNaLFFBQVE7RUFDUiw4QkFBOEI7Q0FDL0I7QUFFRDtFQUNFLDBCQUEwQjtFQUMxQixvQkFBb0I7RUFDcEIsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixZQUFZO0VBQ1osZ0JBQWdCO0VBQ2hCLGdCQUFnQjtFQUNoQixVQUFVO0VBQ1YsWUFBWTtFQUNaLG1CQUFtQjtFQUNuQixXQUFXO0VBQ1gsUUFBUTtFQUNSLDhCQUE4QjtDQUMvQjtBQUVEO0VBQ0UsZ0JBQWdCO0VBQ2hCLFFBQVE7RUFDUixTQUFTO0VBQ1QsWUFBWTtFQUNaLGNBQWM7RUFDZCxvQkFBb0I7RUFDcEIsVUFBVTtFQUNWLFlBQVk7Q0FDYjtBQUVEO0VBQ0UsbUJBQW1CO0NBQ3BCO0FBRUQ7RUFDRSx5QkFBeUI7RUFDekIsWUFBWTtFQUNaLGlCQUFpQjtFQUNqQixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLFdBQVc7RUFDWCxvQkFBb0I7Q0FDckI7QUFFRDtFQUNFLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1osaUJBQWlCO0VBQ2pCLHNCQUFzQjtFQUN0QixrQkFBa0I7RUFDbEIscUJBQXFCO0VBQ3JCLFdBQVc7RUFDWCxvQkFBb0I7Q0FDckI7QUFFRDtFQUNFLDBCQUEwQjtFQUMxQixZQUFZO0NBQ2I7QUFFRDtBQUNFO0lBQ0UsNEJBQTRCO0NBQzdCO0FBRUQ7SUFDRSwrQkFBK0I7Q0FDaEM7Q0FDRjs7QUMxb0tEO0VBQ0Usa0JBQWtCO0NBQ25COztBQzJLRDtJQUNJLGlCQUFpQjtDQUNwQjtBQUVEO0lBQ0ksaUJBQWlCO0lBQ2pCLG1CQUFtQjtDQUN0QjtBQUVEO0lBQ0ksZ0JBQWdCO0lBQ2hCLFlBQVk7SUFDWixpQkFBaUI7Q0FDcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaWpKRDs7Ozs7O1FBTVE7QUFDUixvQkFBb0I7QUFDcEIsc0JBQXNCO0FBQ3RCLEtBQUs7QUFDTDtFQUNFLDBCQUEwQjtDQUMzQjtBQUVEO0VBQ0UsZ0JBQWdCO0VBQ2hCLFFBQVE7RUFDUixVQUFVO0VBQ1YsYUFBYTtFQUNiLFlBQVk7RUFDWixhQUFhO0NBQ2Q7QUFFRDtFQUNFLGdCQUFnQjtFQUNoQixRQUFRO0VBQ1IsVUFBVTtFQUNWLGFBQWE7RUFDYixZQUFZO0NBQ2I7QUFFRDtFQUNFLGdCQUFnQjtDQUNqQjtBQUVEO0VBQ0UsZ0JBQWdCO0VBQ2hCLFFBQVE7RUFDUixhQUFhO0VBQ2IsWUFBWTtFQUNaLGFBQWE7Q0FDZDtBQUVEO0VBQ0UsV0FBVztFQUNYLGdCQUFnQjtDQUNqQjtBQUVEO0VBQ0UsV0FBVztFQUNYLGdCQUFnQjtDQUNqQjtBQUVEO0VBQ0UsaUJBQWlCO0NBQ2xCO0FBRUQ7RUFDRSxrQkFBa0I7Q0FDbkI7O0FBRUQsd0JBQXdCO0FBQ3hCLG9CQUFvQjtBQUNwQixZQUFZO0FBQ1osZUFBZTtBQUNmLGlCQUFpQjtBQUNqQixnQkFBZ0I7QUFDaEIsaUJBQWlCO0FBQ2pCLEtBQUs7QUFFTDtFQUNFLGdCQUFnQjtFQUNoQixRQUFRO0VBQ1IsT0FBTztFQUNQLGFBQWE7RUFDYixZQUFZO0NBQ2I7O0FBRUQ7O1FBRVE7QUFDUjtFQUNFLHFCQUFxQjtFQUNyQixlQUFlO0NBQ2hCO0FBRUQ7RUFDRSw2QkFBNkI7Q0FDOUI7QUFFRDtFQUNFLGtCQUFrQjtDQUNuQjtBQUVEO0VBQ0Usa0JBQWtCO0NBQ25CO0FBRUQ7RUFDRSxrQkFBa0I7Q0FDbkI7QUFFRDtFQUNFLGtCQUFrQjtDQUNuQjtBQUVEO0VBQ0Usc0JBQXNCO0NBQ3ZCO0FBRUQ7RUFDRSx1QkFBdUI7Q0FDeEI7QUFFRDtFQUNFLGdCQUFnQjtFQUNoQixXQUFXO0VBQ1gsYUFBYTtDQUNkO0FBRUQ7RUFDRSxnQkFBZ0I7RUFDaEIsVUFBVTtFQUNWLGFBQWE7Q0FDZDtBQUVEO0VBQ0UseUJBQXlCO0NBQzFCO0FBRUQ7RUFDRSx1QkFBdUI7Q0FDeEI7QUFFRDtFQUNFLDRCQUE0QjtFQUM1QixrQkFBa0I7Q0FDbkI7QUFFRDtFQUNFLDBCQUEwQjtFQUMxQixvQkFBb0I7RUFDcEIsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixZQUFZO0VBQ1osZ0JBQWdCO0VBQ2hCLGdCQUFnQjtFQUNoQixVQUFVO0VBQ1YsWUFBWTtFQUNaLG1CQUFtQjtFQUNuQixZQUFZO0VBQ1osUUFBUTtFQUNSLDhCQUE4QjtDQUMvQjtBQUVEO0VBQ0UsMEJBQTBCO0VBQzFCLG9CQUFvQjtFQUNwQixhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLFlBQVk7RUFDWixnQkFBZ0I7RUFDaEIsZ0JBQWdCO0VBQ2hCLFVBQVU7RUFDVixZQUFZO0VBQ1osbUJBQW1CO0VBQ25CLFdBQVc7RUFDWCxRQUFRO0VBQ1IsOEJBQThCO0NBQy9CO0FBRUQ7RUFDRSxnQkFBZ0I7RUFDaEIsUUFBUTtFQUNSLFNBQVM7RUFDVCxZQUFZO0VBQ1osY0FBYztFQUNkLG9CQUFvQjtFQUNwQixVQUFVO0VBQ1YsWUFBWTtDQUNiO0FBRUQ7RUFDRSxtQkFBbUI7Q0FDcEI7QUFFRDtFQUNFLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1osaUJBQWlCO0VBQ2pCLHFCQUFxQjtFQUNyQixxQkFBcUI7RUFDckIsV0FBVztFQUNYLG9CQUFvQjtDQUNyQjtBQUVEO0VBQ0UseUJBQXlCO0VBQ3pCLFlBQVk7RUFDWixpQkFBaUI7RUFDakIsc0JBQXNCO0VBQ3RCLGtCQUFrQjtFQUNsQixxQkFBcUI7RUFDckIsV0FBVztFQUNYLG9CQUFvQjtDQUNyQjtBQUVEO0VBQ0UsMEJBQTBCO0VBQzFCLFlBQVk7Q0FDYjtBQUVEO0FBQ0U7SUFDRSw0QkFBNEI7Q0FDN0I7QUFFRDtJQUNFLCtCQUErQjtDQUNoQztDQUNGO0FBRUQ7RUFDRSxjQUFjO0NBQ2Y7QUFFRDtFQUNFLGNBQWM7Q0FDZjtBQUVEO0VBQ0UsMEJBQTBCO0NBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqZ0tEOztPQUVPOztBQ3lhUDtFQUNFO0VBQ0E7RUFDQTtFQUNBO0NBMWxCRDtBQTJsQkE7RUFHQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0NBMWxCRDtBQXFsQkQ7RUFRSTtFQUNBO0NBemxCSDtBQWdsQkQ7RUFlUTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0NBM2xCUDtBQXdrQkQ7RUF1QlE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDQTNsQlA7QUFna0JEO0VBZ0NVO0NBNWxCVDtBQTRqQkQ7RUFzQ1U7Q0E5bEJUO0FBd2pCRDtFQTRDVTtDQWhtQlQ7QUFvakJEO0VBa0RVO0NBbG1CVDtBQWdqQkQ7RUF3RFU7RUFDQTtFQUNBO0NBcG1CVDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4REQsK0JBQStCO0FBQy9CO0lBQ0kseUJBQXlCO0NBQzVCO0FBQ0Q7SUFDSSxXQUFXOztBQ3FEZjtJQUNJLGlCQUFpQjtDQUNwQjtBQUVEO0lBQ0ksa0JBQWtCO0NBQ3JCO0FBRUQ7SUFDSSxpQkFBaUI7Q0FDcEI7QUFFRDtJQUNJLGlCQUFpQjtDQUNwQjtBQ3hFRCxrQ0FBa0Msa0JBQWtCLE1BQU0sT0FBTyxXQUFXLFdBQVcsWUFBWSxZQUFZLDZCQUE2QixvQkFBb0IsY0FBYyxnQkFBZ0IsU0FBUyxDQUFDLHlDQUF5QyxjQUFjLGtCQUFrQixNQUFNLE9BQU8sWUFBWSxXQUFXLGdCQUFnQixvQkFBb0IsVUFBVSxDQUFDLDJDQUEyQyxnQkFBZ0IsV0FBVyxZQUFZLGtCQUFrQixzQkFBc0Isb0NBQW9DLENBQUMsaURBQWlELG1CQUFtQixpQkFBaUIsQ0FBQyxpREFBaUQsaUJBQWlCLENBQUMsVUFBVSwwQkFBMEIsdUJBQXVCLGlCQUFpQixDQUFDLGtCQUFrQixhQUFhLENBQUMsMkNBQTJDLGtCQUFrQixVQUFVLHVDQUF1QyxDQUFDLDBDQUEwQyxtQkFBbUIsVUFBVSx1QkFBdUIsQ0FBQywySEFBMkgseUJBQXlCLENBQUMsaUJBQWlCLGtCQUFrQixxQkFBcUIsQ0FBQywyQkFBMkIsV0FBVyxXQUFXLENBQUMsOENBQThDLG1CQUFtQixrQkFBa0IsTUFBTSxPQUFPLFFBQVEsUUFBUSxDQUFDLHVCQUF1QixrQkFBa0IsZ0JBQWdCLENBQUMsdUJBQXVCLGdCQUFnQixDQUFDLDZJQUE2SSxTQUFTLENBQUMsNklBQTZJLFNBQVMsQ0FBQywwSUFBMEksc0JBQXNCLHdDQUF3Qyx5Q0FBeUMseUNBQXlDLENBQUMscUVBQXFFLFFBQVEsQ0FBQyw0RUFBNEUsS0FBSyxDQUFDLGdKQUFnSixtQkFBbUIsd0NBQXdDLHlDQUF5QyxzQ0FBc0MsQ0FBQyx3RUFBd0UsUUFBUSxDQUFDLHdFQUF3RSxRQUFRLENBQUMsNklBQTZJLFFBQVEsQ0FBQyw2SUFBNkksUUFBUSxDQUFDLDhJQUE4SSxvQkFBb0Isd0NBQXdDLHVDQUF1Qyx5Q0FBeUMsQ0FBQyx1RUFBdUUsU0FBUyxDQUFDLHVFQUF1RSxTQUFTLENBQUMsMEVBQTBFLFdBQVcsQ0FBQyw0SUFBNEkscUJBQXFCLHVDQUF1Qyx5Q0FBeUMseUNBQXlDLENBQUMsc0VBQXNFLFNBQVMsQ0FBQywwQ0FBMEMsMEJBQTBCLFdBQVcsa0JBQWtCLG9CQUFvQixDQUFDLGdEQUFnRCwyQkFBMkIiLCJmaWxlIjoiYXBwLjQ0OTdhYTAwLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLmxpbmtDb2xvciB7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL3JlZ2lzdHJhdGlvbi9QYXltZW50T3B0aW9ucy52dWUiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4ubGlua0NvbG9yIHtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvcmVnaXN0cmF0aW9uL1N0ZXAxMS52dWUiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5saW5rQ29sb3Ige1xuICBjb2xvcjogd2hpdGU7XG59XG4ucHQtMTAge1xuICBwYWRkaW5nLXRvcDogMTBweDtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL3JlZ2lzdHJhdGlvbi9TdGVwMTIudnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLnRlcm1zYWdyZWUsIC5jdXN0b20tY2hlY2tib3h7XG4gICAgcG9zaXRpb246IHVuc2V0ICFpbXBvcnRhbnQ7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9yZWdpc3RyYXRpb24vT25saW5lUGF5bWVudC52dWUiLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlIGludml0ZVBlb3BsZSBtb2RhbGJnIGNhbmNlbHN1YnNjcmlwdGlvbk1vZGFsIGRlbGV0ZWNoYW5uZWwgdXBsb2FkTG9nbyBDb21wYW55VXBsb2FkTG9nb1wiXG4gICAgaWQ9XCJ1cGxvYWRMb2dvXCIgcm9sZT1cImRpYWxvZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtbGcgbW9kYWwtZGlhbG9nLWNlbnRlcmVkXCIgcm9sZT1cImRvY3VtZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgPGgyIGNsYXNzPVwibW9kYWwtdGl0bGVcIj57eyB0aXRsZSA/IHRpdGxlIDogYXBwVHJhbnMuZXBpc29kZXMudXBsb2FkX2xvZ28gfX08L2gyPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+PHNwYW4+w5c8L3NwYW4+PC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcmFnLWJ0blwiIGlkPVwiZHJhZy1idG5cIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaW5wdXQtZmlsZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJhZ2FhbmRkcm9wYnV0dG9uIGJ0biBnbG9iYWwtYnRuLW1kIGdyYWRpZW50YnRuIHNwYWNlYnRuXCI+e3tcbiAgICAgICAgICAgICAgICAgIGFwcFRyYW5zLmVwaXNvZGVzLnBvcHVwX3VwbG9hZF9waWNfc2VsZWN0X2ltYWdlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGFjY2VwdD1cImltYWdlLypcIiBuYW1lPVwiZmlsZVwiIHJlZj1cImZpbGVcIiBAY2hhbmdlPVwibG9hZEltYWdlKCRldmVudCwgZmFsc2UpXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1ibG9jayAgZm9ybS1jb250cm9sIGhpZGRlblwiIC8+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGF0Zm9ybSB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC1pbWFnZXMtdmlldyByb3dcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwibWluLWhlaWdodDoyMDBweDtoZWlnaHQ6IDEwMCU7bGluZS1oZWlnaHQ6IDIwMHB4O3dpZHRoOjEwMCU7cGFkZGluZy1sZWZ0OjE1cHhcIiBpZD1cImltYWdlcy12aWV3XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBAZHJvcC5wcmV2ZW50PVwibG9hZEltYWdlKCRldmVudCwgdHJ1ZSlcIiBAZHJhZ292ZXIucHJldmVudFxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDo1MCU7bWluLWhlaWdodDoyMDNweDtoZWlnaHQ6MjAwcHg7Ym9yZGVyOiBkb3R0ZWQgMXB4IGdyYXk7cGFkZGluZzogMHB4O1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIiBjb2wtc20tNlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyYWdhYW5kZHJvcGJ1dHRvblwiIGlkPVwiZHJhZ2FuZGRyb3B0ZXh0XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtwb3NpdGlvbjogYWJzb2x1dGU7XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGFwcFRyYW5zLmVwaXNvZGVzLnBvcHVwX3VwbG9hZF9waWNfZHJhZ19pbWFnZSB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZUxvZ29cIiB2LWlmPVwiaW1nU3JjXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjcm9wcGVyIDpzdGVuY2lsLXByb3BzPVwic3RlbmNpbFByb3BcIiBjbGFzc25hbWU9XCJjcm9wcGVyXCIgcmVmPVwiY3JvcHBlclwiIDpzcmM9XCJpbWdTcmNcIlxuICAgICAgICAgICAgICAgICAgICAgIEBjaGFuZ2U9XCJjcm9wXCI+PC9jcm9wcGVyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOjUwJTtoZWlnaHQ6MjAzcHg7Ym9yZGVyOiBkb3R0ZWQgMXB4IGdyYXk7cGFkZGluZzogMHB4OyBvdmVyZmxvdzpoaWRkZW47IHBvc2l0aW9uOnJlbGF0aXZlO1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIiBjb2wtc20tNlwiIEBkcmFnZW50ZXIucHJldmVudCBAZHJhZ292ZXIucHJldmVudD5cbiAgICAgICAgICAgICAgICAgIDxpbWcgdi1pZj1cImNyb3BwZWRJbWFnZVNyY1wiIDpzcmM9XCJjcm9wcGVkSW1hZ2VTcmNcIiBzdHlsZT1cImhlaWdodDoxMDAlOyB3aWR0aDphdXRvO1wiIGFsdD1cInBob3RvXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkZWZhdWx0aW1hZ2VzXCIgaWQ9XCJ1cGxvYWRpbWFnZWJsb2Nrc2hvd1wiIC8+XG4gICAgICAgICAgICAgICAgICA8ZGl2IHYtZWxzZSBjbGFzcz1cImRyYWdhYW5kZHJvcGJ1dHRvblwiIGlkPVwiZHJhZ2FuZGRyb3BwcmV2aWV3XCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJTtib3JkZXI6IGRvdHRlZCAxcHggZ3JheTsgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgYXBwVHJhbnMuZXBpc29kZXMucG9wdXBfdXBsb2FkX3BpY19wcmV2aWV3X2ltYWdlIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBkcmFnLWJ0biBzYXZlQ2FuY2VsYnRuc1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC0xMiBkLWZsZXggZmxleC1yb3ctcmV2ZXJzZSBwci0wXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBjbGFzcz1cImJ0biBnbG9iYWwtYnRuLW1kIGJvcmRlcmVkLXRyYW5zcGFyZW50YnRuXCI+XG4gICAgICAgICAgICAgICAgICB7eyBhcHBUcmFucy5lcGlzb2Rlcy5jYW5jZWxfYnV0dG9uIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJzYXZlX3BvcHVwX2ltYWdlXCIgY2xhc3M9XCJidG4gZ2xvYmFsLWJ0bi1tZFwiXG4gICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJpbWdTcmMgPyAnZ3JhZGllbnRidG4nIDogJ2Rpc2FibGVkYnRuJ1wiIEBjbGljaz1cInNhdmVJbWFnZVwiPlxuICAgICAgICAgICAgICAgICAge3sgYXBwVHJhbnMuY29tbW9uLnJlYWR5IH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5pbXBvcnQgeyBDcm9wcGVyIH0gZnJvbSAndnVlLWFkdmFuY2VkLWNyb3BwZXInO1xuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnaW1hZ2Vjcm9wcGVyJyxcbiAgY29tcG9uZW50czoge1xuICAgIENyb3BwZXIsXG4gIH0sXG4gIHByb3BzOiBbJ3RpdGxlJ10sXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNyb3BwZWRJbWFnZVNyYzogJycsXG4gICAgICBzaG93TW9kYWw6IGZhbHNlLFxuICAgICAgaW1nU3JjOiAnJyxcbiAgICAgIGNvb3JkaW5hdGVzOiB7XG4gICAgICAgIHdpZHRoOiAwLFxuICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICAgIHRvcDogMCxcbiAgICAgIH0sXG4gICAgICBzdGVuY2lsUHJvcDogeyBhc3BlY3RSYXRpbzogMTYgLyA5IH0sXG4gICAgfTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIC8qKlxuICAgICAqIENyb3AgaW1hZ2UgYW5kIHVwZGF0ZSBQcmV2aWV3XG4gICAgICovXG5cbiAgICBjcm9wKCkge1xuICAgICAgY29uc3QgeyBjb29yZGluYXRlcywgY2FudmFzIH0gPSB0aGlzLiRyZWZzLmNyb3BwZXIuZ2V0UmVzdWx0KCk7XG4gICAgICB0aGlzLmNvb3JkaW5hdGVzID0gY29vcmRpbmF0ZXM7XG4gICAgICAvLyBZb3UgYWJsZSB0byBkbyBkaWZmZXJlbnQgbWFuaXB1bGF0aW9ucyBhdCBhIGNhbnZhc1xuICAgICAgLy8gYnV0IHRoZXJlIHdlIGp1c3QgZ2V0IGEgY3JvcHBlZCBpbWFnZVxuICAgICAgdGhpcy5jcm9wcGVkSW1hZ2VTcmMgPSBjYW52YXMudG9EYXRhVVJMKCk7XG4gICAgICBjYW52YXMudG9CbG9iKHJlc3VsdCA9PiB7IH0sICdpbWFnZS9qcGVnJyk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIHNlbmQgYmxvYiBpbWFnZSB0byBwYXJlbnQgY29tcG9uZW50IGFuZCByZXNldCB2YWx1ZXNcbiAgICAgKi9cblxuICAgIHNhdmVJbWFnZSgpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2NsaWNrZWQnLCB0aGlzLmNyb3BwZWRJbWFnZVNyYyk7XG4gICAgICB0aGlzLmNyb3BwZWRJbWFnZVNyYyA9ICcnO1xuICAgICAgKHRoaXMuaW1nU3JjID0gJycpLCAkKCcjdXBsb2FkTG9nbycpLm1vZGFsKCdoaWRlJyk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIE9uIGZpbGUgdXBsb2FkIHJlYWQgZmlsZSBhbmQgdXBkYXRlIGRvbSBpZiBpdCdzIHZhbGlkIGZpbGVcbiAgICAgKi9cblxuICAgIGxvYWRJbWFnZShldmVudCwgZHJvcCkge1xuICAgICAgLy8gUmVmZXJlbmNlIHRvIHRoZSBET00gaW5wdXQgZWxlbWVudFxuICAgICAgdmFyIGlucHV0ID0gZHJvcCA/IGV2ZW50LmRhdGFUcmFuc2ZlciA6IGV2ZW50LnRhcmdldDtcbiAgICAgIC8vIEVuc3VyZSB0aGF0IHlvdSBoYXZlIGEgZmlsZSBiZWZvcmUgYXR0ZW1wdGluZyB0byByZWFkIGl0XG4gICAgICBpZiAoaW5wdXQuZmlsZXMgJiYgaW5wdXQuZmlsZXNbMF0gJiYgdGhpcy52YWxpZGF0ZUltYWdlKGlucHV0LmZpbGVzWzBdKSkge1xuICAgICAgICAvLyBjcmVhdGUgYSBuZXcgRmlsZVJlYWRlciB0byByZWFkIHRoaXMgaW1hZ2UgYW5kIGNvbnZlcnQgdG8gYmFzZTY0IGZvcm1hdFxuICAgICAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgLy8gRGVmaW5lIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcnVuLCB3aGVuIEZpbGVSZWFkZXIgZmluaXNoZXMgaXRzIGpvYlxuICAgICAgICByZWFkZXIub25sb2FkID0gZSA9PiB7XG4gICAgICAgICAgLy8gTm90ZTogYXJyb3cgZnVuY3Rpb24gdXNlZCBoZXJlLCBzbyB0aGF0IFwidGhpcy5pbWFnZURhdGFcIiByZWZlcnMgdG8gdGhlIGltYWdlRGF0YSBvZiBWdWUgY29tcG9uZW50XG4gICAgICAgICAgLy8gUmVhZCBpbWFnZSBhcyBiYXNlNjQgYW5kIHNldCB0byBpbWFnZURhdGFcbiAgICAgICAgICB0aGlzLmltZ1NyYyA9IGUudGFyZ2V0LnJlc3VsdDtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gU3RhcnQgdGhlIHJlYWRlciBqb2IgLSByZWFkIGZpbGUgYXMgYSBkYXRhIHVybCAoYmFzZTY0IGZvcm1hdClcbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoaW5wdXQuZmlsZXNbMF0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0ZSBpbWFnZVxuICAgICAqL1xuXG4gICAgdmFsaWRhdGVJbWFnZShpbWFnZSkge1xuICAgICAgdmFyIGZpbGVFeHRlbnNpb24gPSBbJ2pwZWcnLCAnanBnJywgJ3BuZycsICdnaWYnLCAnYm1wJ107XG4gICAgICB2YXIgcGVybWl0dGVkc2l6ZSA9IDEwO1xuICAgICAgdmFyIGltYWdlbmFtZSA9IGltYWdlLm5hbWUuc3BsaXQoJy4nKTtcbiAgICAgIHZhciBleHRlbnNpb24gPSAkLmluQXJyYXkoaW1hZ2VuYW1lW2ltYWdlbmFtZS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpLCBmaWxlRXh0ZW5zaW9uKTtcbiAgICAgIC8vIGNoZWNrIGZpbGUgZXh0ZW5zaW9uIGV4aXN0cyBpbiB0aGUgbGlzdFxuICAgICAgaWYgKGV4dGVuc2lvbiAhPSAtMSkge1xuICAgICAgICBpZiAoaW1hZ2Uuc2l6ZSAvIDEwMjQgLyAxMDI0IDw9IHBlcm1pdHRlZHNpemUpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtbV9tZXNzYWdlci5kaXNwbGF5X3RpbWVyX21lc3NhZ2UodGhpcy5hcHBUcmFucy5tZXNzYWdlcy5pbWFnZS5lcnJvcl9zaXplKSwgJ3dhcm5pbmcnO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbW1fbWVzc2FnZXIuZGlzcGxheV90aW1lcl9tZXNzYWdlKHRoaXMuYXBwVHJhbnMubWVzc2FnZXMuaW1hZ2UuZXJyb3JfdHlwZSwgJ3dhcm5pbmcnKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gIH0sXG4gIGJlZm9yZU1vdW50KCkgeyB9LFxuICBtb3VudGVkKCkge1xuICAgIGlmICh0aGlzLiRyb3V0ZS5wYXRoID09ICcvdXNlcm1hbmFnZW1lbnQvcGVyc29uYWxTZXR0aW5ncycpIHtcbiAgICAgIHRoaXMuJHNldCh0aGlzLnN0ZW5jaWxQcm9wLCAnYXNwZWN0UmF0aW8nLCAxIC8gMSk7XG4gICAgfVxuICB9LFxufTtcbjwvc2NyaXB0PlxuPHN0eWxlIHNjb3BlZD5cbi5wcm9maWxlTG9nbyB7XG4gIGhlaWdodDogMjAwcHggIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZDogIzExMGExYTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tdG9wOiAxcHg7XG59XG5cbi5wcm9maWxlTG9nbyAudnVlLWFkdmFuY2VkLWNyb3BwZXIge1xuICBwb3NpdGlvbjogdW5zZXQgIWltcG9ydGFudDtcbn1cbjwvc3R5bGU+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9jb21tb24vdnVlL2NvbXBvbmVudHMvY29tbW9uL0ltYWdlQ3JvcHBlci52dWUiLCI8dGVtcGxhdGU+XG4gIDxzZWN0aW9uPlxuICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZm9ybXNlY3Rpb25cIiB2LWlmPVwic3RhZ2UgPT0gJ3VzZXJtJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtIGNvbC1sZy0yIHByLTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBnbG9iYWwtbGFiZWxcIj5cbiAgICAgICAgICAgIDxsYWJlbD57eyBhcHBUcmFucy5pbnZpdGVfbWVtYmVycy5mb3JtX3RpdGxlMSB9fTwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtIGNvbC1sZy0yIHByLTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBnbG9iYWwtbGFiZWxcIj5cbiAgICAgICAgICAgIDxsYWJlbD57eyBhcHBUcmFucy5pbnZpdGVfbWVtYmVycy5mb3JtX3RpdGxlNCB9fTwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGNvbC1sZy01IHByLTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBnbG9iYWwtbGFiZWxcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNhcGl0YWxpemVcIj57eyBhcHBUcmFucy5pbnZpdGVfbWVtYmVycy5mb3JtX3RpdGxlMiB9fTwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGNvbC1sZy0yIHByLTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBnbG9iYWwtbGFiZWxcIj5cbiAgICAgICAgICAgIDxsYWJlbD57eyBhcHBUcmFucy5pbnZpdGVfbWVtYmVycy5mb3JtX3RpdGxlMyB9fTwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgY29sLWxnLTFcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiByZWY9XCJmb3JtXCIgdi1mb3I9XCIobSwgbWluZGV4KSBpbiAkdi5tZW1iZXJzLiRlYWNoLiRpdGVyXCIgOmtleT1cIm1pbmRleFwiIGNsYXNzPVwicm93IGZvcm1zZWN0aW9uIHVzZXJEYXRhQmxvY2tcIlxuICAgICAgICBpZD1cImZpcnN0VXNlckFkZEJsb2NrXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20gY29sLWxnLTIgcHItMCBwbC0xXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiA6Y2xhc3M9XCJ7IGVycm9ybXNnOiAhbS5mbmFtZS5yZXF1aXJlZCAmJiBzdWJtaXR0ZWQgfVwiPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImZpcnN0bmFtZVwiIGNsYXNzPVwibW9iaWxlbGFiZWxcIj57eyBhcHBUcmFucy5pbnZpdGVfbWVtYmVycy5mb3JtX3RpdGxlMSB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiB2LW1vZGVsLnRyaW09XCJtLmZuYW1lLiRtb2RlbFwiIGNsYXNzPVwibW0taW5wdXQtbWQgZm9ybS1jb250cm9sIGZpcnN0QmxvY2tJbnB1dFwiXG4gICAgICAgICAgICAgIGlkPVwiZnVsbG5hbWVcIiA6cGxhY2Vob2xkZXI9XCJhcHBUcmFucy5pbnZpdGVfbWVtYmVycy5mb3JtX3RpdGxlMVwiIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1kYW5nZXJcIiB2LWlmPVwiIW0uZm5hbWUucmVxdWlyZWQgJiYgc3VibWl0dGVkXCI+e3sgYXBwVHJhbnMubWVzc2FnZXMuaW52aXRlX21lbWJlcnMubm9fbmFtZVxuICAgICAgICAgICAgfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20gY29sLWxnLTIgcHItMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwibGFzdG5hbWVcIiBjbGFzcz1cIm1vYmlsZWxhYmVsXCI+e3sgYXBwVHJhbnMuaW52aXRlX21lbWJlcnMuZm9ybV90aXRsZTQgfX08L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbC50cmltPVwibS5sbmFtZS4kbW9kZWxcIiBjbGFzcz1cIm1tLWlucHV0LW1kIGZvcm0tY29udHJvbCBmaXJzdEJsb2NrSW5wdXRcIlxuICAgICAgICAgICAgICBpZD1cImxhc3RuYW1lXCIgOnBsYWNlaG9sZGVyPVwiYXBwVHJhbnMuaW52aXRlX21lbWJlcnMuZm9ybV90aXRsZTRcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBjb2wtbGctNSBwci0wXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiA6Y2xhc3M9XCJ7IGVycm9ybXNnOiAoIW0uZW1haWwucmVxdWlyZWQgfHwgIW0uZW1haWwuZW1haWwpICYmIHN1Ym1pdHRlZCB9XCI+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiZW1haWxhZGRyZXNzXCIgY2xhc3M9XCJtb2JpbGVsYWJlbFwiPnt7IGFwcFRyYW5zLmludml0ZV9tZW1iZXJzLmZvcm1fdGl0bGUyIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZW1haWxcIiB2LW1vZGVsLnRyaW09XCJtLmVtYWlsLiRtb2RlbFwiIEBibHVyPVwidmFsaWRhdGVFbWFpbChtLmVtYWlsLiRtb2RlbCwgbWluZGV4KVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibW0taW5wdXQtbWQgZm9ybS1jb250cm9sIGVtYWlsYWRkcmVzcyBlbWFpbEFkZHJlc3MgZmlyc3RCbG9ja0lucHV0XCIgaWQ9XCJlbWFpbGFkZHJlc3NcIlxuICAgICAgICAgICAgICA6cGxhY2Vob2xkZXI9XCJhcHBUcmFucy5pbnZpdGVfbWVtYmVycy5mb3JtX3RpdGxlMlwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgdi1pZj1cIighbS5lbWFpbC5yZXF1aXJlZCB8fCAhbS5lbWFpbC5lbWFpbCkgJiYgc3VibWl0dGVkXCI+Knt7XG4gICAgICAgICAgICAgIGFwcFRyYW5zLmludml0ZV9tZW1iZXJzLm1lc3NhZ2VzLm5vdHZhbGlkX2VtYWlsIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBjb2wtbGctMiBwci0wXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJyb2xlXCIgY2xhc3M9XCJtb2JpbGVsYWJlbFwiPnt7IGFwcFRyYW5zLmludml0ZV9tZW1iZXJzLmZvcm1fdGl0bGUzIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RwaWNrZXIgcm9sZXNkcm9wIGZvcm0tY29udHJvbCB1c2VyTmV3SW52aXRlUm9sZSBmaXJzdEJsb2NrSW5wdXQgY2hhbmdlUm9sZS1hZGQgbW0tc2VsZWN0LW1kXCJcbiAgICAgICAgICAgICAgdi1tb2RlbD1cIm0ucm9sZS4kbW9kZWxcIiBkYXRhLXNpemU9XCI1XCIgQGNoYW5nZT1cImNvdW50VXNlcnMoKVwiXG4gICAgICAgICAgICAgIDp0aXRsZT1cImFwcFRyYW5zLmludml0ZV9tZW1iZXJzLmZvcm1fcm9sZV9kZWZhdWx0XCIgcmVxdWlyZWQgaWQ9XCJyb2xlXCI+XG4gICAgICAgICAgICAgIDxvcHRpb24gdi1mb3I9XCIocm9sZSwgaW5kZXgpIGluIHJvbGVzXCIgOnZhbHVlPVwicm9sZS5yaWRcIiA6a2V5PVwiaW5kZXhcIj57eyByb2xlLm5hbWUgfX08L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgdi1pZj1cIiFtLnJvbGUucmVxdWlyZWQgJiYgc3VibWl0dGVkXCI+e3sgYXBwVHJhbnMubWVzc2FnZXMuaW52aXRlX21lbWJlcnMubm9fcm9sZSB9fTwvc3Bhbj4gLS0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgY29sLWxnLTFcIj5cbiAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgQGNsaWNrPVwiZGVsZXRlTWVtYmVyKG1pbmRleClcIiBjbGFzcz1cImRlbGV0ZWludml0ZXBlb3BsZWxpc3QgZGVsZXRlTWVtYmVyXCJcbiAgICAgICAgICAgIGlkPVwiZGVsZXRlTWVtYmVyRmlyc3RcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2hcIj48L2k+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgZm9ybXNlY3Rpb25cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20gcC0wXCI+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImJ0biBnbG9iYWwtYnRuLXNtIHByaW1hcnktY29sb3JidG5cIiBpZD1cImFkZE1vcmVcIiBAY2xpY2s9XCJhZGRNZW1iZXJcIj48aVxuICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS1wbHVzXCI+PC9pPiB7eyBhcHBUcmFucy5pbnZpdGVfbWVtYmVycy5hZGRfcm93IH19PC9hPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJvdyBmb3Jtc2VjdGlvbiBkb21haW5jb25maXJtc2VjdGlvblwiIGlkPVwiZG9tYWluQ29uZmlybVNlY3Rpb25cIiBzdHlsZT1cImRpc3BsYXk6bm9uZTtcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc21cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJkb21haW50eHRcIj5cbiAgICAgICAgICA8aW1nIDpzcmM9XCInL2J1bmRsZXMvYWRtaW4vaW1hZ2VzL2V4Y2xhbWF0aW9uLWNpcmNsZS5wbmcnXCIgYWx0PVwiXCIgLz5cbiAgICAgICAgICB7eyBhcHBUcmFucy5pbnZpdGVfbWVtYmVycy5kaWZmZXJlbnRfZG9tYWluIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHAgY2xhc3M9XCJub3RpY2V0eHRcIj5cbiAgICAgICAgICB7eyBhcHBUcmFucy5pbnZpdGVfbWVtYmVycy5kaWZmZXJlbnRfZG9tYWluX3RleHQgfX06XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZXdFeHRlbnNpb25cIiBpZD1cIm5ld0V4dGVuc2lvblwiPjwvc3Bhbj5cbiAgICAgICAgICB7eyBhcHBUcmFucy5pbnZpdGVfbWVtYmVycy5kaWZmZXJlbnRfZG9tYWluX3RleHQxIH19XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJvbGRFeHRlbnNpb25cIiBpZD1cIm9sZEV4dGVuc2lvblwiPjwvc3Bhbj4uXG4gICAgICAgICAge3sgYXBwVHJhbnMuaW52aXRlX21lbWJlcnMuZG9tYWluX3N1cmVfdGV4dCB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveCBnbG9iYWwtY2hlY2tib3hcIj5cbiAgICAgICAgICA8aW5wdXQgOmNoZWNrZWQ9XCJkb21haW5jaGVja1wiIHR5cGU9XCJjaGVja2JveFwiIDp2YWx1ZT1cImRvbWFpbmNoZWNrXCJcbiAgICAgICAgICAgIHYtb246Y2hhbmdlLnByZXZlbnQ9XCJkb21haW5jaGVjayA9ICFkb21haW5jaGVja1wiIGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94XCIgaWQ9XCJkb21haW5jaGVja1wiIGRhdGEtc3RhdHVzPVwiMFwiIC8+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cImRvbWFpbmNoZWNrXCI+XG4gICAgICAgICAgICA8cD57eyBhcHBUcmFucy5pbnZpdGVfbWVtYmVycy5kb21haW5fY29uZmlybV90ZXh0IH19PC9wPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJvdyBmb3Jtc2VjdGlvbiBpbnZpdGVzZW5kYnRuXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtZmxleCBmbGV4LXJvdy1yZXZlcnNlIHByLTBcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gZ2xvYmFsLWJ0bi1tZCBncmFkaWVudGJ0blwiIEBjbGljaz1cImludml0ZU1lbWJlclwiIGlkPVwic2VuZEludml0ZVwiPlxuICAgICAgICAgIHt7IGFwcFRyYW5zLmludml0ZV9tZW1iZXJzLmJ1dHRvbl9zZW5kX2ludml0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuPHNjcmlwdD5cbmltcG9ydCB7IG1hcEFjdGlvbnMgfSBmcm9tICd2dWV4JztcbmltcG9ydCByYWRpYWxNaXhuIGZyb20gJy4uLy4uL2Fzc2V0cy9qcy9taXhpbnMvcmFkaWFsQ291bnRlck1peGluJztcbmltcG9ydCB7IHZhbGlkYXRpb25NaXhpbiB9IGZyb20gJ3Z1ZWxpZGF0ZSc7XG5pbXBvcnQgeyByZXF1aXJlZCwgZW1haWwgfSBmcm9tICd2dWVsaWRhdGUvbGliL3ZhbGlkYXRvcnMnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYWRkdGVhbScsXG4gIHByb3BzOiBbJ3VzZWRBY2NvdW50cycsICd0ZWFtc2l6ZScsICdhbGxyb2xlcycsICdhZG1pbkVtYWlsJywgJ3BhZ2UnLCAncmVtVmlld2VycycsICdyZW1QYXJ0aWNpcGFudHMnLCAncmVtVXNlcnMnXSxcbiAgbWl4aW5zOiBbcmFkaWFsTWl4biwgdmFsaWRhdGlvbk1peGluXSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYXBwVXNlcjogdGhpcy5hZG1pbkVtYWlsLFxuICAgICAgYWNjb3VudHM6IHRoaXMudXNlZEFjY291bnRzLFxuICAgICAgdF9zaXplOiB0aGlzLnRlYW1zaXplLFxuICAgICAgc3RhZ2U6IHRoaXMucGFnZSxcbiAgICAgIC8vIHJlTWVtYmVyczogOCxcbiAgICAgIHJvbGVzOiB0aGlzLmFsbHJvbGVzLFxuICAgICAgbWVtYmVyczogW10sXG4gICAgICBzdWJtaXR0ZWQ6IGZhbHNlLFxuICAgICAgZG9tYWluTWlzbWF0Y2hGbGFnOiBmYWxzZSxcbiAgICAgIGRvbWFpbmNoZWNrOiBmYWxzZSxcblxuICAgICAgcmVzZXQ6IGZhbHNlLFxuICAgIH07XG4gIH0sXG4gIHZhbGlkYXRpb25zOiB7XG4gICAgbWVtYmVyczoge1xuICAgICAgcmVxdWlyZWQsXG4gICAgICAkZWFjaDoge1xuICAgICAgICBmbmFtZTogeyByZXF1aXJlZCB9LFxuICAgICAgICBsbmFtZToge30sXG4gICAgICAgIGVtYWlsOiB7IHJlcXVpcmVkLCBlbWFpbCB9LFxuICAgICAgICByb2xlOiB7fSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBhbGxyb2xlczoge1xuICAgICAgLy8gdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBzdGFydCBvZiB0aGUgb2JzZXJ2YXRpb25cbiAgICAgIGltbWVkaWF0ZTogdHJ1ZSxcbiAgICAgIGhhbmRsZXIodmFsLCBvbGRWYWwpIHtcbiAgICAgICAgdGhpcy5yb2xlcyA9IHZhbDtcbiAgICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgICQoJy5yb2xlc2Ryb3AnKS5zZWxlY3RwaWNrZXIoKTtcbiAgICAgICAgICAkKCcucm9sZXNkcm9wJykuc2VsZWN0cGlja2VyKCdyZWZyZXNoJyk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHVzZWRBY2NvdW50czoge1xuICAgICAgLy8gdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBzdGFydCBvZiB0aGUgb2JzZXJ2YXRpb25cbiAgICAgIGltbWVkaWF0ZTogdHJ1ZSxcbiAgICAgIGhhbmRsZXIodmFsLCBvbGRWYWwpIHtcbiAgICAgICAgdGhpcy5hY2NvdW50cyA9IHZhbDtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB0ZWFtc2l6ZToge1xuICAgICAgLy8gdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBzdGFydCBvZiB0aGUgb2JzZXJ2YXRpb25cbiAgICAgIGltbWVkaWF0ZTogdHJ1ZSxcbiAgICAgIGhhbmRsZXIodmFsLCBvbGRWYWwpIHtcbiAgICAgICAgdGhpcy50X3NpemUgPSB2YWw7XG4gICAgICB9LFxuICAgIH0sXG4gICAgYWRtaW5FbWFpbDoge1xuICAgICAgLy8gdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBzdGFydCBvZiB0aGUgb2JzZXJ2YXRpb25cbiAgICAgIGltbWVkaWF0ZTogdHJ1ZSxcbiAgICAgIGhhbmRsZXIodmFsLCBvbGRWYWwpIHtcbiAgICAgICAgdGhpcy5hcHBVc2VyID0gdmFsO1xuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgLi4ubWFwQWN0aW9ucyhbJ3B1c2hOb3RpZmljYXRpb24nXSksXG4gICAgY291bnRVc2VycyhtZW1iZXJzLCByb2xlKSB7XG4gICAgICBsZXQgdXNlcnMgPSAwO1xuICAgICAgbGV0IHZpZXdlcnMgPSAwO1xuICAgICAgbGV0IHBhcnRpY2lwYW50cyA9IDA7XG4gICAgICBpZiAobWVtYmVycyAmJiBtZW1iZXJzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLm1lbWJlcnMgPSBtZW1iZXJzO1xuICAgICAgfVxuICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuYXBwVHJhbnMuY29tbW9uLnJlYWNoZWRfbWF4aW11bTtcbiAgICAgIHRoaXMubWVtYmVycy5mb3JFYWNoKHVzZXIgPT4ge1xuICAgICAgICBpZiAodXNlci5yb2xlID09IDEgfHwgdXNlci5yb2xlID09IDIgfHwgcm9sZSA9PSAxIHx8IHJvbGUgPT0gMikge1xuICAgICAgICAgIHVzZXJzKys7XG4gICAgICAgICAgaWYgKHVzZXJzID4gdGhpcy5yZW1Vc2Vycykge1xuICAgICAgICAgICAgdXNlcnMtLTtcbiAgICAgICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfdGltZXJfbWVzc2FnZShtZXNzYWdlLCAnd2FybmluZycpO1xuICAgICAgICAgICAgdGhpcy4kc2V0KHVzZXIsICdyb2xlJywgJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh1c2VyLnJvbGUgPT0gMyB8fCByb2xlID09IDMpIHtcbiAgICAgICAgICB2aWV3ZXJzKys7XG4gICAgICAgICAgaWYgKHZpZXdlcnMgPiB0aGlzLnJlbVZpZXdlcnMpIHtcbiAgICAgICAgICAgIHZpZXdlcnMtLTtcbiAgICAgICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfdGltZXJfbWVzc2FnZShtZXNzYWdlLCAnd2FybmluZycpO1xuICAgICAgICAgICAgdGhpcy4kc2V0KHVzZXIsICdyb2xlJywgJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh1c2VyLnJvbGUgPT0gNSB8fCByb2xlID09IDUpIHtcbiAgICAgICAgICBwYXJ0aWNpcGFudHMrKztcbiAgICAgICAgICBpZiAocGFydGljaXBhbnRzID4gdGhpcy5yZW1QYXJ0aWNpcGFudHMpIHtcbiAgICAgICAgICAgIHBhcnRpY2lwYW50cy0tO1xuICAgICAgICAgICAgbW1fbWVzc2FnZXIuZGlzcGxheV90aW1lcl9tZXNzYWdlKG1lc3NhZ2UsICd3YXJuaW5nJyk7XG4gICAgICAgICAgICB0aGlzLiRzZXQodXNlciwgJ3JvbGUnLCAnJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZXVzZXJzJywgdXNlcnMsIHZpZXdlcnMsIHBhcnRpY2lwYW50cyk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBBZGQgbmV3IGFjY291bnRcbiAgICAgKi9cbiAgICBhZGRNZW1iZXIoKSB7XG4gICAgICBjb25zdCByZW1BY2MgPSB0aGlzLnJlbVZpZXdlcnMgKyB0aGlzLnJlbVVzZXJzICsgdGhpcy5yZW1QYXJ0aWNpcGFudHM7XG4gICAgICBpZiAocmVtQWNjICE9IHRoaXMubWVtYmVycy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5tZW1iZXJzLnB1c2goe1xuICAgICAgICAgIGZuYW1lOiAnJyxcbiAgICAgICAgICBsbmFtZTogJycsXG4gICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICAgIHJvbGU6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gVXBkYXRlIHJlbWFpbmluZyBhY2NvdW50cyBhbmQgY291bnRlciB2YWx1ZXNcbiAgICAgICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfdGltZXJfbWVzc2FnZSh0aGlzLmFwcFRyYW5zLmludml0ZV9tZW1iZXJzLnRleHRfZGVzY3JpcHRpb24zICsgXCIgPGEgaHJlZj0nL3VzZXJtYW5hZ2VtZW50L2N1cnJlbnRzdWJzY3JpcHRpb24nPiBcIiArIHRoaXMuYXBwVHJhbnMuaW52aXRlX21lbWJlcnMudXBncmFkZV9hY2NvdW50ICsgJzwvYT4nLCAnaW5mbycpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBEZWxldGUgQWNjb3VudFxuICAgICAqL1xuICAgIGRlbGV0ZU1lbWJlcihpbmRleCkge1xuICAgICAgdGhpcy5tZW1iZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLmNvdW50VXNlcnMoKTtcbiAgICB9LFxuXG4gICAgLy8gdmFsaWRhdGUgZW1haWxcbiAgICB2YWxpZGF0ZUVtYWlsKGVtYWlsLCBtaW5kZXgpIHtcbiAgICAgIHZhciB2bSA9IHRoaXM7XG4gICAgICBpZiAoZW1haWwgPT0gJycgfHwgZW1haWwgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gY2hlY2sgaWYgaXRzIGEgdmFsaWQgZW1haWwgaWRcbiAgICAgIHZhciBlbWFpbFBhcnRzID0gZW1haWwuc3BsaXQoJ0AnKTtcbiAgICAgIGlmIChlbWFpbFBhcnRzWzBdICE9IHVuZGVmaW5lZCAmJiBlbWFpbFBhcnRzWzFdICE9IHVuZGVmaW5lZCkge1xuICAgICAgICB2YXIgZG9tYWluQ2hlY2sgPSBlbWFpbFBhcnRzWzFdLnNwbGl0KCcuJyk7XG4gICAgICAgIGlmIChkb21haW5DaGVja1swXSAhPSB1bmRlZmluZWQgJiYgZG9tYWluQ2hlY2tbMV0gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbGV0IGNvdW50ID0gdGhpcy5tZW1iZXJzLnJlZHVjZSgobiwgdmFsKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbiArICh2YWwuZW1haWwgPT09IGVtYWlsKTtcbiAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICBpZiAoY291bnQgPiAxIHx8IHZtLmFwcFVzZXIgPT0gZW1haWwpIHtcbiAgICAgICAgICAgIHRoaXMuJHNldCh2bS5tZW1iZXJzW21pbmRleF0sICdlbWFpbCcsICcnKTtcbiAgICAgICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfbWVzc2FnZSh0aGlzLmFwcFRyYW5zLm1lc3NhZ2VzLmludml0ZV9tZW1iZXJzLmVtYWlsX2V4aXN0MSArIGVtYWlsICsgdGhpcy5hcHBUcmFucy5tZXNzYWdlcy5pbnZpdGVfbWVtYmVycy5lbWFpbF9leGlzdDIpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2bS5kb21haW5NaXNtYXRjaENoZWNrKG1pbmRleCk7XG4gICAgICAgICAgLy8gLy8gYXNjeW4gY2FsbFxuICAgICAgICAgIGlmICghdm0uZW1haWxDaGVjayhlbWFpbCwgbWluZGV4KSkge1xuICAgICAgICAgICAgLy8gdm0uZW5hYmxlSW52aXRlU3VibWl0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBtbV9tZXNzYWdlci5kaXNwbGF5X3RpbWVyX21lc3NhZ2UodGhpcy5hcHBUcmFucy5tZXNzYWdlcy5pbnZpdGVfbWVtYmVycy52YWxpZF9lbWFpbCwgJ3dhcm5pbmcnKTtcbiAgICAgICQodGhpcykuZm9jdXMoKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgZm9yIERvbWFpbiBtaXNtYXRjaFxuICAgICAqL1xuICAgIGRvbWFpbk1pc21hdGNoQ2hlY2sobWluZGV4KSB7XG4gICAgICAvL2dldCBwcmltZSBkb21haW4gZnJvbSB0aGUgZmlyc3QgZW1haWxcbiAgICAgIGNvbnN0IHByaW1lRG9tYWluRXggPSB0aGlzLmFwcFVzZXIuc3BsaXQoJ0AnKVsxXTtcbiAgICAgIHRoaXMuZG9tYWluTWlzbWF0Y2hGbGFnID0gZmFsc2U7XG4gICAgICAvLyBnZXQgYWxsIHRoZSBkb21haW5zIGluIHRoZSBlbWFpbHNcbiAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICB0aGlzLm1lbWJlcnMuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgIHZhciBlbWFpbEFkZHJlc3MgPSB2YWx1ZS5lbWFpbC50cmltKCk7XG4gICAgICAgIGlmIChlbWFpbEFkZHJlc3MgIT09ICcnKSB7XG4gICAgICAgICAgY29uc3QgZG9tYWluID0gZW1haWxBZGRyZXNzLnNwbGl0KCdAJylbMV07XG4gICAgICAgICAgaWYgKGRvbWFpbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoZG9tYWluICE9IHByaW1lRG9tYWluRXgpIHtcbiAgICAgICAgICAgICAgY291bnQgPSBjb3VudCArIDE7XG4gICAgICAgICAgICAgICQoJyNkb21haW5Db25maXJtU2VjdGlvbicpLnNob3coKTtcbiAgICAgICAgICAgICAgJCgnI25ld0V4dGVuc2lvbicpLnRleHQoZG9tYWluKTtcbiAgICAgICAgICAgICAgJCgnI29sZEV4dGVuc2lvbicpLnRleHQocHJpbWVEb21haW5FeCk7XG4gICAgICAgICAgICAgIHRoaXMuZG9tYWluTWlzbWF0Y2hGbGFnID0gdHJ1ZTtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoY291bnQgPT0gMCkge1xuICAgICAgICAkKCcjZG9tYWluQ29uZmlybVNlY3Rpb24nKS5oaWRlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyBNYWlsIGV4aXN0cyBpbiBkYXRhYmFzZSBvciBub3RcbiAgICBlbWFpbENoZWNrKGVtYWlsLCBtaW5kZXgpIHtcbiAgICAgIC8vIFRoZSB2aWV3IG1vZGVsLlxuICAgICAgdmFyIHZtID0gdGhpcztcbiAgICAgIGNvbnN0IHZhbGlkYXRlRW1haWwgPSBlbWFpbC5tYXRjaCgvXigoW148PigpW1xcXVxcXFwuLDs6XFxzQFxcXCJdKyhcXC5bXjw+KClbXFxdXFxcXC4sOzpcXHNAXFxcIl0rKSopfChcXFwiLitcXFwiKSlAKChcXFtbMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFxdKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17Mix9KSkkLyk7XG4gICAgICBpZiAodmFsaWRhdGVFbWFpbCkge1xuICAgICAgICB0aGlzLiRodHRwXG4gICAgICAgICAgLnBvc3QoJy9hcGkvZW1haWxfY2hlY2snLCB7IGVtYWlsOiBlbWFpbCB9KVxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEgPT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgICAgICAgIHZtLmRvbWFpbmNoZWNrID0gZmFsc2U7XG4gICAgICAgICAgICAgICQoJyNkb21haW5Db25maXJtU2VjdGlvbicpLmhpZGUoKTtcbiAgICAgICAgICAgICAgdm0uJHNldCh2bS5tZW1iZXJzW21pbmRleF0sICdlbWFpbCcsICcnKTtcbiAgICAgICAgICAgICAgbW1fbWVzc2FnZXIuZGlzcGxheV9tZXNzYWdlKHZtLmFwcFRyYW5zLm1lc3NhZ2VzLmludml0ZV9tZW1iZXJzLmVtYWlsX2V4aXN0MSArIGVtYWlsICsgdm0uYXBwVHJhbnMubWVzc2FnZXMuaW52aXRlX21lbWJlcnMuZW1haWxfZXhpc3QyKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBtbV9tZXNzYWdlci5jbG9zZV9hbGwoKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgLy9cbiAgICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1tX21lc3NhZ2VyLmNsb3NlX2FsbCgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICogUmVzZXQgYWxsIHRoZSBmbGFncyAoc3VibWl0dGVkIC0gZm9yIHZhbGlkYXRpb24sIGRvbWFpbiBhbmQgYWNjb3VudHMgYXJyYXkpXG4gICAgICovXG4gICAgcmVzZXRGbGFncygpIHtcbiAgICAgIHRoaXMubWVtYmVycyA9IFtdO1xuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuZG9tYWluTWlzbWF0Y2hGbGFnID0gZmFsc2U7XG4gICAgICB0aGlzLmRvbWFpbmNoZWNrID0gZmFsc2U7XG4gICAgICB0aGlzLnJlc2V0ID0gZmFsc2U7XG4gICAgICAkKCcjZG9tYWluQ29uZmlybVNlY3Rpb24nKS5oaWRlKCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEludml0ZSBhIG5ldyBtZW1iZXIgYnkgY3JlYXRpbmcgTmV3IHVzZXJcbiAgICAgKi9cbiAgICBpbnZpdGVNZW1iZXIobWVtYmVycyA9IFtdLCByb2xlID0gbnVsbCwgc3NvID0gZmFsc2UpIHtcbiAgICAgIC8vIFRoZSB2aWV3IG1vZGVsLlxuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuICAgICAgLy8gRm9yIGFueSB2YWxpZGF0aW9uIGVycm9ycyBvciBubyB1c2VyXG5cbiAgICAgIGlmIChzc28gPT0gZmFsc2UgJiYgKHRoaXMubWVtYmVycy5sZW5ndGggPT0gMCB8fCB0aGlzLiR2Lm1lbWJlcnMuJGludmFsaWQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIENoZWNrIElmIGRvbWFpbiBtaXNtYXRjaFxuICAgICAgaWYgKHRoaXMuZG9tYWluTWlzbWF0Y2hGbGFnICYmIG1lbWJlcnMubGVuZ3RoID09IDApIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvbWFpbmNoZWNrKSB7XG4gICAgICAgICAgbW1fbWVzc2FnZXIuZGlzcGxheV90aW1lcl9tZXNzYWdlKHRoaXMuYXBwVHJhbnMubWVzc2FnZXMuaW52aXRlX21lbWJlcnMubXVsdGlfZG9tYWluLCAnd2FybmluZycpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc2VsZi5tZW1iZXJzLmxlbmd0aCA+IDAgfHwgbWVtYmVycy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5yZXNldCA9IHRydWU7XG4gICAgICAgIGxvYWRlci5vcGVuKCk7XG4gICAgICAgIHRoaXMuJGh0dHBcbiAgICAgICAgICAucG9zdCgnL2FwaS91c2VybWFuYWdlbWVudC9hZGRNZW1iZXJzJywge1xuICAgICAgICAgICAgbWVtYmVyczogbWVtYmVycy5sZW5ndGggPyBtZW1iZXJzIDogc2VsZi5tZW1iZXJzLFxuICAgICAgICAgICAgcm9sZTogcm9sZSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAyMDApIHtcbiAgICAgICAgICAgICAgaWYgKHNzbykge1xuICAgICAgICAgICAgICAgIG1lbWJlcnMuZm9yRWFjaChmdW5jdGlvbiAodXNlcikge1xuICAgICAgICAgICAgICAgICAgc2VsZi4kc2V0KHVzZXIsICdhbHJlYWR5RXhpc3RzJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICBzZWxmLiRzZXQodXNlciwgJ2FscmVhZHlBU3NvVXNlcicsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgc2VsZi4kc2V0KHVzZXIsICdzYW1lQ29tcGFueScsIHRydWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHNlbGYucHVzaE5vdGlmaWNhdGlvbihyZXNwb25zZS5kYXRhWydub3RpZmljYXRpb25EYXRhJ10pO1xuICAgICAgICAgICAgICAvLyBVcGRhdGUgYWNjb3VudHNcbiAgICAgICAgICAgICAgc2VsZi5jb3VudFVzZXJzKG1lbWJlcnMsIHJvbGUpO1xuICAgICAgICAgICAgICBzZWxmLiRwYXJlbnQudXBkYXRlTWVtYmVycyhyZXNwb25zZS5kYXRhLmRhdGEsIHNzbyk7XG4gICAgICAgICAgICAgICQoJyNhZGRTc29Vc2VyJykubW9kYWwoJ2hpZGUnKTtcbiAgICAgICAgICAgICAgJCgnI2NvbmZpcm1TU09Vc2VyJykubW9kYWwoJ2hpZGUnKTtcbiAgICAgICAgICAgICAgaWYgKHNlbGYuc3RhZ2UgPT0gJ2ludml0ZScpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi4kcGFyZW50LmFwcFNlc3MudHJpYWwpIHtcbiAgICAgICAgICAgICAgICAgIHNlbGYuJHJvdXRlci5wdXNoKCcvbWFwcGluZycpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzZWxmLiRyb3V0ZXIucHVzaCgnL3VzZXJtYW5hZ2VtZW50L3BlcnNvbmFsU2V0dGluZ3MnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZi4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgc2VsZi5yZXNldEZsYWdzKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgJCgnI2FkZFVzZXInKS5tb2RhbCgnaGlkZScpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgbG9hZGVyLmNsb3NlKCk7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ/CfmoAgfiBmaWxlOiBBZGRUZWFtLnZ1ZSB+IGxpbmUgNDA1IH4gaW52aXRlTWVtYmVyIH4gZXJyb3InLCBlcnJvcik7XG5cbiAgICAgICAgICAgICQoJyNhZGRVc2VyJykubW9kYWwoJ2hpZGUnKTtcbiAgICAgICAgICAgICQoJyNjb25maXJtU1NPVXNlcicpLm1vZGFsKCdoaWRlJyk7XG4gICAgICAgICAgICBsb2FkZXIuY2xvc2UoKTtcbiAgICAgICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfdGltZXJfbWVzc2FnZShzZWxmLmFwcFRyYW5zLnVzZXJtYW5hZ2VtZW50LmVycm9yLmVycm9yX2FsZXJ0LCAnZXJyb3InKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICB9LFxuICBiZWZvcmVNb3VudCgpIHsgfSxcbiAgbW91bnRlZCgpIHtcbiAgICAvLyBVcGRhdGUgcmFkaWFsIENvdW50ZXJcbiAgICB0aGlzLnJhZGlhbENvdW50ZXIodGhpcy50ZWFtc2l6ZSwgdGhpcy51c2VkQWNjb3VudHMpO1xuICAgICQoJy5yb2xlc2Ryb3AnKS5zZWxlY3RwaWNrZXIoKTtcbiAgICAkKCcucm9sZXNkcm9wJykuc2VsZWN0cGlja2VyKCdyZWZyZXNoJyk7XG4gICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICQoJyNhZGRVc2VyJykub24oJ2hpZGUuYnMubW9kYWwnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKCFzZWxmLnJlc2V0KSB7XG4gICAgICAgIHNlbGYuJGVtaXQoJ3VwZGF0ZXVzZXJzJywgMCwgMCwgMCk7XG4gICAgICAgIHNlbGYucmVzZXRGbGFncygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuICB1cGRhdGVkKCkge1xuICAgICQoJy5yb2xlc2Ryb3AnKS5zZWxlY3RwaWNrZXIoJ3JlZnJlc2gnKTtcbiAgfSxcbn07XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi5lcnJvcnR4dCB7XG4gIGNvbG9yOiByZWQ7XG59XG48L3N0eWxlPlxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvY29tbW9uL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9BZGRUZWFtLnZ1ZSIsIjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb24+XG4gICAgPGRpdiBjbGFzcz1cImxpZmVjeWNsZSByb3cgbWFpbmNvbnRhaW5lciBlZGl0TGNcIiA6Y2xhc3M9XCJ7IGxpZmVjeWNsZVdpZGdldHNwYWNlOiB3aWRnZXRTZWN0aW9uIH1cIiB2LWlmPVwibG9hZGluZ1wiPlxuICAgICAgPCEtLSBMaWZlIEN5Y2xlIENpY2xlIC0tPlxuICAgICAgPGRpdiA6Y2xhc3M9XCInc3ZnQ29udGFpbmVyIGNvbC0xMiBjb2wtbWQtMTInXCIgdi1zaG93PVwic2hvd0N5Y2xlXCI+XG4gICAgICAgIDxzdmcgdmlld0JveD1cIi0xMCAtMTAgMjQwIDI1MFwiIGNsYXNzPVwiZG9udXQtY2hhcnRcIj5cbiAgICAgICAgICA8ZyB2LWZvcj1cIih2YWx1ZSwgaW5kZXgpIGluIGNvbnRhY3RSZWFzb25zXCIgOmtleT1cInZhbHVlLnR5cGUgKyBpbmRleFwiPlxuICAgICAgICAgICAgPGcgY2xhc3M9XCJyZXNldFwiXG4gICAgICAgICAgICAgIHYtb246Y2xpY2sucHJldmVudD1cIiFlZGl0ID8gY29ubmVjdGVkTWFwcygkZXZlbnQsICdjb250YWN0cmVhc29uJywgdmFsdWUuY3JfaWQsIHZhbHVlLnBfaWQsIHZhbHVlLnNfaWQpIDogY29ubmVjdGVkV2lkZ2V0cygnY3JlYXNvbicgKyB2YWx1ZS5jcl9pZCwgJ2NvbnRhY3RyZWFzb24nLCB2YWx1ZS5jcl9pZClcIlxuICAgICAgICAgICAgICA6Y2xhc3M9XCJnZXRDbGFzcyh2YWx1ZS5jcl9pZCwgJ2NyZWFzb24nLCAnY29udGFjdFJlYXNvbnMnKVwiPlxuICAgICAgICAgICAgICA8cmVjdCA6cG9pbnRlci1ldmVudHM9XCInYWxsJ1wiIDpjbGFzcz1cImdldENsYXNzKHZhbHVlLmNyX2lkLCAnY3JlYXNvbicsICdjb250YWN0UmVhc29ucycpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIkNScmVjdCByZXNldFwiIHJ4PVwiNVwiXG4gICAgICAgICAgICAgICAgOng9XCJjaGFydENyRGF0YVtpbmRleF0uc3RhdHVzID8gY2hhcnRDckRhdGFbaW5kZXhdLnRleHRYIC0gMTcgOiBjaGFydENyRGF0YVtpbmRleF0udGV4dFggLSAzMlwiXG4gICAgICAgICAgICAgICAgOnk9XCJjaGFydENyRGF0YVtpbmRleF0udGV4dFkgLSA0XCJcbiAgICAgICAgICAgICAgICA6dHJhbnNmb3JtPVwicmV0dXJuVGV4dFRyYW5zZm9ybVZhbHVlKGluZGV4LCBjaGFydENyRGF0YVtpbmRleF0udGV4dFgsIGNoYXJ0Q3JEYXRhW2luZGV4XS50ZXh0WSwgdmFsdWUudHlwZSlcIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiNTBcIiBoZWlnaHQ9XCIxMFwiIDpzdHJva2U9XCJ2YWx1ZS5jb2xvclwiIGZpbGw9XCJ0cmFuc3BhcmVudFwiPjwvcmVjdD5cbiAgICAgICAgICAgICAgPHRleHQgOnBvaW50ZXItZXZlbnRzPVwiJ3Zpc2libGVTdHJva2UnXCIgOmNsYXNzPVwiZ2V0Q2xhc3ModmFsdWUuY3JfaWQsICdjcmVhc29uJywgJ2NvbnRhY3RSZWFzb25zJylcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3JUZXh0IHJlc2V0XCIgdi1odG1sPVwiYWRqdXN0VGV4dFNpemUodmFsdWUsIGluZGV4LCBjb250YWN0UmVhc29ucywgY2hhcnRDckRhdGFbaW5kZXhdLnN0YXR1cylcIlxuICAgICAgICAgICAgICAgIHRleHQtYW5jaG9yPVwibWlkZGxlXCJcbiAgICAgICAgICAgICAgICA6eD1cImNoYXJ0Q3JEYXRhW2luZGV4XS5zdGF0dXMgPyBjaGFydENyRGF0YVtpbmRleF0udGV4dFggKyAxNSA6IGNoYXJ0Q3JEYXRhW2luZGV4XS50ZXh0WFwiXG4gICAgICAgICAgICAgICAgOnk9XCJjaGFydENyRGF0YVtpbmRleF0udGV4dFlcIlxuICAgICAgICAgICAgICAgIDp0cmFuc2Zvcm09XCJyZXR1cm5UZXh0VHJhbnNmb3JtVmFsdWUoaW5kZXgsIGNoYXJ0Q3JEYXRhW2luZGV4XS50ZXh0WCwgY2hhcnRDckRhdGFbaW5kZXhdLnRleHRZLCB2YWx1ZS50eXBlKVwiXG4gICAgICAgICAgICAgICAgZG9taW5hbnQtYmFzZWxpbmU9XCJtaWRkbGVcIj48L3RleHQ+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgICAgPC9nPlxuICAgICAgICAgIDxnIHYtZm9yPVwiKHZhbHVlLCBpbmRleCkgaW4gcGhhc2VzXCIgOmtleT1cInZhbHVlLnR5cGUgKyBpbmRleFwiPlxuICAgICAgICAgICAgPGcgY2xhc3M9XCJyZXNldFwiXG4gICAgICAgICAgICAgIHYtb246Y2xpY2sucHJldmVudD1cIiFlZGl0ID8gY29ubmVjdGVkTWFwcygkZXZlbnQsICdwaGFzZScsIHZhbHVlLmNyX2lkcywgdmFsdWUucF9pZCwgdmFsdWUuc19pZCkgOiBjb25uZWN0ZWRXaWRnZXRzKCdwaHMnICsgdmFsdWUucF9pZCwgJ3BoYXNlJywgdmFsdWUucF9pZClcIlxuICAgICAgICAgICAgICA6Y2xhc3M9XCJnZXRDbGFzcyh2YWx1ZS5wX2lkLCAncGhzJywgJ3BoYXNlcycpXCI+XG4gICAgICAgICAgICAgIDxjaXJjbGUgOnBvaW50ZXItZXZlbnRzPVwiJ3Zpc2libGVTdHJva2UnXCIgOmNsYXNzPVwiZ2V0Q2xhc3ModmFsdWUucF9pZCwgJ3BocycsICdwaGFzZXMnKVwiIDpjeD1cImN4XCIgOmN5PVwiY3lcIlxuICAgICAgICAgICAgICAgIDpyPVwic2V0dGluZ3MucGhhc2VzLnJhZGl1c1wiIDpzdHJva2U9XCJ2YWx1ZS5jb2xvclwiIDpzdHJva2Utd2lkdGg9XCJzZXR0aW5ncy5waGFzZXMuc3Ryb2tlV2lkdGhcIlxuICAgICAgICAgICAgICAgIDpzdHJva2UtZGFzaGFycmF5PVwiYWRqdXN0ZWRDaXJjdW1mZXJlbmNlKHNldHRpbmdzLnBoYXNlcylcIlxuICAgICAgICAgICAgICAgIDpzdHJva2UtZGFzaG9mZnNldD1cImNhbGN1bGF0ZVN0cm9rZURhc2hPZmZzZXQodmFsdWUudmFsdWUsIGNpcmN1bWZlcmVuY2Uoc2V0dGluZ3MucGhhc2VzKSwgcGhhc2VzKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwaGFzZUNpcmNsZSByZXNldFwiIGZpbGw9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgOnRyYW5zZm9ybT1cInJldHVybkNpcmNsZVRyYW5zZm9ybVZhbHVlKGluZGV4LCB2YWx1ZS50eXBlKVwiIC8+XG4gICAgICAgICAgICAgIDx0ZXh0IDpwb2ludGVyLWV2ZW50cz1cIid2aXNpYmxlU3Ryb2tlJ1wiIGNsYXNzPVwicGhhc2VUZXh0IHJlc2V0XCJcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJnZXRDbGFzcyh2YWx1ZS5wX2lkLCAncGhzJywgJ3BoYXNlcycpXCIgdi1odG1sPVwiYWRqdXN0VGV4dFNpemUodmFsdWUsIGluZGV4LCBwaGFzZXMpXCJcbiAgICAgICAgICAgICAgICB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIDp4PVwiY2hhcnRQaGFzZURhdGFbaW5kZXhdLnRleHRYXCIgOnk9XCJjaGFydFBoYXNlRGF0YVtpbmRleF0udGV4dFlcIlxuICAgICAgICAgICAgICAgIDp0cmFuc2Zvcm09XCJyZXR1cm5UZXh0VHJhbnNmb3JtVmFsdWUoaW5kZXgsIGNoYXJ0UGhhc2VEYXRhW2luZGV4XS50ZXh0WCwgY2hhcnRQaGFzZURhdGFbaW5kZXhdLnRleHRZLCB2YWx1ZS50eXBlKVwiPjwvdGV4dD5cbiAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICA8L2c+XG4gICAgICAgICAgPGcgdi1mb3I9XCIodmFsdWUsIGluZGV4KSBpbiBzdGFnZXNcIiA6a2V5PVwidmFsdWUudHlwZSArIGluZGV4XCI+XG4gICAgICAgICAgICA8ZyBjbGFzcz1cInJlc2V0XCJcbiAgICAgICAgICAgICAgdi1vbjpjbGljay5wcmV2ZW50PVwiIWVkaXQgPyBjb25uZWN0ZWRNYXBzKCRldmVudCwgJ3N0YWdlJywgdmFsdWUuY3JfaWRzLCB2YWx1ZS5wX2lkcywgdmFsdWUuc19pZCkgOiBjb25uZWN0ZWRXaWRnZXRzKCdzdGcnICsgdmFsdWUuc19pZCwgJ3N0YWdlJywgdmFsdWUuc19pZClcIlxuICAgICAgICAgICAgICA6Y2xhc3M9XCJnZXRDbGFzcyh2YWx1ZS5zX2lkLCAnc3RnJywgJ3N0YWdlcycpXCI+XG4gICAgICAgICAgICAgIDxjaXJjbGUgOnBvaW50ZXItZXZlbnRzPVwiJ3Zpc2libGVTdHJva2UnXCIgOmNsYXNzPVwiZ2V0Q2xhc3ModmFsdWUuc19pZCwgJ3N0ZycsICdzdGFnZXMnKVwiIDpjeD1cImN4XCIgOmN5PVwiY3lcIlxuICAgICAgICAgICAgICAgIDpyPVwic2V0dGluZ3Muc3RhZ2VzLnJhZGl1c1wiIDpzdHJva2U9XCJ2YWx1ZS5jb2xvclwiIDpzdHJva2Utd2lkdGg9XCJzZXR0aW5ncy5zdGFnZXMuc3Ryb2tlV2lkdGhcIlxuICAgICAgICAgICAgICAgIDpzdHJva2UtZGFzaGFycmF5PVwiYWRqdXN0ZWRDaXJjdW1mZXJlbmNlKHNldHRpbmdzLnN0YWdlcylcIlxuICAgICAgICAgICAgICAgIDpzdHJva2UtZGFzaG9mZnNldD1cImNhbGN1bGF0ZVN0cm9rZURhc2hPZmZzZXQodmFsdWUudmFsdWUsIGNpcmN1bWZlcmVuY2Uoc2V0dGluZ3Muc3RhZ2VzKSwgc3RhZ2VzKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdGFnZUNpcmNsZSByZXNldFwiIGZpbGw9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgOnRyYW5zZm9ybT1cInJldHVybkNpcmNsZVRyYW5zZm9ybVZhbHVlKGluZGV4LCB2YWx1ZS50eXBlKVwiIC8+XG4gICAgICAgICAgICAgIDx0ZXh0IDpwb2ludGVyLWV2ZW50cz1cIid2aXNpYmxlU3Ryb2tlJ1wiIGNsYXNzPVwic3RhZ2VUZXh0IHJlc2V0XCJcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJnZXRDbGFzcyh2YWx1ZS5zX2lkLCAnc3RnJywgJ3N0YWdlcycpXCIgdi1pZj1cInNlZ21lbnRCaWdFbm91Z2godmFsdWUudmFsdWUsIHN0YWdlcylcIlxuICAgICAgICAgICAgICAgIHYtaHRtbD1cImFkanVzdFRleHRTaXplKHZhbHVlLCBpbmRleCwgc3RhZ2VzKVwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCIgOng9XCJjaGFydFN0YWdlRGF0YVtpbmRleF0udGV4dFhcIlxuICAgICAgICAgICAgICAgIDp5PVwiY2hhcnRTdGFnZURhdGFbaW5kZXhdLnRleHRZXCJcbiAgICAgICAgICAgICAgICA6dHJhbnNmb3JtPVwicmV0dXJuVGV4dFRyYW5zZm9ybVZhbHVlKGluZGV4LCBjaGFydFN0YWdlRGF0YVtpbmRleF0udGV4dFgsIGNoYXJ0U3RhZ2VEYXRhW2luZGV4XS50ZXh0WSwgdmFsdWUudHlwZSlcIj48L3RleHQ+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgICAgPC9nPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBNYXBzIFdpZGdldHMgTWFpbiBDb250ZW50IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbm5lY3RlZE1hcHNNYWluRGl2IHVzZXJzZXR0aW5nZGFzaGJvYXJkIHVzZXJzZXR0aW5ncyB3aWRnZXRNb2RhbCBoLTEwMFwiXG4gICAgICAgIDpjbGFzcz1cInsgc2hvdzogd2lkZ2V0U2VjdGlvbiB9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b3BGaXhlZFdpZGdldCB0aGVtZS1vbmx5XCIgOmNsYXNzPVwieyBMaWZlQ3ljbGVXaWRnZXRUb3BTcGFjZTogdGFiID09IDEgfVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvUm93IGQtZmxleCAganVzdGlmeS1jb250ZW50LWxlZnQgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICB7eyB0aXRsZSB9fVxuICAgICAgICAgICAgPHNwYW4gQGNsaWNrPVwicmVzZXRNYXBzKClcIiBjbGFzcz1cImNsb3NlU2VhcmNoXCI+w5c8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiB3aWRnZXRUYWJzXCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXRhYnNcIiBpZD1cIm15VGFiXCIgcm9sZT1cInRhYmxpc3RcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDpsZWZ0O1wiPlxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBsYy10YWJzXCIgQGNsaWNrPVwidGFiID09IDIgPyBzd2l0Y2hUYWIoMSkgOiAnJ1wiXG4gICAgICAgICAgICAgICAgdi1pZj1cImNoZWNrQWNjZXNzKGFwcFNlc3MuY29uZmlndXJhdGlvbnMsICdtYXAnKSAmJiBjaGVja0FjY2VzcyhhcHBTZXNzLmNvbmZpZ3VyYXRpb25zLCAnb3VyTW9kdWxlJylcIj5cbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rXCIgOmNsYXNzPVwidGFiID09IDEgPyAnYWN0aXZlJyA6ICcnXCIgaWQ9XCJqb3VybmV5cy10YWJcIiBkYXRhLXRvZ2dsZT1cInRhYlwiXG4gICAgICAgICAgICAgICAgICBocmVmPVwiI2pvdXJuZXlzXCIgcm9sZT1cInRhYlwiIGFyaWEtY29udHJvbHM9XCJqb3VybmV5c1wiIGFyaWEtc2VsZWN0ZWQ9XCJ0cnVlXCI+e3sgYXBwVHJhbnMuYmFzZS5taWxreW1hcHNcbiAgICAgICAgICAgICAgICAgIH19ICh7eyB1aV9tYXBzLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICArIHVhX21hcHMubGVuZ3RoIH19KTwvYT5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiBAY2xpY2s9XCJ0YWIgPT0gMSA/IHN3aXRjaFRhYigyKSA6ICcnXCI+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJuYXYtbGlua1wiIDpjbGFzcz1cInRhYiA9PSAyID8gJ2FjdGl2ZScgOiAnJ1wiIGlkPVwid2lkZ2V0cy10YWJcIiBkYXRhLXRvZ2dsZT1cInRhYlwiIGhyZWY9XCIjd2lkZ2V0c1wiXG4gICAgICAgICAgICAgICAgICByb2xlPVwidGFiXCIgYXJpYS1jb250cm9scz1cIndpZGdldHNcIiBhcmlhLXNlbGVjdGVkPVwiZmFsc2VcIj57eyBhcHBUcmFucy5jb21tb24uY29udGVudCB9fSAoe3tcbiAgICAgICAgICAgICAgICAgIHdpZGdldHMubGVuZ3RoIH19KTwvYT5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHN3aXRjaFRvZ2dsZWRpdFwiIHYtc2hvdz1cInRhYiA9PSAyICYmIGxpZmVjeWNsZURhdGEubGNfc3RhdHVzID09IDJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3aWRnZXRidG5sZWZ0XCIgdi1pZj1cImFwcFNlc3Mucm9sZSA9PSAnQWRtaW4nICYmIGFwcFNlc3Muc3lzdGVtYWRtaW4gIT0gdHJ1ZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3dpdGNodG9nZ2xlXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3dpdGNoXCIgOmZvcj1cIidjb25uZWN0ZWRNTSdcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiA6aWQ9XCInY29ubmVjdGVkTU0nXCIgOnZhbHVlPVwiZWRpdFwiIHYtbW9kZWw9XCJlZGl0XCIgLz5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2xpZGVyIHJvdW5kXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlZGl0U3BhblwiPnt7IGFwcFRyYW5zLmNvbW1vbi5lZGl0IH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2lkZ2V0ZHJvcGRvd25sZWZ0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbS0wXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBzZWxlY3RBcnJvd01haW4gbm9ybWFsLVNlbGVjdFwiPlxuICAgICAgICAgICAgICAgICAgPHNlbGVjdCB2LW1vZGVsPVwic2VsZWN0ZWRXaWRnZXRzXCIgdi1vbjpjaGFuZ2U9XCJmaWx0ZXJXaWRnZXRzKClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBzZWxlY3RwaWNrZXIgbW0tc2VsZWN0LXNtXCIgbXVsdGlwbGUgZGF0YS1zaXplPVwiNVwiXG4gICAgICAgICAgICAgICAgICAgIDp0aXRsZT1cInNlbGVjdGVkV2lkZ2V0cy5sZW5ndGggPyBudWxsIDogJ0Nob29zZSBXaWRnZXRzJ1wiIGRhdGEtYWN0aW9ucy1ib3g9XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdi1mb3I9XCIod3QsIHd0aSkgaW4gd190eXBlc1wiIDp2YWx1ZT1cInd0LmlkXCIgOmtleT1cIid3aWQnICsgd3RpXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgd3QuZGlzcGxheV9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxzcGFuIHYtaWY9XCJlZGl0ICYmIHdpZGdldEZvclwiIGNsYXNzPVwid2lkZ2V0YnRucmlnaHRcIiBAY2xpY2s9XCJvcGVuTW9kYWwoJyNhZGRXaWRnZXRNb2RhbCcpXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gZ2xvYmFsLWJ0bi1zbSBwcmltYXJ5LWNvbG9yYnRuIGxjbW9kYWxhZGRcIj48aSBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS1wbHVzXCI+PC9pPnt7IGFwcFRyYW5zLmNvbW1vbi5hZGRfd2lkZ2V0IH19PC9idXR0b24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLWNvbnRlbnQgaC0xMDAgd2lkZ2V0c2Nyb2xsXCIgaWQ9XCJ3aWRnZXRTY3JvbGxcIiA6Y2xhc3M9XCJ7IHdpZGdldEpvdXJuZXlTY3JvbGw6IHRhYiA9PSAxIH1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLXBhbmUgd2lkZ2V0LXBhbmUgaC0xMDAgcC0wXCIgOmNsYXNzPVwidGFiID09IDEgPyAnYWN0aXZlJyA6ICcnXCIgaWQ9XCJqb3VybmV5c1wiIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJqb3VybmV5cy10YWJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMCBvdmVyRmxvd1Njcm9sbCBwZXJzb25hU2Nyb2xsIGpvdXJuZXlQYWRMRlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxsbWlsa3ltYXBzbGlzdCBwLTAgbS0wXCJcbiAgICAgICAgICAgICAgICB2LWlmPVwiY2hlY2tBY2Nlc3MoYXBwU2Vzcy5jb25maWd1cmF0aW9ucywgJ21hcCcpICYmIGNoZWNrQWNjZXNzKGFwcFNlc3MuY29uZmlndXJhdGlvbnMsICdvdXJNb2R1bGUnKVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXggZmxleC1yb3ctcmV2ZXJzZVwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBzZWNvbmRhcnktYnRuIHJlc2V0TENcIiBAY2xpY2s9XCJyZXNldE1hcHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBhcHBUcmFucy5jb21tb24ucmVzZXQgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFwc2Nvbm5lY3RlZExpc3RcIj5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwic3VidGl0bGUgbS0wICBMaWZlQ3ljbGVTdGF0dXNJbWdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYnVuZGxlcy9tYXAvaW1hZ2VzL2FjdGl2ZXVzZXJpY29uLnN2Z1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIHt7IGFwcFRyYW5zLmRhc2hib2FyZC5zdWJfdGl0bGUxIH19XG4gICAgICAgICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0gSm91cm5leSBNYXBzIFJvdyBTdGFydGVkIC0tPlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibENNYXBzTWFpblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlsa3lUYWJsZXJvdyBsaWZlQ3ljbGVNYXBzUm93XCIgdi1mb3I9XCIoYV9tYXAsIGFpbmRleCkgaW4gdWFfbWFwc1wiIDprZXk9XCJhaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgIEBtb3VzZW92ZXI9XCJoaWdobGlnaHRTZWdtZW50T25NYXBIb3ZlcihhX21hcC5jcmlkcylcIiBAbW91c2VsZWF2ZT1cInNlbGVjdGVkU2VnZW1lbnRzID0gW11cIlxuICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cInsgJ2Qtbm9uZSc6IHNob3dFbGVtZW50Q29ubmVjdGVkTWFwKGFfbWFwKSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbGt5VGFibGVyb3dNYWluIGgtMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlsa3lNZWRpYVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHYtaWY9XCJhX21hcC5tYXBfaW1hZ2VcIiA6c3JjPVwiYV9tYXAubWFwX2ltYWdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHZpZGVvIHYtaWY9XCJhX21hcC52aWRlb191cmxcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI2MXB4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6cG9zdGVyPVwiZ2V0UG9zdGVyKGFfbWFwLnZpZGVvX3VybCwgYV9tYXAubGlua190eXBlKVwiPjwvdmlkZW8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWxreURvdHNtZW51IG1vcmVBY3Rpb25zIG1vcmVBY3Rpb25zQ29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLTNkb3RzLW1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24gZHJvcHVwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWVudS1pY29uXCI+PCEtLTxpbWcgc3JjPVwiL2J1bmRsZXMvYWRtaW4vaW1hZ2VzL2luc2lnaHQtM2RvdHMtbWVudS5zdmdcIiAvPi0tPjwvc3Bhbj48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJnb1RvUHJlc2VudGFpb24oYV9tYXAubWFwX2lkKVwiPnt7IGFwcFRyYW5zLmNvbW1vbi52aWV3bmV3X3RhYiB9fTwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIHYtaWY9XCJhcHBTZXNzLnJvbGUgPT0gJ0FkbWluJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwic3RvcmVNYXAoMSwgYWluZGV4LCBhX21hcC5vd25lcl9pZCwgYV9tYXApXCI+e3sgYXBwVHJhbnMuY29tbW9uLm1hbmFnZV9vd25lcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPVwiMTAwJVwiIGNsYXNzPVwidGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1hcFRpdGxlQ29sdW1uXCIgQGNsaWNrPVwiZ29Ub1ByZXNlbnRhaW9uKGFfbWFwLm1hcF9pZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYWRkRmFkZW91dFwiIHYtdG9vbHRpcC5sZWZ0PVwieyBjb250ZW50OiBnZXRUaXRsZShhX21hcC5tYXBfbmFtZSksIGh0bWw6IHRydWUgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhX21hcC5tYXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY3JlYXRlZERhdGVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlck5hbWVEaXNwbGF5TENcIiB2LXRvb2x0aXAudG9wPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBnZXRUb29sdGlwKGFfbWFwLnVzZXJuYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyB2LWlmPVwiYV9tYXAub3duZXJfaWNvblwiIDpzcmM9XCJhX21hcC5vd25lcl9pY29uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1lbHNlPnt7IGFfbWFwLnVzZXJuYW1lc2hvcnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyTmFtZURpc3BsYXlMQ1wiIHYtaWY9XCJhX21hcC5tYXBvd25lcnMgJiYgYV9tYXAubWFwb3duZXJzLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXJDb3VudGRpc3BsYXlcIiB2LXRvb2x0aXAucmlnaHQ9XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogZ2V0T3duZXJOYW1lcyhhX21hcC5tYXBvd25lcnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWw6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXNcIj48L2k+e3sgYV9tYXAubWFwb3duZXJzLmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ3JleUJnQnV0dG9uIHZlcnNvbkNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0blwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhX21hcC5tYXBfc3RhdGUgPT0gMCA/ICdDdXJyZW50JyA6ICdGdXR1cmUnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHYtaWY9XCJ1YV9tYXBzLmxlbmd0aCA9PSAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTAwIG5vbWFwc2RpdiBub1dpZGdldEpvdXJuZXlib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJkLWZsZXggaC0xMDAganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcHBUcmFucy5kYXNoYm9hcmQubm90X2ZvdW5kMSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPCEtLSBKb3VybmV5IE1hcHMgUm93IEVuZGVkIC0tPlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVuZGluZ21tbGlzdCBwYWRJbmFjdGl2ZU1hcHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJzdWJ0aXRsZSBtLTAgTGlmZUN5Y2xlU3RhdHVzSW1nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYnVuZGxlcy9tYXAvaW1hZ2VzL2luYWN0aXZldXNlcnNpY29uLnN2Z1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAge3sgYXBwVHJhbnMuY29tbW9uLmluYWN0aXZlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBKb3VybmV5IE1hcHMgUm93IFN0YXJ0ZWQgLS0+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxDTWFwc01haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlsa3lUYWJsZXJvdyBsaWZlQ3ljbGVNYXBzUm93XCIgdi1mb3I9XCIoYV9tYXAsIGFpbmRleCkgaW4gdWlfbWFwc1wiIDprZXk9XCJhaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgQG1vdXNlb3Zlcj1cImhpZ2hsaWdodFNlZ21lbnRPbk1hcEhvdmVyKGFfbWFwLmNyaWRzKVwiIEBtb3VzZWxlYXZlPVwic2VsZWN0ZWRTZWdlbWVudHMgPSBbXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJ7ICdkLW5vbmUnOiBzaG93RWxlbWVudENvbm5lY3RlZE1hcChhX21hcCkgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbGt5VGFibGVyb3dNYWluIGgtMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWxreU1lZGlhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyB2LWlmPVwiYV9tYXAubWFwX2ltYWdlXCIgOnNyYz1cImFfbWFwLm1hcF9pbWFnZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZpZGVvIHYtaWY9XCJhX21hcC52aWRlb191cmxcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI2MXB4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpwb3N0ZXI9XCJnZXRQb3N0ZXIoYV9tYXAudmlkZW9fdXJsLCBhX21hcC5saW5rX3R5cGUpXCI+PC92aWRlbz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWxreURvdHNtZW51IG1vcmVBY3Rpb25zIG1vcmVBY3Rpb25zQ29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tM2RvdHMtbWVudVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duIGRyb3B1cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lbnUtaWNvblwiPjwhLS08aW1nIHNyYz1cIi9idW5kbGVzL2FkbWluL2ltYWdlcy9pbnNpZ2h0LTNkb3RzLW1lbnUuc3ZnXCIgLz4tLT48L3NwYW4+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwiZ29Ub1ByZXNlbnRhaW9uKGFfbWFwLm1hcF9pZClcIj57eyBhcHBUcmFucy5jb21tb24udmlld25ld190YWIgfX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIHYtaWY9XCJhcHBTZXNzLnJvbGUgPT0gJ0FkbWluJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJzdG9yZU1hcCgyLCBhaW5kZXgsIGFfbWFwLm93bmVyX2lkLCBhX21hcClcIj57eyBhcHBUcmFucy5jb21tb24ubWFuYWdlX293bmVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9XCIxMDAlXCIgY2xhc3M9XCJ0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1hcFRpdGxlQ29sdW1uXCIgQGNsaWNrPVwiZ29Ub1ByZXNlbnRhaW9uKGFfbWFwLm1hcF9pZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhZGRGYWRlb3V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LXRvb2x0aXAubGVmdD1cInsgY29udGVudDogZ2V0VGl0bGUoYV9tYXAubWFwX25hbWUpLCBodG1sOiB0cnVlIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhX21hcC5tYXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY3JlYXRlZERhdGVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyTmFtZURpc3BsYXlMQ1wiIHYtdG9vbHRpcC50b3A9XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogZ2V0VG9vbHRpcChhX21hcC51c2VybmFtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgdi1pZj1cImFfbWFwLm93bmVyX2ljb25cIiA6c3JjPVwiYV9tYXAub3duZXJfaWNvblwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1lbHNlPnt7IGFfbWFwLnVzZXJuYW1lc2hvcnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlck5hbWVEaXNwbGF5TENcIiB2LWlmPVwiYV9tYXAubWFwb3duZXJzICYmIGFfbWFwLm1hcG93bmVycy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXJDb3VudGRpc3BsYXlcIiB2LXRvb2x0aXAucmlnaHQ9XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBnZXRPd25lck5hbWVzKGFfbWFwLm1hcG93bmVycyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvaT57eyBhX21hcC5tYXBvd25lcnMubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJncmV5QmdCdXR0b24gdmVyc29uQ29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhX21hcC5tYXBfc3RhdGUgPT0gMCA/IGFwcFRyYW5zLmNvbW1vbi5jdXJyZW50IDogYXBwVHJhbnMuY29tbW9uLmZ1dHVyZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiB2LWlmPVwiaV9tYXBzLmxlbmd0aCA9PSAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMCBub21hcHNkaXYgbm9XaWRnZXRKb3VybmV5Ym94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJkLWZsZXggaC0xMDAganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFwcFRyYW5zLmRhc2hib2FyZC5ub3RfZm91bmQxIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBKb3VybmV5IE1hcHMgUm93IEVuZGVkIC0tPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLXBhbmUgd2lkZ2V0LXBhbmUgcC0wIGgtMTAwXCIgOmNsYXNzPVwidGFiID09IDIgPyAnYWN0aXZlJyA6ICcnXCIgaWQ9XCJ3aWRnZXRzXCIgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cIndpZGdldHMtdGFiXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDAgb3ZlckZsb3dTY3JvbGwgcGVyc29uYVNjcm9sbCBqb3VybmV5UGFkTEZcIj5cbiAgICAgICAgICAgICAgPGRyYWdnYWJsZSA6ZHJhZ2dhYmxlPVwiZWRpdCA/ICcuZHJhZ2dhYmxlLWl0ZW0nIDogJydcIiB0YWc9XCJkaXZcIiBoYW5kbGU9XCIud2lkZ2V0SGVhZGluZ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgd2lkZ2V0TWFyaWduXCIgZ2hvc3QtY2xhc3M9XCJnaG9zdFwiIGNob3Nlbi1jbGFzcz1cImNob3NlblwiIGRyYWctY2xhc3M9XCJkcmFnXCIgdi1tb2RlbD1cIndpZGdldHNcIlxuICAgICAgICAgICAgICAgIEBzdGFydD1cImRyYWcgPSB0cnVlXCIgQGVuZD1cImRyYWcgPSBmYWxzZVwiIEBjaGFuZ2U9XCJvcmRlcldpZGdldHMoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDwhLS0gV2lkZ2V0cyBjb250ZW50IC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgdi1mb3I9XCIod2lkLCB3KSBpbiB3aWRnZXRzXCIgOmtleT1cIndcIiBjbGFzcz1cImNvbC02IHdpZGdldEJveE1haW4gZHJhZ2dhYmxlLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgdi1jaGVja0FjY2Vzcz1cInsgY29uZmlnczogYXBwU2Vzcy5jb25maWd1cmF0aW9ucywgbW9kdWxlOiB3aWQud2lkZ2V0X3R5cGVfbmFtZSB9XCIgOmNsYXNzPVwie1xuICAgICAgICAgICAgICAgICAgICAnZC1ub25lJzogIWxvYWRpbmdMQyB8fCAoc2VsZWN0ZWRXaWRnZXRzLmxlbmd0aCAmJiB3aWQuc2hvd1N0YXR1cyksXG4gICAgICAgICAgICAgICAgICB9XCIgQG1vdXNlb3Zlcj1cIiFlZGl0ID8gaGlnaGxpZ2h0U2VnbWVudCh3aWQuY3JfaWQsIHdpZC5waGFzZV9pZCwgd2lkLnN0YWdlX2lkKSA6ICcnXCJcbiAgICAgICAgICAgICAgICAgIEBtb3VzZWxlYXZlPVwiIWVkaXQgPyAoc2VsZWN0ZWRTZWdlbWVudCA9ICcnKSA6ICcnXCI+XG4gICAgICAgICAgICAgICAgICA8IS0tIFRleHQgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgPHRleHQtd2lkZ2V0IHYtaWY9XCJ3aWQud2lkZ2V0X3R5cGVfbmFtZSA9PSAndGV4dCdcIiA6ZWRpdD1cImVkaXRcIiA6d2lkZ2V0PVwid2lkLndpZGdldF9kYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgQHN0b3JldGV4dD1cInN0b3JlVGV4dFwiIEBkZWxldGVkPVwiZGVsZXRlV2lkZ2V0QmxvY2tcIiBAZGVsZXRld2lkZ2V0PVwiZGVsZXRlV2lkZ2V0XCJcbiAgICAgICAgICAgICAgICAgICAgQGR1cGxpY2F0ZXdpZGdldD1cImR1cGxpY2F0ZVdpZGdldFwiIDp3X2lkPVwid2lkLndpZGdldF9pZFwiIDp3dHlwZT1cIndpZC53aWRnZXRfdHlwZV9uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgOndpbmRleD1cIndcIj48L3RleHQtd2lkZ2V0PlxuICAgICAgICAgICAgICAgICAgPCEtLSBNZWRpYSB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICA8bWVkaWEtd2lkZ2V0IHYtaWY9XCJ3aWQud2lkZ2V0X3R5cGVfbmFtZSA9PSAnaW1hZ2UnXCIgOmVkaXQ9XCJlZGl0XCIgOndpZGdldD1cIndpZC53aWRnZXRfZGF0YVwiXG4gICAgICAgICAgICAgICAgICAgIEBzdG9yZW1lZGlhPVwic3RvcmVNZWRpYVwiIEBkZWxldGVkPVwiZGVsZXRlV2lkZ2V0QmxvY2tcIiBAZGVsZXRld2lkZ2V0PVwiZGVsZXRlV2lkZ2V0XCJcbiAgICAgICAgICAgICAgICAgICAgQGR1cGxpY2F0ZXdpZGdldD1cImR1cGxpY2F0ZVdpZGdldFwiIDp3X2lkPVwid2lkLndpZGdldF9pZFwiIDp3dHlwZT1cIndpZC53aWRnZXRfdHlwZV9uYW1lXCIgOndpbmRleD1cIndcIlxuICAgICAgICAgICAgICAgICAgICA6bWVkaWFGb3I9XCJtZWRpYUZvclwiPjwvbWVkaWEtd2lkZ2V0PlxuICAgICAgICAgICAgICAgICAgPCEtLSBFbW90aW9uIEJsb2NrcyAtLT5cbiAgICAgICAgICAgICAgICAgIDxlbW90aW9ucy13aWRnZXQgdi1pZj1cIndpZC53aWRnZXRfdHlwZV9uYW1lID09ICdlbW90aW9uJ1wiIDplZGl0PVwiZWRpdFwiIDp3aWRnZXQ9XCJ3aWQud2lkZ2V0X2RhdGFcIlxuICAgICAgICAgICAgICAgICAgICBAc3RvcmVlbW90aW9uPVwic3RvcmVFbW90aW9uXCIgQGRlbGV0ZWQ9XCJkZWxldGVXaWRnZXRCbG9ja1wiIEBkZWxldGV3aWRnZXQ9XCJkZWxldGVXaWRnZXRcIlxuICAgICAgICAgICAgICAgICAgICBAZHVwbGljYXRld2lkZ2V0PVwiZHVwbGljYXRlV2lkZ2V0XCIgOndfaWQ9XCJ3aWQud2lkZ2V0X2lkXCIgOnd0eXBlPVwid2lkLndpZGdldF90eXBlX25hbWVcIiA6d2luZGV4PVwid1wiXG4gICAgICAgICAgICAgICAgICAgIDptaWQ9XCJtaWRcIiA6bXR5cGU9XCJtdHlwZVwiIDpsY0lkPVwibGNkYXRhLmxjX2lkXCI+PC9lbW90aW9ucy13aWRnZXQ+XG4gICAgICAgICAgICAgICAgICA8IS0tIEZpbGVzIFdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgIDxmaWxlcy13aWRnZXQgdi1pZj1cIndpZC53aWRnZXRfdHlwZV9uYW1lID09ICdhdHRhY2htZW50J1wiIDplZGl0PVwiZWRpdFwiIDp3aWRnZXQ9XCJ3aWQud2lkZ2V0X2RhdGFcIlxuICAgICAgICAgICAgICAgICAgICBAc3RvcmVkb2N1bWVudD1cInN0b3JlRG9jdW1lbnRcIiBAZGVsZXRlZD1cImRlbGV0ZVdpZGdldEJsb2NrXCIgQGRlbGV0ZXdpZGdldD1cImRlbGV0ZVdpZGdldFwiXG4gICAgICAgICAgICAgICAgICAgIEBkdXBsaWNhdGV3aWRnZXQ9XCJkdXBsaWNhdGVXaWRnZXRcIiA6d19pZD1cIndpZC53aWRnZXRfaWRcIiA6d3R5cGU9XCJ3aWQud2lkZ2V0X3R5cGVfbmFtZVwiIDp3aW5kZXg9XCJ3XCJcbiAgICAgICAgICAgICAgICAgICAgOm1pZD1cIm1pZFwiIDptdHlwZT1cIm10eXBlXCI+PC9maWxlcy13aWRnZXQ+XG4gICAgICAgICAgICAgICAgICA8IS0tIERlZmluZWQgS1BJcyAtLT5cbiAgICAgICAgICAgICAgICAgIDwhLS0gSWNvbiBXaWRnZXRzIC0tPlxuICAgICAgICAgICAgICAgICAgPGljb25zLXdpZGdldCB2LWlmPVwid2lkLndpZGdldF90eXBlX25hbWUgPT0gJ2ljb24nXCIgOnRpdGxlPVwiY3VzdG9tTmFtZXMuaWNvblwiIDplZGl0PVwiZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgIDp3aWRnZXQ9XCJ3aWQud2lkZ2V0X2RhdGFcIiBAc3RvcmVpY29uPVwic3RvcmVJY29uXCIgQGRlbGV0ZWQ9XCJkZWxldGVXaWRnZXRCbG9ja1wiXG4gICAgICAgICAgICAgICAgICAgIEBkZWxldGV3aWRnZXQ9XCJkZWxldGVXaWRnZXRcIiBAZHVwbGljYXRld2lkZ2V0PVwiZHVwbGljYXRlV2lkZ2V0XCIgOndfaWQ9XCJ3aWQud2lkZ2V0X2lkXCJcbiAgICAgICAgICAgICAgICAgICAgOnd0eXBlPVwid2lkLndpZGdldF90eXBlX25hbWVcIiA6d2luZGV4PVwid1wiIDptaWQ9XCJtaWRcIiA6bXR5cGU9XCJtdHlwZVwiPjwvaWNvbnMtd2lkZ2V0PlxuICAgICAgICAgICAgICAgICAgPCEtLSBRdW90ZXMgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgPHF1b3Rlcy13aWRnZXQgdi1pZj1cIndpZC53aWRnZXRfdHlwZV9uYW1lID09ICdxdW90ZXMnXCIgOmVkaXQ9XCJlZGl0XCIgOndpZGdldD1cIndpZC53aWRnZXRfZGF0YVwiXG4gICAgICAgICAgICAgICAgICAgIEBzdG9yZXF1b3RlPVwic3RvcmVRdW90ZVwiIEBkZWxldGVkPVwiZGVsZXRlV2lkZ2V0QmxvY2tcIiBAZGVsZXRld2lkZ2V0PVwiZGVsZXRlV2lkZ2V0XCJcbiAgICAgICAgICAgICAgICAgICAgQGR1cGxpY2F0ZXdpZGdldD1cImR1cGxpY2F0ZVdpZGdldFwiIDp3X2lkPVwid2lkLndpZGdldF9pZFwiIDp3dHlwZT1cIndpZC53aWRnZXRfdHlwZV9uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgOndpbmRleD1cIndcIj48L3F1b3Rlcy13aWRnZXQ+XG4gICAgICAgICAgICAgICAgICA8IS0tIERpbWVuc2lvbiB3aWRnZXRzIC0tPlxuICAgICAgICAgICAgICAgICAgPGRpbWVuc2lvbnMtd2lkZ2V0IHYtaWY9XCJ3aWQud2lkZ2V0X3R5cGVfbmFtZSA9PSAnZGltZW5zaW9ucydcIiA6dGl0bGU9XCJjdXN0b21OYW1lcy5kaW1lbnNpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgOmNvdW50cmllcz1cImNvdW50cmllc1wiIDplZGl0PVwiZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgIDp3aWRnZXQ9XCJ3aWQud2lkZ2V0X2RhdGEubGVuZ3RoID8gd2lkLndpZGdldF9kYXRhIDogZ2V0RGltZW5zaW9uKHdpZClcIiA6cHJvZHVjdHM9XCJwcm9kdWN0c1wiXG4gICAgICAgICAgICAgICAgICAgIDpzZWdtZW50cz1cImNfc2VnbWVudHNcIiBAZHVwbGljYXRld2lkZ2V0PVwiZHVwbGljYXRlV2lkZ2V0XCIgQHN0b3JlZGltZW5zaW9uPVwic3RvcmVEaW1lbnNpb25cIlxuICAgICAgICAgICAgICAgICAgICBAZGVsZXRlZD1cImRlbGV0ZVdpZGdldEJsb2NrXCIgOmJyYW5kRm9yPVwiYnJhbmRGb3JcIiBAZGVsZXRld2lkZ2V0PVwiZGVsZXRlV2lkZ2V0XCIgOndfaWQ9XCJ3aWQud2lkZ2V0X2lkXCJcbiAgICAgICAgICAgICAgICAgICAgOnd0eXBlPVwid2lkLndpZGdldF90eXBlX25hbWVcIiA6d2luZGV4PVwid1wiIDpsY0lkPVwibGNkYXRhLmxjX2lkXCI+PC9kaW1lbnNpb25zLXdpZGdldD5cbiAgICAgICAgICAgICAgICAgIDwhLS0gaW1wcm92ZW1lbnQgd2lkZ2V0cyAtLT5cblxuICAgICAgICAgICAgICAgICAgPGltcHJvdmVtZW50IHYtaWY9XCJ3aWQud2lkZ2V0X3R5cGVfbmFtZSA9PSAnaW1wcm92ZW1lbnQnXCIgOnRpdGxlPVwiY3VzdG9tTmFtZXMuaW1wcm92ZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICA6c2NyZWVuPVwiZWRpdCA/ICdlZGl0JyA6ICdwcmVzZW50J1wiIDppPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIDpjb3VudD1cIndpZC53aWRnZXRfZGF0YS5sZW5ndGggPyB3aWQud2lkZ2V0X2RhdGEubGVuZ3RoIDogMFwiIDppbXByb3ZlbWVudHM9XCJ3aWQud2lkZ2V0X2RhdGFcIlxuICAgICAgICAgICAgICAgICAgICA6bW9kdWxlX2lkPVwid2lkLndpZGdldF9pZFwiIDptaW5kZXg9XCJ3XCIgOm1vZHVsZV90eXBlPVwid2lkLndpZGdldF90eXBlX25hbWVcIiA6Y29ubmVjdGluZ1RvPVwiJ2xjJ1wiXG4gICAgICAgICAgICAgICAgICAgIDptaWQ9XCJtaWRcIiA6bXR5cGU9XCJtdHlwZVwiIEBkZWxldGVkPVwiZGVsZXRlV2lkZ2V0QmxvY2tcIiBAZGVsZXRld2lkZ2V0PVwiZGVsZXRlV2lkZ2V0XCJcbiAgICAgICAgICAgICAgICAgICAgQHN0b3JlaW1wcm92ZW1lbnQ9XCJzYXZlSW1wcm92ZW1lbnRcIiBAZHVwbGljYXRld2lkZ2V0PVwiZHVwbGljYXRlV2lkZ2V0XCI+PC9pbXByb3ZlbWVudD5cbiAgICAgICAgICAgICAgICAgIDwhLS0gaW5zaWdodCB3aWRnZXRzIC0tPlxuXG4gICAgICAgICAgICAgICAgICA8aW5zaWdodCB2LWlmPVwid2lkLndpZGdldF90eXBlX25hbWUgPT0gJ2luc2lnaHRfZmFjdCdcIiA6dGl0bGU9XCJjdXN0b21OYW1lcy5pbnNpZ2h0X2ZhY3RcIlxuICAgICAgICAgICAgICAgICAgICA6Y29tcG9uZW50Rm9yPVwiJ2xpZmVjeWNsZSdcIiA6Y3VzdG9tX2ZpZWxkcz1cImluc2lnaHRDdXN0b21MaXN0XCIgOnNjcmVlbj1cImVkaXQgPyAnZWRpdCcgOiAncHJlc2VudCdcIlxuICAgICAgICAgICAgICAgICAgICA6aT1cIjBcIiA6Y291bnQ9XCJ3aWQud2lkZ2V0X2RhdGEubGVuZ3RoID8gd2lkLndpZGdldF9kYXRhLmxlbmd0aCA6IDBcIiA6aW5zaWdodHMuc3luYz1cIndpZC53aWRnZXRfZGF0YVwiXG4gICAgICAgICAgICAgICAgICAgIDptb2R1bGVfaWQ9XCJ3aWQud2lkZ2V0X2lkXCIgOm1pbmRleD1cIndcIiA6bW9kdWxlX3R5cGU9XCJ3aWQud2lkZ2V0X3R5cGVfbmFtZVwiIDpjb25uZWN0aW5nVG89XCJwYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgOm1pZD1cIm1pZFwiIDptdHlwZT1cIm10eXBlXCIgQGRlbGV0ZWQ9XCJkZWxldGVXaWRnZXRCbG9ja1wiIEBkZWxldGV3aWRnZXQ9XCJkZWxldGVXaWRnZXRcIlxuICAgICAgICAgICAgICAgICAgICBAc3RvcmVpbnNpZ2h0PVwic2F2ZUluc2lnaHRcIiBAZHVwbGljYXRld2lkZ2V0PVwiZHVwbGljYXRlV2lkZ2V0XCIgQHVwZGF0ZS1pbnNpZ2h0cz1cImhhbmRsZVVwZGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgPC9pbnNpZ2h0PlxuICAgICAgICAgICAgICAgICAgPGNoYW5uZWwgdi1pZj1cIndpZC53aWRnZXRfdHlwZV9uYW1lID09ICdjaGFubmVsJ1wiIDp0aXRsZT1cImN1c3RvbU5hbWVzLmNoYW5uZWxcIlxuICAgICAgICAgICAgICAgICAgICA6Y29tcG9uZW50Rm9yPVwiJ2xpZmVjeWNsZSdcIiA6Y3VzdG9tX2ZpZWxkcz1cImNoYW5uZWxDdXN0b21MaXN0XCIgOnNjcmVlbj1cImVkaXQgPyAnZWRpdCcgOiAncHJlc2VudCdcIlxuICAgICAgICAgICAgICAgICAgICA6aT1cIjBcIiA6Y291bnQ9XCJ3aWQud2lkZ2V0X2RhdGEubGVuZ3RoID8gd2lkLndpZGdldF9kYXRhLmxlbmd0aCA6IDBcIiA6Y2hhbm5lbHM9XCJ3aWQud2lkZ2V0X2RhdGFcIlxuICAgICAgICAgICAgICAgICAgICA6bW9kdWxlX2lkPVwid2lkLndpZGdldF9pZFwiIDptaW5kZXg9XCJ3XCIgOm1vZHVsZV90eXBlPVwid2lkLndpZGdldF90eXBlX25hbWVcIiA6Y29ubmVjdGluZ1RvPVwicGFnZVwiXG4gICAgICAgICAgICAgICAgICAgIDptaWQ9XCJtaWRcIiA6bXR5cGU9XCJtdHlwZVwiIEBkZWxldGVkPVwiZGVsZXRlV2lkZ2V0QmxvY2tcIiBAZGVsZXRld2lkZ2V0PVwiZGVsZXRlV2lkZ2V0XCJcbiAgICAgICAgICAgICAgICAgICAgQHN0b3JlY2hhbm5lbD1cInNhdmVDaGFubmVsXCIgQGR1cGxpY2F0ZXdpZGdldD1cImR1cGxpY2F0ZVdpZGdldFwiPjwvY2hhbm5lbD5cbiAgICAgICAgICAgICAgICAgIDxtb3Qgdi1pZj1cIndpZC53aWRnZXRfdHlwZV9uYW1lID09ICdtb3QnXCIgOm1vdEN1c3RvbUxpc3Q9XCJtb3RzQ3VzdG9tTGlzdFwiIDpjb21wb25lbnRGb3I9XCInbGlmZWN5Y2xlJ1wiXG4gICAgICAgICAgICAgICAgICAgIDpzY3JlZW49XCJlZGl0ID8gJ2VkaXQnIDogJ3ByZXNlbnQnXCIgOmk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgOmNvdW50PVwid2lkLndpZGdldF9kYXRhICYmIHdpZC53aWRnZXRfZGF0YS5sZW5ndGggPyB3aWQud2lkZ2V0X2RhdGEubGVuZ3RoIDogMFwiXG4gICAgICAgICAgICAgICAgICAgIDptb3Q9XCJ3aWQud2lkZ2V0X2RhdGFcIiA6bGNpZD1cImxjZGF0YS5sY19pZFwiIDptb2R1bGVfaWQ9XCJ3aWQud2lkZ2V0X2lkXCIgOm1pbmRleD1cIndcIlxuICAgICAgICAgICAgICAgICAgICA6bW9kdWxlX3R5cGU9XCJ3aWQud2lkZ2V0X3R5cGVfbmFtZVwiIDpwYWdlPVwicGFnZVwiIDptaWQ9XCJtaWRcIiA6bXR5cGU9XCJtdHlwZVwiIDp3X2lkPVwid2lkLndpZGdldF9pZFwiXG4gICAgICAgICAgICAgICAgICAgIEBkZWxldGVkPVwiZGVsZXRlV2lkZ2V0QmxvY2tcIiBAZGVsZXRld2lkZ2V0PVwiZGVsZXRlV2lkZ2V0XCIgQGR1cGxpY2F0ZXdpZGdldD1cImR1cGxpY2F0ZVdpZGdldFwiXG4gICAgICAgICAgICAgICAgICAgIEBzdG9yZW1vdD1cInNhdmVNb3RcIj48L21vdD5cblxuICAgICAgICAgICAgICAgICAgPCEtLSBwZXJzb25hIC0tPlxuICAgICAgICAgICAgICAgICAgPHBlcnNvbmFzIHYtaWY9XCJ3aWQud2lkZ2V0X3R5cGVfbmFtZSA9PSAncGVyc29uYXMnXCIgOnRpdGxlPVwiY3VzdG9tTmFtZXMucGVyc29uYXNcIlxuICAgICAgICAgICAgICAgICAgICA6Y29tcG9uZW50Rm9yPVwiJ2xpZmVjeWNsZSdcIiA6YXBwU2Vzcz1cImFwcFNlc3NcIiA6ZWRpdD1cImVkaXRcIiA6Y3VzdG9tX2ZpZWxkcz1cInBlcnNvbmFDdXN0b21MaXN0XCJcbiAgICAgICAgICAgICAgICAgICAgOnNjcmVlbj1cImVkaXQgPyAnZWRpdCcgOiAncHJlc2VudCdcIiA6aT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICA6Y291bnQ9XCJ3aWQud2lkZ2V0X2RhdGEubGVuZ3RoID8gd2lkLndpZGdldF9kYXRhLmxlbmd0aCA6IDBcIiA6cGVyc29uYXM9XCJ3aWQud2lkZ2V0X2RhdGFcIlxuICAgICAgICAgICAgICAgICAgICA6bW9kdWxlX2lkPVwid2lkLndpZGdldF9pZFwiIDptaW5kZXg9XCJ3XCIgOm1vZHVsZV90eXBlPVwid2lkLndpZGdldF90eXBlX25hbWVcIiA6Y29ubmVjdGluZ1RvPVwicGFnZVwiXG4gICAgICAgICAgICAgICAgICAgIDptaWQ9XCJtaWRcIiA6bXR5cGU9XCJtdHlwZVwiIEBzdG9yZXBlcnNvbmE9XCJzdG9yZU1vZGFsRGF0YVwiIEBkZWxldGVkPVwiZGVsZXRlV2lkZ2V0QmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICBAZGVsZXRld2lkZ2V0PVwiZGVsZXRlV2lkZ2V0XCIgQGR1cGxpY2F0ZXdpZGdldD1cImR1cGxpY2F0ZVdpZGdldFwiIEB1cGRhdGUtcGVyc29uYXM9XCJoYW5kbGVVcGRhdGVcIj5cbiAgICAgICAgICAgICAgICAgIDwvcGVyc29uYXM+XG4gICAgICAgICAgICAgICAgICA8IS0tIGtwaSAtLT5cbiAgICAgICAgICAgICAgICAgIDxrcGlzIHYtaWY9XCJ3aWQud2lkZ2V0X3R5cGVfbmFtZSA9PSAna3BpJ1wiIDphcHBTZXNzPVwiYXBwU2Vzc1wiIDplZGl0PVwiZWRpdFwiIDp3aWRnZXQ9XCJ3aWQud2lkZ2V0X2RhdGFcIlxuICAgICAgICAgICAgICAgICAgICBAc3RvcmVrcGk9XCJzdG9yZU1vZGFsRGF0YVwiIDp3X2lkPVwid2lkLndpZGdldF9pZFwiIDp3dHlwZT1cIndpZC53aWRnZXRfdHlwZV9uYW1lXCIgOndpbmRleD1cIndcIlxuICAgICAgICAgICAgICAgICAgICA6bWlkPVwibWlkXCIgOm10eXBlPVwibXR5cGVcIiA6bGNJZD1cImxjZGF0YS5sY19pZFwiIEBkZWxldGVkPVwiZGVsZXRlV2lkZ2V0QmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICBAZGVsZXRld2lkZ2V0PVwiZGVsZXRlV2lkZ2V0XCIgQGR1cGxpY2F0ZXdpZGdldD1cImR1cGxpY2F0ZVdpZGdldFwiPjwva3Bpcz5cbiAgICAgICAgICAgICAgICAgIDxsaW5rLXdpZGdldCB2LWlmPVwid2lkLndpZGdldF90eXBlX25hbWUgPT0gJ2xpbmsnXCIgOmxpbmtDdXN0b21MaXN0PVwibGlua0N1c3RvbUxpc3RcIlxuICAgICAgICAgICAgICAgICAgICA6Y29tcG9uZW50Rm9yPVwiJ2xpZmVjeWNsZSdcIiA6c2NyZWVuPVwiZWRpdCA/ICdlZGl0JyA6ICdwcmVzZW50J1wiIDppPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIDpjb3VudD1cIndpZC53aWRnZXRfZGF0YSAmJiB3aWQud2lkZ2V0X2RhdGEubGVuZ3RoID8gd2lkLndpZGdldF9kYXRhLmxlbmd0aCA6IDBcIlxuICAgICAgICAgICAgICAgICAgICA6bGlua3Muc3luYz1cIndpZC53aWRnZXRfZGF0YVwiIDpsY2lkPVwibGNkYXRhLmxjX2lkXCIgOm1vZHVsZV9pZD1cIndpZC53aWRnZXRfaWRcIiA6bWluZGV4PVwid1wiXG4gICAgICAgICAgICAgICAgICAgIDptb2R1bGVfdHlwZT1cIid3aWRnZXQnXCIgOnBhZ2U9XCJwYWdlXCIgOm1pZD1cIm1pZFwiIDptdHlwZT1cIm10eXBlXCIgOndfaWQ9XCJ3aWQud2lkZ2V0X2lkXCJcbiAgICAgICAgICAgICAgICAgICAgQHN0b3JlbGluaz1cInN0b3JlTGlua1wiIEBkZWxldGVkPVwiZGVsZXRlV2lkZ2V0QmxvY2tcIiBAZGVsZXRld2lkZ2V0PVwiZGVsZXRlV2lkZ2V0XCJcbiAgICAgICAgICAgICAgICAgICAgQGR1cGxpY2F0ZXdpZGdldD1cImR1cGxpY2F0ZVdpZGdldFwiPjwvbGluay13aWRnZXQ+XG4gICAgICAgICAgICAgICAgICA8aGllcmFyY2h5LXdpZGdldCB2LWlmPVwid2lkLndpZGdldF90eXBlX25hbWUgPT0gJ2hpZXJhcmNoeSdcIlxuICAgICAgICAgICAgICAgICAgICA6aGllcmFyY2h5Q3VzdG9tTGlzdD1cImhpZXJhcmNoeUN1c3RvbUxpc3RcIiA6Y29tcG9uZW50Rm9yPVwiJ2xpZmVjeWNsZSdcIlxuICAgICAgICAgICAgICAgICAgICA6c2NyZWVuPVwiZWRpdCA/ICdlZGl0JyA6ICdwcmVzZW50J1wiIDppPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIDpjb3VudD1cIndpZC53aWRnZXRfZGF0YSAmJiB3aWQud2lkZ2V0X2RhdGEubGVuZ3RoID8gd2lkLndpZGdldF9kYXRhLmxlbmd0aCA6IDBcIlxuICAgICAgICAgICAgICAgICAgICA6aGllcmFyY2hpZXMuc3luYz1cIndpZC53aWRnZXRfZGF0YVwiIDpsY2lkPVwibGNkYXRhLmxjX2lkXCIgOm1vZHVsZV9pZD1cIndpZC53aWRnZXRfaWRcIiA6bWluZGV4PVwid1wiXG4gICAgICAgICAgICAgICAgICAgIDptb2R1bGVfdHlwZT1cIid3aWRnZXQnXCIgOnBhZ2U9XCJwYWdlXCIgOm1pZD1cIm1pZFwiIDptdHlwZT1cIm10eXBlXCIgOndfaWQ9XCJ3aWQud2lkZ2V0X2lkXCJcbiAgICAgICAgICAgICAgICAgICAgQHN0b3JlaGllcmFyY2hpZXM9XCJzdG9yZUhpZXJhcmNoaWVzXCIgQGRlbGV0ZWQ9XCJkZWxldGVXaWRnZXRCbG9ja1wiIEBkZWxldGV3aWRnZXQ9XCJkZWxldGVXaWRnZXRcIlxuICAgICAgICAgICAgICAgICAgICBAZHVwbGljYXRld2lkZ2V0PVwiZHVwbGljYXRlV2lkZ2V0XCI+PC9oaWVyYXJjaHktd2lkZ2V0PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IHdpZGdldEJveE1haW5cIiB2LWlmPVwiZWRpdCAmJiB3aWRnZXRGb3JcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3aWRnZXREaXNwYXlCb3hcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBwLTBcIiBAY2xpY2s9XCJvcGVuTW9kYWwoJyNhZGRXaWRnZXRNb2RhbCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpZmVDeWNsZVdpZGdldE1vZGFsIGFkZHdpZGdldEZ1bGxtb2RhbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJmYSBmYS1wbHVzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub1dpZGdldEpvdXJuZXlib3ggaW5uZXJNYXJnaW5cIiB2LWlmPVwid2lkZ2V0cy5sZW5ndGggPT0gMFwiPlxuICAgICAgICAgICAgICAgICAge3sgYXBwVHJhbnMuY29tbW9uLm5vX3dpZGdldCB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2RyYWdnYWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gTW9kYWwgUG9wIFVwcyAtLT5cbiAgICA8IS0tU3RhcnQgV2FybiBDaGFuZ2UgVXNlciBQb3BVcCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwgZmFkZSBtb2RhbGJnIG1haW5Nb2RhbFwiIGlkPVwid2Fybk1hcE93bmVyQ2hhbmdlXCIgdGFiaW5kZXg9XCItMVwiIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwid2FybkNoYW5nZVVzZXJNb2RhbExhYmVsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIGluc2lnaHQtV2FybmluZyBtb2RhbC1DaGFuZ2VVc2VyIG1vZGFsLWRpYWxvZy1jZW50ZXJlZFwiIHJvbGU9XCJkb2N1bWVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxoMiBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW1vdGlvbi10aXRsZVwiPnt7IGFwcFRyYW5zLmNvbW1vbi53YXJuaW5nIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPlxuICAgICAgICAgICAgICA8c3Bhbj7Dlzwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgbm9TY3JvbGxQb3B1cFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluc2lnaHRzQm9keSBwLTAgdGV4dC1sZWZ0IGluc2lnaHRXYXJuaW5nVGV4dFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHNlbGVjdEFycm93TWFpbiBjaGFuZ2VVc2VyRHJvcCBwLTBcIj5cbiAgICAgICAgICAgICAgICB7eyBhcHBUcmFucy5jb21tb24udHJhbnNmZXJfb3duZXJfbWVzc2FnZSB9fVxuICAgICAgICAgICAgICAgIDxicj5cbiAgICAgICAgICAgICAgICA8YnI+XG4gICAgICAgICAgICAgICAge3sgYXBwVHJhbnMuY29tbW9uLmNvbmZpcm1fbWVzc2FnZV93YW50IH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBnbG9iYWwtYnRuLXNtIGdyYWRpZW50YnRuXCIgQGNsaWNrPVwiY2hhbmdlTWFwT3duZXIobWFwT3duZXIpXCI+XG4gICAgICAgICAgICAgIHt7IGFwcFRyYW5zLmNvbW1vbi50cmFuc2Zlcl9tYXAgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBjbGFzcz1cImJ0biBnbG9iYWwtYnRuLXNtIGJvcmRlcmVkLXRyYW5zcGFyZW50YnRuXCI+XG4gICAgICAgICAgICAgIHt7IGFwcFRyYW5zLmNvbW1vbi5jYW5jZWwgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS1TdGFydCBDaGFuZ2UgVXNlciBQb3BVcCAtLT5cblxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlIG1vZGFsYmcgbWFpbk1vZGFsIGNoYW5nZU93bmVyLXppbmRleFwiIGlkPVwiY2hhbmdlTWFwT3duZXJcIiB0YWJpbmRleD1cIi0xXCIgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBhcmlhLWxhYmVsbGVkYnk9XCJjaGFuZ2VVc2VyTW9kYWxMYWJlbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBpbnNpZ2h0LVdhcm5pbmcgbW9kYWwtQ2hhbmdlVXNlciBtb2RhbC1kaWFsb2ctY2VudGVyZWRcIiByb2xlPVwiZG9jdW1lbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAgICA8aDIgY2xhc3M9XCJtb2RhbC10aXRsZVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVtb3Rpb24tdGl0bGVcIj57eyBhcHBUcmFucy5jb21tb24uY2hhbmdlX293bmVyIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPlxuICAgICAgICAgICAgICA8c3Bhbj7Dlzwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgbm9TY3JvbGxQb3B1cFwiIHYtaWY9XCJtYXBUeXBlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5zaWdodHNCb2R5IHAtMCB0ZXh0LWxlZnQgaW5zaWdodFdhcm5pbmdUZXh0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbm9ybWFsLVNlbGVjdCBwLTBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWw+U2VsZWN0IGFuIG93bmVyPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8c2VsZWN0IHYtbW9kZWw9XCJtYXBPd25lclwiIEBjaGFuZ2U9XCJ3YXJuTWFwT3duZXJDaGFuZ2UoKVwiIDpkYXRhLXRpdGxlPVwibWFwT3duZXIgPyBudWxsIDogJ2Nob29zZSBvd25lcidcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RtYXAgZm9ybS1jb250cm9sIHNlbGVjdHBpY2tlciBtbS1zZWxlY3Qtc21cIiBkYXRhLXNpemU9XCI0XCIgZGF0YS1saXZlLXNlYXJjaD1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gdi1mb3I9XCJ1c2VyIGluIGFsbF91c2Vyc1wiIDpjbGFzcz1cInsgJ2Qtbm9uZSc6IHVzZXIucm9sZSAhPSAnVXNlcicgJiYgdXNlci5yb2xlICE9ICdBZG1pbicgfVwiXG4gICAgICAgICAgICAgICAgICAgIDpkaXNhYmxlZD1cImFwcFNlc3Mucm9sZSAhPSAnQWRtaW4nIHx8IGdldE93bmVyKCkgPT0gdXNlci51c2VyX2lkXCIgOmtleT1cInVzZXIudXNlcl9pZFwiXG4gICAgICAgICAgICAgICAgICAgIDp2YWx1ZT1cInVzZXIudXNlcl9pZFwiPnt7ICh1c2VyLnVzZXJfZmlyc3RuYW1lID8gdXNlci51c2VyX2ZpcnN0bmFtZSA6ICcnKSArICcgJyArXG4gICAgICAgICAgICAgICAgICAgICAgKHVzZXIudXNlcl9sYXN0bmFtZSA/IHVzZXIudXNlcl9sYXN0bmFtZSA6ICcnKSB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBzZWxlY3RBcnJvd01haW4gY2hhbmdlVXNlckRyb3AgcC0wIG10LTNcIlxuICAgICAgICAgICAgICAgIHYtaWY9XCJtZGF0YSAmJiBtZGF0YS5tYXB0eXBlICE9IDEgJiYgbWRhdGEucHVibGlzaCAhPSAwXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsPlNlbGVjdCBjby1vd25lcjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBwLTAgc2VsZWN0QXJyb3dNYWluIGZpbHRlcmNoZWNrYm94bWFwcyBjby11c2VyLWRyb3Bkb3duXCI+XG4gICAgICAgICAgICAgICAgICA8c2VsZWN0IHYtbW9kZWw9XCJjb093bmVyc1wiIEBjaGFuZ2U9XCJjaGFuZ2VNYXBDb093bmVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBzZWxlY3RwaWNrZXIgbW0tc2VsZWN0LXNtIHJlc3RyaWN0Q2xvc2VcIiBtdWx0aXBsZSBkYXRhLXNpemU9XCI1XCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS10aXRsZT1cIkNob29zZSBDby1vd25lclwiIGRhdGEtYWN0aW9ucy1ib3g9XCJmYWxzZVwiIGRhdGEtbGl2ZS1zZWFyY2g9XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdi1mb3I9XCIodXNlciwgaW5kZXgpIGluIGFsbF91c2Vyc1wiIDp2YWx1ZT1cInVzZXIudXNlcl9pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgOnRpdGxlPVwiKHVzZXIudXNlcl9maXJzdG5hbWUgPyB1c2VyLnVzZXJfZmlyc3RuYW1lIDogJycpICsgJyAnICsgKHVzZXIudXNlcl9sYXN0bmFtZSA/IHVzZXIudXNlcl9sYXN0bmFtZSA6ICcnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwieyAnZC1ub25lJzogbWFwT3duZXIgPT0gdXNlci51c2VyX2lkIHx8IHVzZXIucm9sZSA9PSAnVmlld2VyJyB8fCB1c2VyLnJvbGUgPT0gJ1N5c3RlbSBBZG1pbicgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgOmtleT1cIidjb3dvbicgKyBpbmRleFwiPnt7ICh1c2VyLnVzZXJfZmlyc3RuYW1lID8gdXNlci51c2VyX2ZpcnN0bmFtZSA6ICcnKSArICcgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAodXNlci51c2VyX2xhc3RuYW1lID8gdXNlci51c2VyX2xhc3RuYW1lIDogJycpIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gY2xhc3M9XCJhcHBseUJ0blwiIDp2YWx1ZT1cIidfYXBwbHlCdG5fJ1wiIDp0aXRsZT1cIictJ1wiIDpkYXRhLWNvbnRlbnQ9XCJnZXRBcHBseUJ1dHRvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLUVtZCBDaGFuZ2UgVXNlciBQb3BVcCAtLT5cbiAgICA8Q2hhbmdlVXNlciA6Y29tcG9uZW50Rm9yPVwiJ2xpZmVjeWNsZSdcIiA6b3duZXJDaGFuZ2VGb3I9XCJvd25lckNoYW5nZUZvclwiIDphcHBTZXNzPVwiYXBwU2Vzc1wiIDp1c2Vycz1cImFsbF91c2Vyc1wiXG4gICAgICA6bW9kSW5kZXg9XCJtb2RJbmRleFwiIDpwYXJlbnRJbmRleD1cInBhcmVudEluZGV4XCIgOm1vZE93bmVyPVwibW9kT3duZXJcIiA6Y29Pd25lcnNQcm9wPVwiY29Pd25lcnNcIlxuICAgICAgOmluaXRpYWxpc2U9XCJzaG93T3duZXJDaGFuZ2VQb3BVcFwiPjwvQ2hhbmdlVXNlcj5cbiAgICA8aWNvbnMgOmFwcFNlc3M9XCJhcHBTZXNzXCIgQHNldGljb249XCJzZXRJY29uXCIgOmljb25zPVwiaWNvbnNcIiA6Y2xhc3M9XCJ7ICdkLW5vbmUnOiAhbG9hZGluZ0xDIH1cIj48L2ljb25zPlxuICAgIDxlbW90aW9ucyA6YXBwU2Vzcz1cImFwcFNlc3NcIiBAc2V0ZW1vdGlvbj1cInNldEVtb3Rpb25cIiA6ZW1vdGlvbnM9XCJlbW90aW9uc1wiIEBkZXNlbGVjdGVtb3Rpb249XCJkZWxldGVXaWRnZXRCbG9ja1wiXG4gICAgICA6d2lkZ2V0cz1cIndpZGdldEVtb3Rpb25zXCIgOndfaWQ9XCJ3aWRnZXRfaWRcIiA6Y2xhc3M9XCJ7ICdkLW5vbmUnOiAhbG9hZGluZ0xDIH1cIj48L2Vtb3Rpb25zPlxuICAgIDwhLS0gQWRkIEltYWdlIFBvcHVwIC0tPlxuICAgIDxtZWRpYSBAY2xpY2tlZD1cInNhdmVNZWRpYVwiIDptZWRpYT1cIm1lZGlhXCIgOm1lZGlhRm9yPVwibWVkaWFGb3JcIiA6Y2xhc3M9XCJ7ICdkLW5vbmUnOiAhbG9hZGluZ0xDIH1cIj48L21lZGlhPlxuICAgIDwhLS0gQWRkIERvY3VtZW50IFBvcHVwIC0tPlxuICAgIDxkb2N1bWVudHMgQHNldGRvYz1cInNhdmVEb2N1bWVudFwiIDpkb2N1bWVudHM9XCJkb2N1bWVudHNcIiA6Y2xhc3M9XCJ7ICdkLW5vbmUnOiAhbG9hZGluZ0xDIH1cIiA6ZG9jRm9yPVwicGFnZVwiPlxuICAgIDwvZG9jdW1lbnRzPlxuICAgIDxicmFuZHMgdi1pZj1cImFwcFNlc3MgJiYgYXBwU2Vzcy5pZFwiIDp0aXRsZT1cImN1c3RvbU5hbWVzLmJyYW5kXCIgQHNldGJyYW5kPVwic2V0QnJhbmRcIiA6YWRtaW5fYnJhbmRzPVwiYWRtaW5fYnJhbmRzXCJcbiAgICAgIDpicmFuZEZvcj1cImJyYW5kRm9yXCIgOmNsYXNzPVwieyAnZC1ub25lJzogIWxvYWRpbmdMQyB9XCI+PC9icmFuZHM+XG4gICAgPHdpZGdldC10eXBlcyA6YXBwU2Vzcz1cImFwcFNlc3NcIiA6bW9kdWxlPVwiJ2xpZmVjeWNsZSdcIiA6Y3VzdG9tTmFtZXM9XCJjdXN0b21OYW1lc1wiIEBjbGlja2VkPVwiYWRkTmV3V2lkZ2V0XCJcbiAgICAgIDp3X3R5cGVzPVwid190eXBlc1wiIDpjbGFzcz1cInsgJ2Qtbm9uZSc6ICFsb2FkaW5nTEMgfVwiPjwvd2lkZ2V0LXR5cGVzPlxuICAgIDwhLS1TdGFydCBpbXByb3ZlbWVudCBKb3VybmV5IEFQUCAtLS0+XG5cbiAgICA8aW1wcm92ZW1lbnRzLWxpc3Qgdi1pZj1cImFwcFNlc3MgJiYgYXBwU2Vzcy5pZFwiIDpjb21wb25lbnRGb3I9XCInaW1wcm92ZW1lbnRzJ1wiIDpwcm9kdWN0cy5zeW5jPVwicHJvZHVjdHNcIlxuICAgICAgOmNvdW50cmllcy5zeW5jPVwiY291bnRyaWVzXCIgOnVzZXJzPVwiYWxsX3VzZXJzXCIgOmNfc2VnbWVudHMuc3luYz1cImNfc2VnbWVudHNcIiA6bWVkaWE9XCJtZWRpYVwiXG4gICAgICA6YWRtaW5fYnJhbmRzPVwiYWRtaW5fYnJhbmRzXCIgOmNvbm5lY3RpbmdUbz1cIidsYydcIiBAc3RvcmVpbXByb3ZlbWVudD1cInN0b3JlSW1wcm92ZW1lbnRcIj48L2ltcHJvdmVtZW50cy1saXN0PlxuICAgIDwhLS1TdGFydCBpbnNpZ2h0IEpvdXJuZXkgQVBQIC0tLT5cblxuICAgIDxpbnNpZ2h0cy1saXN0IHYtaWY9XCJhcHBTZXNzICYmIGFwcFNlc3MuaWRcIiByZWY9XCJpbnNpZ2h0c0xpc3RcIiA6aW5zaWdodE1vZGFsU3RhdHVzPVwiaW5zaWdodE1vZGFsU3RhdHVzXCJcbiAgICAgIDpjb21wb25lbnRGb3I9XCInbGlmZWN5Y2xlJ1wiIDpjdXN0b21fZmllbGRzPVwiaW5zaWdodEN1c3RvbUxpc3RcIiA6c2NyZWVuPVwiZWRpdCA/ICdlZGl0JyA6ICdwcmVzZW50J1wiXG4gICAgICA6TW90TW9kYWxTdGF0dXM9XCJNb3RNb2RhbFN0YXR1c1wiIDpkb2N1bWVudHM9XCJkb2N1bWVudHNcIiA6cHJvZHVjdHMuc3luYz1cInByb2R1Y3RzXCIgOmNvdW50cmllcy5zeW5jPVwiY291bnRyaWVzXCJcbiAgICAgIDp1c2Vycz1cImFsbF91c2Vyc1wiIDpjX3NlZ21lbnRzLnN5bmM9XCJjX3NlZ21lbnRzXCIgOm1lZGlhPVwibWVkaWFcIiA6YWRtaW5fYnJhbmRzPVwiYWRtaW5fYnJhbmRzXCIgOmNvbm5lY3RpbmdUbz1cIidsYydcIlxuICAgICAgOnBhZ2U9XCJwYWdlXCIgQHN0b3JlaW5zaWdodD1cInN0b3JlSW5zaWdodFwiPjwvaW5zaWdodHMtbGlzdD5cbiAgICA8IS0tIFBlcnNvbmFzIC0tPlxuICAgIDxwZXJzb25hcy1saXN0IHYtaWY9XCJhcHBTZXNzICYmIGFwcFNlc3MuaWQgJiYgY2hlY2tBY2Nlc3MoYXBwU2Vzcy5jb25maWd1cmF0aW9ucywgJ3BlcnNvbmFzJylcIlxuICAgICAgOmNvbXBvbmVudEZvcj1cIidsaWZlY3ljbGUnXCIgOnBlcnNvbmFNb2RhbFN0YXR1cz1cInBlcnNvbmFNb2RhbFN0YXR1c1wiIDpjdXN0b21fZmllbGRzPVwicGVyc29uYUN1c3RvbUxpc3RcIlxuICAgICAgOnBhZ2U9XCJwYWdlXCIgOmRvY3VtZW50cz1cImRvY3VtZW50c1wiIDpNb3RNb2RhbFN0YXR1cz1cIk1vdE1vZGFsU3RhdHVzXCIgOmFwcFNlc3M9XCJhcHBTZXNzXCJcbiAgICAgIDphZG1pbl9icmFuZHM9XCJhZG1pbl9icmFuZHNcIiA6cHJvZHVjdHM9XCJwcm9kdWN0c1wiIDpjb3VudHJpZXM9XCJjb3VudHJpZXNcIiA6Y19zZWdtZW50cz1cImNfc2VnbWVudHNcIlxuICAgICAgOnVzZXJzPVwiYWxsX3VzZXJzXCIgQGNvbm5lY3RQZXJzb25hPVwiY29ubmVjdFBlcnNvbmFcIiA6UGZvcj1cIidsYydcIj48L3BlcnNvbmFzLWxpc3Q+XG4gICAgPCEtLUVuZCAgUGVyc29uYXMgLS0+XG5cbiAgICA8IS0tIGtwaSBsaXN0IC0tPlxuICAgIDxrcGlzLWxpc3QgOmFwcFNlc3M9XCJhcHBTZXNzXCIgQGNvbm5lY3RrcGk9XCJjb25uZWN0S3BpXCIgOnBhZ2U9XCJwYWdlXCI+PC9rcGlzLWxpc3Q+XG4gICAgPCEtLUVuZCBDaGFubmVscyBNb2RhbC0tPlxuICAgIDxjaGFubmVscy1saXN0IHJlZj1cImNoYW5uZWxzTGlzdFwiIHYtc2hvdz1cImFwcFNlc3MgJiYgYXBwU2Vzcy5pZFwiIDpjb25uZWN0aW5nVG89XCInbGMnXCIgOmNvbXBvbmVudEZvcj1cIidsaWZlY3ljbGUnXCJcbiAgICAgIDpjaGFubmVsTW9kYWxTdGF0dXM9XCJjaGFubmVsTW9kYWxTdGF0dXNcIiA6Y3VzdG9tX2ZpZWxkcz1cImNoYW5uZWxDdXN0b21MaXN0XCIgOnNjcmVlbj1cImVkaXQgPyAnZWRpdCcgOiAncHJlc2VudCdcIlxuICAgICAgOnBhZ2U9XCJwYWdlXCIgOmRvY3VtZW50cz1cImRvY3VtZW50c1wiIDppY29ucz1cImljb25zXCIgOm1lZGlhPVwibWVkaWFcIiA6dXNlcnM9XCJhbGxfdXNlcnNcIlxuICAgICAgQHN0b3JlY2hhbm5lbD1cInN0b3JlQ2hhbm5lbFwiPjwvY2hhbm5lbHMtbGlzdD5cbiAgICA8IS0tRW5kICBrcGkgbGlzdCAtLT5cbiAgICA8bW90cy1saXN0IHYtaWY9XCJhcHBTZXNzICYmIGFwcFNlc3MuaWRcIiByZWY9XCJtb3RzTGlzdFwiIDpjb21wb25lbnRGb3I9XCInbGlmZWN5Y2xlJ1wiIDplbW90aW9ucz1cImVtb3Rpb25zXCJcbiAgICAgIDppY29ucz1cImljb25zXCIgOmN1c3RvbV9maWVsZHM9XCJpbnNpZ2h0Q3VzdG9tTGlzdFwiIDptb3RDdXN0b21MaXN0PVwibW90c0N1c3RvbUxpc3RcIlxuICAgICAgOmluc2lnaHRDdXN0b21MaXN0PVwiaW5zaWdodEN1c3RvbUxpc3RcIiA6c2NyZWVuPVwiZWRpdCA/ICdlZGl0JyA6ICdwcmVzZW50J1wiIDpNb3RNb2RhbFN0YXR1cz1cIk1vdE1vZGFsU3RhdHVzXCJcbiAgICAgIDpkb2N1bWVudHM9XCJkb2N1bWVudHNcIiA6cHJvZHVjdHMuc3luYz1cInByb2R1Y3RzXCIgOmNvdW50cmllcy5zeW5jPVwiY291bnRyaWVzXCIgOnVzZXJzPVwiYWxsX3VzZXJzXCJcbiAgICAgIDpjX3NlZ21lbnRzLnN5bmM9XCJjX3NlZ21lbnRzXCIgOm1lZGlhPVwibWVkaWFcIiA6YWRtaW5fYnJhbmRzPVwiYWRtaW5fYnJhbmRzXCIgOmNvbm5lY3RpbmdUbz1cIidsYydcIiA6cGFnZT1cInBhZ2VcIlxuICAgICAgQHN0b3JlbW90PVwic3RvcmVNb3RcIj48L21vdHMtbGlzdD5cbiAgICA8IS0tTGluay0tPlxuICAgIDxsaW5rLWZvcm0gcmVmPVwibGlua0NvbXBvbmVudFJlZlwiIDphcHBTZXNzPVwiYXBwU2Vzc1wiIDpqb3VybmV5cz1cImpvdXJuZXlzXCIgOmxpbmtDdXN0b21MaXN0PVwibGlua0N1c3RvbUxpc3RcIlxuICAgICAgOnBhZ2U9XCJwYWdlXCIgOmNvbXBvbmVudEZvcj1cIidsaWZlY3ljbGUnXCIgOm1lZGlhTW9kYWw9XCInbWVkaWFNb2RhbCcgKyBtZWRpYUZvclwiXG4gICAgICBAc2V0LWN1c3RvbS1lbGVtZW50cz1cInNldEN1c3RvbUVsZW1lbnRcIj48L2xpbmstZm9ybT5cbiAgICA8bGluay12aWV3IHJlZj1cImxpbmtWaWV3Q29tcG9uZW50UmVmXCIgOmFwcFNlc3M9XCJhcHBTZXNzXCIgOmxpbmtDdXN0b21MaXN0PVwibGlua0N1c3RvbUxpc3RcIiA6cGFnZT1cInBhZ2VcIlxuICAgICAgOmNvbXBvbmVudEZvcj1cIidsaWZlY3ljbGUnXCI+PC9saW5rLXZpZXc+XG5cbiAgICA8IS0tSGllcmFyY2h5LS0+XG4gICAgPGhpZXJhcmNoeS1mb3JtIHJlZj1cImhpZXJhcmNoeUNvbXBvbmVudFJlZlwiIDphcHBTZXNzPVwiYXBwU2Vzc1wiIDpqb3VybmV5cz1cImpvdXJuZXlzXCJcbiAgICAgIDpoaWVyYXJjaHlDdXN0b21MaXN0PVwiaGllcmFyY2h5Q3VzdG9tTGlzdFwiIDpwYWdlPVwicGFnZVwiIDpjb21wb25lbnRGb3I9XCInbGlmZWN5Y2xlJ1wiXG4gICAgICBAc2V0LWN1c3RvbS1lbGVtZW50cz1cInNldEN1c3RvbUVsZW1lbnRcIj48L2hpZXJhcmNoeS1mb3JtPlxuICAgIDxoaWVyYXJjaHktdmlldyByZWY9XCJoaWVyYXJjaHlWaWV3Q29tcG9uZW50UmVmXCIgOmFwcFNlc3M9XCJhcHBTZXNzXCIgOmhpZXJhcmNoeUN1c3RvbUxpc3Q9XCJoaWVyYXJjaHlDdXN0b21MaXN0XCJcbiAgICAgIDpwYWdlPVwicGFnZVwiIDpjb21wb25lbnRGb3I9XCInbGlmZWN5Y2xlJ1wiPjwvaGllcmFyY2h5LXZpZXc+XG4gICAgPCEtLWFkZCBtb3QtLT5cbiAgICA8IS0tIDxhZGQtbW90IDphcHBTZXNzPVwiYXBwU2Vzc1wiIDpwYWdlPVwicGFnZVwiIDpjb21wb25lbnRGb3I9XCInbGlmZWN5Y2xlJ1wiIDpjdXN0b21fZmllbGRzPVwiY3VzdG9tTGlzdFwiPjwvYWRkLW1vdD4gLS0+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0PlxuaW1wb3J0IGxpZmVjeWNsZU1peGluIGZyb20gJy4uLy4uL2Fzc2V0cy9qcy9taXhpbnMvbGlmZWN5Y2xlTWl4aW4nO1xuaW1wb3J0IHsgcHJldmlldyB9IGZyb20gJy4uL01hcHMvTWl4aW5zL3ByZXZpZXcuanMnO1xuaW1wb3J0IGRpbWVuc2lvbnNNaXhpbiBmcm9tICcuLi8uLi9hc3NldHMvanMvbWl4aW5zL2RpbWVuc2lvbnNNaXhpbic7XG5pbXBvcnQgbW9kdWxlRGF0YU1peGluIGZyb20gJy4uLy4uL2Fzc2V0cy9qcy9taXhpbnMvbW9kdWxlRGF0YU1peGluJztcbi8vIE1vZGFsc1xuaW1wb3J0IEljb25zIGZyb20gJy4uL2NvbW1vbi9tb2RhbHMvSWNvbnMudnVlJztcbmltcG9ydCBXaWRnZXRUeXBlcyBmcm9tICcuLi9jb21tb24vbW9kYWxzL1dpZGdldHMudnVlJztcbmltcG9ydCBFbW90aW9ucyBmcm9tICcuLi9jb21tb24vbW9kYWxzL0Vtb3Rpb25zLnZ1ZSc7XG5pbXBvcnQgTWVkaWEgZnJvbSAnLi4vY29tbW9uL21vZGFscy9NZWRpYS52dWUnO1xuaW1wb3J0IERvY3VtZW50cyBmcm9tICcuLi9jb21tb24vbW9kYWxzL0RvY3VtZW50cy52dWUnO1xuaW1wb3J0IEJyYW5kcyBmcm9tICcuLi9jb21tb24vbW9kYWxzL0JyYW5kcy52dWUnO1xuXG5pbXBvcnQgSW1wcm92ZW1lbnRzTGlzdCBmcm9tICcuLi9jb21tb24vSW1wcm92ZW1lbnRzTGlzdC52dWUnO1xuaW1wb3J0IEluc2lnaHRzTGlzdCBmcm9tICcuLi9jb21tb24vSW5zaWdodHNMaXN0LnZ1ZSc7XG5pbXBvcnQgQ2hhbm5lbHNMaXN0IGZyb20gJy4uL2NvbW1vbi9jaGFubmVscy9DaGFubmVsc0xpc3QudnVlJztcbmltcG9ydCBQZXJzb25hc0xpc3QgZnJvbSAnLi4vY29tbW9uL21vZGFscy9QZXJzb25hc0xpc3QudnVlJztcbmltcG9ydCBNb3RzTGlzdCBmcm9tICcuLi9jb250cm9sY2VudGVyL21vdHMvTW90c0xpc3QudnVlJztcbmltcG9ydCBDaGFuZ2VVc2VyIGZyb20gJy4uL2NvbW1vbi9tb2RhbHMvQ2hhbmdlVXNlci52dWUnO1xuXG5pbXBvcnQgTGlua0Zvcm0gZnJvbSAnLi4vZGF0YWNlbnRlci9saW5rcy9MaW5rRm9ybS52dWUnO1xuaW1wb3J0IExpbmtWaWV3IGZyb20gJy4uL2RhdGFjZW50ZXIvbGlua3MvTGlua1ZpZXcudnVlJztcblxuaW1wb3J0IEhpZXJhcmNoeUZvcm0gZnJvbSAnLi4vZGF0YWNlbnRlci9oaWVyYXJjaHkvSGllcmFyY2h5Rm9ybS52dWUnO1xuaW1wb3J0IEhpZXJhcmNoeVZpZXcgZnJvbSAnLi4vZGF0YWNlbnRlci9oaWVyYXJjaHkvSGllcmFyY2h5Vmlldy52dWUnO1xuXG4vLyBXaWRnZXRzXG5pbXBvcnQgSWNvbnNXaWRnZXQgZnJvbSAnLi4vY29tbW9uL3dpZGdldHMvSWNvbnNXaWRnZXQudnVlJztcbmltcG9ydCBNZWRpYVdpZGdldCBmcm9tICcuLi9jb21tb24vd2lkZ2V0cy9NZWRpYVdpZGdldC52dWUnO1xuaW1wb3J0IEVtb3Rpb25zV2lkZ2V0IGZyb20gJy4uL2NvbW1vbi93aWRnZXRzL0Vtb3Rpb25zV2lkZ2V0LnZ1ZSc7XG5pbXBvcnQgUXVvdGVzV2lkZ2V0IGZyb20gJy4uL2NvbW1vbi93aWRnZXRzL1F1b3Rlc1dpZGdldC52dWUnO1xuaW1wb3J0IEZpbGVzV2lkZ2V0IGZyb20gJy4uL2NvbW1vbi93aWRnZXRzL0ZpbGVzV2lkZ2V0LnZ1ZSc7XG5pbXBvcnQgRGltZW5zaW9uc1dpZGdldCBmcm9tICcuLi9jb21tb24vd2lkZ2V0cy9EaW1lbnNpb25zV2lkZ2V0LnZ1ZSc7XG5pbXBvcnQgS3BpV2lkZ2V0IGZyb20gJy4uL2NvbW1vbi93aWRnZXRzL0twaVdpZGdldC52dWUnO1xuaW1wb3J0IFRleHRXaWRnZXQgZnJvbSAnLi4vY29tbW9uL3dpZGdldHMvVGV4dFdpZGdldC52dWUnO1xuaW1wb3J0IEltcHJvdmVtZW50IGZyb20gJy4uL2NvbW1vbi93aWRnZXRzL0ltcHJvdmVtZW50LnZ1ZSc7XG5pbXBvcnQgSW5zaWdodCBmcm9tICcuLi9jb21tb24vd2lkZ2V0cy9JbnNpZ2h0LnZ1ZSc7XG5pbXBvcnQgQ2hhbm5lbCBmcm9tICcuLi9jb21tb24vd2lkZ2V0cy9DaGFubmVsLnZ1ZSc7XG5pbXBvcnQgTW90IGZyb20gJy4uL2NvbW1vbi93aWRnZXRzL01vdC52dWUnO1xuaW1wb3J0IExpbmtXaWRnZXQgZnJvbSAnLi4vY29tbW9uL3dpZGdldHMvTGlua1dpZGdldC52dWUnO1xuaW1wb3J0IEhpZXJhcmNoeVdpZGdldCBmcm9tICcuLi9jb21tb24vd2lkZ2V0cy9IaWVyYXJjaHlXaWRnZXQudnVlJztcbi8vIGltcG9ydCBBZGRNb3QgZnJvbSAnLi4vY29tbW9uL0FkZE1vdC52dWUnO1xuaW1wb3J0IFBlcnNvbmFzIGZyb20gJy4uL2NvbW1vbi93aWRnZXRzL1BlcnNvbmFzLnZ1ZSc7XG5cbmltcG9ydCBLcGlzTGlzdCBmcm9tICcuLi9jb21tb24vbW9kYWxzL0twaXNMaXN0LnZ1ZSc7XG5pbXBvcnQgS3BpcyBmcm9tICcuLi9jb21tb24vd2lkZ2V0cy9LcGlzLnZ1ZSc7XG5cbmltcG9ydCBkcmFnZ2FibGUgZnJvbSAndnVlZHJhZ2dhYmxlJztcbmltcG9ydCB7IGV2ZW50QnVzIH0gZnJvbSAnLi4vLi4vYXNzZXRzL2pzL2NvbW1vbi9ldmVudEJ1cy5qcyc7XG5pbXBvcnQgeyBnZXRPd25lck5hbWVzIH0gZnJvbSAnLi4vLi4vYXNzZXRzL2pzL2NvbW1vbi9zaGFyZWQuanMnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnbGlmZWN5Y2xlJyxcbiAgbWl4aW5zOiBbbGlmZWN5Y2xlTWl4aW4sIHByZXZpZXcsIGRpbWVuc2lvbnNNaXhpbiwgbW9kdWxlRGF0YU1peGluXSxcbiAgcHJvcHM6IFsnYXBwU2VzcycsICdzaG93Q3ljbGUnXSxcbiAgY29tcG9uZW50czoge1xuICAgIC8vIE1vZGFsc1xuICAgIEljb25zLFxuICAgIEVtb3Rpb25zLFxuICAgIE1lZGlhLFxuICAgIERvY3VtZW50cyxcbiAgICBCcmFuZHMsXG4gICAgV2lkZ2V0VHlwZXMsXG4gICAgSW1wcm92ZW1lbnRzTGlzdCxcbiAgICBJbnNpZ2h0c0xpc3QsXG4gICAgQ2hhbm5lbHNMaXN0LFxuICAgIFBlcnNvbmFzTGlzdCxcbiAgICBNb3RzTGlzdCxcbiAgICBDaGFuZ2VVc2VyLFxuICAgIExpbmtGb3JtLFxuICAgIExpbmtWaWV3LFxuICAgIEhpZXJhcmNoeUZvcm0sXG4gICAgSGllcmFyY2h5VmlldyxcbiAgICBRdW90ZXNXaWRnZXQsXG4gICAgSWNvbnNXaWRnZXQsXG4gICAgRW1vdGlvbnNXaWRnZXQsXG4gICAgTWVkaWFXaWRnZXQsXG4gICAgRmlsZXNXaWRnZXQsXG4gICAgRGltZW5zaW9uc1dpZGdldCxcbiAgICBLcGlXaWRnZXQsXG4gICAgVGV4dFdpZGdldCxcbiAgICBJbXByb3ZlbWVudCxcbiAgICBJbnNpZ2h0LFxuICAgIENoYW5uZWwsXG4gICAgTW90LFxuICAgIExpbmtXaWRnZXQsXG4gICAgSGllcmFyY2h5V2lkZ2V0LFxuICAgIFBlcnNvbmFzLFxuICAgIEtwaXNMaXN0LFxuICAgIEtwaXMsXG4gICAgZHJhZ2dhYmxlLFxuICB9LFxuICB3YXRjaDoge1xuICAgIGVkaXQ6IHtcbiAgICAgIC8vIHRoZSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgc3RhcnQgb2YgdGhlIG9ic2VydmF0aW9uXG4gICAgICBpbW1lZGlhdGU6IHRydWUsXG4gICAgICBoYW5kbGVyKHZhbCwgb2xkVmFsKSB7XG4gICAgICAgIC8vIHRoaXMuc2VnX3dpZGdldHMgPSBbXTtcbiAgICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgdGhpcy5sY193aWRnZXRzID0gdGhpcy53aWRnZXRzO1xuICAgICAgICAgIHRoaXMud2lkZ2V0cyA9IFtdO1xuICAgICAgICAgIHRoaXMudGVtcFNlbGVjdGVkV2lkZ2V0cyA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRzO1xuICAgICAgICAgIHRoaXMudGVtcFNlbGVjdGVkTGV2ZWxzID0gdGhpcy5zZWxlY3RlZExldmVscztcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IFtdO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMZXZlbHMgPSBbXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLndpZGdldEZvciA9ICcnO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gdGhpcy50ZW1wU2VsZWN0ZWRXaWRnZXRzO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMZXZlbHMgPSB0aGlzLnRlbXBTZWxlY3RlZExldmVscztcbiAgICAgICAgICB0aGlzLndpZGdldHMgPSB0aGlzLmxjX3dpZGdldHM7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgICB3aWRnZXRTZWN0aW9uOiB7XG4gICAgICAvLyB0aGUgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHN0YXJ0IG9mIHRoZSBvYnNlcnZhdGlvblxuICAgICAgaW1tZWRpYXRlOiB0cnVlLFxuICAgICAgaGFuZGxlcih2YWwsIG9sZFZhbCkge1xuICAgICAgICBldmVudEJ1cy4kZW1pdCgnbGMtd2lkZ2V0LXN0YXR1cycsIHsgd2lkZ2V0U2VjdGlvbjogdmFsIH0pO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHdpZGdldHM6IHtcbiAgICAgIGhhbmRsZXIodmFsLCBvbGRWYWwpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJXaWRnZXRzKCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgc2hvd0N5Y2xlOiB7XG4gICAgICBoYW5kbGVyKHZhbCwgb2xkVmFsKSB7XG4gICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICB0aGlzLmFuZ2xlT2Zmc2V0ID0gLTE4MDtcbiAgICAgICAgICB0aGlzLmNoYXJ0U3RhZ2VEYXRhID0gW107XG4gICAgICAgICAgdGhpcy5jaGFydFBoYXNlRGF0YSA9IFtdO1xuICAgICAgICAgIHRoaXMuY2hhcnRDckRhdGEgPSBbXSxcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0RGF0YSgpO1xuICAgICAgICB9XG5cbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29tcG9uZW50TmFtZTogJ2xpZmVjeWNsZScsXG4gICAgICBwYWdlOiAnbGMnLFxuICAgICAgdGl0bGU6ICcnLFxuICAgICAgZWRpdDogZmFsc2UsXG4gICAgICAvLyBtYXBzIGZvciBsYyBpdGVtc1xuICAgICAgc2VsZWN0ZWRJdGVtczogW10sXG4gICAgICB0YWI6IDEsXG4gICAgICAvLyB3aWRnZXRzIGZvciBsYyBpdGVtXG4gICAgICB3aWRnZXRGb3I6ICcnLFxuICAgICAgd2lkZ2V0U2VjdGlvbjogdHJ1ZSxcbiAgICAgIHdpZGdldHM6IFtdLFxuICAgICAgd2lkZ2V0RW1vdGlvbnM6IFtdLFxuICAgICAgdGVtcERhdGE6IFtdLFxuICAgICAgbGNfd2lkZ2V0czogW10sXG4gICAgICBzZWdfd2lkZ2V0czogW10sXG4gICAgICB0ZW1wX3dpZGdldHM6IFtdLFxuICAgICAgYWxsX3VzZXJzOiBbXSxcbiAgICAgIGN1c3RvbUxpc3Q6IFtdLFxuICAgICAgdG91Y2hwb2ludEN1c3RvbUxpc3Q6IFtbXSwgW11dLFxuICAgICAgaW5zaWdodEN1c3RvbUxpc3Q6IFtbXSwgW10sIFtdLCBbXSwgW10sIFtdXSxcbiAgICAgIGNoYW5uZWxDdXN0b21MaXN0OiBbW10sIFtdLCBbXSwgW11dLFxuICAgICAgbGlua0N1c3RvbUxpc3Q6IFtbXV0sXG4gICAgICBoaWVyYXJjaHlDdXN0b21MaXN0OiBbW11dLFxuICAgICAgbW90c0N1c3RvbUxpc3Q6IFtbXSwgW10sIFtdLCBbXV0sXG4gICAgICBwZXJzb25hQ3VzdG9tTGlzdDogW1tdLCBbXV0sXG4gICAgICB0ZXh0Q3VzdG9tTGlzdDogW1tdLCBbXV0sXG4gICAgICB3X3R5cGVzOiBbXSxcbiAgICAgIC8vIHdpZGdldHNcbiAgICAgIHdpZGdldF9pZDogJycsXG4gICAgICB3aWRnZXRfdHlwZTogJycsXG4gICAgICB3aW5kZXg6ICcnLFxuICAgICAgd2lkZ2V0OiBudWxsLFxuICAgICAgd2luOiAnJyxcbiAgICAgIGFkbWluS1BJczogW10sXG4gICAgICBsb2FkaW5nTEM6IGZhbHNlLFxuICAgICAgbWVkaWFGb3I6IDEsXG4gICAgICBicmFuZEZvcjogMSxcbiAgICAgIG1pZDogJycsXG4gICAgICBtdHlwZTogJycsXG4gICAgICBzZWxlY3RlZENyczogW10sXG4gICAgICBzZWxlY3RlZFBoYXNlczogW10sXG4gICAgICBzZWxlY3RlZFN0YWdlczogW10sXG5cbiAgICAgIHNlbGVjdGVkV2lkZ2V0Q3JzOiBbXSxcbiAgICAgIHNlbGVjdGVkV2lkZ2V0UGhhc2VzOiBbXSxcbiAgICAgIHNlbGVjdGVkV2lkZ2V0U3RhZ2VzOiBbXSxcbiAgICAgIC8vIGZvciB3aWRnZXQgaG92ZXJpbmdcbiAgICAgIHNlbGVjdGVkU2VnZW1lbnQ6ICcnLFxuICAgICAgLy8gZm9yIG1hcHMgaG92ZXJpbmdcbiAgICAgIHNlbGVjdGVkU2VnZW1lbnRzOiBbXSxcbiAgICAgIC8vIGZvciB3aWRnZXQgZmlsdGVyc1xuICAgICAgc2VsZWN0ZWRXaWRnZXRzOiBbXSxcbiAgICAgIHRlbXBTZWxlY3RlZFdpZGdldHM6IFtdLFxuICAgICAgbW9kZTogMixcbiAgICAgIG1hcFR5cGU6IG51bGwsXG4gICAgICBtYXBJbmRleDogbnVsbCxcbiAgICAgIG1hcE93bmVyOiBudWxsLFxuICAgICAgY29Pd25lcnM6IFtdLFxuICAgICAgbWRhdGE6IG51bGwsXG4gICAgICBNb3RNb2RhbFN0YXR1czogZmFsc2UsXG4gICAgICBwZXJzb25hTW9kYWxTdGF0dXM6IGZhbHNlLFxuICAgICAgaW5zaWdodE1vZGFsU3RhdHVzOiBmYWxzZSxcbiAgICAgIGNoYW5uZWxNb2RhbFN0YXR1czogZmFsc2UsXG4gICAgICBsaW5rTW9kYWxTdGF0dXM6IGZhbHNlLFxuICAgICAgaGllcmFyY2h5TW9kYWxTdGF0dXM6IGZhbHNlLFxuICAgICAgLy8gY2hhbmdlIE93bmVyIC0tIGluc2lnaHRzICwgbW90cyBhbmQgaW1wcm92ZW1lbnRzXG4gICAgICBtb2RPd25lcjogbnVsbCxcbiAgICAgIGNvT3duZXJzOiBbXSxcbiAgICAgIG1vZEluZGV4OiBudWxsLFxuICAgICAgcGFyZW50SW5kZXg6IG51bGwsXG4gICAgICBzaG93T3duZXJDaGFuZ2VQb3BVcDogZmFsc2UsXG4gICAgICBvd25lckNoYW5nZUZvcjogbnVsbCxcbiAgICAgIGN1c3RvbU5hbWVzOiB7XG4gICAgICAgIGljb246ICdJY29ucycsXG4gICAgICAgIHBlcnNvbmFzOiAnUGVyc29uYXMnLFxuICAgICAgICBkaW1lbnNpb25zOiAnRGltZW5zaW9uJywgLy8gZGltZW5zaW9uIHdpZGdldFxuICAgICAgICBtb3Q6ICdNb21lbnQgT2YgVHJ1dGgnLFxuICAgICAgICBpbXByb3ZlbWVudDogJ0FjdGlvbiBDb250cm9sJyxcbiAgICAgICAgaW5zaWdodF9mYWN0OiAnSW5zaWdodCBDb250cm9sJyxcbiAgICAgICAgZGltZW5zaW9uOiAnRGltZW5zaW9uJywgLy8gZGltZW5zaW9uIHdvcmRcbiAgICAgICAgYnJhbmQ6ICdCcmFuZCcsXG4gICAgICAgIGNoYW5uZWw6ICdDb25zdW1lciBUb3VjaHBvaW50IFR5cGUnLFxuICAgICAgICBjaGFubmVsczogJ0NvbnN1bWVyIFRvdWNocG9pbnQgVHlwZXMnLFxuICAgICAgICBzdWJjaGFubmVsOiAnQ29uc3VtZXIgVG91Y2hwb2ludHMnXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWRMZXZlbHM6IFtdLFxuICAgICAgdGVtcFNlbGVjdGVkTGV2ZWxzOiBbXSxcbiAgICAgIGpvdXJuZXlzOiB7XG4gICAgICAgIG15TWFwczogW10sXG4gICAgICAgIG91ck1hcHM6IFtdLFxuICAgICAgfSxcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHVpX21hcHMoKSB7XG4gICAgICBjb25zdCBkaV9tYXBzID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgICAgdGhpcy5pX21hcHMucmVkdWNlKChyLCBvKSA9PiB7XG4gICAgICAgICAgcltvLm1hcF9pZF0gPSBvO1xuICAgICAgICAgIHJldHVybiByO1xuICAgICAgICB9LCB7fSlcbiAgICAgICk7XG4gICAgICByZXR1cm4gZGlfbWFwcztcbiAgICB9LFxuICAgIHVhX21hcHMoKSB7XG4gICAgICBjb25zdCBkYV9tYXBzID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgICAgdGhpcy5hX21hcHMucmVkdWNlKChyLCBvKSA9PiB7XG4gICAgICAgICAgcltvLm1hcF9pZF0gPSBvO1xuICAgICAgICAgIHJldHVybiByO1xuICAgICAgICB9LCB7fSlcbiAgICAgICk7XG4gICAgICByZXR1cm4gZGFfbWFwcztcbiAgICB9LFxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZ2V0T3duZXJOYW1lcyxcblxuICAgIHJlc2V0TWFwcygpIHtcbiAgICAgIHRoaXMudGFiID0gMTtcbiAgICAgICQoJy5yZXNldCcpLnJlbW92ZUNsYXNzKCdzZWxlY3RlZCcpO1xuICAgICAgJCgnLnN2Z0NvbnRhaW5lcicpLnJlbW92ZUNsYXNzKCdzZWxlY3RlZGl0ZW0nKTtcbiAgICAgIHRoaXMud2lkZ2V0U2VjdGlvbiA9IGZhbHNlO1xuICAgICAgLy8gJChcIi5jb25uZWN0ZWRNYXBzTWFpbkRpdlwiKS5yZW1vdmVDbGFzcyhcInNob3dcIik7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgIHRoaXMud2lkZ2V0Rm9yID0gJyc7XG4gICAgICB0aGlzLnNlbGVjdGVkQ3JzID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkUGhhc2VzID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkU3RhZ2VzID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldENycyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldFBoYXNlcyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldFN0YWdlcyA9IFtdO1xuICAgICAgdGhpcy5hX21hcHMgPSBbXTtcbiAgICAgIHRoaXMuaV9tYXBzID0gW107XG4gICAgICB0aGlzLndpZGdldHMgPSBbXTtcbiAgICAgIHRoaXMubGNfd2lkZ2V0cyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZExldmVscyA9IFtdO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVGFiIFN3dGljaGluZ1xuICAgICAqL1xuICAgIHN3aXRjaFRhYih0YWIpIHtcbiAgICAgIHRoaXMudGFiID0gdGFiO1xuICAgICAgaWYgKHRhYiA9PSAxKSB7XG4gICAgICAgIHRoaXMuZWRpdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLndpZGdldEZvciA9ICcnO1xuICAgICAgICAvLyB0aGlzLnNlZ193aWRnZXRzID0gWy4uLm5ldyBTZXQoWy4uLnRoaXMud2lkZ2V0cyAsLi4udGhpcy5zZWdfd2lkZ2V0c10pXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRDcnMgPSB0aGlzLnNlbGVjdGVkQ3JzO1xuICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0UGhhc2VzID0gdGhpcy5zZWxlY3RlZFBoYXNlcztcbiAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldFN0YWdlcyA9IHRoaXMuc2VsZWN0ZWRTdGFnZXM7XG4gICAgICB9XG4gICAgICB0aGlzLndpZGdldHMgPSB0aGlzLmxjX3dpZGdldHM7XG4gICAgfSxcblxuICAgIGZpbHRlck1hcExpc3QoY3JfaWQpIHtcbiAgICAgIC8vIHVwZGF0ZSBtYXBzXG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICAvL2NvbnNvbGUubG9nKHNlbGYuc2VsZWN0ZWRDcnMpO1xuICAgICAgc2VsZi5hX21hcHMgPSBzZWxmLmFfbWFwcy5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiBpdGVtLmNyaWRzLnNvbWUodmFsdWUgPT4gc2VsZi5zZWxlY3RlZENycy5pbmNsdWRlcyh2YWx1ZS5jcl9pZCkpO1xuICAgICAgfSk7XG4gICAgICBzZWxmLmlfbWFwcyA9IHNlbGYuaV9tYXBzLmZpbHRlcihpdGVtID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uY3JpZHMuc29tZSh2YWx1ZSA9PiBzZWxmLnNlbGVjdGVkQ3JzLmluY2x1ZGVzKHZhbHVlLmNyX2lkKSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFRvIGZldGNoIG1hcHMgY29ubmVjdGVkIHRvIHN0YWdlL3BoYXNlL2NvbnRhY3QgcmVhc29uXG4gICAgICovXG4gICAgY29ubmVjdGVkTWFwcyhldmVudCwgdHlwZSwgY3JfaWQsIHBfaWQsIHNfaWQpIHtcblxuICAgICAgaWYgKHRoaXMubGNUeXBlRGV0YWlscy5uYW1lICE9PSAnbGlmZWN5Y2xlJykge1xuICAgICAgICBsZXQgZmlsdGVyX2lkO1xuICAgICAgICBsZXQgbXR5cGU7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgJ3N0YWdlJzpcbiAgICAgICAgICAgIGZpbHRlcl9pZCA9IHNfaWQ7XG4gICAgICAgICAgICBtdHlwZSA9ICdzdGcnICsgc19pZDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3BoYXNlJzpcbiAgICAgICAgICAgIGZpbHRlcl9pZCA9IHBfaWQ7XG4gICAgICAgICAgICBtdHlwZSA9ICdwaHMnICsgcF9pZDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBmaWx0ZXJfaWQgPSBjcl9pZDtcbiAgICAgICAgICAgIG10eXBlID0gJ2NyZWFzb24nICsgY3JfaWQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZExldmVscy5pbmRleE9mKGZpbHRlcl9pZCk7XG4gICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTGV2ZWxzLnB1c2goZmlsdGVyX2lkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTGV2ZWxzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZXRGcmFtZXdvcmtXaWRnZXRzKHRoaXMuc2VsZWN0ZWRMZXZlbHMsIG10eXBlLCB0eXBlLCBmaWx0ZXJfaWQpO1xuICAgICAgICAkKCcuc3ZnQ29udGFpbmVyJykuYWRkQ2xhc3MoJ3NlbGVjdGVkaXRlbScpO1xuICAgICAgICB0aGlzLndpZGdldFNlY3Rpb24gPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgIGlmICh0eXBlID09ICdzdGFnZScgJiYgKHRoaXMuc2VsZWN0ZWRTdGFnZXMuaW5jbHVkZXMoc19pZCkgfHwgdGhpcy5zZWxlY3RlZFdpZGdldFN0YWdlcy5pbmNsdWRlcyhzX2lkKSkpIHtcbiAgICAgICAgLy8gdXBkYXRlIHdpZGdldHMgIHRhYiAxID09PiBtdWx0aSBzZWxlY3QsIHRhYiAyID09PiBzaW5nbGUgc2VsZWN0XG4gICAgICAgIGlmIChzZWxmLnRhYiA9PSAyKSB7XG4gICAgICAgICAgc2VsZi53aWRnZXRzID0gc2VsZi53aWRnZXRzLmZpbHRlcih2YWx1ZSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gISh2YWx1ZS5zdGFnZV9pZCA9PT0gc19pZCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VsZi53aWRnZXRzID0gc2VsZi53aWRnZXRzLmZpbHRlcih2YWx1ZSA9PiB7XG4gICAgICAgICAgICBsZXQgc2hvd1dpZGdldCA9IHRydWU7XG4gICAgICAgICAgICBpZiAoKHZhbHVlLnN0YWdlX2lkID09IHNfaWQgJiYgdmFsdWUuc3RhZ2VfaWQgIT0gbnVsbCkgfHwgKHZhbHVlLnBoYXNlX2lkICE9IG51bGwgJiYgcF9pZC5pbmRleE9mKHZhbHVlLnBoYXNlX2lkKSAhPT0gLTEpIHx8ICh2YWx1ZS5jcl9pZCAhPSBudWxsICYmIGNyX2lkLmluZGV4T2YodmFsdWUuY3JfaWQpICE9PSAtMSkpIHtcbiAgICAgICAgICAgICAgc2hvd1dpZGdldCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNob3dXaWRnZXQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldENycyA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRDcnMuZmlsdGVyKGVsID0+ICFjcl9pZC5pbmNsdWRlcyhlbCkpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRQaGFzZXMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0UGhhc2VzLmZpbHRlcihlbCA9PiAhcF9pZC5pbmNsdWRlcyhlbCkpO1xuICAgICAgICB9XG4gICAgICAgIHNlbGYubGNfd2lkZ2V0cyA9IHNlbGYubGNfd2lkZ2V0cy5maWx0ZXIodmFsdWUgPT4ge1xuICAgICAgICAgIGxldCBzaG93V2lkZ2V0ID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoKHZhbHVlLnN0YWdlX2lkID09IHNfaWQgJiYgdmFsdWUuc3RhZ2VfaWQgIT0gbnVsbCkgfHwgKHZhbHVlLnBoYXNlX2lkICE9IG51bGwgJiYgcF9pZC5pbmRleE9mKHZhbHVlLnBoYXNlX2lkKSAhPT0gLTEpIHx8ICh2YWx1ZS5jcl9pZCAhPSBudWxsICYmIGNyX2lkLmluZGV4T2YodmFsdWUuY3JfaWQpICE9PSAtMSkpIHtcbiAgICAgICAgICAgIHNob3dXaWRnZXQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHNob3dXaWRnZXQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGZvciBjb250ZW50IHRhYlxuICAgICAgICBsZXQgd2kgPSBzZWxmLnNlbGVjdGVkV2lkZ2V0U3RhZ2VzLmZpbmRJbmRleCh3ID0+IHcgPT0gc19pZCk7XG4gICAgICAgIGlmICh3aSA+IC0xKSB7XG4gICAgICAgICAgc2VsZi5zZWxlY3RlZFdpZGdldFN0YWdlcy5zcGxpY2Uod2ksIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdXBkYXRlIHJlbGF0ZWQgY3JzLCBwaGFzZXMgYW5kIHN0YWdlcyBmb3Igam91cm5leVxuICAgICAgICB0aGlzLnNlbGVjdGVkQ3JzID0gdGhpcy5zZWxlY3RlZENycy5maWx0ZXIoZWwgPT4gIWNyX2lkLmluY2x1ZGVzKGVsKSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQaGFzZXMgPSB0aGlzLnNlbGVjdGVkUGhhc2VzLmZpbHRlcihlbCA9PiAhcF9pZC5pbmNsdWRlcyhlbCkpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkU3RhZ2VzID0gdGhpcy5zZWxlY3RlZFN0YWdlcy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBzX2lkKTtcbiAgICAgICAgLy8gZmlsdGVyIG1hcHNcbiAgICAgICAgdGhpcy5maWx0ZXJNYXBMaXN0KGNyX2lkKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJ3BoYXNlJyAmJiAodGhpcy5zZWxlY3RlZFBoYXNlcy5pbmNsdWRlcyhwX2lkKSB8fCB0aGlzLnNlbGVjdGVkV2lkZ2V0UGhhc2VzLmluY2x1ZGVzKHBfaWQpKSkge1xuICAgICAgICAvLyB1cGRhdGUgd2lkZ2V0c1xuICAgICAgICBpZiAodGhpcy50YWIgPT0gMikge1xuICAgICAgICAgIHNlbGYud2lkZ2V0cyA9IHNlbGYud2lkZ2V0cy5maWx0ZXIodmFsdWUgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICEodmFsdWUucGhhc2VfaWQgPT09IHBfaWQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlbGYud2lkZ2V0cyA9IHNlbGYud2lkZ2V0cy5maWx0ZXIodmFsdWUgPT4ge1xuICAgICAgICAgICAgbGV0IHNob3dXaWRnZXQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKCh2YWx1ZS5waGFzZV9pZCA9PSBwX2lkICYmIHZhbHVlLnBoYXNlX2lkICE9IG51bGwpIHx8ICh2YWx1ZS5jcl9pZCAhPSBudWxsICYmIGNyX2lkLmluZGV4T2YodmFsdWUuY3JfaWQpICE9PSAtMSkpIHtcbiAgICAgICAgICAgICAgc2hvd1dpZGdldCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNob3dXaWRnZXQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gdXBkYXRlIHJlbGF0ZWQgY3JzLCBwaGFzZXMgYW5kIHN0YWdlcyBmb3IgdGFiIGpvdXJuZXlcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0Q3JzID0gdGhpcy5zZWxlY3RlZFdpZGdldENycy5maWx0ZXIoZWwgPT4gIWNyX2lkLmluY2x1ZGVzKGVsKSk7XG4gICAgICAgIH1cbiAgICAgICAgc2VsZi5sY193aWRnZXRzID0gc2VsZi5sY193aWRnZXRzLmZpbHRlcih2YWx1ZSA9PiB7XG4gICAgICAgICAgbGV0IHNob3dXaWRnZXQgPSB0cnVlO1xuICAgICAgICAgIGlmICgodmFsdWUucGhhc2VfaWQgPT0gcF9pZCAmJiB2YWx1ZS5waGFzZV9pZCAhPSBudWxsKSB8fCAodmFsdWUuY3JfaWQgIT0gbnVsbCAmJiBjcl9pZC5pbmRleE9mKHZhbHVlLmNyX2lkKSAhPT0gLTEpKSB7XG4gICAgICAgICAgICBzaG93V2lkZ2V0ID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzaG93V2lkZ2V0O1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldFBoYXNlcyA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRQaGFzZXMuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gcF9pZCk7XG4gICAgICAgIC8vIHVwZGF0ZSByZWxhdGVkIGNycywgcGhhc2VzIGFuZCBzdGFnZXMgZm9yIHRhYiBjb250ZW50XG4gICAgICAgIGxldCB3aSA9IHNlbGYuc2VsZWN0ZWRXaWRnZXRQaGFzZXMuZmluZEluZGV4KHcgPT4gdyA9PSBwX2lkKTtcbiAgICAgICAgaWYgKHdpID4gLTEpIHtcbiAgICAgICAgICBzZWxmLnNlbGVjdGVkV2lkZ2V0UGhhc2VzLnNwbGljZSh3aSwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB1cGRhdGUgcmVsYXRlZCBjcnMsIHBoYXNlcyBhbmQgc3RhZ2VzIGZvciB0YWIgam91cm5leVxuICAgICAgICB0aGlzLnNlbGVjdGVkQ3JzID0gdGhpcy5zZWxlY3RlZENycy5maWx0ZXIoZWwgPT4gIWNyX2lkLmluY2x1ZGVzKGVsKSk7XG4gICAgICAgIC8vIHRoaXMuc2VsZWN0ZWRTdGFnZXMgPSB0aGlzLnNlbGVjdGVkU3RhZ2VzLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IHNfaWQpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkUGhhc2VzID0gdGhpcy5zZWxlY3RlZFBoYXNlcy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBwX2lkKTtcbiAgICAgICAgLy8gZmlsdGVyIG1hcHNcbiAgICAgICAgdGhpcy5maWx0ZXJNYXBMaXN0KGNyX2lkKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJ2NvbnRhY3RyZWFzb24nICYmICh0aGlzLnNlbGVjdGVkQ3JzLmluY2x1ZGVzKGNyX2lkKSB8fCB0aGlzLnNlbGVjdGVkV2lkZ2V0Q3JzLmluY2x1ZGVzKGNyX2lkKSkpIHtcbiAgICAgICAgLy8gdXBkYXRlIHdpZGdldHNcblxuICAgICAgICBzZWxmLndpZGdldHMgPSBzZWxmLndpZGdldHMuZmlsdGVyKHZhbHVlID0+IHtcbiAgICAgICAgICByZXR1cm4gISh2YWx1ZS5jcl9pZCA9PT0gY3JfaWQpO1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZi5sY193aWRnZXRzID0gc2VsZi5sY193aWRnZXRzLmZpbHRlcih2YWx1ZSA9PiB7XG4gICAgICAgICAgcmV0dXJuICEodmFsdWUuY3JfaWQgPT09IGNyX2lkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHVwZGF0ZSByZWxhdGVkIGNycywgcGhhc2VzIGFuZCBzdGFnZXMgZm9yIHRhYiBjb250ZW50XG4gICAgICAgIGxldCB3aSA9IHNlbGYuc2VsZWN0ZWRXaWRnZXRDcnMuZmluZEluZGV4KHcgPT4gdyA9PSBjcl9pZCk7XG4gICAgICAgIGlmICh3aSA+IC0xKSB7XG4gICAgICAgICAgc2VsZi5zZWxlY3RlZFdpZGdldENycy5zcGxpY2Uod2ksIDEpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHVwZGF0ZSByZWxhdGVkIGNycywgcGhhc2VzIGFuZCBzdGFnZXMgZm9yIHRhYiBqb3VybmV5XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDcnMgPSB0aGlzLnNlbGVjdGVkQ3JzLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IGNyX2lkKTtcbiAgICAgICAgLy8gdGhpcy5zZWxlY3RlZFN0YWdlcyA9IHRoaXMuc2VsZWN0ZWRTdGFnZXMuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gc19pZCk7XG4gICAgICAgIC8vIHRoaXMuc2VsZWN0ZWRQaGFzZXMgPSB0aGlzLnNlbGVjdGVkUGhhc2VzLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IHBfaWQpO1xuICAgICAgICAvLyBmaWx0ZXIgbWFwc1xuICAgICAgICB0aGlzLmZpbHRlck1hcExpc3QoW2NyX2lkXSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc2VsZWN0ZWQgc2VnZW1lbnRzXG4gICAgICAgIGlmICh0eXBlID09ICdzdGFnZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0U3RhZ2VzID0gWy4uLm5ldyBTZXQoWy4uLnRoaXMuc2VsZWN0ZWRXaWRnZXRTdGFnZXMsIC4uLltzX2lkXV0pXTtcbiAgICAgICAgICBpZiAodGhpcy50YWIgPT0gMSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldENycyA9IFsuLi5uZXcgU2V0KFsuLi50aGlzLnNlbGVjdGVkV2lkZ2V0Q3JzLCAuLi5jcl9pZF0pXTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRQaGFzZXMgPSBbLi4ubmV3IFNldChbLi4udGhpcy5zZWxlY3RlZFdpZGdldFBoYXNlcywgLi4ucF9pZF0pXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ3JzID0gWy4uLm5ldyBTZXQoWy4uLnRoaXMuc2VsZWN0ZWRDcnMsIC4uLmNyX2lkXSldO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQaGFzZXMgPSBbLi4ubmV3IFNldChbLi4udGhpcy5zZWxlY3RlZFBoYXNlcywgLi4ucF9pZF0pXTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkU3RhZ2VzID0gWy4uLm5ldyBTZXQoWy4uLnRoaXMuc2VsZWN0ZWRTdGFnZXMsIC4uLltzX2lkXV0pXTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09ICdwaGFzZScpIHtcbiAgICAgICAgICBpZiAodGhpcy50YWIgPT0gMSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldENycyA9IFsuLi5uZXcgU2V0KFsuLi50aGlzLnNlbGVjdGVkV2lkZ2V0Q3JzLCAuLi5jcl9pZF0pXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldFBoYXNlcyA9IFsuLi5uZXcgU2V0KFsuLi50aGlzLnNlbGVjdGVkV2lkZ2V0UGhhc2VzLCAuLi5bcF9pZF1dKV07XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENycyA9IFsuLi5uZXcgU2V0KFsuLi50aGlzLnNlbGVjdGVkQ3JzLCAuLi5jcl9pZF0pXTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUGhhc2VzID0gWy4uLm5ldyBTZXQoWy4uLnRoaXMuc2VsZWN0ZWRQaGFzZXMsIC4uLltwX2lkXV0pXTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09ICdjb250YWN0cmVhc29uJykge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRDcnMgPSBbLi4ubmV3IFNldChbLi4udGhpcy5zZWxlY3RlZFdpZGdldENycywgLi4uW2NyX2lkXV0pXTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ3JzID0gWy4uLm5ldyBTZXQoWy4uLnRoaXMuc2VsZWN0ZWRDcnMsIC4uLltjcl9pZF1dKV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICQoJy5zdmdDb250YWluZXInKS5hZGRDbGFzcygnc2VsZWN0ZWRpdGVtJyk7XG4gICAgICB0aGlzLndpZGdldFNlY3Rpb24gPSB0cnVlO1xuICAgICAgLy8gJChcIi5jb25uZWN0ZWRNYXBzTWFpbkRpdlwiKS5hZGRDbGFzcyhcInNob3dcIik7XG4gICAgICB0aGlzLiRodHRwXG4gICAgICAgIC5wb3N0KCcvYXBpL2Nvbm5lY3RlZE1hcHMnLCB7XG4gICAgICAgICAgZmlsdGVyX2lkOiB0eXBlID09ICdzdGFnZScgPyBzX2lkIDogdHlwZSA9PSAncGhhc2UnID8gcF9pZCA6IGNyX2lkLFxuICAgICAgICAgIGZpbHRlcl90eXBlOiB0eXBlLFxuICAgICAgICAgIGZyYW1ld29yazogdGhpcy5sY1R5cGVEZXRhaWxzLm5hbWVcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAyMDApIHtcbiAgICAgICAgICAgIHNlbGYuYV9tYXBzID0gWy4uLm5ldyBTZXQoWy4uLnNlbGYuYV9tYXBzLCAuLi5yZXNwb25zZS5kYXRhLmRhdGEuYWN0aXZlX21hcHNdKV07XG4gICAgICAgICAgICBzZWxmLmlfbWFwcyA9IFsuLi5uZXcgU2V0KFsuLi5zZWxmLmlfbWFwcywgLi4ucmVzcG9uc2UuZGF0YS5kYXRhLmluYWN0aXZlX21hcHNdKV07XG4gICAgICAgICAgICBsZXQgZnVsbCA9IFsuLi5zZWxmLndpZGdldHMsIC4uLnJlc3BvbnNlLmRhdGEuZGF0YS53aWRnZXRzXTtcbiAgICAgICAgICAgIHNlbGYubGNfd2lkZ2V0cyA9IFsuLi5uZXcgU2V0KGZ1bGwubWFwKEpTT04uc3RyaW5naWZ5KSldLm1hcChKU09OLnBhcnNlKTtcbiAgICAgICAgICAgIGlmIChzZWxmLnRhYiA9PSAyKSB7XG4gICAgICAgICAgICAgIGlmICh0eXBlID09ICdzdGFnZScpIHtcbiAgICAgICAgICAgICAgICBzZWxmLndpZGdldHMgPSBzZWxmLmxjX3dpZGdldHMuZmlsdGVyKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgIGxldCBzaG93V2lkZ2V0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGlmICgodmFsdWUucGhhc2VfaWQgIT0gbnVsbCAmJiBzZWxmLnNlbGVjdGVkV2lkZ2V0UGhhc2VzLmluZGV4T2YodmFsdWUucGhhc2VfaWQpID09PSAtMSkgfHwgKHZhbHVlLmNyX2lkICE9IG51bGwgJiYgc2VsZi5zZWxlY3RlZFdpZGdldENycy5pbmRleE9mKHZhbHVlLmNyX2lkKSA9PT0gLTEpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNob3dXaWRnZXQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJldHVybiBzaG93V2lkZ2V0O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJ3BoYXNlJykge1xuICAgICAgICAgICAgICAgIHNlbGYud2lkZ2V0cyA9IHNlbGYubGNfd2lkZ2V0cy5maWx0ZXIodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgbGV0IHNob3dXaWRnZXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmNyX2lkICE9IG51bGwgJiYgc2VsZi5zZWxlY3RlZFdpZGdldENycy5pbmRleE9mKHZhbHVlLmNyX2lkKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgc2hvd1dpZGdldCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHNob3dXaWRnZXQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IHdpZCA9IFsuLi5zZWxmLndpZGdldHMsIC4uLnJlc3BvbnNlLmRhdGEuZGF0YS53aWRnZXRzXTtcbiAgICAgICAgICAgICAgICBzZWxmLndpZGdldHMgPSBbLi4ubmV3IFNldCh3aWQubWFwKEpTT04uc3RyaW5naWZ5KSldLm1hcChKU09OLnBhcnNlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2VsZi53aWRnZXRzID0gc2VsZi5sY193aWRnZXRzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAkKCcuY29ubmVjdGVkTWFwc01haW5EaXYnKS5oZWlnaHQoJCh3aW5kb3cpLmhlaWdodCgpIC0gMTApO1xuICAgICAgICAgICAgc2VsZi5sb2FkaW5nTEMgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7IH0pO1xuICAgIH0sXG5cbiAgICBnZXRGcmFtZXdvcmtXaWRnZXRzKHNlbGVjdGVkTGV2ZWxzLCBpdGVtLCBtdHlwZSwgbWlkKSB7XG4gICAgICBpZiAodGhpcy50YWIgPT0gMikge1xuICAgICAgICBpZiAodGhpcy53aWRnZXRGb3IgPT0gaXRlbSAmJiB0aGlzLmVkaXQgJiYgdGhpcy53aWRnZXRGb3IpIHtcbiAgICAgICAgICB0aGlzLndpZGdldHMgPSBbXTtcbiAgICAgICAgICB0aGlzLndpZGdldEZvciA9ICcnO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLndpZGdldEZvciA9IG10eXBlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm1pZCA9IG1pZDtcbiAgICAgIHRoaXMubXR5cGUgPSBtdHlwZTtcblxuICAgICAgLy8gJ3N0ZycgKyB2YWx1ZS5zX2lkLCAnc3RhZ2UnLCB2YWx1ZS5zX2lkKVwiIDpjbGFzcz1cImdldENsYXNzKHZhbHVlLnNfaWQsICdzdGcnLCAnc3RhZ2VzJ1xuICAgICAgLy8gY29ubmVjdGVkV2lkZ2V0cyhpdGVtLCBtdHlwZSwgbWlkKSB7XG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICAkKCcuc3ZnQ29udGFpbmVyJykuYWRkQ2xhc3MoJ3NlbGVjdGVkaXRlbScpO1xuICAgICAgdGhpcy53aWRnZXRTZWN0aW9uID0gdHJ1ZTtcbiAgICAgIHRoaXMuJGh0dHBcbiAgICAgICAgLnBvc3QoJy9hcGkvZ2V0RnJhbWV3b3JrV2lkZ2V0cycsIHtcbiAgICAgICAgICBmaWx0ZXJfaWQ6IHNlbGVjdGVkTGV2ZWxzLFxuICAgICAgICAgIGZyYW1ld29yazogdGhpcy5sY1R5cGVEZXRhaWxzLm5hbWVcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAyMDApIHtcbiAgICAgICAgICAgIHNlbGYud2lkZ2V0cyA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICAgICAgICAgIHNlbGYubGNfd2lkZ2V0cyA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcblxuICAgICAgICAgICAgJCgnLmNvbm5lY3RlZE1hcHNNYWluRGl2JykuaGVpZ2h0KCQod2luZG93KS5oZWlnaHQoKSAtIDEwKTtcbiAgICAgICAgICAgIHNlbGYubG9hZGluZ0xDID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgeyB9KTtcbiAgICB9LFxuXG4gICAgZ2V0RWxlbWVudENvbm5lY3RlZE1hcHMobGNpZCkge1xuICAgICAgLy8gJCgnLnN2Z0NvbnRhaW5lcicpLmFkZENsYXNzKCdzZWxlY3RlZGl0ZW0nKTtcbiAgICAgIC8vIHRoaXMud2lkZ2V0U2VjdGlvbiA9IGZhbHNlO1xuICAgICAgdGhpcy50YWIgPSAxO1xuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgdGhpcy4kaHR0cFxuICAgICAgICAucG9zdCgnL2FwaS9nZXRMaWZlY3ljbGVKb3VybmV5cycsIHtcbiAgICAgICAgICBsaWZlY3ljbGU6IGxjaWQsXG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgICAgICAvLyBzZWxmLmFfbWFwcyA9IFsuLi5uZXcgU2V0KFsuLi5zZWxmLmFfbWFwcywgLi4ucmVzcG9uc2UuZGF0YS5kYXRhLmFjdGl2ZV9tYXBzXSldO1xuICAgICAgICAgICAgLy8gc2VsZi5pX21hcHMgPSBbLi4ubmV3IFNldChbLi4uc2VsZi5pX21hcHMsIC4uLnJlc3BvbnNlLmRhdGEuZGF0YS5pbmFjdGl2ZV9tYXBzXSldO1xuICAgICAgICAgICAgc2VsZi5hX21hcHMgPSByZXNwb25zZS5kYXRhLmRhdGEuYWN0aXZlX21hcHM7XG4gICAgICAgICAgICBzZWxmLmlfbWFwcyA9IHJlc3BvbnNlLmRhdGEuZGF0YS5pbmFjdGl2ZV9tYXBzO1xuICAgICAgICAgICAgLy8gJCgnLmNvbm5lY3RlZE1hcHNNYWluRGl2JykuaGVpZ2h0KCQod2luZG93KS5oZWlnaHQoKSAtIDEwKTtcbiAgICAgICAgICAgIHNlbGYubG9hZGluZ0xDID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgeyB9KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVG8gZmV0Y2ggd2lkZ2V0IHR5cGVcbiAgICAgKi9cblxuICAgIGdldFdpZGdldFR5cGVzKCkge1xuICAgICAgLy8gVGhlIHZpZXcgbW9kZWwuXG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICB0aGlzLiRodHRwXG4gICAgICAgIC5nZXQoJy9zZXJ2aWNlL2dldFdpZGdldFR5cGUnKVxuICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDIwMCkge1xuICAgICAgICAgICAgc2VsZi53X3R5cGVzID0gcmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgICAgICAgICAgc2VsZi4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgICAgICAkKCcuc2VsZWN0cGlja2VyJykuc2VsZWN0cGlja2VyKCk7XG4gICAgICAgICAgICAgICQoJy5zZWxlY3RwaWNrZXInKS5zZWxlY3RwaWNrZXIoJ3JlZnJlc2gnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7IH0pO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBEb2N1bWVudHNcbiAgICAgKi9cblxuICAgIGdldEFsbERvY3VtZW50cygpIHtcbiAgICAgIC8vIFRoZSB2aWV3IG1vZGVsLlxuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgdGhpcy4kaHR0cFxuICAgICAgICAucG9zdCgnL3NlcnZpY2UvYWxsTWFwRG9jdW1lbnRzJywge1xuICAgICAgICAgIC8vbWFwaWQ6IDQ2N1xuICAgICAgICB9KVxuICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDIwMCkge1xuICAgICAgICAgICAgc2VsZi5kb2N1bWVudHMgPSByZXNwb25zZS5kYXRhLmRhdGE7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsgfSk7XG4gICAgfSxcblxuICAgIGNsb3NlV2lkZ2V0cygpIHtcbiAgICAgIHRoaXMud2lkZ2V0U2VjdGlvbiA9IGZhbHNlO1xuICAgIH0sXG5cbiAgICBjb25uZWN0ZWRXaWRnZXRzKGl0ZW0sIG10eXBlLCBtaWQpIHtcbiAgICAgIGlmICh0aGlzLndpZGdldEZvciA9PSBpdGVtICYmIHRoaXMuZWRpdCAmJiB0aGlzLndpZGdldEZvcikge1xuICAgICAgICB0aGlzLndpZGdldHMgPSBbXTtcbiAgICAgICAgdGhpcy53aWRnZXRGb3IgPSAnJztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy53aWRnZXRGb3IgPSBpdGVtO1xuXG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG5cbiAgICAgIC8vICAgICAvLyB1cGRhdGUgd2lkZ2V0c1xuICAgICAgLy8gICAgIHNlbGYud2lkZ2V0cyA9IHNlbGYud2lkZ2V0cy5maWx0ZXIoKHZhbHVlKSA9PiB7XG4gICAgICAvLyAgICAgLy8gdXBkYXRlIHJlbGF0ZWQgY3JzLCBwaGFzZXMgYW5kIHN0YWdlc1xuXG4gICAgICAvLyAgICAgLy8gdXBkYXRlIHdpZGdldHNcbiAgICAgIC8vICAgICBzZWxmLndpZGdldHMgPSBzZWxmLndpZGdldHMuZmlsdGVyKCh2YWx1ZSkgPT4ge1xuXG4gICAgICAvLyAgICAgLy8gdXBkYXRlIHJlbGF0ZWQgY3JzLCBwaGFzZXMgYW5kIHN0YWdlc1xuXG4gICAgICAvLyAgICAgLy8gdXBkYXRlIHdpZGdldHNcbiAgICAgIC8vICAgICBzZWxmLndpZGdldHMgPSBzZWxmLndpZGdldHMuZmlsdGVyKCh2YWx1ZSkgPT4ge1xuXG4gICAgICAvLyAgICAgLy8gdXBkYXRlIHJlbGF0ZWQgY3JzLCBwaGFzZXMgYW5kIHN0YWdlc1xuXG4gICAgICAvLyAgICAgLy8gc2VsZWN0ZWQgc2VnZW1lbnRzXG5cbiAgICAgIHRoaXMubWlkID0gbWlkO1xuICAgICAgdGhpcy5tdHlwZSA9IG10eXBlO1xuXG4gICAgICBpZiAoISQoJy5zdmdDb250YWluZXInKS5oYXNDbGFzcygnc2VsZWN0ZWRpdGVtJykpIHtcbiAgICAgICAgJCgnLnN2Z0NvbnRhaW5lcicpLmFkZENsYXNzKCdzZWxlY3RlZGl0ZW0nKTtcbiAgICAgIH1cbiAgICAgIHRoaXMud2lkZ2V0U2VjdGlvbiA9IHRydWU7XG5cbiAgICAgIHRoaXMuJGh0dHBcbiAgICAgICAgLnBvc3QoJy9hcGkvY29ubmVjdGVkTWFwcycsIHtcbiAgICAgICAgICBmaWx0ZXJfaWQ6IG1pZCxcbiAgICAgICAgICBmaWx0ZXJfdHlwZTogbXR5cGUsXG4gICAgICAgICAgZWRpdF93aWRnZXRsYzogdHJ1ZSxcbiAgICAgICAgICBmcmFtZXdvcms6IHRoaXMubGNUeXBlRGV0YWlscy5uYW1lXG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgICAgICBzZWxmLndpZGdldHMgPSByZXNwb25zZS5kYXRhLmRhdGEud2lkZ2V0cztcbiAgICAgICAgICAgIHNlbGYubG9hZGluZ0xDID0gdHJ1ZTtcbiAgICAgICAgICAgICQoJy5jb25uZWN0ZWRNYXBzTWFpbkRpdicpLmhlaWdodCgkKHdpbmRvdykuaGVpZ2h0KCkgLSAxMCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsgfSk7XG4gICAgfSxcbiAgICBvcGVuTW9kYWwobW9kYWwpIHtcbiAgICAgICQobW9kYWwpLm1vZGFsKCdzaG93Jyk7XG4gICAgfSxcbiAgICBjbG9zZU1vZGFsKG1vZGFsKSB7XG4gICAgICAkKG1vZGFsKS5tb2RhbCgnaGlkZScpO1xuICAgIH0sXG5cbiAgICB0b2dnbGVFZGl0KCkge1xuICAgICAgaWYgKHRoaXMuZWRpdCkge1xuICAgICAgICB0aGlzLnRlbXBXaWRnZXRzID0gdGhpcy53aWRnZXRzO1xuICAgICAgICAvLyB0aGlzLmxjX3dpZGdldHMgPSB0aGlzLndpZGdldHM7XG4gICAgICAgIHRoaXMud2lkZ2V0cyA9IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy53aWRnZXRzID0gdGhpcy50ZW1wV2lkZ2V0cztcbiAgICAgICAgLy8gdGhpcy53aWRnZXRzID0gdGhpcy5sY193aWRnZXRzO1xuICAgICAgICB0aGlzLndpZGdldEZvciA9ICcnO1xuICAgICAgfVxuICAgIH0sXG4gICAgYWRkTmV3V2lkZ2V0KHdpZGdldCkge1xuICAgICAgLy8gVGhlIHZpZXcgbW9kZWwuXG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICBsZXQgcmVxID0ge1xuICAgICAgICB3dHlwZV9pZDogd2lkZ2V0LmlkLFxuICAgICAgICBjYXJ0b29uX3R5cGU6IHRoaXMubXR5cGUsXG4gICAgICAgIGNhcnRvb25faWQ6IHRoaXMubWlkLFxuICAgICAgICBmcmFtZXdvcms6IHRoaXMubGNUeXBlRGV0YWlscy5uYW1lXG4gICAgICB9O1xuICAgICAgbGV0IHNldCA9IFtdO1xuICAgICAgaWYgKHRoaXMubXR5cGUgPT0gJ3N0YWdlJykge1xuICAgICAgICBzZXQgPSB0aGlzLnNlbGVjdGVkU3RhZ2VzO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm10eXBlID09ICdwaGFzZScpIHtcbiAgICAgICAgc2V0ID0gdGhpcy5zZWxlY3RlZFBoYXNlcztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tdHlwZSA9PSAnY29udGFjdHJlYXNvbicpIHtcbiAgICAgICAgc2V0ID0gdGhpcy5zZWxlY3RlZENycztcbiAgICAgIH1cbiAgICAgIHRoaXMud2lkZ2V0cy5wdXNoKHtcbiAgICAgICAgd2lkZ2V0X2lkOiAnJyxcbiAgICAgICAgd2lkZ2V0X3R5cGVfaWQ6IHdpZGdldC5pZCxcbiAgICAgICAgd2lkZ2V0X3R5cGVfbmFtZTogd2lkZ2V0Lm5hbWUsXG4gICAgICAgIHdpZGdldF90eXBlX2RuYW1lOiB3aWRnZXQuZGlzcGxheV9uYW1lLFxuICAgICAgICB3aWRnZXRfdGl0bGU6ICcnLFxuICAgICAgICB3aWRnZXRfcG9zaXRpb246ICcnLFxuICAgICAgICB3aWRnZXRfc3RhdHVzOiAnJyxcbiAgICAgICAgc3RhZ2VfaWQ6IHRoaXMubXR5cGUgPT0gJ3N0YWdlJyA/IHRoaXMubWlkIDogbnVsbCxcbiAgICAgICAgcGhhc2VfaWQ6IHRoaXMubXR5cGUgPT0gJ3BoYXNlJyA/IHRoaXMubWlkIDogbnVsbCxcbiAgICAgICAgY3JfaWQ6IHRoaXMubXR5cGUgPT0gJ2NvbnRhY3RyZWFzb24nID8gdGhpcy5taWQgOiBudWxsLFxuICAgICAgICB3aWRnZXRfZGF0YTogW10sXG4gICAgICB9KTtcbiAgICAgIHNlbGYuJHBhcmVudC5sY2RhdGEuc3RhdHVzID0gJ3NhdmluZyc7XG4gICAgICBzZWxmLiRwYXJlbnQuZ2V0Tm93KCk7XG4gICAgICB0aGlzLiRodHRwXG4gICAgICAgIC5wb3N0KCcvc2VydmljZS93aWRnZXQvc3RvcmUnLCByZXEpXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgICAgICBzZWxmLiRzZXQoc2VsZi53aWRnZXRzW3NlbGYud2lkZ2V0cy5sZW5ndGggLSAxXSwgJ3dpZGdldF9pZCcsIHJlc3BvbnNlLmRhdGEuZGF0YS53aWRnZXRfaWQpO1xuICAgICAgICAgICAgaWYgKHNldC5pbmNsdWRlcyhzZWxmLm1pZCkpIHtcbiAgICAgICAgICAgICAgc2VsZi5sY193aWRnZXRzLnB1c2goc2VsZi53aWRnZXRzW3NlbGYud2lkZ2V0cy5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLiRwYXJlbnQubGNkYXRhLnN0YXR1cyA9ICdzYXZlZCc7XG4gICAgICAgICAgICAkKCcjd2lkZ2V0U2Nyb2xsJykuYW5pbWF0ZSh7IHNjcm9sbFRvcDogJCgnI3dpZGdldFNjcm9sbCcpWzBdLnNjcm9sbEhlaWdodCB9LCAxMDAwKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIHNlbGYuJHBhcmVudC5sY2RhdGEuc3RhdHVzID0gJ3NhdmVkJztcbiAgICAgICAgICB0aGlzLndpZGdldHMucG9wKCk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgZGVsZXRlV2lkZ2V0KHdpbikge1xuICAgICAgY29uc3Qgc2V0ID0gdGhpcy5tdHlwZSA9PSAnc3RhZ2UnID8gdGhpcy5zZWxlY3RlZFN0YWdlcyA6IHRoaXMubXR5cGUgPT0gJ3BhaHNlJyA/IHRoaXMuc2VsZWN0ZWRQaGFzZXMgOiB0aGlzLnNlbGVjdGVkQ3JzO1xuXG4gICAgICBsZXQgcmVxID0ge1xuICAgICAgICB3aWRnZXRfaWQ6IHRoaXMud2lkZ2V0c1t3aW5dLndpZGdldF9pZCxcbiAgICAgIH07XG4gICAgICBpZiAoIXJlcS53aWRnZXRfaWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgc2VsZi4kcGFyZW50LmxjZGF0YS5zdGF0dXMgPSAnc2F2aW5nJztcbiAgICAgIHNlbGYuJHBhcmVudC5nZXROb3coKTtcbiAgICAgIHRoaXMuJGh0dHBcbiAgICAgICAgLnBvc3QoJy9zZXJ2aWNlL3dpZGdldC9kZXN0cm95JywgcmVxKVxuICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgIHNlbGYud2lkZ2V0cy5zcGxpY2Uod2luLCAxKTtcbiAgICAgICAgICAgIGlmIChzZXQuaW5jbHVkZXMoc2VsZi5taWQpKSB7XG4gICAgICAgICAgICAgIGxldCB3aSA9IHNlbGYubGNfd2lkZ2V0cy5maW5kSW5kZXgodyA9PiB3LndpZGdldF9pZCA9PSByZXEud2lkZ2V0X2lkKTtcbiAgICAgICAgICAgICAgaWYgKHdpID4gLTEpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmxjX3dpZGdldHMuc3BsaWNlKHdpLCAxKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZi4kcGFyZW50LmxjZGF0YS5zdGF0dXMgPSAnc2F2ZWQnO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIHNlbGYuJHBhcmVudC5sY2RhdGEuc3RhdHVzID0gJ3NhdmVkJztcblxuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgZHVwbGljYXRlV2lkZ2V0KGJpKSB7XG4gICAgICBjb25zdCBkSW5kZXggPSBiaSArIDE7XG4gICAgICAvLyBjb25zdCBkdXBsaWNhdGUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMud2lkZ2V0c1tiaV0pKTtcbiAgICAgIC8vIHRoaXMuZGF0YS5zcGxpY2UoZEluZGV4LCAwLCBkdXBsaWNhdGUpXG4gICAgICBjb25zdCBzZXQgPSB0aGlzLm10eXBlID09ICdzdGFnZScgPyB0aGlzLnNlbGVjdGVkU3RhZ2VzIDogdGhpcy5tdHlwZSA9PSAncGFoc2UnID8gdGhpcy5zZWxlY3RlZFBoYXNlcyA6IHRoaXMuc2VsZWN0ZWRDcnM7XG4gICAgICBsZXQgcmVxID0ge1xuICAgICAgICB3aWRnZXRfaWQ6IHRoaXMud2lkZ2V0c1tiaV0ud2lkZ2V0X2lkLFxuICAgICAgfTtcbiAgICAgIGlmICghcmVxLndpZGdldF9pZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICBzZWxmLiRwYXJlbnQubGNkYXRhLnN0YXR1cyA9ICdzYXZpbmcnO1xuICAgICAgc2VsZi4kcGFyZW50LmdldE5vdygpO1xuICAgICAgdGhpcy4kaHR0cFxuICAgICAgICAucG9zdCgnL3NlcnZpY2Uvd2lkZ2V0L2R1cGxpY2F0ZScsIHJlcSlcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICBzZWxmLndpZGdldHMuc3BsaWNlKGRJbmRleCwgMCwgcmVzcG9uc2UuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgIGlmIChzZXQuaW5jbHVkZXMoc2VsZi5taWQpKSB7XG4gICAgICAgICAgICAgIGxldCB3aSA9IHNlbGYubGNfd2lkZ2V0cy5maW5kSW5kZXgodyA9PiB3LndpZGdldF9pZCA9PSByZXEud2lkZ2V0X2lkKTtcbiAgICAgICAgICAgICAgaWYgKHdpID4gLTEpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmxjX3dpZGdldHMuc3BsaWNlKHdpICsgMSwgMCwgcmVzcG9uc2UuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZi4kcGFyZW50LmxjZGF0YS5zdGF0dXMgPSAnc2F2ZWQnO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIHNlbGYuJHBhcmVudC5sY2RhdGEuc3RhdHVzID0gJ3NhdmVkJztcblxuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogV2lkZ2V0c1xuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogU3RvcmUgVGV4dCB3aWRnZXQgYmxvY2tcbiAgICAgKi9cbiAgICBzdG9yZVRleHQod2lkZ2V0LCB3aW5kZXgsIHdpZGdldF9pZCwgd2lkZ2V0X3R5cGUsIHdpbikge1xuICAgICAgdGhpcy53aW5kZXggPSB3aW5kZXg7XG4gICAgICB0aGlzLndpbiA9IHdpbjtcbiAgICAgIGxldCBkYXRhID0ge1xuICAgICAgICB3aWRnZXRfaWQ6IHdpZGdldF9pZCxcbiAgICAgICAgd2lkZ2V0X3R5cGU6IHdpZGdldF90eXBlLFxuICAgICAgICB3aWRnZXRfb2JqZWN0OiB7XG4gICAgICAgICAgdGV4dDogd2lkZ2V0LnRleHQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgaWYgKHdpZGdldC5ibG9ja19pZCkge1xuICAgICAgICBkYXRhWydibG9ja19pZCddID0gd2lkZ2V0LmJsb2NrX2lkO1xuICAgICAgfVxuICAgICAgdGhpcy5zdG9yZVdpZGdldEJsb2NrKGRhdGEsIHdpZGdldCwgd2lkZ2V0X3R5cGUpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBTdG9yZSBNZWRpYSB3aWRnZXQgYmxvY2tcbiAgICAgKi9cbiAgICBzdG9yZU1lZGlhKHdpZGdldCwgd2luZGV4LCB3aWRnZXRfaWQsIHdpZGdldF90eXBlLCB3aW4pIHtcbiAgICAgIHRoaXMud2lkZ2V0ID0gd2lkZ2V0O1xuICAgICAgdGhpcy53aW5kZXggPSB3aW5kZXg7XG4gICAgICB0aGlzLndpZGdldF9pZCA9IHdpZGdldF9pZDtcbiAgICAgIHRoaXMud2lkZ2V0X3R5cGUgPSB3aWRnZXRfdHlwZTtcbiAgICAgIHRoaXMud2luID0gd2luO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBNZWRpYVxuICAgICAqL1xuICAgIHNhdmVNZWRpYShtZWRpYSwgdHlwZSkge1xuICAgICAgaWYgKHRoaXMubGlua01vZGFsU3RhdHVzKSB7XG4gICAgICAgIHRoaXMuJHJlZnMubGlua0NvbXBvbmVudFJlZi5zYXZlTWVkaWEobWVkaWEsIHR5cGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5oaWVyYXJjaHlNb2RhbFN0YXR1cykge1xuICAgICAgICB0aGlzLiRyZWZzLmhpZXJhcmNoeUNvbXBvbmVudFJlZi5zYXZlTWVkaWEobWVkaWEsIHR5cGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgd2lkZ2V0X2lkOiB0aGlzLndpZGdldF9pZCxcbiAgICAgICAgd2lkZ2V0X3R5cGU6IHRoaXMud2lkZ2V0X3R5cGUsXG4gICAgICAgIHdpZGdldF9vYmplY3Q6IHtcbiAgICAgICAgICBtZWRpYV90eXBlOiBtZWRpYS5tZWRpYV90eXBlLFxuICAgICAgICAgIHVwbG9hZF90eXBlOiB0eXBlLFxuICAgICAgICAgIC8vIGlkIDogbWVkaWEuaWQsXG4gICAgICAgICAgLy8gdHlwZSA6IG1lZGlhLnR5cGVcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBpZiAodHlwZSA9PSAnc2V0aW1hZ2UnKSB7XG4gICAgICAgIHRoaXMuJHNldChkYXRhLndpZGdldF9vYmplY3QsICdpZCcsIG1lZGlhLmlkKTtcbiAgICAgICAgdGhpcy4kc2V0KGRhdGEud2lkZ2V0X29iamVjdCwgJ3R5cGUnLCBtZWRpYS50eXBlKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAndXBsb2FkaW1hZ2UnKSB7XG4gICAgICAgIHRoaXMuJHNldChkYXRhLndpZGdldF9vYmplY3QsICdmaWxlJywgbWVkaWEubWVkaWFfdHlwZSA9PSAnaW1hZ2UnID8gbWVkaWEuaW1hZ2VfcGF0aCA6IG1lZGlhLmZpbGUpO1xuICAgICAgICB0aGlzLiRzZXQoZGF0YS53aWRnZXRfb2JqZWN0LCAnbGlua190eXBlJywgbWVkaWEubGlua190eXBlKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLndpZGdldC5ibG9ja19pZCkge1xuICAgICAgICBkYXRhWydibG9ja19pZCddID0gdGhpcy53aWRnZXQuYmxvY2tfaWQ7XG4gICAgICB9XG5cbiAgICAgIHRoaXMud2lkZ2V0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShPYmplY3QuYXNzaWduKHRoaXMud2lkZ2V0LCBtZWRpYSkpKTtcbiAgICAgIHRoaXMuc3RvcmVXaWRnZXRCbG9jayhkYXRhLCB0aGlzLndpZGdldCwgdGhpcy53aWRnZXRfdHlwZSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFBlcnNvbmFcbiAgICAgKi9cblxuICAgIHN0b3JlTW9kYWxEYXRhKHdpZGdldCwgd2luZGV4LCB3aWRnZXRfaWQsIHdpZGdldF90eXBlLCB3aW4sIHdpZGdldHMpIHtcbiAgICAgIHRoaXMud2lkZ2V0ID0gd2lkZ2V0O1xuICAgICAgdGhpcy53aW5kZXggPSB3aW5kZXg7XG4gICAgICB0aGlzLndpZGdldF9pZCA9IHdpZGdldF9pZDtcbiAgICAgIHRoaXMud2lkZ2V0X3R5cGUgPSB3aWRnZXRfdHlwZTtcbiAgICAgIHRoaXMud2luID0gd2luO1xuICAgICAgdGhpcy50ZW1wRGF0YSA9IHdpZGdldHM7XG4gICAgfSxcblxuICAgIGNvbm5lY3RQZXJzb25hKHBlcnNvbmEpIHtcbiAgICAgIGlmICh0aGlzLk1vdE1vZGFsU3RhdHVzKSB7XG4gICAgICAgIGV2ZW50QnVzLiRlbWl0KCdzZXQtdG8tbW90LWxpZmVjeWNsZScsIHtcbiAgICAgICAgICB0eXBlOiAncGVyc29uYScsXG4gICAgICAgICAgb2JqOiBwZXJzb25hLFxuICAgICAgICB9KTtcbiAgICAgICAgJCgnI21hcFBlcnNvbnMnKS5tb2RhbCgnaGlkZScpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyB0aGlzLndpZGdldCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmFzc2lnbih0aGlzLndpZGdldCwgZW0pKSlcbiAgICAgIGlmICh0aGlzLnRlbXBEYXRhLnNvbWUocGVyID0+IHBlclsncGVyc29uYV9pZCddID09PSBwZXJzb25hLnBlcnNvbmFfaWQpKSB7XG4gICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfdGltZXJfbWVzc2FnZSh0aGlzLmFwcFRyYW5zLnBlcnNvbmEubXNnX2xpZmVjeWNsZV9hbHJlYWR5X2FkZGVkLCAnd2FybmluZycpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgd2lkZ2V0X2lkOiB0aGlzLndpZGdldF9pZCxcbiAgICAgICAgd2lkZ2V0X3R5cGU6IHRoaXMud2lkZ2V0X3R5cGUsXG4gICAgICAgIHdpZGdldF9vYmplY3Q6IHtcbiAgICAgICAgICBwZXJzb25hX2lkOiBwZXJzb25hLnBlcnNvbmFfaWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICB0aGlzLiRzZXQodGhpcy53aWRnZXQsICdwZXJzb25hX2lkJywgcGVyc29uYS5wZXJzb25hX2lkKTtcbiAgICAgIHRoaXMuJHNldCh0aGlzLndpZGdldCwgJ25hbWUnLCBwZXJzb25hLm5hbWUpO1xuXG4gICAgICBpZiAodGhpcy53aWRnZXQuYmxvY2tfaWQpIHtcbiAgICAgICAgZGF0YVsnYmxvY2tfaWQnXSA9IHRoaXMud2lkZ2V0LmJsb2NrX2lkO1xuICAgICAgfVxuICAgICAgdGhpcy5zdG9yZVdpZGdldEJsb2NrKGRhdGEsIHRoaXMud2lkZ2V0LCAncGVyc29uYScpO1xuICAgICAgJCgnI21hcFBlcnNvbnMnKS5tb2RhbCgnaGlkZScpO1xuICAgIH0sXG5cbiAgICBjb25uZWN0S3BpKGtwaSkge1xuICAgICAgaWYgKHRoaXMudGVtcERhdGEuc29tZShwZXIgPT4gcGVyWydwY19pZCddID09PSBrcGkucGNfaWQpICYmICFrcGkuYmxvY2tfaWQpIHtcbiAgICAgICAgbW1fbWVzc2FnZXIuZGlzcGxheV90aW1lcl9tZXNzYWdlKHRoaXMuYXBwVHJhbnMuZGF0YV93aWRnZXQubXNnX2xpZmVjeWNsZV9hbHJlYWR5X2FkZGVkLCAnd2FybmluZycpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgd2lkZ2V0X2lkOiB0aGlzLndpZGdldF9pZCxcbiAgICAgICAgd2lkZ2V0X3R5cGU6IHRoaXMud2lkZ2V0X3R5cGUsXG4gICAgICAgIHdpZGdldF9vYmplY3Q6IHtcbiAgICAgICAgICBwY19pZDoga3BpLnBjX2lkLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMud2lkZ2V0ICYmIHRoaXMud2lkZ2V0LmJsb2NrX2lkKSB7XG4gICAgICAgIGRhdGFbJ2Jsb2NrX2lkJ10gPSB0aGlzLndpZGdldC5ibG9ja19pZDtcbiAgICAgICAgZGF0YVsnd2lkZ2V0X29iamVjdCddID0ga3BpO1xuICAgICAgfVxuICAgICAgdGhpcy5zdG9yZVdpZGdldEJsb2NrKGRhdGEsIHRoaXMud2lkZ2V0LCAna3BpJyk7XG4gICAgICAkKCcjS3BpTGlzdE1vZGFsJykubW9kYWwoJ2hpZGUnKTtcbiAgICAgICQoJyNzYXZlV2FybmluZ0twaU1vZGFsJykubW9kYWwoJ2hpZGUnKTtcbiAgICAgICQoJyNjcmVhdGVLcGlNb2RhbCcpLm1vZGFsKCdoaWRlJyk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFN0b3JlIEVtb3Rpb24gd2lkZ2V0IGJsb2NrXG4gICAgICovXG4gICAgc3RvcmVFbW90aW9uKHdpZGdldCwgd2luZGV4LCB3aWRnZXRfaWQsIHdpZGdldF90eXBlLCB3aW4sIHdpZGdldHMpIHtcbiAgICAgIHRoaXMud2lkZ2V0ID0gd2lkZ2V0O1xuICAgICAgdGhpcy53aW5kZXggPSB3aW5kZXg7XG4gICAgICB0aGlzLndpZGdldF9pZCA9IHdpZGdldF9pZDtcbiAgICAgIHRoaXMud2lkZ2V0X3R5cGUgPSB3aWRnZXRfdHlwZTtcbiAgICAgIHRoaXMud2luID0gd2luO1xuICAgICAgdGhpcy53aWRnZXRFbW90aW9ucyA9IHdpZGdldHM7XG4gICAgfSxcblxuICAgIHNldEVtb3Rpb24oZW0pIHtcbiAgICAgIGlmICh0aGlzLk1vdE1vZGFsU3RhdHVzKSB7XG4gICAgICAgIGV2ZW50QnVzLiRlbWl0KCdzZXQtdG8tbW90LWxpZmVjeWNsZScsIHsgdHlwZTogJ2Vtb3Rpb25zJywgb2JqOiBlbSB9KTtcbiAgICAgICAgJCgnI2FkZEVtb3Rpb25Nb2RhbCcpLm1vZGFsKCdoaWRlJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxldCBkYXRhID0ge1xuICAgICAgICB3aWRnZXRfaWQ6IHRoaXMud2lkZ2V0X2lkLFxuICAgICAgICB3aWRnZXRfdHlwZTogdGhpcy53aWRnZXRfdHlwZSxcbiAgICAgICAgd2lkZ2V0X29iamVjdDoge1xuICAgICAgICAgIGVtb3Rpb25faWQ6IGVtLmVfaWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICB0aGlzLiRzZXQodGhpcy53aWRnZXQsICdlX2lkJywgZW0uZV9pZCk7XG4gICAgICB0aGlzLiRzZXQodGhpcy53aWRnZXQsICdlX25hbWUnLCBlbS5lX25hbWUpO1xuICAgICAgdGhpcy4kc2V0KHRoaXMud2lkZ2V0LCAnZV9zY29yZScsIGVtLmVfc2NvcmUpO1xuICAgICAgdGhpcy4kc2V0KHRoaXMud2lkZ2V0LCAnZV9jb2xvcicsIGVtLmVfY29sb3IpO1xuICAgICAgdGhpcy4kc2V0KHRoaXMud2lkZ2V0LCAnZV9mb250Y29sb3InLCBlbS5lX2ZvbnRjb2xvcik7XG5cbiAgICAgIGlmICh0aGlzLndpZGdldC5ibG9ja19pZCkge1xuICAgICAgICBkYXRhWydibG9ja19pZCddID0gdGhpcy53aWRnZXQuYmxvY2tfaWQ7XG4gICAgICAgIGRhdGFbJ3dpZGdldF9vYmplY3QnXVsnZW1vdGlvbl9pZCddID0gdGhpcy53aWRnZXQuZV9pZDtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3RvcmVXaWRnZXRCbG9jayhkYXRhLCB0aGlzLndpZGdldCwgJ2Vtb3Rpb24nKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogU3RvcmUgRW1vdGlvbiB3aWRnZXQgYmxvY2tcbiAgICAgKi9cbiAgICBzdG9yZURvY3VtZW50KHdpZGdldCwgd2luZGV4LCB3aWRnZXRfaWQsIHdpZGdldF90eXBlLCB3aW4pIHtcbiAgICAgIHRoaXMud2lkZ2V0ID0gd2lkZ2V0O1xuICAgICAgdGhpcy53aW5kZXggPSB3aW5kZXg7XG4gICAgICB0aGlzLndpZGdldF9pZCA9IHdpZGdldF9pZDtcbiAgICAgIHRoaXMud2lkZ2V0X3R5cGUgPSB3aWRnZXRfdHlwZTtcbiAgICAgIHRoaXMud2luID0gd2luO1xuICAgIH0sXG5cbiAgICBzYXZlRG9jdW1lbnQoZG9jKSB7XG4gICAgICBpZiAodGhpcy5wZXJzb25hTW9kYWxTdGF0dXMpIHtcbiAgICAgICAgZXZlbnRCdXMuJGVtaXQoJ2xpZmVjeWNsZS1zZXQtdG8tcGVyc29uYScsIHtcbiAgICAgICAgICB0eXBlOiAnZG9jdW1lbnRzJyxcbiAgICAgICAgICBvYmo6IGRvYyxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmluc2lnaHRNb2RhbFN0YXR1cykge1xuICAgICAgICBldmVudEJ1cy4kZW1pdCgnbGlmZWN5Y2xlLXNldC10by1mYWN0Jywge1xuICAgICAgICAgIHR5cGU6ICdkb2N1bWVudHMnLFxuICAgICAgICAgIG9iajogZG9jLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY2hhbm5lbE1vZGFsU3RhdHVzKSB7XG4gICAgICAgIGV2ZW50QnVzLiRlbWl0KCdzZXQtdG8tY2hhbm5lbC1saWZlY3ljbGUnLCB7XG4gICAgICAgICAgdHlwZTogJ2RvY3VtZW50cycsXG4gICAgICAgICAgb2JqOiBkb2MsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5Nb3RNb2RhbFN0YXR1cykge1xuICAgICAgICBldmVudEJ1cy4kZW1pdCgnc2V0LXRvLW1vdC1saWZlY3ljbGUnLCB7XG4gICAgICAgICAgdHlwZTogJ2RvY3VtZW50cycsXG4gICAgICAgICAgb2JqOiBkb2MsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgd2lkZ2V0X2lkOiB0aGlzLndpZGdldF9pZCxcbiAgICAgICAgd2lkZ2V0X3R5cGU6IHRoaXMud2lkZ2V0X3R5cGUsXG4gICAgICAgIHdpZGdldF9vYmplY3Q6IHtcbiAgICAgICAgICBkX2lkOiBkb2MuZF9pZCxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuJHNldCh0aGlzLndpZGdldCwgJ2RfaWQnLCBkb2MuZF9pZCk7XG4gICAgICB0aGlzLiRzZXQodGhpcy53aWRnZXQsICdkX3JlYWxuYW1lJywgZG9jLmRfcmVhbG5hbWUpO1xuICAgICAgdGhpcy4kc2V0KHRoaXMud2lkZ2V0LCAnZF9uYW1lJywgZG9jLmRfbmFtZSk7XG4gICAgICB0aGlzLiRzZXQodGhpcy53aWRnZXQsICdkX3R5cGUnLCBkb2MuZV9jb2xvcik7XG4gICAgICB0aGlzLiRzZXQodGhpcy53aWRnZXQsICdkX3BhdGgnLCBkb2MuZF9wYXRoKTtcbiAgICAgIHRoaXMuJHNldCh0aGlzLndpZGdldCwgJ2RfY3JlYXRlZCcsIGRvYy5kX2NyZWF0ZWQpO1xuICAgICAgdGhpcy4kc2V0KHRoaXMud2lkZ2V0LCAnZF9zaXplJywgZG9jLmRfc2l6ZSk7XG4gICAgICB0aGlzLiRzZXQodGhpcy53aWRnZXQsICdkX3RpdGxlJywgZG9jLmRfdGl0bGUpO1xuICAgICAgdGhpcy4kc2V0KHRoaXMud2lkZ2V0LCAnZF90eXBlJywgZG9jLmRfdHlwZSk7XG5cbiAgICAgIGlmICh0aGlzLndpZGdldC5ibG9ja19pZCkge1xuICAgICAgICBkYXRhWydibG9ja19pZCddID0gdGhpcy53aWRnZXQuYmxvY2tfaWQ7XG4gICAgICB9XG4gICAgICB0aGlzLnN0b3JlV2lkZ2V0QmxvY2soZGF0YSwgdGhpcy53aWRnZXQsICdkb2MnKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogU3RvcmUgRGVmaW5lZCBLUElcbiAgICAgKi9cblxuICAgIHN0b3JlS1BJKHdpZGdldCwgd2luZGV4LCB3aWRnZXRfaWQsIHdpZGdldF90eXBlLCB3aW4pIHtcbiAgICAgIHRoaXMud2luZGV4ID0gd2luZGV4O1xuICAgICAgdGhpcy53aW4gPSB3aW47XG4gICAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgd2lkZ2V0X2lkOiB3aWRnZXRfaWQsXG4gICAgICAgIHdpZGdldF90eXBlOiB3aWRnZXRfdHlwZSxcbiAgICAgICAgd2lkZ2V0X29iamVjdDoge1xuICAgICAgICAgIHBjX2lkOiB3aWRnZXQucGNfaWQsXG4gICAgICAgICAgdmFsdWU6IHdpZGdldC52YWx1ZSxcbiAgICAgICAgICB0cmVuZDogd2lkZ2V0LnRyZW5kLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGlmICh3aWRnZXQuYmxvY2tfaWQpIHtcbiAgICAgICAgZGF0YVsnYmxvY2tfaWQnXSA9IHdpZGdldC5ibG9ja19pZDtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3RvcmVXaWRnZXRCbG9jayhkYXRhLCB3aWRnZXQsICdrcGknKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIEljb24gd2lkZ2V0XG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBTdG9yZSBFbW90aW9uIHdpZGdldCBibG9ja1xuICAgICAqL1xuICAgIHN0b3JlSWNvbih3aWRnZXQsIHdpbmRleCwgd2lkZ2V0X2lkLCB3aWRnZXRfdHlwZSwgd2luKSB7XG4gICAgICB0aGlzLndpZGdldCA9IHdpZGdldDtcbiAgICAgIHRoaXMud2luZGV4ID0gd2luZGV4O1xuICAgICAgdGhpcy53aWRnZXRfaWQgPSB3aWRnZXRfaWQ7XG4gICAgICB0aGlzLndpZGdldF90eXBlID0gd2lkZ2V0X3R5cGU7XG4gICAgICB0aGlzLndpbiA9IHdpbjtcbiAgICB9LFxuXG4gICAgc2V0SWNvbihpY29uKSB7XG4gICAgICBpZiAodGhpcy5Nb3RNb2RhbFN0YXR1cykge1xuICAgICAgICBldmVudEJ1cy4kZW1pdCgnc2V0LXRvLW1vdC1saWZlY3ljbGUnLCB7IHR5cGU6ICdpY29ucycsIG9iajogaWNvbiB9KTtcbiAgICAgICAgJCgnI3NlbGVjdEljb25Nb2RhbCcpLm1vZGFsKCdoaWRlJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmxpbmtNb2RhbFN0YXR1cykge1xuICAgICAgICBldmVudEJ1cy4kZW1pdCgnc2V0LXRvLWxpbmstbGlmZWN5Y2xlJywgeyB0eXBlOiAnaWNvbnMnLCBvYmo6IGljb24gfSk7XG4gICAgICAgICQoJyNzZWxlY3RJY29uTW9kYWwnKS5tb2RhbCgnaGlkZScpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5oaWVyYXJjaHlNb2RhbFN0YXR1cykge1xuICAgICAgICBldmVudEJ1cy4kZW1pdCgnc2V0LXRvLWhpZXJhcmNoeS1saWZlY3ljbGUnLCB7IHR5cGU6ICdpY29ucycsIG9iajogaWNvbiB9KTtcbiAgICAgICAgJCgnI3NlbGVjdEljb25Nb2RhbCcpLm1vZGFsKCdoaWRlJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxldCBkYXRhID0ge1xuICAgICAgICB3aWRnZXRfaWQ6IHRoaXMud2lkZ2V0X2lkLFxuICAgICAgICB3aWRnZXRfdHlwZTogdGhpcy53aWRnZXRfdHlwZSxcbiAgICAgICAgd2lkZ2V0X29iamVjdDoge1xuICAgICAgICAgIGlfaWQ6IGljb24uaWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgdGhpcy4kc2V0KHRoaXMud2lkZ2V0LCAnaV9uYW1lJywgaWNvbi5uYW1lKTtcbiAgICAgIHRoaXMuJHNldCh0aGlzLndpZGdldCwgJ2lfaWQnLCBpY29uLmlkKTtcbiAgICAgIHRoaXMuJHNldCh0aGlzLndpZGdldCwgJ2lfZm9udF9jbGFzcycsIGljb24uZm9udF9jbGFzcyk7XG4gICAgICB0aGlzLiRzZXQodGhpcy53aWRnZXQsICdpX2ljb25fdHlwZScsIGljb24uaWNvbl90eXBlKTtcbiAgICAgIHRoaXMuJHNldCh0aGlzLndpZGdldCwgJ2ltYWdlJywgaWNvbi5pbWFnZSk7XG5cbiAgICAgIGlmICh0aGlzLndpZGdldC5ibG9ja19pZCkge1xuICAgICAgICBkYXRhWydibG9ja19pZCddID0gdGhpcy53aWRnZXQuYmxvY2tfaWQ7XG4gICAgICAgIGRhdGFbJ3dpZGdldF9vYmplY3QnXVsnbmFtZSddID0gdGhpcy53aWRnZXQuaV9uYW1lO1xuICAgICAgfVxuICAgICAgdGhpcy5zdG9yZVdpZGdldEJsb2NrKGRhdGEsIHRoaXMud2lkZ2V0LCAnaWNvbicpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBTdG9yZSBRdW90ZVxuICAgICAqL1xuXG4gICAgc3RvcmVRdW90ZSh3aWRnZXQsIHdpbmRleCwgd2lkZ2V0X2lkLCB3aWRnZXRfdHlwZSwgd2luKSB7XG4gICAgICB0aGlzLndpbmRleCA9IHdpbmRleDtcbiAgICAgIHRoaXMud2luID0gd2luO1xuICAgICAgbGV0IGRhdGEgPSB7XG4gICAgICAgIHdpZGdldF9pZDogd2lkZ2V0X2lkLFxuICAgICAgICB3aWRnZXRfdHlwZTogd2lkZ2V0X3R5cGUsXG4gICAgICAgIHdpZGdldF9vYmplY3Q6IHtcbiAgICAgICAgICBuYW1lOiB3aWRnZXQubmFtZSxcbiAgICAgICAgICBxdW90ZTogd2lkZ2V0LnF1b3RlLFxuICAgICAgICAgIHNlbnRpbWVudDogd2lkZ2V0LnNlbnRpbWVudCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBpZiAod2lkZ2V0LmJsb2NrX2lkKSB7XG4gICAgICAgIGRhdGFbJ2Jsb2NrX2lkJ10gPSB3aWRnZXQuYmxvY2tfaWQ7XG4gICAgICAgIGRhdGFbJ3F1b3RlX2lkJ10gPSB3aWRnZXQucXVvdGVfaWQ7XG4gICAgICB9XG4gICAgICB0aGlzLnN0b3JlV2lkZ2V0QmxvY2soZGF0YSwgd2lkZ2V0LCAncXVvdGUnKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIERpbWVuc2lvbiBXaWRnZXRzXG4gICAgICovXG4gICAgc3RvcmVEaW1lbnNpb24od2lkZ2V0LCB3aW5kZXgsIHdpZGdldF9pZCwgd2lkZ2V0X3R5cGUsIGRpbWUsIHR5cGUsIHdpbikge1xuICAgICAgdGhpcy53aW5kZXggPSB3aW5kZXg7XG4gICAgICB0aGlzLndpbiA9IHdpbjtcbiAgICAgIGlmICh0eXBlID09ICdicmFuZCcpIHtcbiAgICAgICAgdGhpcy53aWRnZXQgPSB3aWRnZXQ7XG4gICAgICAgIHRoaXMud2lkZ2V0X2lkID0gd2lkZ2V0X2lkO1xuICAgICAgICB0aGlzLndpZGdldF90eXBlID0gd2lkZ2V0X3R5cGU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxldCBkYXRhID0ge1xuICAgICAgICB3aWRnZXRfaWQ6IHdpZGdldF9pZCxcbiAgICAgICAgd2lkZ2V0X3R5cGU6IHdpZGdldF90eXBlLFxuICAgICAgICB3aWRnZXRfb2JqZWN0OiB7XG4gICAgICAgICAgZGltZW5zaW9uX2lkOiB3aWRnZXQuZGltZW5zaW9uX2lkLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGlmICh0eXBlID09ICdjcycpIHtcbiAgICAgICAgZGF0YS53aWRnZXRfb2JqZWN0WydkaW1lbnNpb25fdHlwZSddID0gJ2NzJztcbiAgICAgICAgZGF0YS53aWRnZXRfb2JqZWN0Wydjc19pZCddID0gZGltZTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAncHJvZHVjdCcpIHtcbiAgICAgICAgZGF0YS53aWRnZXRfb2JqZWN0WydkaW1lbnNpb25fdHlwZSddID0gJ3Byb2R1Y3QnO1xuICAgICAgICBkYXRhLndpZGdldF9vYmplY3RbJ3Byb2R1Y3RfaWQnXSA9IGRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJ2NvdW50cmllcycpIHtcbiAgICAgICAgZGF0YS53aWRnZXRfb2JqZWN0WydkaW1lbnNpb25fdHlwZSddID0gJ2NvdW50cmllcyc7XG4gICAgICAgIGRhdGEud2lkZ2V0X29iamVjdFsnY291bnRyaWVzJ10gPSBkaW1lO1xuICAgICAgfVxuXG4gICAgICBpZiAod2lkZ2V0LmJsb2NrX2lkKSB7XG4gICAgICAgIGRhdGFbJ2Jsb2NrX2lkJ10gPSB3aWRnZXQuYmxvY2tfaWQ7XG4gICAgICB9XG4gICAgICB0aGlzLnN0b3JlV2lkZ2V0QmxvY2soZGF0YSwgd2lkZ2V0LCB0eXBlKTtcbiAgICB9LFxuICAgIHNldEJyYW5kKGJyYW5kKSB7XG4gICAgICBpZiAodGhpcy53aWRnZXQuYnJhbmQuc29tZShicmFuID0+IGJyYW5bJ2JfaWQnXSA9PT0gYnJhbmQuYl9pZCkpIHtcbiAgICAgICAgbW1fbWVzc2FnZXIuZGlzcGxheV90aW1lcl9tZXNzYWdlKHRoaXMuYXBwVHJhbnMuY29tbW9uLmVycm9yX21lc3NhZ2VzLmJyYW5kX2FscmVhZHlfYWRkZWQsICd3YXJuaW5nJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxldCBkYXRhID0ge1xuICAgICAgICB3aWRnZXRfaWQ6IHRoaXMud2lkZ2V0X2lkLFxuICAgICAgICB3aWRnZXRfdHlwZTogdGhpcy53aWRnZXRfdHlwZSxcbiAgICAgICAgd2lkZ2V0X29iamVjdDoge1xuICAgICAgICAgIGRpbWVuc2lvbl90eXBlOiAnYnJhbmQnLFxuICAgICAgICAgIGJyYW5kX2lkOiBicmFuZC5iX2lkLFxuICAgICAgICAgIGRpbWVuc2lvbl9pZDogdGhpcy53aWRnZXQuZGltZW5zaW9uX2lkID8gdGhpcy53aWRnZXQuZGltZW5zaW9uX2lkIDogJycsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy53aWRnZXQuYmxvY2tfaWQpIHtcbiAgICAgICAgZGF0YVsnYmxvY2tfaWQnXSA9IHRoaXMud2lkZ2V0LmJsb2NrX2lkO1xuICAgICAgfVxuICAgICAgdGhpcy5zdG9yZVdpZGdldEJsb2NrKGRhdGEsIHRoaXMud2lkZ2V0LCAnYnJhbmQnKTtcbiAgICB9LFxuICAgIHNhdmVJbXByb3ZlbWVudCh3aWRnZXQsIHdpbikge1xuICAgICAgdGhpcy53aWRnZXQgPSB3aWRnZXQ7XG4gICAgICB0aGlzLndpbiA9IHdpbjtcbiAgICAgIHJldHVybjtcbiAgICB9LFxuXG4gICAgc3RvcmVJbXByb3ZlbWVudChpbXByb3ZlbWVudF9pZCwgaW1wcm92ZW1lbnQsIHdpZGdldF90eXBlLCB3aWRnZXRfaWQsIHdpbmRleCkge1xuICAgICAgdGhpcy53aW5kZXggPSB3aW5kZXg7XG4gICAgICB0aGlzLndpZGdldF9pZCA9IHdpZGdldF9pZDtcbiAgICAgIHRoaXMud2lkZ2V0X3R5cGUgPSB3aWRnZXRfdHlwZTtcbiAgICAgIGxldCBkYXRhID0ge1xuICAgICAgICB3aWRnZXRfaWQ6IHdpZGdldF9pZCxcbiAgICAgICAgd2lkZ2V0X3R5cGU6IHdpZGdldF90eXBlLFxuICAgICAgICB3aWRnZXRfb2JqZWN0OiB7XG4gICAgICAgICAgaW1wcm92ZW1lbnRfaWQ6IGltcHJvdmVtZW50X2lkLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGlmICh0aGlzLndpZGdldCAmJiB0aGlzLndpZGdldC5ibG9ja19pZCkge1xuICAgICAgICBkYXRhWydibG9ja19pZCddID0gdGhpcy53aWRnZXQuYmxvY2tfaWQ7XG4gICAgICB9XG4gICAgICB0aGlzLnN0b3JlV2lkZ2V0QmxvY2soZGF0YSwgdGhpcy53aWRnZXQsICdpbXByb3ZlbWVudCcpO1xuICAgIH0sXG4gICAgc2F2ZUluc2lnaHQod2lkZ2V0LCB3aW4sIG1vZGFsKSB7XG4gICAgICB0aGlzLndpZGdldCA9IHdpZGdldDtcbiAgICAgIHRoaXMud2luID0gd2luO1xuICAgICAgdGhpcy5pbnNpZ2h0TW9kYWxTdGF0dXMgPSBtb2RhbDtcbiAgICB9LFxuXG4gICAgc3RvcmVMaW5rKHdpZGdldCwgd2luLCBtb2RhbCkge1xuICAgICAgdGhpcy53aWRnZXQgPSB3aWRnZXQ7XG4gICAgICB0aGlzLndpbiA9IHdpbjtcbiAgICAgIHRoaXMubGlua01vZGFsU3RhdHVzID0gbW9kYWw7XG4gICAgfSxcbiAgICBzdG9yZUhpZXJhcmNoeSh3aWRnZXQsIHdpbiwgbW9kYWwpIHtcbiAgICAgIHRoaXMud2lkZ2V0ID0gd2lkZ2V0O1xuICAgICAgdGhpcy53aW4gPSB3aW47XG4gICAgICB0aGlzLmhpZXJhcmNoeU1vZGFsU3RhdHVzID0gbW9kYWw7XG4gICAgfSxcblxuICAgIHNhdmVNb3Qod2lkZ2V0LCB3aW4sIG1vZGFsKSB7XG4gICAgICB0aGlzLndpZGdldCA9IHdpZGdldDtcbiAgICAgIHRoaXMud2luID0gd2luO1xuICAgICAgdGhpcy5Nb3RNb2RhbFN0YXR1cyA9IG1vZGFsO1xuICAgIH0sXG4gICAgc2F2ZUNoYW5uZWwod2lkZ2V0LCB3aW4sIG1vZGFsKSB7XG4gICAgICB0aGlzLndpZGdldCA9IHdpZGdldDtcbiAgICAgIHRoaXMud2luID0gd2luO1xuICAgICAgdGhpcy5jaGFubmVsTW9kYWxTdGF0dXMgPSB0cnVlO1xuICAgIH0sXG5cbiAgICBzdG9yZUNoYW5uZWwoaWQsIGNoYW5uZWwsIHdpZGdldF90eXBlLCB3aWRnZXRfaWQsIHdpbmRleCkge1xuXG4gICAgICBpZiAodGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0c1t0aGlzLndpbl0gJiYgdGhpcy53aWRnZXRzW3RoaXMud2luXS53aWRnZXRfZGF0YS5zb21lKGNoYW5uZWwgPT4gY2hhbm5lbFsnaWQnXSA9PT0gaWQpKSB7XG4gICAgICAgIGxldCBjaGFubmVsTGFiZWwgPSB0aGlzLmN1c3RvbU5hbWVzLmNoYW5uZWw7XG4gICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfdGltZXJfbWVzc2FnZSh0aGlzLmFwcFRyYW5zLmNvbW1vbi50aGlzICsnICcgKyBjaGFubmVsTGFiZWwgKyAnICcrIHRoaXMuYXBwVHJhbnMuY29tbW9uLmVycm9yX21lc3NhZ2VzLmlzX2FscmVhZHlfYWRkZWQsICd3YXJuaW5nJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIGNvbm5lY3RpbmcgY2hhbm5lbCB3aWRnZXQgdG8gbGlmZWN5Y2xlXG4gICAgICB0aGlzLndpbmRleCA9IHdpbmRleDtcbiAgICAgIHRoaXMud2lkZ2V0X2lkID0gd2lkZ2V0X2lkO1xuICAgICAgdGhpcy53aWRnZXRfdHlwZSA9IHdpZGdldF90eXBlO1xuICAgICAgbGV0IGRhdGEgPSB7XG4gICAgICAgIHdpZGdldF9pZDogd2lkZ2V0X2lkLFxuICAgICAgICB3aWRnZXRfdHlwZTogd2lkZ2V0X3R5cGUsXG4gICAgICAgIHdpZGdldF9vYmplY3Q6IHtcbiAgICAgICAgICBpZDogaWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgaWYgKHRoaXMud2lkZ2V0ICYmIHRoaXMud2lkZ2V0LmJsb2NrX2lkKSB7XG4gICAgICAgIGRhdGFbJ2Jsb2NrX2lkJ10gPSB0aGlzLndpZGdldC5ibG9ja19pZDtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3RvcmVXaWRnZXRCbG9jayhkYXRhLCB0aGlzLndpZGdldCwgJ2NoYW5uZWwnKTtcbiAgICB9LFxuXG4gICAgc3RvcmVJbnNpZ2h0KGluc2lnaHRfaWQsIGluc2lnaHQsIHdpZGdldF90eXBlLCB3aWRnZXRfaWQsIHdpbmRleCkge1xuICAgICAgLy8gdHJpZ2dlcmluZyBtb3RzIGxpc3QgY29tcG9lbnQgc3RvcmUgaW5zaWdodCBtZXRob2RcbiAgICAgIC8vIGlmICh0aGlzLk1vdE1vZGFsU3RhdHVzKSB7XG4gICAgICAvLyAgIHRoaXMuJHJlZnMubW90c0xpc3Quc3RvcmVJbnNpZ2h0KGluc2lnaHQpO1xuICAgICAgLy8gICByZXR1cm47XG4gICAgICAvLyB9XG4gICAgICBpZiAodGhpcy5Nb3RNb2RhbFN0YXR1cykge1xuICAgICAgICBldmVudEJ1cy4kZW1pdCgnc2V0LXRvLW1vdC1saWZlY3ljbGUnLCB7IHR5cGU6ICdpbnNpZ2h0cycsIG9iajogaW5zaWdodCB9KTtcbiAgICAgICAgJCgnI3NlbGVjdEljb25Nb2RhbCcpLm1vZGFsKCdoaWRlJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzW3RoaXMud2luXSAmJiB0aGlzLndpZGdldHNbdGhpcy53aW5dLndpZGdldF9kYXRhLnNvbWUoaW5zID0+IGluc1snaW5zaWdodF9pZCddID09PSBpbnNpZ2h0X2lkKSkge1xuICAgICAgICBsZXQgaW5zaWdodExhYmVsID0gdGhpcy5hcHBTZXNzLmxhYmVscy5pbnNpZ2h0ID8gdGhpcy5hcHBTZXNzLmxhYmVscy5pbnNpZ2h0Lmluc2lnaHQgOiAnSW5zaWdodCc7XG4gICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfdGltZXJfbWVzc2FnZSh0aGlzLmFwcFRyYW5zLmNvbW1vbi50aGlzICsgJyAnICsgaW5zaWdodExhYmVsICsgJyAnICsgdGhpcy5hcHBUcmFucy5jb21tb24uZXJyb3JfbWVzc2FnZXMuaXNfYWxyZWFkeV9hZGRlZCwgJ3dhcm5pbmcnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8gY29ubmVjdGluZyBpbnNpZ2h0IHdpZGdldCB0byBsaWZlY3ljbGVcbiAgICAgIHRoaXMud2luZGV4ID0gd2luZGV4O1xuICAgICAgdGhpcy53aWRnZXRfaWQgPSB3aWRnZXRfaWQ7XG4gICAgICB0aGlzLndpZGdldF90eXBlID0gd2lkZ2V0X3R5cGU7XG4gICAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgd2lkZ2V0X2lkOiB3aWRnZXRfaWQsXG4gICAgICAgIHdpZGdldF90eXBlOiB3aWRnZXRfdHlwZSxcbiAgICAgICAgd2lkZ2V0X29iamVjdDoge1xuICAgICAgICAgIGluc2lnaHRfaWQ6IGluc2lnaHRfaWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgaWYgKHRoaXMud2lkZ2V0ICYmIHRoaXMud2lkZ2V0LmJsb2NrX2lkKSB7XG4gICAgICAgIGRhdGFbJ2Jsb2NrX2lkJ10gPSB0aGlzLndpZGdldC5ibG9ja19pZDtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3RvcmVXaWRnZXRCbG9jayhkYXRhLCB0aGlzLndpZGdldCwgJ2luc2lnaHRfZmFjdCcpO1xuICAgIH0sXG5cbiAgICBzdG9yZU1vdChtb3RfaWQsIG1vdCwgd2lkZ2V0X3R5cGUsIHdpZGdldF9pZCwgd2luZGV4KSB7XG4gICAgICB0aGlzLndpbmRleCA9IHdpbmRleDtcbiAgICAgIHRoaXMud2lkZ2V0X2lkID0gd2lkZ2V0X2lkO1xuICAgICAgdGhpcy53aWRnZXRfdHlwZSA9IHdpZGdldF90eXBlO1xuICAgICAgbGV0IGRhdGEgPSB7XG4gICAgICAgIHdpZGdldF9pZDogd2lkZ2V0X2lkLFxuICAgICAgICB3aWRnZXRfdHlwZTogd2lkZ2V0X3R5cGUsXG4gICAgICAgIHdpZGdldF9vYmplY3Q6IHtcbiAgICAgICAgICBtb3RfaWQ6IG1vdF9pZCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBpZiAodGhpcy53aWRnZXQgJiYgdGhpcy53aWRnZXQuYmxvY2tfaWQpIHtcbiAgICAgICAgZGF0YVsnYmxvY2tfaWQnXSA9IHRoaXMud2lkZ2V0LmJsb2NrX2lkO1xuICAgICAgfVxuICAgICAgdGhpcy5zdG9yZVdpZGdldEJsb2NrKGRhdGEsIHRoaXMud2lkZ2V0LCAnbW90Jyk7XG4gICAgfSxcblxuICAgIHNhdmVXaWRnZXQod2lkZ2V0LCB3aWRnZXRfaWQsIHdpZGdldF90eXBlLCB3aW5kZXgsIGRpbWUsIHR5cGUpIHtcbiAgICAgIHRoaXMud2lkZ2V0ID0gd2lkZ2V0O1xuICAgICAgdGhpcy53aWRnZXRfaWQgPSB3aWRnZXRfaWQ7XG4gICAgICB0aGlzLndpZGdldF90eXBlID0gd2lkZ2V0X3R5cGU7XG4gICAgICB0aGlzLndpbmRleCA9IHdpbmRleDtcbiAgICAgIGlmICh0eXBlID09ICdicmFuZCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHdpZGdldF90eXBlID09ICdrcGknKSB7XG4gICAgICAgIGxldCBkYXRhID0ge1xuICAgICAgICAgIHdpZGdldF9pZDogdGhpcy53aWRnZXRfaWQsXG4gICAgICAgICAgd2lkZ2V0X3R5cGU6IHRoaXMud2lkZ2V0X3R5cGUsXG4gICAgICAgICAgd2lkZ2V0X29iamVjdDoge1xuICAgICAgICAgICAgcGNfaWQ6IHdpZGdldFt3aW5kZXhdLnBjX2lkLFxuICAgICAgICAgICAgdmFsdWU6IHdpZGdldFt3aW5kZXhdLnZhbHVlLFxuICAgICAgICAgICAgdHJlbmQ6IHdpZGdldFt3aW5kZXhdLnRyZW5kLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGlmICh3aWRnZXRbd2luZGV4XS5ibG9ja19pZCkge1xuICAgICAgICAgIGRhdGFbJ2Jsb2NrX2lkJ10gPSB0aGlzLndpZGdldC5ibG9ja19pZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0b3JlV2lkZ2V0QmxvY2soZGF0YSwgdGhpcy53aWRnZXQsICdrcGknKTtcbiAgICAgIH1cbiAgICAgIGlmICh3aWRnZXRfdHlwZSA9PSAnZGltZW5zaW9ucycpIHtcbiAgICAgICAgbGV0IGRhdGEgPSB7XG4gICAgICAgICAgd2lkZ2V0X2lkOiB0aGlzLndpZGdldF9pZCxcbiAgICAgICAgICB3aWRnZXRfdHlwZTogdGhpcy53aWRnZXRfdHlwZSxcbiAgICAgICAgICB3aWRnZXRfb2JqZWN0OiB7XG4gICAgICAgICAgICBkaW1lbnNpb25faWQ6IHdpZGdldFt3aW5kZXhdLmRpbWVuc2lvbl9pZCxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBpZiAodHlwZSA9PSAnY3MnKSB7XG4gICAgICAgICAgZGF0YS53aWRnZXRfb2JqZWN0WydkaW1lbnNpb25fdHlwZSddID0gJ2NzJztcbiAgICAgICAgICBkYXRhLndpZGdldF9vYmplY3RbJ2NzX2lkJ10gPSBkaW1lO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJ3Byb2R1Y3QnKSB7XG4gICAgICAgICAgZGF0YS53aWRnZXRfb2JqZWN0WydkaW1lbnNpb25fdHlwZSddID0gJ3Byb2R1Y3QnO1xuICAgICAgICAgIGRhdGEud2lkZ2V0X29iamVjdFsncHJvZHVjdF9pZCddID0gZGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAod2lkZ2V0W3dpbmRleF0uYmxvY2tfaWQpIHtcbiAgICAgICAgICBkYXRhWydibG9ja19pZCddID0gd2lkZ2V0W3dpbmRleF0uYmxvY2tfaWQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdG9yZVdpZGdldEJsb2NrKGRhdGEsIHRoaXMud2lkZ2V0LCB0eXBlKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgdXBkYXRlTENXaWRnZXRzKHdpZGdldCkge1xuICAgICAgbGV0IHdpID0gdGhpcy5sY193aWRnZXRzLmZpbmRJbmRleCh3ID0+IHcud2lkZ2V0X2lkID09IHRoaXMud2lkZ2V0X2lkKTtcbiAgICAgIGlmICh3aSA+IC0xKSB7XG4gICAgICAgIHRoaXMuJHNldCh0aGlzLmxjX3dpZGdldHNbd2ldLndpZGdldF9kYXRhLCB0aGlzLndpbmRleCwgd2lkZ2V0KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHN0b3JlV2lkZ2V0QmxvY2socmVxLCB3aWRnZXQsIHR5cGUpIHtcbiAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgIHJlcVsnbGNfaWQnXSA9IHRoaXMubGNkYXRhLmxjX2lkO1xuICAgICAgdGhpcy53aWRnZXRfaWQgPSByZXEud2lkZ2V0X2lkO1xuICAgICAgc2VsZi4kcGFyZW50LmxjZGF0YS5zdGF0dXMgPSAnc2F2aW5nJztcbiAgICAgIHNlbGYuJHBhcmVudC5nZXROb3coKTtcbiAgICAgIHRoaXMuJGh0dHBcbiAgICAgICAgLnBvc3QoJy9zZXJ2aWNlL3dpZGdldC9hZGRXaWRnZXRMaWZlY3ljbGUnLCByZXEpXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgY29uc3QgcmVzcCA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICAgICAgICAgIGNvbnN0IHdpZCA9IHNlbGYud2lkZ2V0c1tzZWxmLndpbl0ud2lkZ2V0X2RhdGFbc2VsZi53aW5kZXhdO1xuXG4gICAgICAgICAgICBpZiAocmVzcCAmJiByZXNwLmJsb2NrX2lkICYmIHR5cGUgIT0gJ2ltcHJvdmVtZW50JyAmJiB0eXBlICE9ICdpbnNpZ2h0X2ZhY3QnICYmIHR5cGUgIT0gJ2NoYW5uZWwnICYmIHR5cGUgIT0gJ2twaScgJiYgdHlwZSAhPSAnbW90Jykge1xuICAgICAgICAgICAgICBzZWxmLiRzZXQod2lkLCAnYmxvY2tfaWQnLCByZXNwLmJsb2NrX2lkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXNwICYmIHR5cGUgPT0gJ2Vtb3Rpb24nKSB7XG4gICAgICAgICAgICAgIHNlbGYuJHNldCh3aWQsICdlX2lkJywgcmVzcC5lX2lkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXNwICYmIHR5cGUgPT0gJ2RvYycpIHtcbiAgICAgICAgICAgICAgc2VsZi4kc2V0KHdpZCwgJ2RfaWQnLCByZXNwLmRfaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaWYocmVzcCAmJiB0eXBlPT0na3BpJyl7XG4gICAgICAgICAgICAvLyAgICAgc2VsZi4kc2V0KHdpZCwgJ3BjX2lkJywgcmVzcC5wY19pZCk7XG4gICAgICAgICAgICAvLyAgICAgc2VsZi4kc2V0KHdpZCwgJ25hbWUnLCByZXNwLm5hbWUpO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgaWYgKHJlc3AgJiYgdHlwZSA9PSAnaWNvbicpIHtcbiAgICAgICAgICAgICAgc2VsZi4kc2V0KHdpZCwgJ2lfaWQnLCByZXNwLmlfaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlc3AgJiYgdHlwZSA9PSAncXVvdGUnKSB7XG4gICAgICAgICAgICAgIHNlbGYuJHNldCh3aWQsICdxdW90ZV9pZCcsIHJlc3AucXVvdGVfaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlc3AgJiYgdHlwZSA9PSAnYnJhbmQnKSB7XG4gICAgICAgICAgICAgIHdpZC5icmFuZC5wdXNoKHJlc3BvbnNlLmRhdGEuZGF0YS5icmFuZCk7XG4gICAgICAgICAgICAgIHdpZC5kaW1lbnNpb25faWQgPyAnJyA6IHNlbGYuJHNldCh3aWQsICdkaW1lbnNpb25faWQnLCByZXNwb25zZS5kYXRhLmRhdGEuZGltZW5zaW9uX2lkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgocmVzcCAmJiB0eXBlID09ICdwcm9kdWN0JykgfHwgdHlwZSA9PSAnY3MnIHx8IHR5cGUgPT0gJ2NvdW50cmllcycpIHtcbiAgICAgICAgICAgICAgd2lkLmRpbWVuc2lvbl9pZCA/ICcnIDogc2VsZi4kc2V0KHdpZCwgJ2RpbWVuc2lvbl9pZCcsIHJlc3BvbnNlLmRhdGEuZGF0YS5kaW1lbnNpb25faWQpO1xuICAgICAgICAgICAgICBpZiAodHlwZSA9PSAncHJvZHVjdCcpIHtcbiAgICAgICAgICAgICAgICB3aWRbJ3Byb2R1Y3QnXSA9IHdpZFsncHJvZHVjdCddLmZpbHRlcihpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChyZXEud2lkZ2V0X29iamVjdFsncHJvZHVjdCddLmluY2x1ZGVzKGl0ZW0ucF9pZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAnY3MnKSB7XG4gICAgICAgICAgICAgICAgd2lkWydjcyddID0gd2lkWydjcyddLmZpbHRlcihpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChyZXEud2lkZ2V0X29iamVjdFsnY3NfaWQnXS5pbmNsdWRlcyhpdGVtLmNzX2lkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aWRbJ2NvdW50cmllcyddID0gd2lkWydjb3VudHJpZXMnXS5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAocmVxLndpZGdldF9vYmplY3RbJ2NvdW50cmllcyddLmluY2x1ZGVzKGl0ZW0uaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgd2lkW3R5cGVdLnB1c2goLi4ucmVzcG9uc2UuZGF0YS5kYXRhW3R5cGVdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXNwICYmIHR5cGUgPT0gJ3BlcnNvbmEnKSB7XG4gICAgICAgICAgICAgIC8vIHNlbGYuJHNldChzZWxmLndpZGdldHNbc2VsZi53aW5dLndpZGdldF9kYXRhLCBzZWxmLndpbmRleCwgcmVzcG9uc2UuZGF0YS5kYXRhKVxuICAgICAgICAgICAgICAvLyBzZWxmLndpZGdldHNbc2VsZi53aW5dLndpZGdldF9kYXRhLnB1c2gocmVzcG9uc2UuZGF0YS5kYXRhKVxuICAgICAgICAgICAgICBzZWxmLiRzZXQod2lkLCAncGVyc29uYV9pZCcsIHJlc3AucGVyc29uYV9pZCk7XG4gICAgICAgICAgICAgIHNlbGYuJHNldCh3aWQsICdibG9ja19pZCcsIHJlc3AuYmxvY2tfaWQpO1xuICAgICAgICAgICAgICBzZWxmLiRzZXQod2lkLCAnaW1hZ2UnLCByZXNwLmltYWdlKTtcbiAgICAgICAgICAgICAgc2VsZi4kc2V0KHdpZCwgJ25hbWUnLCByZXNwLm5hbWUpO1xuICAgICAgICAgICAgICBzZWxmLiRzZXQod2lkLCAncHVibGljJywgcmVzcC5wdWJsaWMpO1xuICAgICAgICAgICAgICBzZWxmLiRzZXQod2lkLCAnbmlja19uYW1lJywgcmVzcC5uaWNrX25hbWUpO1xuICAgICAgICAgICAgICBzZWxmLiRzZXQod2lkLCAnY3JlYXRlZCcsIHJlc3AuY3JlYXRlZCk7XG4gICAgICAgICAgICAgIHNlbGYuJHNldCh3aWQsICdjdXN0b21GaWVsZHMnLCByZXNwLmN1c3RvbUZpZWxkcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzcCAmJiB0eXBlID09ICdrcGknKSB7XG4gICAgICAgICAgICAgIGlmIChyZXEuYmxvY2tfaWQpIHtcbiAgICAgICAgICAgICAgICBzZWxmLiRzZXQoc2VsZi53aWRnZXRzW3NlbGYud2luXS53aWRnZXRfZGF0YSwgc2VsZi53aW5kZXgsIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZGF0YS5kYXRhKSkpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlbGYud2lkZ2V0c1tzZWxmLndpbl0ud2lkZ2V0X2RhdGEucHVzaChyZXNwb25zZS5kYXRhLmRhdGEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzcCAmJiB0eXBlID09ICdpbXByb3ZlbWVudCcpIHtcbiAgICAgICAgICAgICAgc2VsZi53aWRnZXRzW3NlbGYud2luXS53aWRnZXRfZGF0YS5wdXNoKHJlc3BvbnNlLmRhdGEuZGF0YSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXNwICYmIHR5cGUgPT0gJ2luc2lnaHRfZmFjdCcpIHtcbiAgICAgICAgICAgICAgc2VsZi53aWRnZXRzW3NlbGYud2luXS53aWRnZXRfZGF0YS5wdXNoKHJlc3BvbnNlLmRhdGEuZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzcCAmJiB0eXBlID09ICdjaGFubmVsJykge1xuICAgICAgICAgICAgICBzZWxmLndpZGdldHNbc2VsZi53aW5dLndpZGdldF9kYXRhLnB1c2gocmVzcG9uc2UuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXNwICYmIHR5cGUgPT0gJ21vdCcpIHtcbiAgICAgICAgICAgICAgc2VsZi53aWRnZXRzW3NlbGYud2luXS53aWRnZXRfZGF0YS5wdXNoKHJlc3BvbnNlLmRhdGEuZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLiRwYXJlbnQubGNkYXRhLnN0YXR1cyA9ICdzYXZlZCc7XG4gICAgICAgICAgICBzZWxmLnVwZGF0ZUxDV2lkZ2V0cyh3aWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCfwn5qAIH4gZmlsZTogTGlmZUN5Y2xlLnZ1ZSB+IGxpbmUgMTgyNSB+IHN0b3JlV2lkZ2V0QmxvY2sgfiBlcnJvcicsIGVycm9yKTtcbiAgICAgICAgICBzZWxmLiRwYXJlbnQubGNkYXRhLnN0YXR1cyA9ICdzYXZlZCc7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBkZWxldGVXaWRnZXRCbG9jayh3aWRnZXQsIHdpbiwgd2lkKSB7XG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICBsZXQgcmVxID0ge1xuICAgICAgICBibG9ja19pZDogd2lkZ2V0W3dpbl0uYmxvY2tfaWQsXG4gICAgICB9O1xuXG4gICAgICBpZiAoIXJlcS5ibG9ja19pZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzZWxmLiRwYXJlbnQubGNkYXRhLnN0YXR1cyA9ICdzYXZpbmcnO1xuICAgICAgc2VsZi4kcGFyZW50LmdldE5vdygpO1xuICAgICAgdGhpcy4kaHR0cFxuICAgICAgICAucG9zdCgnL3NlcnZpY2Uvd2lkZ2V0L2Rlc3Ryb3lXaWRnZXRCbG9jaycsIHJlcSlcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICBsZXQgd2kgPSBzZWxmLmxjX3dpZGdldHMuZmluZEluZGV4KHcgPT4gdy53aWRnZXRfaWQgPT0gd2lkKTtcbiAgICAgICAgICAgIGlmICh3aSA+IC0xKSB7XG4gICAgICAgICAgICAgIHNlbGYubGNfd2lkZ2V0c1t3aV0ud2lkZ2V0X2RhdGEuc3BsaWNlKHdpbiwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aWRnZXQuc3BsaWNlKHdpbiwgMSk7XG4gICAgICAgICAgICBzZWxmLiRwYXJlbnQubGNkYXRhLnN0YXR1cyA9ICdzYXZlZCc7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgc2VsZi4kcGFyZW50LmxjZGF0YS5zdGF0dXMgPSAnc2F2ZWQnO1xuXG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBvcmRlcldpZGdldHMoZXZlbnQpIHtcbiAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgIGlmIChldmVudC5tb3ZlZC5uZXdJbmRleCA9PSBldmVudC5tb3ZlZC5vbGRJbmRleCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgd2lkcyA9IFtdO1xuICAgICAgc2VsZi53aWRnZXRzLmZvckVhY2goZnVuY3Rpb24gKHdpZCwgaW5kZXgpIHtcbiAgICAgICAgaWYgKHdpZC53aWRnZXRfaWQpIHtcbiAgICAgICAgICB3aWRzLnB1c2god2lkLndpZGdldF9pZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8gVGhlIHZpZXcgbW9kZWwuXG4gICAgICBjb25zdCByZXEgPSB7XG4gICAgICAgIG1vZHVsZV9pZDogc2VsZi5taWQsXG4gICAgICAgIG1vZHVsZV90eXBlOiBzZWxmLm10eXBlLFxuICAgICAgICB3aWRnZXRfaWQ6IHdpZHMsXG4gICAgICB9O1xuICAgICAgc2VsZi4kcGFyZW50LmxjZGF0YS5zdGF0dXMgPSAnc2F2aW5nJztcbiAgICAgIHNlbGYuJHBhcmVudC5nZXROb3coKTtcbiAgICAgIHRoaXMuJGh0dHBcbiAgICAgICAgLnBvc3QoJy9zZXJ2aWNlL3dpZGdldC9vcmRlcldpZGdldCcsIHJlcSlcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAyMDApIHtcbiAgICAgICAgICAgIHNlbGYuJHBhcmVudC5sY2RhdGEuc3RhdHVzID0gJ3NhdmVkJztcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIHNlbGYuJHBhcmVudC5sY2RhdGEuc3RhdHVzID0gJ3NhdmVkJztcbiAgICAgICAgICAvLyBSZXZlcnQgZGF0YSBpZiBhbnkgZXJyb3JcbiAgICAgICAgICBsZXQgbW92ZWQgPSBzZWxmLndpZGdldHMuc3BsaWNlKGV2ZW50Lm1vdmVkLm5ld0luZGV4LCAxKTtcbiAgICAgICAgICBzZWxmLndpZGdldHMuc3BsaWNlKGV2ZW50Lm1vdmVkLm9sZEluZGV4LCAwLCBtb3ZlZFswXSk7XG5cbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIHN0b3JlTWFwKHR5cGUsIGluZGV4LCBvd25lciwgbWRhdGEpIHtcbiAgICAgIHRoaXMubWFwVHlwZSA9IHR5cGU7XG4gICAgICB0aGlzLm1hcEluZGV4ID0gaW5kZXg7XG4gICAgICB0aGlzLm1hcE93bmVyID0gb3duZXI7XG4gICAgICB0aGlzLm1kYXRhID0gbWRhdGE7XG4gICAgICB0aGlzLmNvT3duZXJzID0gbWRhdGEubWFwb3duZXJzLm1hcChvd25lciA9PiBvd25lci51c2VyaWQpO1xuICAgICAgJCgnI2NoYW5nZU1hcE93bmVyJykubW9kYWwoJ3Nob3cnKTtcbiAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgJCgnLnNlbGVjdHBpY2tlcicpLnNlbGVjdHBpY2tlcigncmVmcmVzaCcpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICB3YXJuTWFwT3duZXJDaGFuZ2UoKSB7XG4gICAgICAvLyB0aGlzLm1hcE93bmVyID0gdXNlcjtcbiAgICAgICQoJyN3YXJuTWFwT3duZXJDaGFuZ2UnKS5tb2RhbCgnc2hvdycpO1xuICAgIH0sXG4gICAgZ2V0QXBwbHlCdXR0b24oKSB7XG4gICAgICByZXR1cm4gJzxzcGFuIGNsYXNzPVwiYnRuIGdsb2JhbC1idG4tc20gZ3JhZGllbnRidG5cIj5BcHBseSA8L3NwYW4+JztcbiAgICB9LFxuICAgIGdldE93bmVyKCkge1xuICAgICAgaWYgKHRoaXMubWFwVHlwZSkge1xuICAgICAgICBsZXQgbWFwcyA9IHRoaXMubWFwVHlwZSA9PSAxID8gdGhpcy51YV9tYXBzIDogdGhpcy51aV9tYXBzO1xuICAgICAgICByZXR1cm4gbWFwc1t0aGlzLm1hcEluZGV4XS5vd25lcl9pZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICogTWFwc1xuICAgICAqL1xuXG4gICAgY2hhbmdlTWFwT3duZXIodXNlcl9pZCkge1xuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgc2VsZi4kcGFyZW50LmxjZGF0YS5zdGF0dXMgPSAnc2F2aW5nJztcbiAgICAgIHNlbGYuJHBhcmVudC5nZXROb3coKTtcbiAgICAgIGxldCBtYXBzID0gc2VsZi5tYXBUeXBlID09IDEgPyBzZWxmLnVhX21hcHMgOiBzZWxmLnVpX21hcHM7XG4gICAgICB0aGlzLiRodHRwXG4gICAgICAgIC5wb3N0KCcvYXBpL2NoYW5nZU1hcE93bmVyJywge1xuICAgICAgICAgIHVzZXJfaWQ6IHVzZXJfaWQsXG4gICAgICAgICAgbWFwX2lkOiBtYXBzW3NlbGYubWFwSW5kZXhdLm1hcF9pZCxcbiAgICAgICAgICBvd25lcl9pZDogbWFwc1tzZWxmLm1hcEluZGV4XS5vd25lcl9pZCxcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICBjb25zdCByZXNwID0gcmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgICAgICAgICAgbGV0IHVzZXJuYW1lID0gJyc7XG4gICAgICAgICAgICBsZXQgdXNlcm5hbWVzaG9ydCA9ICcnO1xuICAgICAgICAgICAgaWYgKHJlc3Aub3duZXJfZm5hbWVbMF0pIHtcbiAgICAgICAgICAgICAgdXNlcm5hbWUgKz0gcmVzcC5vd25lcl9mbmFtZTtcbiAgICAgICAgICAgICAgdXNlcm5hbWVzaG9ydCArPSByZXNwLm93bmVyX2ZuYW1lWzBdLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzcC5vd25lcl9sbmFtZVswXSkge1xuICAgICAgICAgICAgICBpZiAodXNlcm5hbWUgIT0gJycpIHtcbiAgICAgICAgICAgICAgICB1c2VybmFtZSArPSAnICc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdXNlcm5hbWUgKz0gcmVzcC5vd25lcl9sbmFtZTtcbiAgICAgICAgICAgICAgdXNlcm5hbWVzaG9ydCArPSByZXNwLm93bmVyX2xuYW1lWzBdLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLiRzZXQobWFwc1tzZWxmLm1hcEluZGV4XSwgJ3VzZXJuYW1lJywgdXNlcm5hbWUpO1xuICAgICAgICAgICAgc2VsZi4kc2V0KG1hcHNbc2VsZi5tYXBJbmRleF0sICdvd25lcl9pY29uJywgcmVzcC5vd25lcl9pY29uKTtcbiAgICAgICAgICAgIHNlbGYuJHNldChtYXBzW3NlbGYubWFwSW5kZXhdLCAndXNlcm5hbWVzaG9ydCcsIHVzZXJuYW1lc2hvcnQpO1xuICAgICAgICAgICAgc2VsZi4kc2V0KG1hcHNbc2VsZi5tYXBJbmRleF0sICdvd25lcl9pZCcsIHJlc3Aub3duZXJfaWQpO1xuICAgICAgICAgICAgbWFwc1tzZWxmLm1hcEluZGV4XS5tYXBvd25lcnMgPSBtYXBzW3NlbGYubWFwSW5kZXhdLm1hcG93bmVycy5maWx0ZXIob3duZXIgPT4gb3duZXIudXNlcmlkICE9IHJlc3Aub3duZXJfaWQpO1xuXG4gICAgICAgICAgICBzZWxmLm1hcE93bmVyID0gbnVsbDtcbiAgICAgICAgICAgICQoJyN3YXJuTWFwT3duZXJDaGFuZ2UnKS5tb2RhbCgnaGlkZScpO1xuICAgICAgICAgICAgJCgnI2NoYW5nZU1hcE93bmVyJykubW9kYWwoJ2hpZGUnKTtcbiAgICAgICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfdGltZXJfbWVzc2FnZSh0aGlzLmFwcFRyYW5zLmJhc2UubXNnX21hcF9vd25lcl9jaGFuZ2Vfc3VjY2VzcywgJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgIHNlbGYuJHBhcmVudC5sY2RhdGEuc3RhdHVzID0gJ3NhdmVkJztcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIHNlbGYuJHBhcmVudC5sY2RhdGEuc3RhdHVzID0gJ3NhdmVkJztcbiAgICAgICAgICAkKCcjd2Fybk1hcE93bmVyQ2hhbmdlJykubW9kYWwoJ2hpZGUnKTtcbiAgICAgICAgICAkKCcjY2hhbmdlTWFwT3duZXInKS5tb2RhbCgnaGlkZScpO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlIE1hcCBDby1Pd25lclxuICAgICAqL1xuICAgIGNoYW5nZU1hcENvT3duZXIoZXZlbnQpIHtcbiAgICAgIGlmICh0aGlzLmNvT3duZXJzLmF0KC0xKSA9PSAnX2FwcGx5QnRuXycpIHtcbiAgICAgICAgdGhpcy5jb093bmVycy5wb3AoKTtcbiAgICAgICAgLy8gJChcIiNjaGFuZ2VNYXBPd25lclwiKS5tb2RhbCgnaGlkZScpO1xuICAgICAgICBsb2FkZXIub3BlbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgc2VsZi4kcGFyZW50LmxjZGF0YS5zdGF0dXMgPSAnc2F2aW5nJztcbiAgICAgIHNlbGYuJHBhcmVudC5nZXROb3coKTtcblxuICAgICAgbGV0IG1hcHMgPSBzZWxmLm1hcFR5cGUgPT0gMSA/IHNlbGYudWFfbWFwcyA6IHNlbGYudWlfbWFwcztcblxuICAgICAgdGhpcy4kaHR0cFxuICAgICAgICAucG9zdCgnL2FwaS9jaGFuZ2VNYXBDb093bmVycycsIHtcbiAgICAgICAgICB1c2VyX2lkczogc2VsZi5jb093bmVycyxcbiAgICAgICAgICBtYXBfaWQ6IG1hcHNbc2VsZi5tYXBJbmRleF0ubWFwX2lkLFxuICAgICAgICAgIG93bmVyX2lkOiBtYXBzW3NlbGYubWFwSW5kZXhdLm93bmVyX2lkLFxuICAgICAgICB9KVxuICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3AgPSByZXNwb25zZS5kYXRhLmRhdGE7XG4gICAgICAgICAgICBpZiAocmVzcC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgbWFwc1tzZWxmLm1hcEluZGV4XS5tYXBvd25lcnMgPSBbLi4ubWFwc1tzZWxmLm1hcEluZGV4XS5tYXBvd25lcnMsIC4uLnJlc3BdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWFwc1tzZWxmLm1hcEluZGV4XS5tYXBvd25lcnMgPSBtYXBzW3NlbGYubWFwSW5kZXhdLm1hcG93bmVycy5maWx0ZXIob3duZXIgPT4gc2VsZi5jb093bmVycy5pbmNsdWRlcyhvd25lci51c2VyaWQpKTtcbiAgICAgICAgICAgIHNlbGYuY29Pd25lcnMgPSBbXTtcbiAgICAgICAgICAgICQoJyN3YXJuTWFwT3duZXJDaGFuZ2UnKS5tb2RhbCgnaGlkZScpO1xuICAgICAgICAgICAgJCgnI2NoYW5nZU1hcE93bmVyJykubW9kYWwoJ2hpZGUnKTtcbiAgICAgICAgICAgIGxvYWRlci5jbG9zZSgpO1xuICAgICAgICAgICAgc2VsZi4kcGFyZW50LmxjZGF0YS5zdGF0dXMgPSAnc2F2ZWQnO1xuICAgICAgICAgICAgbW1fbWVzc2FnZXIuZGlzcGxheV90aW1lcl9tZXNzYWdlKHRoaXMuYXBwVHJhbnMuYmFzZS5tc2dfbWFwX2NvX293bmVyX2NoYW5nZV9zdWNjZXNzLCAnc3VjY2VzcycpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICAgIGxvYWRlci5jbG9zZSgpO1xuICAgICAgICAgIHNlbGYuJHBhcmVudC5sY2RhdGEuc3RhdHVzID0gJ3NhdmVkJztcbiAgICAgICAgICAkKCcjd2Fybk1hcE93bmVyQ2hhbmdlJykubW9kYWwoJ2hpZGUnKTtcbiAgICAgICAgICAkKCcjY2hhbmdlTWFwT3duZXInKS5tb2RhbCgnaGlkZScpO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRmV0Y2ggYWxsIHVzZXJzXG4gICAgICovXG4gICAgZ2V0QWxsVXNlcnNMaXN0KCkge1xuICAgICAgLy8gVGhlIHZpZXcgbW9kZWwuXG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICB0aGlzLiRodHRwXG4gICAgICAgIC5nZXQoJy9hcGkvZ2V0QWxsVXNlcnNMaXN0JylcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAyMDApIHtcbiAgICAgICAgICAgIHNlbGYuYWxsX3VzZXJzID0gcmVzcG9uc2UuZGF0YS5kYXRhO1xuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBUbyBmZXRjaCBtZWRpYVxuICAgICAqL1xuICAgIGdldE1lZGlhKCkge1xuICAgICAgLy8gVGhlIHZpZXcgbW9kZWwuXG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICB0aGlzLiRodHRwXG4gICAgICAgIC5nZXQoJy9zZXJ2aWNlL2ltYWdlbGF6eScpXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgICAgICBzZWxmLm1lZGlhID0gcmVzcG9uc2UuZGF0YS5kYXRhLm1lZGlhO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7IH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVG8gZmV0Y2ggYWxsIGN1c3RvbSBmaWVsZHNcbiAgICAgKi9cbiAgICBnZXRDdXN0b21GaWVsZHMoKSB7XG4gICAgICAvLyBUaGUgdmlldyBtb2RlbC5cbiAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgIHRoaXMuJGh0dHBcbiAgICAgICAgLmdldCgnL2FwaS9jdXN0b21saXN0L2FsbCcpXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgICAgICBzZWxmLmN1c3RvbUxpc3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEuZGF0YSkpO1xuICAgICAgICAgICAgc2VsZi50b3VjaHBvaW50Q3VzdG9tTGlzdCA9IFtdO1xuICAgICAgICAgICAgc2VsZi5tb3RzQ3VzdG9tTGlzdCA9IFtdO1xuICAgICAgICAgICAgc2VsZi5jaGFubmVsQ3VzdG9tTGlzdCA9IFtdO1xuICAgICAgICAgICAgc2VsZi5saW5rQ3VzdG9tTGlzdCA9IFtdO1xuICAgICAgICAgICAgc2VsZi5oaWVyYXJjaHlDdXN0b21MaXN0ID0gW107XG4gICAgICAgICAgICBzZWxmLmluc2lnaHRDdXN0b21MaXN0ID0gW107XG4gICAgICAgICAgICBzZWxmLnBlcnNvbmFDdXN0b21MaXN0ID0gW107XG4gICAgICAgICAgICBzZWxmLnRleHRDdXN0b21MaXN0ID0gW107XG4gICAgICAgICAgICBzZWxmLmN1c3RvbUxpc3QuZm9yRWFjaChjbCA9PiB7XG4gICAgICAgICAgICAgIHN3aXRjaCAoY2wudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgIHNlbGYudG91Y2hwb2ludEN1c3RvbUxpc3QucHVzaChjbCk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICBzZWxmLm1vdHNDdXN0b21MaXN0LnB1c2goY2wpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgc2VsZi5jaGFubmVsQ3VzdG9tTGlzdC5wdXNoKGNsKTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgIHNlbGYubGlua0N1c3RvbUxpc3QucHVzaChjbCk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICBzZWxmLnBlcnNvbmFDdXN0b21MaXN0LnB1c2goY2wpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgICAgc2VsZi5oaWVyYXJjaHlDdXN0b21MaXN0LnB1c2goY2wpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgICAgc2VsZi50ZXh0Q3VzdG9tTGlzdC5wdXNoKGNsKTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBzZWxmLmluc2lnaHRDdXN0b21MaXN0LnB1c2goY2wpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgeyB9KTtcbiAgICB9LFxuXG4gICAgY2hlY2tNYXBPd25lcigpIHtcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5nZXRPd25lcigpO1xuICAgICAgaWYgKHRoaXMuYWxsX3VzZXJzLmZpbmRJbmRleCh1c2VyID0+IHVzZXIudXNlcl9pZCA9PSBpZCkgPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBUbyBmZXRjaCBhZG1pbiBLUEkgbGlzdFxuICAgICAqL1xuICAgIGFkbWluS1BJTGlzdCgpIHtcbiAgICAgIC8vIFRoZSB2aWV3IG1vZGVsLlxuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgbG9hZGVyLm9wZW4oKTtcbiAgICAgIHRoaXMuJGh0dHBcbiAgICAgICAgLmdldCgnL2FwaS9wYXJhbWV0ZXJzJylcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAyMDApIHtcbiAgICAgICAgICAgIHNlbGYuYWRtaW5LUElzID0gcmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgICAgICAgICAgbG9hZGVyLmNsb3NlKCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBsb2FkZXIuY2xvc2UoKTtcblxuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGdldERpbWVuc2lvbih3aWQpIHtcbiAgICAgIGlmICh3aWQud2lkZ2V0X2RhdGEubGVuZ3RoID09IDApIHtcbiAgICAgICAgd2lkLndpZGdldF9kYXRhID0gW107XG4gICAgICAgIHdpZC53aWRnZXRfZGF0YS5wdXNoKHtcbiAgICAgICAgICBibG9ja19pZDogJycsXG4gICAgICAgICAgYnJhbmQ6IFtdLFxuICAgICAgICAgIGNzOiBbXSxcbiAgICAgICAgICBkaW1lbnNpb25faWQ6ICcnLFxuICAgICAgICAgIHByb2R1Y3Q6IFtdLFxuICAgICAgICAgIGNvdW50cmllczogW10sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdpZDtcbiAgICB9LFxuICAgIGhpZ2hsaWdodFNlZ21lbnQoY3JfaWQsIHBoYXNlX2lkLCBzdGFnZV9pZCkge1xuICAgICAgaWYgKGNyX2lkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTZWdlbWVudCA9IGNyX2lkO1xuICAgICAgfSBlbHNlIGlmIChwaGFzZV9pZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkU2VnZW1lbnQgPSBwaGFzZV9pZDtcbiAgICAgIH0gZWxzZSBpZiAoc3RhZ2VfaWQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNlZ2VtZW50ID0gc3RhZ2VfaWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkU2VnZW1lbnQgPSAnJztcbiAgICAgIH1cbiAgICB9LFxuICAgIGhpZ2hsaWdodFNlZ21lbnRPbk1hcEhvdmVyKGlkcykge1xuICAgICAgaWYgKGlkcy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKHRoaXMubGNUeXBlRGV0YWlscy5uYW1lICE9ICdsaWZlY3ljbGUnKSB7XG4gICAgICAgICAgLy8gdGhpcy5zZWxlY3RlZFNlZ2VtZW50cyA9IGlkcztcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkU2VnZW1lbnRzID0gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWRzLmZvckVhY2goaWQgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRTZWdlbWVudHMuaW5kZXhPZihpZC5jcl9pZCArICdjJykgPT09IC0xKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTZWdlbWVudHMucHVzaChpZC5jcl9pZCArICdjJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFNlZ2VtZW50cy5pbmRleE9mKGlkLnBoYXNlX2lkICsgJ3AnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFNlZ2VtZW50cy5wdXNoKGlkLnBoYXNlX2lkICsgJ3AnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkU2VnZW1lbnRzLmluZGV4T2YoaWQuc3RhZ2VfaWQgKyAncycpID09PSAtMSkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU2VnZW1lbnRzLnB1c2goaWQuc3RhZ2VfaWQgKyAncycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTZWdlbWVudHMgPSBbXTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNob3dFbGVtZW50Q29ubmVjdGVkTWFwKG1hcCkge1xuICAgICAgLy8gaWYodGhpcy5sY1R5cGVEZXRhaWxzLm5hbWUgIT09ICdsaWZlY3ljbGUnKXtcbiAgICAgIC8vICAgaWYodGhpcy5zZWxlY3RlZExldmVscy5sZW5ndGggPT0gMCl7XG4gICAgICAvLyAgICAgcmV0dXJuIHRydWU7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vICAgcmV0dXJuICFtYXAuY3JpZHMuc29tZShlbGVtZW50ID0+IHRoaXMuc2VsZWN0ZWRMZXZlbHMuaW5jbHVkZXMoZWxlbWVudCkpO1xuICAgICAgLy8gfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gICAgY2hlY2tTZWdtZW50KGlkLCBzdWZmaXgpIHtcbiAgICAgIGNvbnN0IElkID0gdGhpcy5sY1R5cGVEZXRhaWxzLm5hbWUgIT09ICdsaWZlY3ljbGUnID8gaWQgOiBpZCArIHN1ZmZpeDtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkU2VnZW1lbnRzLmluY2x1ZGVzKElkKTtcbiAgICB9LFxuICAgIGdvVG9QcmVzZW50YWlvbihtYXBpZCkge1xuICAgICAgd2luZG93Lm9wZW4oJy9tYXAvcHJlc2VudC8nICsgbWFwaWQsICdfYmxhbmsnKTtcbiAgICB9LFxuICAgIGZpbHRlcldpZGdldHMoKSB7XG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICBzZWxmLndpZGdldHMuZm9yRWFjaCh3aWQgPT4ge1xuICAgICAgICBsZXQgc2hvd1N0YXR1cyA9IHRydWU7XG4gICAgICAgIGlmIChzZWxmLnNlbGVjdGVkV2lkZ2V0cy5pbmNsdWRlcyh3aWQud2lkZ2V0X3R5cGVfaWQpKSB7XG4gICAgICAgICAgc2hvd1N0YXR1cyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHNlbGYuJHNldCh3aWQsICdzaG93U3RhdHVzJywgc2hvd1N0YXR1cyk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGlzUmVhc29uU2VsZWN0ZWQoaWQpIHtcbiAgICAgIGNvbnN0IHNldCA9IHRoaXMudGFiID09IDEgPyB0aGlzLnNlbGVjdGVkQ3JzIDogdGhpcy5zZWxlY3RlZFdpZGdldENycztcbiAgICAgIHJldHVybiB0aGlzLmlzU2VsZWN0ZWQoaWQsIHNldCk7XG4gICAgfSxcbiAgICBpc1BoYXNlU2VsZWN0ZWQoaWQpIHtcbiAgICAgIGNvbnN0IHNldCA9IHRoaXMudGFiID09IDEgPyB0aGlzLnNlbGVjdGVkUGhhc2VzIDogdGhpcy5zZWxlY3RlZFdpZGdldFBoYXNlcztcbiAgICAgIHJldHVybiB0aGlzLmlzU2VsZWN0ZWQoaWQsIHNldCk7XG4gICAgfSxcbiAgICBpc1N0YWdlU2VsZWN0ZWQoaWQpIHtcbiAgICAgIGNvbnN0IHNldCA9IHRoaXMudGFiID09IDEgPyB0aGlzLnNlbGVjdGVkU3RhZ2VzIDogdGhpcy5zZWxlY3RlZFdpZGdldFN0YWdlcztcbiAgICAgIHJldHVybiB0aGlzLmlzU2VsZWN0ZWQoaWQsIHNldCk7XG4gICAgfSxcbiAgICBpc1NlbGVjdGVkKGlkLCBzZXQpIHtcbiAgICAgIGlmICh0aGlzLmxjVHlwZURldGFpbHMubmFtZSAhPT0gJ2xpZmVjeWNsZScpIHtcbiAgICAgICAgc2V0ID0gdGhpcy5zZWxlY3RlZExldmVscztcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZXQuaW5jbHVkZXMoaWQpO1xuICAgIH0sXG4gICAgZ2V0VG9vbHRpcChuYW1lKSB7XG4gICAgICByZXR1cm4gJzxzcGFuIGNsYXNzPVwib3duZXJOYW1lRm9udFwiPicgKyBuYW1lICsgJzwvc3Bhbj4nO1xuICAgIH0sXG5cbiAgICBwcmVwYXJlQ2hhbmdlVXNlclBvcFVwKGluZGV4LCBtb2QsIG93bmVyQ2hhbmdlRm9yLCBwYXJlbnRJbmRleCkge1xuICAgICAgdGhpcy5tb2RPd25lciA9IG1vZC5vd25lci51c2VyaWQ7XG4gICAgICB0aGlzLm1vZEluZGV4ID0gaW5kZXg7XG4gICAgICB0aGlzLnBhcmVudEluZGV4ID0gcGFyZW50SW5kZXg7XG4gICAgICB0aGlzLmNvT3duZXJzID0gbW9kLmNvT3duZXJzLm1hcChvd25lciA9PiBvd25lci51c2VyaWQpO1xuICAgICAgdGhpcy5zaG93T3duZXJDaGFuZ2VQb3BVcCA9IHRydWU7XG4gICAgICB0aGlzLm93bmVyQ2hhbmdlRm9yID0gb3duZXJDaGFuZ2VGb3I7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBUbyBmZXRjaCBtYXBzXG4gICAgICovXG4gICAgZ2V0Sm91cm5leU1hcHMoKSB7XG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICB0aGlzLiRodHRwXG4gICAgICAgIC5nZXQoJy9hcGkvam91cm5leXMvb3VyJylcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAyMDApIHtcbiAgICAgICAgICAgIHNlbGYuam91cm5leXMgPSB7XG4gICAgICAgICAgICAgIG15TWFwczogcmVzcG9uc2UuZGF0YS5kYXRhLm15bWFwcyxcbiAgICAgICAgICAgICAgb3VyTWFwczogcmVzcG9uc2UuZGF0YS5kYXRhLm91cm1hcHMsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBoYW5kbGVVcGRhdGUobmV3SXRlbXMsIGluZGV4KSB7XG4gICAgICAvLyBVcGRhdGUgdGhlIGRhdGEgaGVyZSB3aGVuIHRoZSBjaGlsZCBlbWl0cyBhbiBldmVudFxuICAgICAgaWYgKHRoaXMud2lkZ2V0c1tpbmRleF0gJiYgdGhpcy53aWRnZXRzW2luZGV4XS53aWRnZXRfZGF0YSkge1xuICAgICAgICB0aGlzLiRzZXQodGhpcy53aWRnZXRzW2luZGV4XSwgJ3dpZGdldF9kYXRhJywgbmV3SXRlbXMpO1xuICAgICAgfVxuICAgIH0sXG4gICAgdXBkYXRlQ29ubmVjdGlvbihzdGF0dXMsIHR5cGUsIGlkLCBtYXAsIGVwaXNvZGUsIHRvdWNocG9pbnQpIHtcbiAgICAgIGNvbnN0IHJlZiA9IHRoaXMubGlua01vZGFsU3RhdHVzID8gJ2xpbmtDb21wb25lbnRSZWYnIDogJ2hpZXJhcmNoeUNvbXBvbmVudFJlZic7XG4gICAgICB0aGlzLiRyZWZzW3JlZl0udXBkYXRlQ29ubmVjdGlvbihzdGF0dXMsIHR5cGUsIGlkLCBtYXAsIGVwaXNvZGUsIHRvdWNocG9pbnQpO1xuICAgICAgdGhpcy5jdXN0b21FbGVtZW50cyA9IHtcbiAgICAgICAgbWFwczogW10sXG4gICAgICAgIGVwaXNvZGVzOiBbXSxcbiAgICAgICAgdG91Y2hwb2ludHM6IFtdLFxuICAgICAgfTtcbiAgICB9LFxuICAgIHNldEN1c3RvbUVsZW1lbnQoZWxlbWVudCkge1xuICAgICAgdGhpcy5jdXN0b21FbGVtZW50cyA9IGVsZW1lbnQ7XG4gICAgfSxcblxuICAgIGdldEZyYW1ld29ya0VsZW1lbnREYXRhKGV2ZW50LCBlbGVtZW50TmFtZSwgaWQpIHtcbiAgICAgIGxldCB2YWx1ZTtcbiAgICAgIGxldCBuYW1lRm9yV2lkZ2V0cztcbiAgICAgIGxldCBuYW1lRm9yTWFwcztcbiAgICAgIGxldCB2YWx1ZXM7XG4gICAgICBpZiAoaWQpIHtcbiAgICAgICAgc3dpdGNoIChlbGVtZW50TmFtZSkge1xuICAgICAgICAgIGNhc2UgJ3N0YWdlJzpcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy5zdGFnZXMuZmluZCh4ID0+IHguc19pZCA9PT0gaWQpO1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgIG5hbWVGb3JXaWRnZXRzID0gJ3N0ZycgKyBpZDtcbiAgICAgICAgICAgICAgbmFtZUZvck1hcHMgPSAnc3RhZ2UnO1xuICAgICAgICAgICAgICB2YWx1ZXMgPSBbdmFsdWUuY3JfaWRzLCB2YWx1ZS5wX2lkcywgdmFsdWUuc19pZF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3BoYXNlJzpcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy5waGFzZXMuZmluZCh4ID0+IHgucF9pZCA9PT0gaWQpO1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgIG5hbWVGb3JXaWRnZXRzID0gJ3BocycgKyBpZDtcbiAgICAgICAgICAgICAgbmFtZUZvck1hcHMgPSAncGhhc2UnO1xuICAgICAgICAgICAgICB2YWx1ZXMgPSBbdmFsdWUuY3JfaWRzLCB2YWx1ZS5wX2lkLCB2YWx1ZS5zX2lkXVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncmVhc29uJzpcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy5jb250YWN0UmVhc29ucy5maW5kKHggPT4geC5jcl9pZCA9PT0gaWQpO1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgIG5hbWVGb3JXaWRnZXRzID0gJ2NyZWFzb24nICsgaWQ7XG4gICAgICAgICAgICAgIG5hbWVGb3JNYXBzID0gJ2NvbnRhY3RyZWFzb24nO1xuICAgICAgICAgICAgICB2YWx1ZXMgPSBbdmFsdWUuY3JfaWQsIHZhbHVlLnBfaWQsIHZhbHVlLnNfaWRdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHZhbHVlcyAmJiBpZCkge1xuICAgICAgICBpZiAoIXRoaXMuZWRpdCkge1xuICAgICAgICAgIHRoaXMuY29ubmVjdGVkTWFwcyhldmVudCwgbmFtZUZvck1hcHMsIHZhbHVlc1swXSwgdmFsdWVzWzFdLCB2YWx1ZXNbMl0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY29ubmVjdGVkV2lkZ2V0cyhuYW1lRm9yV2lkZ2V0cywgbmFtZUZvck1hcHMsIGlkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBpc1NlbGVjdGVkKGlkLCBzZXQpIHtcbiAgICAgIGlmICh0aGlzLmxjVHlwZURldGFpbHMubmFtZSAhPT0gJ2xpZmVjeWNsZScpIHtcbiAgICAgICAgc2V0ID0gdGhpcy5zZWxlY3RlZExldmVscztcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZXQgJiYgc2V0LmluY2x1ZGVzKGlkKTtcbiAgICB9LFxuICAgIGdldENsYXNzKGlkLCB3aWRnZXRQcmVmaXgsIHR5cGUpIHtcbiAgICAgIGNvbnN0IGNhcGl0YWxpemVkVHlwZSA9IHR5cGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0eXBlLnNsaWNlKDEpO1xuICAgICAgY29uc3Qgc2V0ID0gdGhpcy50YWIgPT09IDEgPyB0aGlzW2BzZWxlY3RlZCR7Y2FwaXRhbGl6ZWRUeXBlfWBdIDogdGhpc1tgc2VsZWN0ZWRXaWRnZXQke2NhcGl0YWxpemVkVHlwZX1gXTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGVkKGlkLCBzZXQpO1xuICAgICAgY29uc3Qgd2lkZ2V0U2VsZWN0ZWQgPSB0aGlzLndpZGdldEZvciA9PT0gYCR7d2lkZ2V0UHJlZml4fSR7aWR9YDtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHNlbGVjdGVkICYmICF0aGlzLmVkaXQgfHwgd2lkZ2V0U2VsZWN0ZWQgPyAnc2VsZWN0ZWQnIDogJycsXG4gICAgICAgIHNlbGVjdGVkIHx8IHdpZGdldFNlbGVjdGVkID8gJ3NlbGVjdGVkJyA6ICcnLFxuICAgICAgICAodGhpcy5zZWxlY3RlZFNlZ2VtZW50ID09PSBpZCAmJiAhdGhpcy5lZGl0KSB8fCB0aGlzLmNoZWNrU2VnbWVudChpZCwgdHlwZS5jaGFyQXQoMCkpID8gJ3NlbGVjdGVkU2VnZW1lbnQnIDogJydcbiAgICAgIF0uam9pbignICcpO1xuICAgIH1cblxuICAgIC8vIG9wZW5Nb2RhbChtb2RhbE5hbWUpIHtcbiAgICAvLyAgIHRoaXMubW9kYWxGb3IgPSBtb2RhbE5hbWU7XG4gICAgLy8gfSxcbiAgfSxcbiAgYmVmb3JlTW91bnQoKSB7IH0sXG4gIGFzeW5jIG1vdW50ZWQoKSB7XG5cbiAgICAvLyBkZWZhdWx0IHZhbHVlLCBrZXksIG9iamVjdE5hbWUgYW5kIGxhYmVscyBvYmpldHNcbiAgICB0aGlzLmN1c3RvbU5hbWVzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jdXN0b21OYW1lcywge1xuICAgICAgaWNvbjogdGhpcy5nZXRDdXN0b21OYW1lKCdJY29ucycsICdpY29ucycsICdpY29uJywgdGhpcy5hcHBTZXNzKSxcbiAgICAgIHBlcnNvbmFzOiB0aGlzLmdldEN1c3RvbU5hbWUoJ1BlcnNvbmFzJywgJ3BlcnNvbmFzJywgJ3BlcnNvbmEnLCB0aGlzLmFwcFNlc3MpLFxuICAgICAgZGltZW5zaW9uczogdGhpcy5nZXRDdXN0b21OYW1lKCdEaW1lbnNpb25zJywgJ2RpbWVuc2lvbnN3aWRnZXQnLCAnZGltZW5zaW9ucycsIHRoaXMuYXBwU2VzcyksXG4gICAgICBkaW1lbnNpb246IHRoaXMuZ2V0Q3VzdG9tTmFtZSgnRGltZW5zaW9uJywgJ2RpbWVuc2lvbicsICdkaW1lbnNpb24nLCB0aGlzLmFwcFNlc3MpLFxuICAgICAgYnJhbmQ6IHRoaXMuZ2V0Q3VzdG9tTmFtZSgnQnJhbmQnLCAnYnJhbmQnLCAnZGltZW5zaW9uJywgdGhpcy5hcHBTZXNzKSxcbiAgICAgIG1vdDogdGhpcy5nZXRDdXN0b21OYW1lKCdNb3QnLCAnbW90d2lkZ2V0JywgJ21vdCcsIHRoaXMuYXBwU2VzcyksXG4gICAgICBpbXByb3ZlbWVudDogdGhpcy5nZXRDdXN0b21OYW1lKCdJbXByb3ZlbWVudHMnLCAnaW1wcm92ZW1lbnRzd2lkZ2V0JywgJ2ltcHJvdmVtZW50JywgdGhpcy5hcHBTZXNzKSxcbiAgICAgIGluc2lnaHRfZmFjdDogdGhpcy5nZXRDdXN0b21OYW1lKCdJbnNpZ2h0cycsICdpbnNpZ2h0c3dpZGdldCcsICdpbnNpZ2h0JywgdGhpcy5hcHBTZXNzKSxcbiAgICAgIGNoYW5uZWw6IHRoaXMuZ2V0Q3VzdG9tTmFtZSgnQ2hhbm5lbCcsICdjaGFubmVsJywgJ2NoYW5uZWxzJywgdGhpcy5hcHBTZXNzKSxcbiAgICAgIGNoYW5uZWxzOiB0aGlzLmdldEN1c3RvbU5hbWUoJ0NoYW5uZWxzJywgJ2NoYW5uZWxzJywgJ2NoYW5uZWxzJywgdGhpcy5hcHBTZXNzKSxcbiAgICAgIHN1YmNoYW5uZWw6IHRoaXMuZ2V0Q3VzdG9tTmFtZSgnU3ViIENoYW5uZWwnLCAnc3ViY2hhbm5lbCcsICdjaGFubmVscycsIHRoaXMuYXBwU2VzcyksXG4gICAgfSk7XG4gICAgdGhpcy5nZXRXaWRnZXRUeXBlcygpO1xuICAgIHRoaXMuZ2V0QWxsVXNlcnNMaXN0KCk7XG4gICAgdGhpcy5hZG1pbktQSUxpc3QoKTtcbiAgICB0aGlzLmdldE1vZHVsZURhdGEoKTtcblxuICAgIHRoaXMuZ2V0QWxsUHJvZHVjdHMoKTtcbiAgICB0aGlzLmdldEFsbFNlZ21lbnRzKCk7XG4gICAgdGhpcy5nZXRDb3VudHJpZXMoKTtcbiAgICB0aGlzLmdldEFsbEJyYW5kcygpO1xuXG4gICAgLy8gaWYodGhpcy5jaGVja0FjY2Vzcyh0aGlzLmFwcFNlc3MuY29uZmlndXJhdGlvbnMsICdjdXN0b21MaXN0cycpKXtcbiAgICB0aGlzLmdldEN1c3RvbUZpZWxkcygpO1xuICAgIHRoaXMuZ2V0Sm91cm5leU1hcHMoKTtcblxuICAgIGlmICghdGhpcy5jaGVja0FjY2Vzcyh0aGlzLmFwcFNlc3MuY29uZmlndXJhdGlvbnMsICdtYXAnKSB8fCAhdGhpcy5jaGVja0FjY2Vzcyh0aGlzLmFwcFNlc3MuY29uZmlndXJhdGlvbnMsICdvdXJNb2R1bGUnKSkge1xuICAgICAgdGhpcy5zd2l0Y2hUYWIoMik7XG4gICAgfVxuXG4gICAgJCgnLnNlbGVjdHBpY2tlcicpLnNlbGVjdHBpY2tlcigpO1xuICAgIGxldCBzZWxmID0gdGhpcztcblxuICAgICQoJyNjaGFuZ2VVc2VyJylcbiAgICAgIC5vZmYoJ2hpZGUuYnMubW9kYWwnKVxuICAgICAgLm9uKCdoaWRlLmJzLm1vZGFsJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgc2VsZi5zaG93T3duZXJDaGFuZ2VQb3BVcCA9IGZhbHNlO1xuICAgICAgICBzZWxmLm1vZE93bmVyID0gbnVsbDtcbiAgICAgICAgc2VsZi5tb2RJbmRleCA9IG51bGw7XG4gICAgICAgIHNlbGYucGFyZW50SW5kZXggPSBudWxsO1xuICAgICAgICBzZWxmLmNvT3duZXJzID0gW107XG4gICAgICAgIHNlbGYub3duZXJDaGFuZ2VGb3IgPSBudWxsO1xuICAgICAgfSk7XG4gICAgJCgnI21hcFBlcnNvbnMnKVxuICAgICAgLm9mZignaGlkZS5icy5tb2RhbCcpXG4gICAgICAub24oJ2hpZGUuYnMubW9kYWwnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAoc2VsZi53aWRnZXRzW3NlbGYud2luXSAmJiBzZWxmLndpZGdldHNbc2VsZi53aW5dLndpZGdldF9kYXRhW3NlbGYud2luZGV4XSAmJiAhc2VsZi53aWRnZXRzW3NlbGYud2luXS53aWRnZXRfZGF0YVtzZWxmLndpbmRleF0ucGVyc29uYV9pZCkge1xuICAgICAgICAgIHNlbGYud2lkZ2V0c1tzZWxmLndpbl0ud2lkZ2V0X2RhdGEuc3BsaWNlKHNlbGYud2luZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgZXZlbnRCdXMuJG9mZignbW90LW1vZGFsLXN0YXR1cy1saWZlY3ljbGUnKS4kb24oJ21vdC1tb2RhbC1zdGF0dXMtbGlmZWN5Y2xlJywgc3RhdHVzID0+IHtcbiAgICAgIHNlbGYuTW90TW9kYWxTdGF0dXMgPSBzdGF0dXM7XG4gICAgfSk7XG5cbiAgICAvLyBmb3IgbGluayBtb2RhbCBzdGF0dXMgLS0tPiB0byB3aGljaCB3aWRnZXQgZGlmZmVyZW50IG1vZGFscyBhcmUgdXNlZCBmb3JcbiAgICBldmVudEJ1cy4kb2ZmKCdsaW5rLW1vZGFsLXN0YXR1cy1saWZlY3ljbGUnKS4kb24oJ2xpbmstbW9kYWwtc3RhdHVzLWxpZmVjeWNsZScsIHN0YXR1cyA9PiB7XG4gICAgICBzZWxmLmxpbmtNb2RhbFN0YXR1cyA9IHN0YXR1cztcbiAgICB9KTtcbiAgICBldmVudEJ1cy4kb2ZmKCdoaWVyYXJjaHktbW9kYWwtc3RhdHVzLWxpZmVjeWNsZScpLiRvbignaGllcmFyY2h5LW1vZGFsLXN0YXR1cy1saWZlY3ljbGUnLCBzdGF0dXMgPT4ge1xuICAgICAgc2VsZi5oaWVyYXJjaHlNb2RhbFN0YXR1cyA9IHN0YXR1cztcbiAgICB9KTtcblxuICAgIGV2ZW50QnVzLiRvbignbW90LW1vZGFsLWRhdGEtdXBkYXRlLWxpZmVjeWNsZScsIGRhdGEgPT4ge1xuICAgICAgc2VsZi5Nb3RNb2RhbFN0YXR1cyA9IHRydWU7XG4gICAgICBpZiAoZGF0YS5lbGVtZW50X3R5cGUgPT09ICd3aWRnZXQnKSB7XG4gICAgICAgIGlmIChkYXRhLnR5cGUgPT0gJ3N0b3JlJykge1xuICAgICAgICAgIHNlbGYud2lkZ2V0c1tkYXRhLmVsZW1lbnRfaW5kZXhdLndpZGdldF9kYXRhLnB1c2goZGF0YS5vYmopO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGEudHlwZSA9PSAndXBkYXRlJykge1xuICAgICAgICAgIHNlbGYuJHNldChzZWxmLndpZGdldHNbZGF0YS5lbGVtZW50X2luZGV4XS53aWRnZXRfZGF0YVtkYXRhLm1vdF9pbmRleF0sICd0aXRsZScsIGRhdGEub2JqLnRpdGxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gZm9yIHBlcnNvbmEgbW9kYWwgc3RhdHVzIC0tLT4gdG8gd2hpY2ggd2lkZ2V0IGRpZmZlcmVudCBtb2RhbHMgYXJlIHVzZWQgZm9yXG4gICAgZXZlbnRCdXMuJG9mZignbGlmZWN5Y2xlLXBlcnNvbmEtbW9kYWwtc3RhdHVzJykuJG9uKCdsaWZlY3ljbGUtcGVyc29uYS1tb2RhbC1zdGF0dXMnLCBzdGF0dXMgPT4ge1xuICAgICAgc2VsZi5wZXJzb25hTW9kYWxTdGF0dXMgPSBzdGF0dXM7XG4gICAgfSk7XG5cbiAgICBldmVudEJ1cy4kb2ZmKCdsaWZlY3ljbGUtaW5zaWdodC1tb2RhbC1zdGF0dXMnKS4kb24oJ2xpZmVjeWNsZS1pbnNpZ2h0LW1vZGFsLXN0YXR1cycsIHN0YXR1cyA9PiB7XG4gICAgICBzZWxmLmluc2lnaHRNb2RhbFN0YXR1cyA9IHN0YXR1cztcbiAgICB9KTtcblxuICAgIGV2ZW50QnVzLiRvZmYoJ2xpZmVjeWNsZS1jaGFubmVsLW1vZGFsLXN0YXR1cycpLiRvbignbGlmZWN5Y2xlLWNoYW5uZWwtbW9kYWwtc3RhdHVzJywgc3RhdHVzID0+IHtcbiAgICAgIHNlbGYuY2hhbm5lbE1vZGFsU3RhdHVzID0gc3RhdHVzO1xuICAgIH0pO1xuXG4gICAgZXZlbnRCdXMuJG9uKCdtb3QtbW9kYWwtZGF0YS1kZWxldGUnICsgdGhpcy5wYWdlLCBkYXRhID0+IHtcbiAgICAgIHNlbGYud2lkZ2V0c1tkYXRhLmVsZW1lbnRfaW5kZXhdLndpZGdldF9kYXRhLnNwbGljZShkYXRhLm1vdF9pbmRleCwgMSk7XG4gICAgfSk7XG5cbiAgICBldmVudEJ1cy4kb2ZmKCdsaWZlY3ljbGUtb3duZXItbW9kYWwtcHJvcHMnKS4kb24oJ2xpZmVjeWNsZS1vd25lci1tb2RhbC1wcm9wcycsIGRhdGEgPT4ge1xuICAgICAgc2VsZi5wcmVwYXJlQ2hhbmdlVXNlclBvcFVwKGRhdGEuaW5kZXgsIGRhdGEubW9kLCBkYXRhLm93bmVyQ2hhbmdlRm9yLCBkYXRhLnBhcmVudEluZGV4KTtcbiAgICB9KTtcbiAgfSxcbiAgZGVzdHJveWVkKCkge1xuICAgICQoJy5zZWxlY3RwaWNrZXInKS5zZWxlY3RwaWNrZXIoJ2Rlc3Ryb3knKTtcbiAgfSxcbn07XG48L3NjcmlwdD5cbjxzdHlsZSBzY29wZWQ+XG4ubGlmZWN5Y2xlV2lkZ2V0c3BhY2Uge1xuICB3aWR0aDogY2FsYygxMDAlIC0gNDI1cHgpO1xufVxuXG4ubGlmZWN5Y2xlIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICAvKiBtYXJnaW4tdG9wOiAxMDBweDsqL1xufVxuXG5zdmcge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uc3RhZ2VUZXh0IHtcbiAgZmlsbDogI2ZmZmZmZjtcbiAgZm9udC1mYW1pbHk6ICdJbnRlciB2YXInLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDAuMThyZW07XG59XG5cbi5waGFzZVRleHQge1xuICBmaWxsOiAjZmZmZmZmO1xuICBmb250LWZhbWlseTogJ0ludGVyIHZhcicsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMC4xOHJlbTtcbn1cblxuLmNyVGV4dCB7XG4gIGZpbGw6ICNmZmZmZmY7XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXIgdmFyJywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAwLjE4cmVtO1xufVxuXG4uc2VsZWN0ZWQuQ1JyZWN0IHtcbiAgZmlsbDogI2ZmZjtcbiAgc3Ryb2tlOiAjNzgwMGZmO1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNhcHAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcbn1cblxucGF0aCB7XG4gIGZpbGw6IHRyYW5zcGFyZW50O1xufVxuXG4uc3ZnQ29udGFpbmVyIHtcbiAgd2lkdGg6IDgwMHB4O1xuICAvKmhlaWdodDo4MDBweDsqL1xufVxuXG4uY3VzdG9tLXJlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJlZDtcbn1cbjwvc3R5bGU+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9MaWZlQ3ljbGUvdnVlL2NvbXBvbmVudHMvTGlmZUN5Y2xlL0xpZmVDeWNsZS52dWUiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5kcm9wem9uZS1vdmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHotaW5kZXg6IDk5OTkgIWltcG9ydGFudDtcbn1cblxuLmFkZEltYWdlTW9kYWwge1xuICB6LWluZGV4OiA5OTk4O1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvY29tbW9uL21vZGFscy9NZWRpYS52dWUiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLmRyb3B6b25lLW92ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgei1pbmRleDogOTk5OSAhaW1wb3J0YW50O1xufVxuXG4uYWRkRG9jdW1lbnRNb2RhbCB7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9jb21tb24vbW9kYWxzL0RvY3VtZW50cy52dWUiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4ubW9kYWwtMTAwMCB7XG4gIHdpZHRoOiAxMDQ4cHg7XG4gIG1hcmdpbi1sZWZ0OiAtMjIycHggIWltcG9ydGFudDtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9qaXJhL0ppcmFJc3N1ZXMudnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5zcGlubmVyIHtcbiAgICBtYXJnaW46IDEwcHggYXV0byAwO1xuICAgIHdpZHRoOiA3MHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLnNwaW5uZXIgPiBkaXYge1xuICAgIHdpZHRoOiAxOHB4O1xuICAgIGhlaWdodDogMThweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzgwMEZGO1xuXG4gICAgYm9yZGVyLXJhZGl1czogMTAwJTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLXdlYmtpdC1hbmltYXRpb246IHNrLWJvdW5jZWRlbGF5IDEuNHMgaW5maW5pdGUgZWFzZS1pbi1vdXQgYm90aDtcbiAgICBhbmltYXRpb246IHNrLWJvdW5jZWRlbGF5IDEuNHMgaW5maW5pdGUgZWFzZS1pbi1vdXQgYm90aDtcbn1cblxuLnNwaW5uZXIgLmJvdW5jZTEge1xuICAgIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAtMC4zMnM7XG4gICAgYW5pbWF0aW9uLWRlbGF5OiAtMC4zMnM7XG59XG5cbi5zcGlubmVyIC5ib3VuY2UyIHtcbiAgICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogLTAuMTZzO1xuICAgIGFuaW1hdGlvbi1kZWxheTogLTAuMTZzO1xufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2stYm91bmNlZGVsYXkge1xuICAgIDAlLCA4MCUsIDEwMCUgeyAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCkgfVxuICAgIDQwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjApIH1cbn1cblxuQGtleWZyYW1lcyBzay1ib3VuY2VkZWxheSB7XG4gICAgMCUsIDgwJSwgMTAwJSB7IFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgfSA0MCUgeyBcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMCk7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wKTtcbiAgICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9jb21tb24vTG9hZGVyLnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLmJ0bnVubGluayB7XG4gIHdpZHRoOiBhdXRvO1xuICBib3JkZXItcmFkaXVzOiAxMDBweDtcbiAgbGluZS1oZWlnaHQ6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgYmFja2dyb3VuZDogIzdiNmM4ZjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXdlaWdodDogNzAwO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGNvbG9yOiAjMTEwYTFhO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBhZGRpbmctbGVmdDogMTFweDtcbiAgcGFkZGluZy1yaWdodDogMTFweDtcbiAgcGFkZGluZy10b3A6IDdweDtcbiAgcGFkZGluZy1ib3R0b206IDdweDtcbiAgYm94LXNoYWRvdzogMHB4IDJweCA0cHggIzAwMDAwMDtcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XG59XG5cbi5oLTMwIHtcbiAgaGVpZ2h0OiAzMHB4O1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvY29tbW9uL2ppcmEvSmlyYURldGFpbHMudnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLnYtcG9wcGVyLS10aGVtZS1kcm9wZG93biAudi1wb3BwZXJfX2lubmVyIHtcbiAgYmFja2dyb3VuZDogIzVhNGY2NSAhaW1wb3J0YW50O1xuICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiAxNXB4ICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDBweCAhaW1wb3J0YW50O1xufVxuXG4udi1wb3BwZXItLXRoZW1lLWRyb3Bkb3duIC52LXBvcHBlcl9faW5uZXIgZGl2IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4udi1wb3BwZXItLXRoZW1lLWRyb3Bkb3duIC52LXBvcHBlcl9faW5uZXIgZGl2IGlucHV0IHtcbiAgLyogYmFja2dyb3VuZDogIzExMGExYSAhaW1wb3J0YW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7ICovXG59XG5cbi52LXBvcHBlci0tdGhlbWUtZHJvcGRvd24gLnYtcG9wcGVyX19hcnJvdyB7XG4gIGJvcmRlci1jb2xvcjogIzVhNGY2NSAhaW1wb3J0YW50O1xufVxuXG4udi1wb3BwZXJfX3BvcHBlci52LXBvcHBlci0tdGhlbWUtZHJvcGRvd24ge1xuICAvKiBtYXJnaW4tdG9wOiAtMTFweCAhaW1wb3J0YW50OyAqL1xuICB0b3A6IC0zNXB4ICFpbXBvcnRhbnQ7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9jb21tb24vRmlsdGVyTWVudS52dWUiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5kaXNhYmxlZCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5pbnNpZ2h0c2FjY29yZGlvbiAjTGFjY29yZGlvbiAuY2FyZCB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLmluc2lnaHRzYWNjb3JkaW9uICNMYWNjb3JkaW9uIC5jYXJkLmJkcnRvcGhlYWQge1xuICBib3JkZXItdG9wOiBzb2xpZCAxcHggIzExMGExYSAhaW1wb3J0YW50O1xufVxuXG4uaW5zaWdodHNhY2NvcmRpb24gI0xhY2NvcmRpb24gLmNhcmQuYmRyYm90dG9taGVhZCB7XG4gIGJvcmRlci1ib3R0b206IHNvbGlkIDFweCAjMTEwYTFhICFpbXBvcnRhbnQ7XG59XG5cbi5pbnNpZ2h0c2FjY29yZGlvbiAjTGFjY29yZGlvbiAuY2FyZCAuY2FyZC1oZWFkZXIge1xuICBwYWRkaW5nOiAwcHg7XG4gIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuICBib3JkZXItcmFkaXVzOiBub25lO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgLyotLS0tLS0tU3RhcnQgSW5zaWdodHNBY2NvcmRpYW4tLS0tLS0qL1xufVxuXG4uaW5zaWdodHNhY2NvcmRpb24gI0xhY2NvcmRpb24gLmNhcmQgLmNhcmQtaGVhZGVyIGg1Lm1iLTA+YSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5pbnNpZ2h0c2FjY29yZGlvbiAjTGFjY29yZGlvbiAuY2FyZCAuY2FyZC1oZWFkZXIgaDUubWItMD5hLm1haW5oZWFkOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogIzVhNGY2NTtcbn1cblxuLmluc2lnaHRzYWNjb3JkaW9uICNMYWNjb3JkaW9uIC5jYXJkIC5jYXJkLWhlYWRlciBoNS5tYi0wPmE6YWZ0ZXIge1xuICBjb250ZW50OiAn74SGJztcbiAgZm9udC1mYW1pbHk6ICdGb250QXdlc29tZSc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDE1cHg7XG4gIHRvcDogN3B4O1xufVxuXG4uaW5zaWdodHNhY2NvcmRpb24gI0xhY2NvcmRpb24gLmNhcmQgLmNhcmQtaGVhZGVyIGg1Lm1iLTA+YVthcmlhLWV4cGFuZGVkPSd0cnVlJ106YWZ0ZXIge1xuICBjb250ZW50OiAn74SHJztcbn1cblxuLmluc2lnaHRzYWNjb3JkaW9uICNMYWNjb3JkaW9uIC5jYXJkIC5jYXJkLWhlYWRlci5iZHJ0b3BoZWFkIHtcbiAgYm9yZGVyLXRvcDogc29saWQgMXB4ICMxMTBhMWEgIWltcG9ydGFudDtcbn1cblxuLmluc2lnaHRzYWNjb3JkaW9uICNMYWNjb3JkaW9uIC5jYXJkIC5jYXJkLWhlYWRlci5iZHJib3R0b21oZWFkIHtcbiAgYm9yZGVyLWJvdHRvbTogc29saWQgMXB4ICMxMTBhMWEgIWltcG9ydGFudDtcbn1cblxuLmluc2lnaHRzYWNjb3JkaW9uICNMYWNjb3JkaW9uIC5jYXJkIC5jYXJkLWJvZHkge1xuICBwYWRkaW5nOiAwcHg7XG59XG5cbi5pbnNpZ2h0c2FjY29yZGlvbiAjTGFjY29yZGlvbiAuY2FyZCAuY2FyZC1ib2R5IC5tZW51bGV2ZWxvbmUge1xuICBwYWRkaW5nLWxlZnQ6IDI2cHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbn1cblxuLmluc2lnaHRzYWNjb3JkaW9uICNMYWNjb3JkaW9uIC5jYXJkIC5jYXJkLWJvZHkgLm1lbnVsZXZlbG9uZSBhIHtcbiAgcGFkZGluZzogNnB4IDIycHg7XG59XG5cbi5pbnNpZ2h0c2FjY29yZGlvbiAjTGFjY29yZGlvbiAuY2FyZCAuY2FyZC1ib2R5IC5tZW51bGV2ZWx0d28ge1xuICBwYWRkaW5nLWxlZnQ6IDI2cHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbn1cblxuLmluc2lnaHRzYWNjb3JkaW9uICNMYWNjb3JkaW9uIC5jYXJkIC5jYXJkLWJvZHkgLm1lbnVsZXZlbHR3byBhIHtcbiAgcGFkZGluZzogM3B4IDIycHg7XG59XG5cbi5pbnNpZ2h0c2FjY29yZGlvbiAjTGFjY29yZGlvbiAuY2FyZCAuY2FyZC1ib2R5IC5tZW51bGV2ZWx0d28gLmFjY29yZGlhbkNoZWNrIGxhYmVsIHtcbiAgY29sb3I6ICNhMjk0YjU7XG59XG5cbi5jayB7XG4gIHotaW5kZXg6IDk5OTkgIWltcG9ydGFudDtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9BZGRJbnNpZ2h0LnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5kaXNhYmxlZCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9jb21tb24vaW5zaWdodHMvQWlJbnNpZ2h0c1ByZXZpZXcudnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4uYWNjb3JkaWFuQ2hlY2sgaW5wdXQge1xuICBwYWRkaW5nOiAwO1xuICBoZWlnaHQ6IGluaXRpYWw7XG4gIHdpZHRoOiBpbml0aWFsO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBkaXNwbGF5OiBibG9jaztcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uYWNjb3JkaWFuQ2hlY2sgaW5wdXQ6Y2hlY2tlZCtsYWJlbDphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDBweDtcbiAgbGVmdDogMHB4O1xuICB3aWR0aDogMTNweDtcbiAgaGVpZ2h0OiAxM3B4O1xuICB3aWR0aDogMTNweDtcbiAgYmFja2dyb3VuZDogIzc4MDFmZjtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjMDAwMDAwO1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvY29tbW9uL2NoYW5uZWxzL0NoYW5uZWxzTGlzdC52dWUiLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlIG1vZGFsYmcgbWFpbk1vZGFsIGNoYW5uZWwtWmluZGV4XCIgZGF0YS1mb2N1cz1cImZhbHNlXCIgaWQ9XCJjaGFubmVsRm9ybVwiIHRhYmluZGV4PVwiLTFcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwiY2hhbm5lbEZvcm1Nb2RhbExhYmVsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1tZCBtb2RhbC1kaWFsb2ctY2VudGVyZWRcIiByb2xlPVwiZG9jdW1lbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCIgdi1pZj1cImNoYW5uZWwgIT0gbnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAgPGgyIGNsYXNzPVwibW9kYWwtdGl0bGUgUGFyZW50Q2hhbm5lbEhlYWRcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+PC9zdHJvbmc+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVtb3Rpb24tdGl0bGVcIiB2LWlmPVwiYXBwU2Vzcy5yb2xlID09ICdBZG1pbidcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtb2RhbC10aXRsZS1oZWFkXCIgdi1pZj1cInBhcmVudENoYW5uZWxOYW1lXCI+e3sgcGFyZW50Q2hhbm5lbE5hbWUgfX0gPHNwYW4gY2xhc3M9XCJkYXNoZWQtbGluZVwiPi08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBjaGFubmVsLmlkID8gYXBwVHJhbnMuY29tbW9uLmVkaXQgKyAnICcgOiBhcHBUcmFucy5jb21tb24uY3JlYXRlXG4gICAgICAgICAgICAgICAgKyAnICcgfX0ge3sgYXBwVHJhbnMuY29tbW9uLnByaXZhdGUgfX0ge3sgcGFyZW50Q2hhbm5lbE5hbWUgPyBjdXN0b21FbGVtZW50cy5zdWJjaGFubmVsVGl0bGUgOiBjdXN0b21FbGVtZW50cy5jaGFubmVsVGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVtb3Rpb24tdGl0bGVcIiB2LWlmPVwiYXBwU2Vzcy5yb2xlID09ICdVc2VyJ1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vZGFsLXRpdGxlLWhlYWRcIiB2LWlmPVwicGFyZW50Q2hhbm5lbE5hbWVcIj57eyBwYXJlbnRDaGFubmVsTmFtZSB9fSA8c3BhbiBjbGFzcz1cImRhc2hlZC1saW5lXCI+LTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGFwcFRyYW5zLmNvbW1vbi5yZXF1ZXN0ZWQgfX0gIHt7IHBhcmVudENoYW5uZWxOYW1lID8gY3VzdG9tRWxlbWVudHMuc3ViY2hhbm5lbFRpdGxlIDogY3VzdG9tRWxlbWVudHMuY2hhbm5lbFRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIEBjbGljaz1cImNsb3NlTW9kZWwoKVwiPlxuICAgICAgICAgICAgPHNwYW4+w5c8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBtb2RhbHNjcm9sbGJhck9uZSBDcmVhdGVfRWRpdHBvcHVwIENoYW5uZWxFZGl0TW9kYWxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5zaWdodHNCb2R5XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3aWR0aC04MFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnNpZ2h0cG9wYm94IHdpZHRoMVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3cgbS0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLTEyIGdsb2JhbC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7IGFwcFRyYW5zLmNvbW1vbi50aXRsZSB9fSA8c3VwPio8L3N1cD48L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhLWF1dG9zaXplIDppbXBvcnRhbnQ9XCJbJ3Jlc2l6ZScsICdvdmVyZmxvdycsICdoZWlnaHQnXVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIG1tLXRleHRhcmVhLXNtXCIgcGxhY2Vob2xkZXI9XCJcIiB2LW1vZGVsLnRyaW09XCJjaGFubmVsLm5hbWVcIj48L3RleHRhcmVhLWF1dG9zaXplPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93IG0tMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNvbC0xMiBnbG9iYWwtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyBhcHBUcmFucy5jb21tb24uZGVzY3JpcHRpb24gfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhLWF1dG9zaXplIDppbXBvcnRhbnQ9XCJbJ3Jlc2l6ZScsICdvdmVyZmxvdycsICdoZWlnaHQnXVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIG1tLXRleHRhcmVhLXNtXCIgcGxhY2Vob2xkZXI9XCJcIiB2LW1vZGVsLnRyaW09XCJjaGFubmVsLmRlc2NyaXB0aW9uXCI+PC90ZXh0YXJlYS1hdXRvc2l6ZT5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluc2lnaHRwb3Bib3ggd2lkdGgxXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvdyBtLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLTEyIGdsb2JhbC1sYWJlbCB1c2VyLXNlbGVjdC1kcm9wZG93blwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyBhcHBUcmFucy5jb21tb24ub3duZXIgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvd25lcmltZyB1c2VyZGlzcGxheW1haW5cIiB2LWlmPVwiIWNoYW5uZWwub3duZXIgJiYgYXBwU2Vzcy5maXJzdG5hbWUgJiYgYXBwU2Vzcy5sYXN0bmFtZSAmJiB1c2VyU2VsZWN0TW9kZSA9PT0gMFwiIEBjbGljaz1cImFjdGl2YXRlU2V0T3duZXIoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvd25lcmljb25cIiB2LXRvb2x0aXAucmlnaHQ9XCJhcHBTZXNzLnVzZXJuYW1lXCIgdi1pZj1cIiFhcHBTZXNzLnVzZXJMb2dvXCI+e3sgYXBwU2Vzcy5maXJzdG5hbWVbMF0udG9VcHBlckNhc2UoKSArIGFwcFNlc3MubGFzdG5hbWVbMF0udG9VcHBlckNhc2UoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3duZXJpY29uIG5vYmdcIiB2LXRvb2x0aXAucmlnaHQ9XCJhcHBTZXNzLnVzZXJuYW1lXCIgdi1pZj1cImFwcFNlc3MudXNlckxvZ29cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyA6c3JjPVwiYXBwU2Vzcy51c2VyTG9nb1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm93bmVyaW1nIHVzZXJkaXNwbGF5bWFpblwiIHYtaWY9XCJjaGFubmVsLm93bmVyICYmIHVzZXJTZWxlY3RNb2RlID09PSAwXCIgQGNsaWNrPVwiYWN0aXZhdGVTZXRPd25lcigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm93bmVyaWNvblwiIHYtdG9vbHRpcC5yaWdodD1cImNoYW5uZWwub3duZXIudXNlcm5hbWVcIiB2LWlmPVwiY2hhbm5lbC5vd25lci51c2VyaWQgIT09IG51bGwgJiYgKGNoYW5uZWwub3duZXIudXNlcmltYWdlID09PSBudWxsIHx8IGNoYW5uZWwub3duZXIudXNlcmltYWdlID09PSAnJylcIj57eyBjaGFubmVsLm93bmVyLnVzZXJuYW1lc2hvcnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm93bmVyaWNvbiBub2JnXCIgdi10b29sdGlwLnJpZ2h0PVwiY2hhbm5lbC5vd25lci51c2VybmFtZVwiIHYtaWY9XCJjaGFubmVsLm93bmVyICYmIGNoYW5uZWwub3duZXIudXNlcmlkICYmIGNoYW5uZWwub3duZXIudXNlcmltYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgOnNyYz1cImNoYW5uZWwub3duZXIudXNlcmltYWdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3duZXJpY29uXCIgdi10b29sdGlwLnJpZ2h0PVwiJ05vIFVzZXInXCIgdi1pZj1cImNoYW5uZWwub3duZXIudXNlcmlkID09IG51bGxcIj4tPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGREaW1lbnNpb25zIGQtZmxleFwiIHYtaWY9XCJ1c2VyU2VsZWN0TW9kZSA9PT0gMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCB3LTEwMCBzdGF0dXNidG5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gZHJvcGRvd24tdG9nZ2xlXCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1c2JveCB1c2VyYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3duZXJpbWdcIiB2LXRvb2x0aXAucmlnaHQ9XCJjaGFubmVsLm93bmVyLnVzZXJuYW1lXCIgdi1pZj1cImNoYW5uZWwub3duZXIudXNlcmlkICE9PSBudWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvd25lcmljb25cIiB2LWlmPVwiY2hhbm5lbC5vd25lci51c2VyaW1hZ2UgPT09IG51bGwgfHwgY2hhbm5lbC5vd25lci51c2VyaW1hZ2UgPT09ICcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjaGFubmVsLm93bmVyLnVzZXJuYW1lc2hvcnQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvd25lcmljb24gbm9iZ1wiIHYtaWY9XCJjaGFubmVsLm93bmVyLnVzZXJpbWFnZSAhPT0gbnVsbCAmJiBjaGFubmVsLm93bmVyLnVzZXJpbWFnZSAhPT0gJydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgOnNyYz1cImNoYW5uZWwub3duZXIudXNlcmltYWdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY2hhbm5lbC5vd25lci51c2VybmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3duZXJpbWdcIiB2LWlmPVwiY2hhbm5lbC5vd25lci51c2VyaWQgPT09IG51bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm93bmVyaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcHBUcmFucy5jb21tb24ubm9fdXNlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiA6Y2xhc3M9XCJ7b3duZXJDb3VudDogdXNlcnMubGVuZ3RoID4gNX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzYm94IHVzZXJib3hkcm9wZG93biBkcm9wZG93bi1zY3JvbGxiYXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSB2LWZvcj1cIih1c2VyLCBpbmRleCkgaW4gdXNlcnNcIiA6a2V5PVwiaW5kZXhcIiA6Y2xhc3M9XCJ7J2Qtbm9uZSc6IHVzZXIucm9sZSAhPSAnVXNlcicgJiYgdXNlci5yb2xlICE9ICdBZG1pbid9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3duZXJpbWdcIiBAY2xpY2s9XCJzZXRPd25lcih1c2VyKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3duZXJpY29uXCIgZGF0YS10b2dnbGU9XCJ0b29sdGlwXCIgZGF0YS1wbGFjZW1lbnQ9XCJ0b3BcIiB2LWlmPVwidXNlci51c2VyaW1hZ2UgPT09IG51bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHVzZXIudXNlcm5hbWVzaG9ydCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm93bmVyaWNvbiBub2JnXCIgZGF0YS10b2dnbGU9XCJ0b29sdGlwXCIgZGF0YS1wbGFjZW1lbnQ9XCJ0b3BcIiB2LWlmPVwidXNlci51c2VyaW1hZ2UgIT09IG51bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgOnNyYz1cInVzZXIudXNlcmltYWdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdXNlci51c2VybmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93IG0tMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtMTIgcC0wIGdsb2JhbC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyBhcHBUcmFucy5jb21tb24ubm9fb2ZfY29udGFjdHMgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiTnVtYmVyXCIgdi1tb2RlbC5udW1iZXI9XCJjaGFubmVsLmNvbnRhY3RzXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbW0taW5wdXQtc21cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvdyBtLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLTEyIGdsb2JhbC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyBhcHBUcmFucy5jb21tb24uZG9jdW1lbnRzIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXRQZXJzb25hQm94XCIgdi1mb3I9XCIoZG9jLCBkKSBpbiBjaGFubmVsLmRvY3VtZW50c1wiIDprZXk9XCJkICsgJ2RvY3MnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImRvY3NIZWFkcG9wXCI+e3sgZG9jLmRfcmVhbG5hbWUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNsZWFyXCIgQGNsaWNrPVwidW5saW5rRG9jKGQpXCI+w5c8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBnbG9iYWwtYnRuLXNtIHByaW1hcnktY29sb3JidG5cIiBAY2xpY2s9XCJvcGVuTW9kYWwoJyNhZGREb2N1bWVudE1vZGFsJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFwcFRyYW5zLmNvbW1vbi5hZGRfZG9jdW1lbnQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnNpZ2h0cG9wYm94ICB3aWR0aC0xMDAgbWItMjFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgIHYtY2hlY2tBY2Nlc3M9XCJ7IGNvbmZpZ3M6IGFwcFNlc3MuY29uZmlndXJhdGlvbnMsIG1vZHVsZTogJ2N1c3RvbUxpc3RzJyB9XCIgdi1mb3I9XCIoY0ZpZWxkcywgY2ZpKSBpbiBjdXN0b21GaWVsZHNcIiA6a2V5PVwiJ2NmcycgKyBjZmlcIiA6Y2xhc3M9XCJ7J2Qtbm9uZSc6ICFjRmllbGRzLnRpdGxlIHx8ICFjRmllbGRzLm9wdGlvbnMgfHwgY0ZpZWxkcy5vcHRpb25zLmxlbmd0aCA9PSAwLCAnaGlkZS1kaXNwbGF5JzpjRmllbGRzLnNob3dDdXN0b21MaXN0ICE9IDEsICdjb2wtMyBjc3VzdG9tbGlzdC1zcGFjZSc6IGNGaWVsZHMuc3RhdHVzID09IDEsICdjb2wtNiBjc3VzdG9tbGlzdC1zcGFjZSc6IGNGaWVsZHMuc3RhdHVzICE9IDF9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tbGlzdERyb3Bkb3duXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNvbC0xMiBzZWxlY3RBcnJvd01haW4gZ2xvYmFsLWxhYmVsXCIgdi1pZj1cImNGaWVsZHMuc3RhdHVzID09IDFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNzLWhlYWRpbmdcIiB2LXRvb2x0aXAudG9wPVwie2NvbnRlbnQ6IGdldFRpdGxlKGNGaWVsZHMuZGVzY3JpcHRpb24pLCBodG1sOiB0cnVlfVwiPiB7eyBjRmllbGRzLnRpdGxlIH19PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZERpbWVuc2lvbnMgZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3Qgdi1tb2RlbD1cImNoYW5uZWwuY3VzdG9tRmllbGRzW2NmaV1cIiA6ZGF0YS1tYXgtb3B0aW9ucz1cImNGaWVsZHMuaXNTaW5nbGVTZWxlY3Rpb24gPyAxIDogZmFsc2VcIiByZWY9XCJjZm8xXCIgbXVsdGlwbGUgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VsZWN0cGlja2VyIG1tLXNlbGVjdC1zbSBwb3B1cEN1c3RvbWxpc3REcm9wZG93blwiIGRhdGEtc2l6ZT1cIjVcIiA6dGl0bGU9XCJjaGFubmVsLmN1c3RvbUZpZWxkc1tjZmldICYmIGNoYW5uZWwuY3VzdG9tRmllbGRzW2NmaV0ubGVuZ3RoID8gbnVsbCA6IGNGaWVsZHMudGl0bGVcIiA6ZGF0YS1hY3Rpb25zLWJveD1cImNGaWVsZHMuaXNTaW5nbGVTZWxlY3Rpb24gPyBmYWxzZTogdHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdi1mb3I9XCIoY2ZvMSwgaW5kZXgpIGluIGNGaWVsZHMub3B0aW9uc1wiIDp2YWx1ZT1cImNmbzFcIiB2LXRvb2x0aXAudG9wPVwie2NvbnRlbnQ6IGdldFRpdGxlKGNmbzEuZGVzY3JpcHRpb24pLCBodG1sOiB0cnVlfVwiIDpkYXRhLWNvbnRlbnQ9XCJwcmVwYXJlQ3VzdG9tRmllbGRPcHRpb24oY2ZvMSlcIiA6a2V5PVwiJ2NmbzEnICsgaW5kZXhcIj4gPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLTEyIHNlbGVjdEFycm93TWFpbiBnbG9iYWwtbGFiZWxcIiB2LWlmPVwiY0ZpZWxkcy5zdGF0dXMgIT0gMSAmJiBjaGFubmVsLmN1c3RvbUZpZWxkc1tjZmldLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjxzcGFuIGNsYXNzPVwiY3MtaGVhZGluZ1wiIHYtdG9vbHRpcC50b3A9XCJ7Y29udGVudDogZ2V0VGl0bGUoY0ZpZWxkcy5kZXNjcmlwdGlvbiksIGh0bWw6IHRydWV9XCI+e3sgY0ZpZWxkcy50aXRsZSB9fSAoIHt7Y0ZpZWxkcy5maWVsZFR5cGUgPT0gMSA/ICdUZXh0JyA6ICdMaW5rJ319ICk8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZERpbWVuc2lvbnMgZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIEBibHVyPVwiY2hhbm5lbC5jdXN0b21GaWVsZHNbY2ZpXVswXS5maWVsZFR5cGUgPSBjRmllbGRzLmZpZWxkVHlwZTsgY2hhbm5lbC5jdXN0b21GaWVsZHNbY2ZpXVswXS5jdXN0b21GaWVsZElkID0gY0ZpZWxkcy5pZDtcIiB2LW1vZGVsPVwiY2hhbm5lbC5jdXN0b21GaWVsZHNbY2ZpXVswXS50aXRsZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIG1tLWlucHV0LXNtXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5zaWdodHBvcGJveCB3aWR0aDJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNvbC0xMiBnbG9iYWwtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7IGFwcFNlc3MubGFiZWxzID8gYXBwU2Vzcy5sYWJlbHMuaWNvbi5pY29uIDogJ0ljb24nIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vdEljb25MaXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIktQSXdpZGdldEFyZWFcIiB2LWZvcj1cIihpY29uLCBpKSBpbiBjaGFubmVsLmljb25zLnNsaWNlKDAsIDEpXCIgOmtleT1cIidpY29ucycgKyBpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImtwaXRvcHNlY3Rpb24gY2xlYXJmaXhcIj48c3Bhbj57eyBhcHBUcmFucy5jb21tb24uaWNvbiB9fTwvc3Bhbj4gPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCIgQGNsaWNrPVwicmVtb3ZlSWNvbihpKVwiIGNsYXNzPVwiZmEgZmEtdHJhc2ggdHJhc2hJY29uXCI+PC9pPjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3Jtc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uU2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZGljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSA6Y2xhc3M9XCJpY29uLmZvbnRfY2xhc3MgPyBpY29uLmZvbnRfY2xhc3MgOiAnJ1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RCdG4gc2VsZWN0SWNvbkJ0blwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGROZXdMYW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cIm9wZW5Nb2RhbCgnI3NlbGVjdEljb25Nb2RhbCcsIGkpXCIgY2xhc3M9XCJidG4gZ2xvYmFsLWJ0bi1zbSBwcmltYXJ5LWNvbG9yYnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBwVHJhbnMuY29tbW9uLnNlbGVjdCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJhYmNkXCI+e3sgYXBwVHJhbnMuY29tbW9uLm5hbWUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbW0taW5wdXQtc21cIiB2LW1vZGVsPVwiaWNvbi5uYW1lXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gZ2xvYmFsLWJ0bi1zbSBwcmltYXJ5LWNvbG9yYnRuXCIgdi1pZj1cImNoYW5uZWwuaWNvbnMgPCAxXCIgQGNsaWNrPVwib3Blbk1vZGFsKCcjc2VsZWN0SWNvbk1vZGFsJywgLTEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImZhIGZhLXBsdXNcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBhcHBUcmFucy5jb21tb24uYWRkIH19IHt7IGFwcFNlc3MubGFiZWxzID8gYXBwU2Vzcy5sYWJlbHMuaWNvbi5pY29uIDogJ0ljb24nIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNvbC0xMiBnbG9iYWwtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7IGFwcFRyYW5zLmNoYW5uZWxzLmRhdGFfd2lkZ2V0IH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIktQSXdpZGdldEFyZWEga3BpTWFpbkJveCBtYXBLcGlCb3ggY2hhbm5lbC1LcGlcIiB2LWZvcj1cIihrcGksIGspIGluIGNoYW5uZWwua3Bpcy5zbGljZSgwLCAxKVwiIDprZXk9XCInd2RiJyArIGtcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8a3BpIDplZGl0PVwidHJ1ZVwiIDphcHBTZXNzPVwiYXBwU2Vzc1wiIDpjb21wb25lbnRGb3I9XCInY2hhbm5lbCdcIiA6bW9kZT1cIjJcIiA6a3Bpcz1cImNoYW5uZWwua3Bpc1wiIDptb2RpZD1cImNoYW5uZWwuaWRcIiA6bW9kdHlwZT1cIid3aWRnZXQnXCIgOmtwaT1cImtwaVwiIDpraW5kZXg9XCJrXCIgQGRlbGV0ZT1cImRlbGV0ZUtwaVwiIEBnZXRLcGk9XCJnZXRLcGlcIiA6cGFnZT1cIidlZGl0J1wiPjwva3BpPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vdEljb25MaXN0XCIgdi1pZj1cImNoYW5uZWwua3BpcyA8IDFcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGdsb2JhbC1idG4tc20gcHJpbWFyeS1jb2xvcmJ0blwiIEBjbGljaz1cIm9wZW5Nb2RhbCgnI0twaUxpc3RNb2RhbCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImZhIGZhLXBsdXNcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBhcHBUcmFucy5jb21tb24uYWRkIH19IHt7IGFwcFRyYW5zLmNoYW5uZWxzLmRhdGFfd2lkZ2V0IH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtMTIgbS0wIGdsb2JhbC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgYXBwVHJhbnMuY29tbW9uLm1lZGlhIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lZGlhZGRJbWFnZSB2aWV3SW1hZ2UgZC1mbGV4IGFjdGlvbm1lZGlhXCIgQGNsaWNrPVwib3Blbk1lZGlhKClcIiB2LWlmPVwiY2hhbm5lbC5tZWRpYSA9PSAnJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1zZWxmLWNlbnRlciB0ZXh0LWNlbnRlciBtZWRpYWltYWdlSW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWdVcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VQcmV2aWV3XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBkYXRhLXRvZ2dsZT1cInRvb2x0aXBcIiA6dGl0bGU9XCJhcHBUcmFucy5jb21tb24uYWRkX21lZGlhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBkYXRhLXRvZ2dsZT1cInRvb2x0aXBcIiA6dGl0bGU9XCJhcHBUcmFucy5jb21tb24uYWRkX21lZGlhXCIgY2xhc3M9XCJtZWRpYS1pY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lZGlhZGRJbWFnZSBhZGRJbWFnZSB2aWV3SW1hZ2UgYWN0aW9ubWVkaWEgZC1mbGV4XCIgdi1pZj1cImNoYW5uZWwubWVkaWEgJiYgY2hhbm5lbC5tZWRpYS5tZWRpYV90eXBlID09ICdpbWFnZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIHYtaWY9XCJjaGFubmVsLm1lZGlhLmltYWdlX3BhdGhcIiA6c3JjPVwiY2hhbm5lbC5tZWRpYS5pbWFnZV9wYXRoXCIgY2xhc3M9XCJlcGlzb2RlSW1hZ2VcIiBhbHQ9XCJFcGlzb2RlIEltYWdlXCIgQGNsaWNrPVwib3Blbk1lZGlhKClcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVsZXRlZXBpc29kZUltYWdlXCIgQGNsaWNrPVwidW5saW5rTWVkaWEoKVwiPjxpIGNsYXNzPVwiZmEgZmEtdHJhc2hcIj48L2k+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lZGlhZGRJbWFnZSB2aWV3SW1hZ2UgYWN0aW9ubWVkaWFcIiB2LWlmPVwiY2hhbm5lbC5tZWRpYSAmJiBjaGFubmVsLm1lZGlhLm1lZGlhX3R5cGUgPT0gJ3ZpZGVvJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpZnJhbWUgZnJhbWVib3JkZXI9XCIwXCIgOnNyYz1cIiRwYXJlbnQuZm9ybWF0RW1iZWRVUkwoY2hhbm5lbC5tZWRpYS5maWxlID8gY2hhbm5lbC5tZWRpYS5maWxlIDogY2hhbm5lbC5tZWRpYS52aWRlb191cmwsIGNoYW5uZWwubWVkaWEubGlua190eXBlKVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZWxldGVlcGlzb2RlSW1hZ2VcIiBAY2xpY2s9XCJ1bmxpbmtNZWRpYSgpXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaFwiPjwvaT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBnbG9iYWwtYnRuLXNtIGdyYWRpZW50YnRuXCIgQGNsaWNrPVwiY2hhbm5lbC5pZCA/IHVwZGF0ZUNoYW5uZWwoKSA6IHNhdmVDaGFubmVsKClcIiB2LWlmPVwiYXBwU2Vzcy5yb2xlID09ICdBZG1pbidcIj5cbiAgICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvaT5cbiAgICAgICAgICAgIHt7IGNoYW5uZWwuaWQgPyAnU2F2ZSAnIDogJ0NyZWF0ZSAnfX0ge3sgcGFyZW50Q2hhbm5lbE5hbWUgPyBjdXN0b21FbGVtZW50cy5zdWJjaGFubmVsVGl0bGUgOiBjdXN0b21FbGVtZW50cy5jaGFubmVsVGl0bGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGdsb2JhbC1idG4tc20gZ3JhZGllbnRidG5cIiBAY2xpY2s9XCJzYXZlQ2hhbm5lbCgpXCIgdi1pZj1cImFwcFNlc3Mucm9sZSA9PSAnVXNlcidcIj5cbiAgICAgICAgICAgIHt7IGFwcFRyYW5zLmNvbW1vbi5yZXF1ZXN0IH19IHt7cGFyZW50Q2hhbm5lbE5hbWUgPyBjdXN0b21FbGVtZW50cy5zdWJjaGFubmVsVGl0bGUgOiBjdXN0b21FbGVtZW50cy5jaGFubmVsVGl0bGV9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBnbG9iYWwtYnRuLXNtIGJvcmRlcmVkLXRyYW5zcGFyZW50YnRuXCIgQGNsaWNrPVwiY2xvc2VNb2RlbCgwKVwiPlxuICAgICAgICAgICAge3sgYXBwVHJhbnMuY29tbW9uLmNhbmNlbCB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0PlxuaW1wb3J0IHttYXBHZXR0ZXJzfSBmcm9tICd2dWV4JztcbmltcG9ydCB7ZXZlbnRCdXN9IGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9qcy9jb21tb24vZXZlbnRCdXMuanMnO1xuaW1wb3J0IEtwaSBmcm9tICcuLi93aWRnZXRzL0twaS52dWUnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdjaGFubmVsLWZvcm0nLFxuICBwcm9wczogWydwYXJlbnRDaGFubmVsTmFtZScsICdjaGFubmVsUHVibGljVHlwZScsICdjdXN0b21FbGVtZW50cycsICdjb21wb25lbnRGb3InLCAnY2hhbm5lbERhdGEnLCAnY3VzdG9tRmllbGRzJywgJ3RlbXBjaGFubmVsJywgJ3VzZXJzJ10sXG4gIGNvbXBvbmVudHM6IHtcbiAgICBLcGksXG4gIH0sXG4gIG1peGluczogW10sXG4gIGNvbXB1dGVkOiB7XG4gICAgLi4ubWFwR2V0dGVycyhbJ2FwcFNlc3MnXSksXG4gICAgY2hlY2tPd25lcigpIHtcbiAgICAgIHJldHVybiB0aGlzLmFwcFNlc3MuaWQgPT0gdGhpcy5jaGFubmVsLm93bmVyLnVzZXJpZCB8fCB0aGlzLnVzZXJFeGlzdHModGhpcy5jaGFubmVsLmNvT3duZXJzKTtcbiAgICB9LFxuICB9LFxuICB3YXRjaDoge1xuICAgIGNoYW5uZWxEYXRhOiB7XG4gICAgICAvLyB0aGUgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHN0YXJ0IG9mIHRoZSBvYnNlcnZhdGlvblxuICAgICAgaW1tZWRpYXRlOiB0cnVlLFxuICAgICAgaGFuZGxlcih2YWwsIG9sZFZhbCkge1xuICAgICAgICB0aGlzLmNoYW5uZWwgPSB2YWw7XG4gICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAkKCcuc2VsZWN0cGlja2VyJykuc2VsZWN0cGlja2VyKCdyZWZyZXNoJyk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjaGFubmVsOiBudWxsLFxuICAgICAgLy8gdXNlcnM6IFtdLFxuICAgICAgZXhwYW5kTW9kZTogMSxcbiAgICAgIHVzZXJTZWxlY3RNb2RlOiAwLFxuICAgICAgaWNvbkluZGV4OiAtMSxcbiAgICAgIGtwaUluZGV4OiAtMSxcbiAgICAgIG1lZGlhOiAnJyxcbiAgICB9O1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgaW5pdEVkaXRvcigpIHtcbiAgICAgIHRoaXMuJHNldCh0aGlzLmVkaXRvciwgJ2VkaXRvckNvbmZpZycsIHtcbiAgICAgICAgbGluazoge1xuICAgICAgICAgIGRlZmF1bHRQcm90b2NvbDogJ2h0dHA6Ly8nLFxuICAgICAgICAgIGFkZFRhcmdldFRvRXh0ZXJuYWxMaW5rczogZmFsc2UsXG4gICAgICAgICAgZGVjb3JhdG9yczoge1xuICAgICAgICAgICAgaXNFeHRlcm5hbDoge1xuICAgICAgICAgICAgICBtb2RlOiAnbWFudWFsJyxcbiAgICAgICAgICAgICAgbGFiZWw6ICdPcGVuIGluIGEgbmV3IHRhYicsXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIHRhcmdldDogJ19ibGFuaycsXG4gICAgICAgICAgICAgICAgcmVsOiAnbm9vcGVuZXIgbm9yZWZlcnJlcicsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHRvb2xiYXI6IHtcbiAgICAgICAgICBpdGVtczogWydib2xkJywgJ2l0YWxpYycsICdzdHJpa2V0aHJvdWdoJywgJ3VuZGVybGluZScsICd8JywgJ2FsaWdubWVudCcsICd8JywgJ2J1bGxldGVkTGlzdCcsICdudW1iZXJlZExpc3QnLCAnfCcsICdmb250ZmFtaWx5JywgJy0nLCAnZm9udHNpemUnLCAnfCcsICdoZWFkaW5nJywgJ3wnLCAnZm9udENvbG9yJywgJ2ZvbnRCYWNrZ3JvdW5kQ29sb3InLCAnfCcsICdsaW5rJywgJ3wnXSxcbiAgICAgICAgICBzaG91bGROb3RHcm91cFdoZW5GdWxsOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBsaW5rU2hvd0FkdmFuY2VkVGFiOiBmYWxzZSxcbiAgICAgICAgbGlua1Nob3dUYXJnZXRUYWI6IHRydWUsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGV4cGFuZCgpIHtcbiAgICAgIGlmICh0aGlzLmV4cGFuZE1vZGUgPT0gMCkge1xuICAgICAgICB0aGlzLmV4cGFuZE1vZGUgPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5leHBhbmRNb2RlID0gMDtcbiAgICAgIH1cblxuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuXG4gICAgICB0aGlzLiRodHRwXG4gICAgICAgIC5wb3N0KCcvYXBpL2V4cGFuZENvbGxhcHNlTW9kdWxlJywge1xuICAgICAgICAgIGV4cGFuZE1vZGU6IHNlbGYuZXhwYW5kTW9kZSxcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ/CfmoAgfiBmaWxlOiBWaWV3Y2hhbm5lbC52dWUgfiBsaW5lIDMxOSB+IGV4cGFuZCB+IGVycm9yJywgZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogc2F2ZSBhIG5ldyBjaGFubmVsXG4gICAgICovXG4gICAgc2F2ZUNoYW5uZWwodHlwZSkge1xuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgaWYgKCFzZWxmLmNoYW5uZWwub3duZXIgfHwgc2VsZi5jaGFubmVsLm93bmVyLnVzZXJpZCA9PSBudWxsKSB7XG4gICAgICAgIHNlbGYuYXNzaWduVXNlcigpO1xuICAgICAgfVxuICAgICAgLy8gdmFsaWRhdGlvbnMgZm9yIGlucHV0c1xuICAgICAgaWYgKHNlbGYuY2hhbm5lbC5uYW1lLnRyaW0oKSA9PT0gJycgfHwgc2VsZi5jaGFubmVsLm93bmVyLnVzZXJpZCA9PSBudWxsKSB7XG4gICAgICAgIGlmIChzZWxmLmNoYW5uZWwubmFtZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgbW1fbWVzc2FnZXIuZGlzcGxheV90aW1lcl9tZXNzYWdlKHRoaXMuYXBwVHJhbnMuY29tbW9uLmVycm9yX21lc3NhZ2VzLnRpdGxlX2ZpZWxkX21pc3NpbmcsICd3YXJuaW5nJyk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9IGVsc2UgaWYgKHNlbGYuY2hhbm5lbC5vd25lci51c2VyaWQgPT0gbnVsbCkge1xuICAgICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfdGltZXJfbWVzc2FnZSh0aGlzLmFwcFRyYW5zLmNvbW1vbi5lcnJvcl9tZXNzYWdlcy5vd25lcl9ub3RfYXNzaWduZWQsICd3YXJuaW5nJyk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLiRlbWl0KCdzYXZlLWNoYW5uZWwnLCB0aGlzLmNoYW5uZWwpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiB1cGRhdGUgYSBjaGFubmVsXG4gICAgICovXG4gICAgdXBkYXRlQ2hhbm5lbCh0eXBlKSB7XG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICBpZiAoIXNlbGYuY2hhbm5lbC5vd25lciB8fCBzZWxmLmNoYW5uZWwub3duZXIudXNlcmlkID09IG51bGwpIHtcbiAgICAgICAgc2VsZi5hc3NpZ25Vc2VyKCk7XG4gICAgICB9XG4gICAgICAvLyB2YWxpZGF0aW9ucyBmb3IgaW5wdXRzXG4gICAgICBpZiAoc2VsZi5jaGFubmVsLm5hbWUudHJpbSgpID09PSAnJykge1xuICAgICAgICBpZiAoc2VsZi5jaGFubmVsLm5hbWUudHJpbSgpID09PSAnJykge1xuICAgICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfdGltZXJfbWVzc2FnZSh0aGlzLmFwcFRyYW5zLmNvbW1vbi5lcnJvcl9tZXNzYWdlcy50aXRsZV9maWVsZF9taXNzaW5nLCAnd2FybmluZycpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChzZWxmLmNoYW5uZWwub3duZXIudXNlcmlkID09IG51bGwpIHtcbiAgICAgICAgICBtbV9tZXNzYWdlci5kaXNwbGF5X3RpbWVyX21lc3NhZ2UodGhpcy5hcHBUcmFucy5jb21tb24uZXJyb3JfbWVzc2FnZXMub3duZXJfbm90X2Fzc2lnbmVkLCAnd2FybmluZycpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy4kZW1pdCgnc2F2ZS1jaGFubmVsJywgdGhpcy5jaGFubmVsKTtcbiAgICB9LFxuICAgIC8vIHNldFN0YXR1cyhzdGF0dXMpIHtcbiAgICAvLyAgICAgdGhpcy5jaGFubmVsLmluc2lnaHRfc3RhdHVzID0gc3RhdHVzO1xuICAgIC8vIH0sXG4gICAgZWRpdEluc2lnaHQoKSB7XG4gICAgICBldmVudEJ1cy4kZW1pdCh0aGlzLmNvbXBvbmVudEZvciArICctaW5zaWdodC1tb2RhbC1zdGF0dXMnLCB0cnVlKTtcbiAgICAgICQoJyNjaGFubmVsRm9ybScpLm1vZGFsKCdzaG93Jyk7XG4gICAgICAkKCcjdmlld0luc2lnaHRNb2RhbCcpLm1vZGFsKCdoaWRlJyk7XG4gICAgfSxcblxuICAgIGNsZWFyRmllbGRzKCkge1xuICAgICAgdGhpcy4kcGFyZW50LmNoYW5uZWwgPSB7XG4gICAgICAgIGlkOiBudWxsLFxuICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICBjdXN0b21GaWVsZHM6IFtbXSwgW10sIFtdLCBbXSwgW10sIFtdXSxcbiAgICAgICAgb3duZXI6IFtdLFxuICAgICAgICBpY29uczogW10sXG4gICAgICAgIGRvY3VtZW50czogW10sXG4gICAgICAgIG1lZGlhOiBudWxsLFxuICAgICAgICBjb250YWN0czogMCxcbiAgICAgICAga3BpczogW10sXG4gICAgICB9O1xuICAgICAgLy8gdGhpcy4kcGFyZW50LmdldENoYW5uZWxzTGlzdCgpO1xuICAgICAgdGhpcy51c2VyU2VsZWN0TW9kZSA9IDA7XG4gICAgICB0aGlzLmFzc2lnblVzZXIoKTtcbiAgICB9LFxuXG4gICAgY2xvc2VNb2RlbCgpIHtcbiAgICAgICQoJyNjaGFubmVsRm9ybScpLm1vZGFsKCdoaWRlJyk7XG4gICAgfSxcbiAgICBjb25maXJtQWRkSW5zaWdodCh0eXBlKSB7XG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICB0aGlzLmFzc2lnblVzZXIoKTtcbiAgICAgIC8vIHZhbGlkYXRpb25zIGZvciBpbnB1dHNcbiAgICAgIGlmIChzZWxmLmNoYW5uZWwubmFtZS50cmltKCkgPT09ICcnIHx8IHNlbGYuY2hhbm5lbC5vd25lci51c2VyaWQgPT0gbnVsbCkge1xuICAgICAgICBpZiAoc2VsZi5jaGFubmVsLm5hbWUudHJpbSgpID09PSAnJykge1xuICAgICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfdGltZXJfbWVzc2FnZSh0aGlzLmFwcFRyYW5zLmNvbW1vbi5lcnJvcl9tZXNzYWdlcy50aXRsZV9maWVsZF9taXNzaW5nLCAnd2FybmluZycpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChzZWxmLmNoYW5uZWwub3duZXIudXNlcmlkID09IG51bGwpIHtcbiAgICAgICAgICBtbV9tZXNzYWdlci5kaXNwbGF5X3RpbWVyX21lc3NhZ2UodGhpcy5hcHBUcmFucy5jb21tb24uZXJyb3JfbWVzc2FnZXMub3duZXJfbm90X2Fzc2lnbmVkLCAnd2FybmluZycpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHR5cGUgPT0gMSkge1xuICAgICAgICAkKCcjY3JlYXRlSW5zaWdodFdhcm5pbmdNb2RhbCcpLm1vZGFsKCdzaG93Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAkKCcjc2F2ZUluc2lnaHRXYXJuaW5nTW9kYWwnKS5tb2RhbCgnc2hvdycpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhY3RpdmF0ZVNldE93bmVyKCkge1xuICAgICAgaWYgKHRoaXMuYXBwU2Vzcy5yb2xlID09ICdBZG1pbicgfHwgdGhpcy5hcHBTZXNzLmlkID09IHRoaXMuY2hhbm5lbC5vd25lci51c2VyaWQgfHwgIXRoaXMuY2hhbm5lbC5pbnNpZ2h0X2lkKSB7XG4gICAgICAgIHRoaXMuYXNzaWduVXNlcigpO1xuICAgICAgICB0aGlzLnVzZXJTZWxlY3RNb2RlID0gMTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldE93bmVyKHVzZXIpIHtcbiAgICAgIHRoaXMudXNlclNlbGVjdE1vZGUgPSAwO1xuICAgICAgLy8gdGhpcy5jaGFubmVsLm93bmVyID0gdXNlcjtcbiAgICAgIHRoaXMuY2hhbm5lbC5vd25lciA9IHtcbiAgICAgICAgdXNlcmlkOiB1c2VyLnVzZXJfaWQsXG4gICAgICAgIHVzZXJuYW1lOiB1c2VyLnVzZXJuYW1lLFxuICAgICAgICB1c2VybmFtZXNob3J0OiB1c2VyLnVzZXJuYW1lc2hvcnQsXG4gICAgICAgIHVzZXJpbWFnZTogdXNlci51c2VyaW1hZ2UsXG4gICAgICB9O1xuICAgIH0sXG4gICAgYXNzaWduVXNlcigpIHtcbiAgICAgIGlmICghdGhpcy5jaGFubmVsLm93bmVyIHx8IHRoaXMuY2hhbm5lbC5vd25lci51c2VyaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZXQgdXNlcm5hbWUgPSAnJztcbiAgICAgICAgbGV0IHVzZXJuYW1lc2hvcnQgPSAnJztcblxuICAgICAgICBpZiAodGhpcy5hcHBTZXNzLmZpcnN0bmFtZSkge1xuICAgICAgICAgIHVzZXJuYW1lICs9IHRoaXMuYXBwU2Vzcy5maXJzdG5hbWVbMF0udG9VcHBlckNhc2UoKSArIHRoaXMuYXBwU2Vzcy5maXJzdG5hbWUuc3Vic3RyKDEsIHRoaXMuYXBwU2Vzcy5maXJzdG5hbWUubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgdXNlcm5hbWVzaG9ydCArPSB0aGlzLmFwcFNlc3MuZmlyc3RuYW1lWzBdLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYXBwU2Vzcy5sYXN0bmFtZSkge1xuICAgICAgICAgIGlmICh1c2VybmFtZSAhPT0gJycpIHtcbiAgICAgICAgICAgIHVzZXJuYW1lICs9ICcgJztcbiAgICAgICAgICB9XG4gICAgICAgICAgdXNlcm5hbWUgKz0gdGhpcy5hcHBTZXNzLmxhc3RuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyB0aGlzLmFwcFNlc3MubGFzdG5hbWUuc3Vic3RyKDEsIHRoaXMuYXBwU2Vzcy5sYXN0bmFtZS5sZW5ndGggLSAxKTtcbiAgICAgICAgICB1c2VybmFtZXNob3J0ICs9IHRoaXMuYXBwU2Vzcy5sYXN0bmFtZVswXS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxvZ28gPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5hcHBTZXNzLnVzZXJMb2dvICE9PSAnJykge1xuICAgICAgICAgIGxvZ28gPSB0aGlzLmFwcFNlc3MudXNlckxvZ287XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoYW5uZWwub3duZXIgPSB7XG4gICAgICAgICAgdXNlcmlkOiB0aGlzLmFwcFNlc3MuaWQsXG4gICAgICAgICAgdXNlcm5hbWU6IHVzZXJuYW1lLFxuICAgICAgICAgIHVzZXJuYW1lc2hvcnQ6IHVzZXJuYW1lc2hvcnQsXG4gICAgICAgICAgdXNlcmltYWdlOiBsb2dvLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sXG4gICAgdW5saW5rRG9jKEluZGV4KSB7XG4gICAgICB0aGlzLmNoYW5uZWwuZG9jdW1lbnRzLnNwbGljZShJbmRleCwgMSk7XG4gICAgfSxcbiAgICByZW1vdmVJY29uKGluZGV4KSB7XG4gICAgICB0aGlzLmNoYW5uZWwuaWNvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9LFxuXG4gICAgb3Blbk1vZGFsKG1vZGFsTmFtZSwgaW5kZXgpIHtcbiAgICAgIGlmIChtb2RhbE5hbWUgPT0gJyNzZWxlY3RJY29uTW9kYWwnKSB7XG4gICAgICAgIHRoaXMuaWNvbkluZGV4ID0gaW5kZXg7XG4gICAgICB9XG4gICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICQobW9kYWxOYW1lKS5tb2RhbCgnc2hvdycpO1xuICAgICAgfSk7XG4gICAgICAkKG1vZGFsTmFtZSkubW9kYWwoJ3Nob3cnKTtcbiAgICB9LFxuXG4gICAgcHJlcGFyZUN1c3RvbUZpZWxkT3B0aW9uKGZpZWxkT2JqZWN0KSB7XG4gICAgICBsZXQgdGl0bGUgPSBmaWVsZE9iamVjdC5kZXNjcmlwdGlvbiA/IGZpZWxkT2JqZWN0LmRlc2NyaXB0aW9uIDogZmllbGRPYmplY3QudGl0bGU7XG4gICAgICByZXR1cm4gJzxzcGFuIGNsYXNzPVwiY3VzdG9tbGlzdENvbG9yXCIgdGl0bGU9XCInICsgdGl0bGUgKyAnXCI+PGkgY2xhc3M9XCJmYSBmYS1zdG9wXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgc3R5bGU9XCJjb2xvcjonICsgZmllbGRPYmplY3QuY29sb3IgKyAnXCI+PC9pPicgKyBmaWVsZE9iamVjdC50aXRsZSArICc8L3NwYW4+JztcbiAgICB9LFxuXG4gICAgdXNlckV4aXN0cyhjb293bmVycykge1xuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgaWYgKGNvb3duZXJzICYmIGNvb3duZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIGNvb3duZXJzLnNvbWUoZnVuY3Rpb24oY28pIHtcbiAgICAgICAgICByZXR1cm4gY28udXNlcmlkID09PSBzZWxmLmFwcFNlc3MuaWQ7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gICAgc2V0VG9DaGFubmVsKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLnR5cGUgPT0gJ2RvY3VtZW50cycpIHtcbiAgICAgICAgdGhpcy5jaGFubmVsLmRvY3VtZW50cy5wdXNoKGRhdGEub2JqKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIE1lZGlhXG4gICAgICovXG4gICAgdW5saW5rTWVkaWEoKSB7XG4gICAgICB0aGlzLmNoYW5uZWwubWVkaWEgPSAnJztcbiAgICB9LFxuICAgIG9wZW5NZWRpYSgpIHtcbiAgICAgICQoJyNtZWRpYU1vZGFsJyArIHRoaXMuY29tcG9uZW50Rm9yKS5tb2RhbCgnc2hvdycpO1xuICAgIH0sXG4gICAgZ2V0S3BpKGtwaSwgdHlwZSwga2luZGV4KSB7XG4gICAgICByZXR1cm47XG4gICAgICAvLyB0aGlzLmtwaUluZGV4ID0ga2luZGV4O1xuICAgICAgLy8gaWYgKHR5cGUgPT0gJ3ZpZXcnKSB7XG4gICAgICAvLyAgIC8vIFRoZSB2aWV3IG1vZGVsLlxuICAgICAgLy8gICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICAvLyAgIGxvYWRlci5vcGVuKCk7XG4gICAgICAvLyAgIHRoaXMuJGh0dHBcbiAgICAgIC8vICAgICAucG9zdCgnL2FwaS9rcGlzL2dldEtQSURldGFpbCcsIHtwY19pZDoga3BpLnBjX2lkfSlcbiAgICAgIC8vICAgICAudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuICAgICAgLy8gICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAyMDApIHtcbiAgICAgIC8vICAgICAgICAgc2VsZi4kc2V0KGtwaSwgJ2pvdXJuZXltYXBzJywgcmVzcG9uc2UuZGF0YS5kYXRhLmpvdXJuZXltYXBzKTtcbiAgICAgIC8vICAgICAgICAgJCgnI3ZpZXdLcGlNb2RhbCcpLm1vZGFsKCdzaG93Jyk7XG4gICAgICAvLyAgICAgICAgIGxvYWRlci5jbG9zZSgpO1xuICAgICAgLy8gICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIC8vICAgICAgIH1cbiAgICAgIC8vICAgICB9KVxuICAgICAgLy8gICAgIC5jYXRjaChmdW5jdGlvbihlcnJvcikge1xuICAgICAgLy8gICAgICAgbG9hZGVyLmNsb3NlKCk7XG4gICAgICAvLyAgICAgfSk7XG4gICAgICAvLyB9IGVsc2Uge1xuICAgICAgLy8gICAkKCcjY3JlYXRlS3BpTW9kYWwnKS5tb2RhbCgnc2hvdycpO1xuICAgICAgLy8gfVxuICAgIH0sXG4gICAgZGVsZXRlS3BpKGtwaXMsIGluZGV4KSB7XG4gICAgICB0aGlzLmNoYW5uZWwua3Bpcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH0sXG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgbGV0IHNlbGYgPSB0aGlzO1xuXG4gICAgdGhpcy4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgJCgnLnNlbGVjdHBpY2tlcicpLnNlbGVjdHBpY2tlcigpO1xuICAgICAgJChcIltyZWw9J3Rvb2x0aXAnXVwiKS50b29sdGlwKCk7XG4gICAgfSk7XG5cbiAgICAkKCcjY2hhbm5lbEZvcm0nKVxuICAgICAgLm9mZignaGlkZS5icy5tb2RhbCcpXG4gICAgICAub24oJ2hpZGUuYnMubW9kYWwnLCBmdW5jdGlvbihlKSB7XG4gICAgICAgIHNlbGYuY2xlYXJGaWVsZHMoKTtcbiAgICAgIH0pO1xuICAgICQoJyNzZWxlY3RJY29uTW9kYWwnKVxuICAgICAgLm9mZignaGlkZS5icy5tb2RhbCcpXG4gICAgICAub24oJ2hpZGUuYnMubW9kYWwnLCBmdW5jdGlvbihlKSB7XG4gICAgICAgIHNlbGYuaWNvbkluZGV4ID0gLTE7XG4gICAgICB9KTtcbiAgICAgIGV2ZW50QnVzLiRvZmYoJ3NldC10by1jaGFubmVsLScgKyB0aGlzLmNvbXBvbmVudEZvcikuJG9uKCdzZXQtdG8tY2hhbm5lbC0nICsgdGhpcy5jb21wb25lbnRGb3IsIGRhdGEgPT4ge1xuICAgICAgc2VsZi5zZXRUb0NoYW5uZWwoZGF0YSk7XG4gICAgfSk7XG4gIH1cbn07XG48L3NjcmlwdD5cbjxzdHlsZSBzY29wZWQ+XG4uZGlzYWJsZWQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuPC9zdHlsZT5cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9jaGFubmVscy92dWUvY29tcG9uZW50cy9jb21tb24vY2hhbm5lbHMvQ2hhbm5lbEZvcm0udnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5kcm9wZG93bi5rcGlXaWRnZXREcm9wZG93bjpob3ZlciAuZHJvcGRvd24tbWVudSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tdG9wOiAtMTZweCAhaW1wb3J0YW50O1xuICBtYXJnaW4tbGVmdDogMTlweCAhaW1wb3J0YW50O1xufVxuXG4ucGVyZm9ybWFuY2UtaGVhZGluZyB7XG4gIGZvbnQtc2l6ZTogMTBweCAhaW1wb3J0YW50O1xufVxuXG4ucGVyZm9ybWFuY2UtYm94IHtcbiAgcGFkZGluZzogOHB4ICFpbXBvcnRhbnQ7XG4gIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbn1cblxuLnBlcmZvcm1hbmNlLWFycm93IHtcbiAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG59XG5cbi5wZXJmb3JtYW5jZS1hcnJvdy1pY29uIHtcbiAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG59XG5cbi5wZXJmb3JtYW5jZS1yb3cge1xuICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgZ2FwOiA2cHggIWltcG9ydGFudDtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi93aWRnZXRzL0twaS52dWUiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLmRpc2FibGVkIC5kcm9wZG93bi10b2dnbGU6OmFmdGVyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9jaGFubmVscy9BaUNoYW5uZWxQcmV2aWV3LnZ1ZSIsIjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb24+XG4gICAgPCEtLSBBZGQvRWRpdCBQZXJzb25hIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlIGdsb2JhbC1tb2RhbC1mdWxsICBtb2RhbHNjcm9sbGJhck9uZSBvdmVyZmxvdy15XCIgaWQ9XCJjcmVhdGVQZXJzb25hc01vZGFsXCIgZGF0YS1mb2N1cz1cImZhbHNlXCJcbiAgICAgIHRhYmluZGV4PVwiLTFcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwiYWRkV2lkZ2V0TW9kYWxMYWJlbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZ1wiIHJvbGU9XCJkb2N1bWVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgICAgICAgICA8IS0tIGJyZWFkY3J1bWIgbWVudSAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYnJlYWRjcnVtYi1taWxreW1hcFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGFsaWduLXNlbGYtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cIi9tYXBwaW5nXCIgY2xhc3M9XCJob21lXCI+PGkgY2xhc3M9XCJmYSBmYS1ob21lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiL3VzZXJtYW5hZ2VtZW50L2NoYW5uZWxzXCI+e3sgYXBwVHJhbnMuY29tbW9uLmNvbnRlbnQgfX08L2E+XG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIEBjbGljaz1cImNsb3NlUGVyc29uYU1vZGFsKClcIj57eyBhcHBUcmFucy5iYXNlLnBlcnNvbmFzIH19PC9hPlxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIjXCIgY2xhc3M9XCJhY3RpdmVcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHBlcnNvbmEucGVyc29uYV9pZCA/IGFwcFRyYW5zLmNvbW1vbi5lZGl0ICsgJyAnIDogYXBwVHJhbnMuY29tbW9uLmNyZWF0ZSArICcgJyB9fVxuICAgICAgICAgICAgICAgICAge3sgcGVyc29uYVB1YmxpY1R5cGUgKyBwZXJzb25hVGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XCJwZXJzb25hLnB1YmxpYyA9PSAxIHx8IChwZXJzb25hLnB1YmxpYyA9PSBudWxsICYmIHRhYiA9PSAyKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwib3VyUGVyc29uYUljb25Sb3VuZCBtbC0xMCBtdC0yLXJldmVyc2VcIlxuICAgICAgICAgICAgICAgICAgICB2LWN1c3RvbXRvb2x0aXA6Ym90dG9tPVwiYXBwVHJhbnMuY29tbW9uX2NyZWF0ZV9tZXNzYWdlcy52ZXJpZmllZF9pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiL2J1bmRsZXMvbWFwL2ltYWdlcy9pbmFjdGl2ZXVzZXJzaWNvbi13LXN2Zy5zdmdcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gSGVhZGluZyB0b3AgYmxvY2sgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBhbGlnbi1zZWxmLWNlbnRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgPGgxIGNsYXNzPVwibWFpbmhlYWRcIj57eyBwZXJzb25hLnBlcnNvbmFfaWQgPyBhcHBUcmFucy5jb21tb24uZWRpdCArICcgJyA6IGFwcFRyYW5zLmNvbW1vbi5jcmVhdGUgKyAnICdcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICB7eyBwZXJzb25hUHVibGljVHlwZSArIHBlcnNvbmFUaXRsZSB9fVxuICAgICAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgZC1mbGV4IGFsaWduLXNlbGYtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGdsb2JhbC1idG4tbWQgYm9yZGVyZWQtdHJhbnNwYXJlbnRidG5cIiBAY2xpY2s9XCJjbG9zZVBlcnNvbmFNb2RhbCgpXCI+XG4gICAgICAgICAgICAgICAgICB7eyBhcHBUcmFucy5jb21tb24uY2FuY2VsIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBnbG9iYWwtYnRuLW1kIGdyYWRpZW50YnRuIG1sLTIwXCJcbiAgICAgICAgICAgICAgICAgIEBjbGljaz1cInBlcnNvbmEucGVyc29uYV9pZCA/IG9wZW5Nb2RhbCgnd2FyblBlcnNvbmEnKSA6IHNhdmVQZXJzb25hKClcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZmEgZmEtcGx1c1wiIHYtaWY9XCIhcGVyc29uYS5wZXJzb25hX2lkXCI+PC9pPlxuICAgICAgICAgICAgICAgICAge3sgcGVyc29uYS5wZXJzb25hX2lkID8gYXBwVHJhbnMuY29tbW9uLnNhdmUgOiBhcHBUcmFucy5jb21tb24uY3JlYXRlICsgJyAnICsgcGVyc29uYVRpdGxlIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIFBlcnNvbmEgRGV0YWlscyBCb3hlcyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBwLTBcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJzdWJoZWFkXCI+e3sgYXBwVHJhbnMuYmFzZS5wZXJzb25hX2RldGFpbHMgfX08L2gyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBwLTBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTIgIGQtZmxleCBtYi0zMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLWNvbXBvbmVudC1ib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93ICBtYi0zMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3cganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVkaWFkZEltYWdlIHBlcnNvbmEtcHJvZmlsZSB2aWV3SW1hZ2UgZC1mbGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwib3Blbk1vZGFsKCdtZWRpYU1vZGFsJyArIHBlcnNvbmFGb3IpXCIgdi1pZj1cIiFwZXJzb25hLmltYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1zZWxmLWNlbnRlciB0ZXh0LWNlbnRlciBtZWRpYWltYWdlSW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nVXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVByZXZpZXdcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZGF0YS10b2dnbGU9XCJ0b29sdGlwXCIgOnRpdGxlPVwiYXBwVHJhbnMuY29tbW9uLmFkZF9tZWRpYVwiIGNsYXNzPVwicGx1c2ljb25cIj48aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS1wbHVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVkaWFkZEltYWdlIHBlcnNvbmEtcHJvZmlsZSBwZXJzb25hVXBsb2FkSWNvbiBhZGRJbWFnZSB2aWV3SW1hZ2UgZC1mbGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1lbHNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHYtaWY9XCJwZXJzb25hLmltYWdlXCIgOnNyYz1cInBlcnNvbmEuaW1hZ2VcIiBjbGFzcz1cImVwaXNvZGVJbWFnZSBwZXJzb25hUHJvZmlsZUltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJFcGlzb2RlIEltYWdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZWxldGVlcGlzb2RlSW1hZ2VcIiBAY2xpY2s9XCJ1bmxpbmtQcm9maWxlKClcIj48aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS10cmFzaFwiPjwvaT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLXNlbGYtY2VudGVyIHRleHQtY2VudGVyIG1lZGlhaW1hZ2VJbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWdVcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibS0wXCIgQGNsaWNrPVwib3Blbk1vZGFsKCdtZWRpYU1vZGFsJyArIHBlcnNvbmFGb3IpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiIDp0aXRsZT1cImFwcFRyYW5zLmNvbW1vbi5hZGRfbWVkaWFcIiBjbGFzcz1cInBsdXNpY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW5jaWxcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JleWJnXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93ICBtYi0zMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlYWQtbGFiZWwgbWItMjBcIj57eyBhcHBUcmFucy5jb21tb24ucXVvdGUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxja2VkaXRvciBwbGFjZWhvbGRlcj1cIlwiIGNsYXNzPVwiZm9ybS1jb250cm9sIG1tLXRleHRhcmVhLW1kIG0tMCBlZGl0b3ItaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbC50cmltPVwicGVyc29uYS5xdW90ZVwiIDplZGl0b3I9XCJlZGl0b3IuZWRpdG9yXCIgOmNvbmZpZz1cImVkaXRvci5lZGl0b3JDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZy1uYW1lPVwiZGl2XCI+PC9ja2VkaXRvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJvdyBkLW5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWFkLWxhYmVsIG1iLTIwXCI+SW5mbHVlbmNlIExldmVsPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIHNlbGVjdHBpY2tlciBtbS1zZWxlY3Qtc21cIiBkYXRhLXNpemU9XCI1XCIgbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWFjdGlvbnMtYm94PVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24+VGVzdCBsZXZlbCBPbmUgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj5UZXN0IGxldmVsIFR3byA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPlRlc3QgbGV2ZWwgVGhyZWUgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj5UZXN0IGxldmVsIEZvdXIgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj5UZXN0IGxldmVsIEZpdmUgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj5UZXN0IGxldmVsIFNpeCA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgIGQtZmxleCAgbWItMzBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1jb21wb25lbnQtYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyAgbWItMzBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlYWQtbGFiZWwgbWItMjBcIj57eyBhcHBUcmFucy5iYXNlLnBlcnNvbmEgfX0ge3sgYXBwVHJhbnMuY29tbW9uLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3VwPio8L3N1cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgOmRpc2FibGVkPVwibW9kZSA9PSAxICYmIHBlcnNvbmEucHVibGljID09IDFcIiB2LW1vZGVsLnRyaW09XCJwZXJzb25hLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIG1tLWlucHV0LXNtXCIgdHlwZT1cInRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZGFuZ2VyIGVycm9ydGV4dFwiIHYtaWY9XCJwZXJzb25hLm5hbWUgPT0gJycgJiYgc3VibWl0dGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBwVHJhbnMuY29tbW9uLmVycm9yX21lc3NhZ2VzLm5hbWVfcmVxdWlyZWQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlYWQtbGFiZWwgIG1iLTIwXCI+e3sgYXBwVHJhbnMuY29tbW9uLm5pY2tfbmFtZSB9fSA8c3VwPio8L3N1cD48L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCA6ZGlzYWJsZWQ9XCJtb2RlID09IDEgJiYgcGVyc29uYS5wdWJsaWMgPT0gMVwiIHYtbW9kZWwudHJpbT1cInBlcnNvbmEubmlja19uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBtbS1pbnB1dC1zbVwiIHR5cGU9XCJ0ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWRhbmdlciBlcnJvcnRleHRcIiB2LWlmPVwicGVyc29uYS5uaWNrX25hbWUgPT0gJycgJiYgc3VibWl0dGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBwVHJhbnMuY29tbW9uLmVycm9yX21lc3NhZ2VzLm5pY2tuYW1lX3JlcXVpcmVkIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2wtNCBkLW5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWFkLWxhYmVsICBtYi0yMFwiPkdyb3VwPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIHNlbGVjdHBpY2tlciBtbS1zZWxlY3Qtc21cIiBkYXRhLXNpemU9XCI1XCIgbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWFjdGlvbnMtYm94PVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24+R3JvdXAgT25lIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24+R3JvdXAgVHdvIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24+R3JvdXAgVGhyZWUgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj5Hcm91cCBGb3VyIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24+R3JvdXAgRml2ZSA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPkdyb3VwIFNpeCA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyAgbWItMzBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWFkLWxhYmVsIG1iLTIwXCI+e3sgYXBwVHJhbnMuYmFzZS5wZXJzb25hX2JpbyB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNrZWRpdG9yIDpkaXNhYmxlZD1cIm1vZGUgPT0gMSAmJiBwZXJzb25hLnB1YmxpYyA9PSAxXCIgcGxhY2Vob2xkZXI9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIG1tLXRleHRhcmVhLW1kIG0tMCBlZGl0b3ItaXRlbVwiIHYtbW9kZWwudHJpbT1cInBlcnNvbmEuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDplZGl0b3I9XCJlZGl0b3IuZWRpdG9yXCIgOmNvbmZpZz1cImVkaXRvci5lZGl0b3JDb25maWdcIiB0YWctbmFtZT1cImRpdlwiPjwvY2tlZGl0b3I+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3cgZC1ub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWFkLWxhYmVsIG1iLTIwXCI+VHJhaXRzPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbW0taW5wdXQtc21cIiB0eXBlPVwidGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWFkLWxhYmVsICBtYi0yMFwiPiZuYnNwOzwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIG1tLWlucHV0LXNtXCIgdHlwZT1cInRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVhZC1sYWJlbCAgbWItMjBcIj4mbmJzcDs8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBtbS1pbnB1dC1zbVwiIHR5cGU9XCJ0ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlYWQtbGFiZWwgIG1iLTIwXCI+Jm5ic3A7PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbW0taW5wdXQtc21cIiB0eXBlPVwidGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01ICBkLWZsZXggIG1iLTMwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnbG9iYWwtY29tcG9uZW50LWJveFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOCBkLWZsZXggYWxpZ24tc2VsZi1jZW50ZXIganVzdGlmeS1jb250ZW50LXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVhZC1sYWJlbFwiPnt7IGFwcFRyYW5zLmJhc2Uuam9ic190b19iZV9kb25lIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgZC1mbGV4IGFsaWduLXNlbGYtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjb3VudC1kaXNwbGF5XCI+e3sgcGVyc29uYS5qb2JzID8gcGVyc29uYS5qb2JzLmxlbmd0aCA6IDAgfX0ge3sgYXBwVHJhbnMuY29tbW9uLml0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93ICBtYi0yMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2F2ZS1nbGFiYWwtaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJtbS1pbnB1dC1zbSBmb3JtLWNvbnRyb2xcIiByZWY9XCJqb2JJbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6cGxhY2Vob2xkZXI9XCJhcHBUcmFucy5jb21tb24udHlwZV9oZXJlXCIgQGtleXVwLmVudGVyPVwiYWRkSm9iXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYXZlXCIgQGNsaWNrPVwiYWRkSm9iXCI+e3sgYXBwVHJhbnMuY29tbW9uLnNhdmUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkYXRhLWNvbXBvbmVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW1cIiB2LWZvcj1cIihqb2IsIGopIGluIHBlcnNvbmEuam9ic1wiIDprZXk9XCJqICsgJ2pvYnMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LXRvb2x0aXAudG9wPVwieyBjb250ZW50OiBnZXRUaXRsZShqb2Iual90aXRsZSksIGh0bWw6IHRydWUgfVwiPnt7IGpvYi5qX3RpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZWxldGVcIiBAY2xpY2s9XCJyZW1vdmVJdGVtKHBlcnNvbmEuam9icywgailcIj7Dlzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgIGQtZmxleCAgbWItMzBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1jb21wb25lbnQtYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0yMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04IGQtZmxleCBhbGlnbi1zZWxmLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtc3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWFkLWxhYmVsXCI+IHt7IGFwcFRyYW5zLmJhc2UuZ2FpbnMgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBkLWZsZXggYWxpZ24tc2VsZi1jZW50ZXIganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImNvdW50LWRpc3BsYXlcIj57eyBwZXJzb25hLmdhaW5zID8gcGVyc29uYS5nYWlucy5sZW5ndGggOiAwIH19IHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwVHJhbnMuY29tbW9uLml0ZW1zIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyAgbWItMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNhdmUtZ2xhYmFsLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwibW0taW5wdXQtc20gZm9ybS1jb250cm9sXCIgcmVmPVwiZ2FpbklucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpwbGFjZWhvbGRlcj1cImFwcFRyYW5zLmNvbW1vbi50eXBlX2hlcmVcIiBAa2V5dXAuZW50ZXI9XCJhZGRHYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYXZlXCIgQGNsaWNrPVwiYWRkR2FpblwiPiB7eyBhcHBUcmFucy5jb21tb24uc2F2ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGRhdGEtY29tcG9uZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbVwiIHYtZm9yPVwiKGdhaW4sIGcpIGluIHBlcnNvbmEuZ2FpbnNcIiA6a2V5PVwiZyArICdnYWlucydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtdG9vbHRpcC50b3A9XCJ7IGNvbnRlbnQ6IGdldFRpdGxlKGdhaW4uZ19uYW1lKSwgaHRtbDogdHJ1ZSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2Fpbi5nX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlbGV0ZVwiIEBjbGljaz1cInJlbW92ZUl0ZW0ocGVyc29uYS5nYWlucywgZylcIj7Dlzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgIGQtZmxleCAgbWItMzBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1jb21wb25lbnQtYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0yMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04IGQtZmxleCBhbGlnbi1zZWxmLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtc3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWFkLWxhYmVsXCI+IHt7IGFwcFRyYW5zLmNvbW1vbi5wYWlucyB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGQtZmxleCBhbGlnbi1zZWxmLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY291bnQtZGlzcGxheVwiPnt7IHBlcnNvbmEucGFpbnMgPyBwZXJzb25hLnBhaW5zLmxlbmd0aCA6IDAgfX0ge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBUcmFucy5jb21tb24uaXRlbXMgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93ICBtYi0yMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2F2ZS1nbGFiYWwtaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJtbS1pbnB1dC1zbSBmb3JtLWNvbnRyb2xcIiByZWY9XCJwYWluSW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnBsYWNlaG9sZGVyPVwiYXBwVHJhbnMuY29tbW9uLnR5cGVfaGVyZVwiIEBrZXl1cC5lbnRlcj1cImFkZFBhaW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNhdmVcIiBAY2xpY2s9XCJhZGRQYWluXCI+IHt7IGFwcFRyYW5zLmNvbW1vbi5zYXZlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZGF0YS1jb21wb25lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtXCIgdi1mb3I9XCIocGFpbiwgaikgaW4gcGVyc29uYS5wYWluc1wiIDprZXk9XCJqICsgJ3BhaW5zJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdi10b29sdGlwLnRvcD1cInsgY29udGVudDogZ2V0VGl0bGUocGFpbi5wX25hbWUpLCBodG1sOiB0cnVlIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwYWluLnBfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVsZXRlXCIgQGNsaWNrPVwicmVtb3ZlSXRlbShwZXJzb25hLnBhaW5zLCBqKVwiPsOXPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBEaW1lbnNpb25zIEJveGVzIC0tPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCIgdi1jaGVja0FjY2Vzcz1cInsgY29uZmlnczogYXBwU2Vzcy5jb25maWd1cmF0aW9ucywgbW9kdWxlOiAnZGltZW5zaW9ucycgfVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHAtMFwiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInN1YmhlYWRcIj57eyBhcHBTZXNzLmxhYmVscyA/IGFwcFNlc3MubGFiZWxzLmRpbWVuc2lvbnMuZGltZW5zaW9ucyA6IGFwcFRyYW5zLmJhc2UuZGltZW5zaW9uc1xuICAgICAgICAgICAgICAgICAgfX08L2gyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBwLTBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgIGQtZmxleCBtYi0zMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLWNvbXBvbmVudC1ib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTggZC1mbGV4IGFsaWduLXNlbGYtY2VudGVyIGp1c3RpZnktY29udGVudC1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlYWQtbGFiZWxcIj57eyBhcHBTZXNzLmxhYmVscyA/IGFwcFNlc3MubGFiZWxzLmRpbWVuc2lvbnMuYnJhbmRzIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBUcmFucy5iYXNlLmJyYW5kcyB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGQtZmxleCBhbGlnbi1zZWxmLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY291bnQtZGlzcGxheVwiPnt7IHBlcnNvbmEuYnJhbmRzID8gcGVyc29uYS5icmFuZHMubGVuZ3RoIDogMCB9fSB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcFRyYW5zLmNvbW1vbi5pdGVtcyB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgIG1iLTIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGZpbHRlcmNoZWNrYm94bWFwcyBnbG9iYWwtZmlsdGVyLWJveCBnbG9iYWwtYnJhbmQtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3Qgdi1tb2RlbD1cInBlcnNvbmEuYnJhbmRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBtbS1zZWxlY3Qtc20gc2VsZWN0cGlja2VyIHNlbGVjdHF1ZSBicmFuZHNGaWx0ZXIgcXVlc3Rpb25icmFuZC1zZWxlY3QgYnJhbmRzZWxlY3RwaWNrZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtc2l6ZT1cIjVcIiBtdWx0aXBsZSBkYXRhLWFjdGlvbnMtYm94PVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOnRpdGxlPVwiYXBwVHJhbnMuY29tbW9uLmNob29zZSArICcgJyArIGFwcFNlc3MubGFiZWxzID8gYXBwU2Vzcy5sYWJlbHMuZGltZW5zaW9ucy5icmFuZCA6IGFwcFRyYW5zLmJhc2UuYnJhbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHYtZm9yPVwiKGJyYW5kLCBpbmRleCkgaW4gYWRtaW5fYnJhbmRzXCIgOnZhbHVlPVwiYnJhbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmtleT1cIidicmFuZCcgKyBpbmRleFwiPnt7IGJyYW5kLmJfbmFtZSB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG9wdGlvbiB2LWZvcj1cIihicmFuZCwgaW5kZXgpIGluIGFkbWluX2JyYW5kc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGF0YS1jb250ZW50PVwiZ2V0SW1nVXJsKGJyYW5kLmJfaW1hZ2UsIGJyYW5kLmJfbmFtZSlcIiA6dmFsdWU9XCJicmFuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6a2V5PVwiJ2JyYW5kJyArIGluZGV4XCI+PC9vcHRpb24+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBicmFuZHMtY3JlYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJkLWZsZXhcIiB2LWZvcj1cIihicmFuZCwgYmluZCkgaW4gcGVyc29uYS5icmFuZHNcIiA6a2V5PVwiYmluZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LXRvb2x0aXAudG9wPVwieyBjb250ZW50OiBnZXRUaXRsZShicmFuZC5iX2Rlc2NyaXB0aW9uKSwgaHRtbDogdHJ1ZSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmxvY2stZGltZW5zaW9ubGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiYWxpZ24tc2VsZi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIDpzcmM9XCJicmFuZC5iX2ltYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWxpZ24tc2VsZi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57eyBicmFuZC5iX25hbWUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZWxldGVcIiBAY2xpY2s9XCJ1bmxpbmtEaW1lbnNpb24oYmluZCwgJ2JyYW5kJylcIj7Dlzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiAgZC1mbGV4ICBtYi0zMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLWNvbXBvbmVudC1ib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTggZC1mbGV4IGFsaWduLXNlbGYtY2VudGVyIGp1c3RpZnktY29udGVudC1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlYWQtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcHBTZXNzLmxhYmVscyA/IGFwcFNlc3MubGFiZWxzLmRpbWVuc2lvbnMuY3VzdG9tZXJTZWdtZW50cyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBUcmFucy5iYXNlLmN1c3RvbWVyX3NlZ21lbnRzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGQtZmxleCBhbGlnbi1zZWxmLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY291bnQtZGlzcGxheVwiPnt7IHBlcnNvbmEuY3MubGVuZ3RoIH19IGl0ZW1zPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyAgbWItMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCB2LW1vZGVsPVwicGVyc29uYS5jc1wiIGNsYXNzPVwiZm9ybS1jb250cm9sIHNlbGVjdHBpY2tlciBtbS1zZWxlY3Qtc20gY3NzZWxlY3RwaWNrZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtc2l6ZT1cIjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDp0aXRsZT1cInBlcnNvbmEuY3MubGVuZ3RoID8gbnVsbCA6IGFwcFRyYW5zLmNvbW1vbi5jaG9vc2UgKyAnICcgKyBhcHBTZXNzLmxhYmVscyA/IGFwcFNlc3MubGFiZWxzLmRpbWVuc2lvbnMuY3VzdG9tZXJTZWdtZW50cyA6IGFwcFRyYW5zLmJhc2UuY3VzdG9tZXJfc2VnbWVudHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIGRhdGEtYWN0aW9ucy1ib3g9XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2LWZvcj1cIihjcywgaW5kZXgpIGluIGNfc2VnbWVudHNcIiA6dmFsdWU9XCJjc1wiIDprZXk9XCInY3MnICsgaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNzLmNzX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGRhdGEtY29tcG9uZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbVwiIHYtZm9yPVwiKGNzLCBpbmRleCkgaW4gcGVyc29uYS5jc1wiIDp2YWx1ZT1cImNzXCIgOmtleT1cIidzY3MnICsgaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtdG9vbHRpcC50b3A9XCJ7IGNvbnRlbnQ6IGdldFRpdGxlKGNzLmNzX2Rlc2NyaXB0aW9uKSwgaHRtbDogdHJ1ZSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY3MuY3NfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVsZXRlXCIgQGNsaWNrPVwidW5saW5rRGltZW5zaW9uKGluZGV4LCAnY3MnKVwiPsOXPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiAgZC1mbGV4ICBtYi0zMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLWNvbXBvbmVudC1ib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTggZC1mbGV4IGFsaWduLXNlbGYtY2VudGVyIGp1c3RpZnktY29udGVudC1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlYWQtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcHBTZXNzLmxhYmVscyA/IGFwcFNlc3MubGFiZWxzLmRpbWVuc2lvbnMucHJvZHVjdHMgOiBhcHBUcmFucy5iYXNlLnByb2R1Y3RzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGQtZmxleCBhbGlnbi1zZWxmLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY291bnQtZGlzcGxheVwiPnt7IHBlcnNvbmEucHJvZHVjdC5sZW5ndGggfX0ge3sgYXBwVHJhbnMuY29tbW9uLml0ZW1zIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyAgbWItMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCB2LW1vZGVsPVwicGVyc29uYS5wcm9kdWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBzZWxlY3RwaWNrZXIgbW0tc2VsZWN0LXNtIHByb2R1Y3RzZWxlY3RwaWNrZXJcIiBkYXRhLXNpemU9XCI1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dGl0bGU9XCJwZXJzb25hLnByb2R1Y3QubGVuZ3RoID8gbnVsbCA6IGFwcFRyYW5zLmNvbW1vbi5jaG9vc2UgKyAnICcgKyBhcHBTZXNzLmxhYmVscyA/IGFwcFNlc3MubGFiZWxzLmRpbWVuc2lvbnMucHJvZHVjdHMgOiBhcHBUcmFucy5iYXNlLnByb2R1Y3RzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSBkYXRhLWFjdGlvbnMtYm94PVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdi1mb3I9XCIocHIsIGluZGV4KSBpbiBwcm9kdWN0c1wiIDp2YWx1ZT1cInByXCIgOmtleT1cIidwcicgKyBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHIucF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkYXRhLWNvbXBvbmVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW1cIiB2LWZvcj1cIihwciwgaW5kZXgpIGluIHBlcnNvbmEucHJvZHVjdFwiIDp2YWx1ZT1cInByXCIgOmtleT1cIidzcHInICsgaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtdG9vbHRpcC50b3A9XCJ7IGNvbnRlbnQ6IGdldFRpdGxlKHByLnBfZGVzY3JpcHRpb24pLCBodG1sOiB0cnVlIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwci5wX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlbGV0ZVwiIEBjbGljaz1cInVubGlua0RpbWVuc2lvbihpbmRleCwgJ3Byb2R1Y3QnKVwiPsOXPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiAgZC1mbGV4ICBtYi0zMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLWNvbXBvbmVudC1ib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTggZC1mbGV4IGFsaWduLXNlbGYtY2VudGVyIGp1c3RpZnktY29udGVudC1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlYWQtbGFiZWxcIj57eyBhcHBTZXNzLmxhYmVscyA/IGFwcFNlc3MubGFiZWxzLmRpbWVuc2lvbnMuY291bnRyaWVzIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBUcmFucy5iYXNlLmNvdW50cmllcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBkLWZsZXggYWxpZ24tc2VsZi1jZW50ZXIganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImNvdW50LWRpc3BsYXlcIj57eyBwZXJzb25hLmNvdW50cmllcy5sZW5ndGggfX0ge3sgYXBwVHJhbnMuY29tbW9uLml0ZW1zIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyAgbWItMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCB2LW1vZGVsPVwicGVyc29uYS5jb3VudHJpZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHNlbGVjdHBpY2tlciBtbS1zZWxlY3Qtc20gY291bnRyeXNlbGVjdHBpY2tlclwiIGRhdGEtc2l6ZT1cIjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDp0aXRsZT1cInBlcnNvbmEuY291bnRyaWVzLmxlbmd0aCA/IG51bGwgOiBhcHBUcmFucy5jb21tb24uY2hvb3NlICsgJyAnICsgYXBwU2Vzcy5sYWJlbHMgPyBhcHBTZXNzLmxhYmVscy5kaW1lbnNpb25zLmNvdW50cmllcyA6IGFwcFRyYW5zLmJhc2UuY291bnRyaWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSBkYXRhLWFjdGlvbnMtYm94PVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdi1mb3I9XCIoY291bnRyeSwgaW5kZXgpIGluIGNvdW50cmllc1wiIDp2YWx1ZT1cImNvdW50cnlcIiA6a2V5PVwiJ2NvdW50cnknICsgaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvdW50cnkubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZGF0YS1jb21wb25lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtXCIgdi1mb3I9XCIoY291bnRyeSwgaW5kZXgpIGluIHBlcnNvbmEuY291bnRyaWVzXCIgOnZhbHVlPVwiY291bnRyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmtleT1cIidzY291bnRyeScgKyBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvdW50cnkubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVsZXRlXCIgQGNsaWNrPVwidW5saW5rRGltZW5zaW9uKGluZGV4LCAnY291bnRyeScpXCI+w5c8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIEN1c3RvbSBMaXN0IEJveGVzIC0tPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCIgdi1jaGVja0FjY2Vzcz1cInsgY29uZmlnczogYXBwU2Vzcy5jb25maWd1cmF0aW9ucywgbW9kdWxlOiAnY3VzdG9tTGlzdHMnIH1cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBwLTBcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJzdWJoZWFkXCI+IHt7IGFwcFRyYW5zLmJhc2UuY3VzdG9tX2xpc3RzIH19PC9oMj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIiB2LWZvcj1cIihjRmllbGRzLCBjZmkpIGluIGN1c3RvbV9maWVsZHNcIiA6a2V5PVwiJ2NmcycgKyBjZmlcIlxuICAgICAgICAgICAgICAgICAgOmNsYXNzPVwieyAnZC1ub25lJzogIWNGaWVsZHMudGl0bGUgfHwgIWNGaWVsZHMub3B0aW9ucyB8fCBjRmllbGRzLm9wdGlvbnMubGVuZ3RoID09IDAsICdoaWRlLWRpc3BsYXknOiBjRmllbGRzLnNob3dDdXN0b21MaXN0ICE9IDEgfVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyICBkLWZsZXggbWItMzBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLWNvbXBvbmVudC1ib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04IGQtZmxleCBhbGlnbi1zZWxmLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtc3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlYWQtbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi10b29sdGlwLnRvcD1cInsgY29udGVudDogZ2V0VGl0bGUoY0ZpZWxkcy5kZXNjcmlwdGlvbiksIGh0bWw6IHRydWUgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY0ZpZWxkcy50aXRsZSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBkLWZsZXggYWxpZ24tc2VsZi1jZW50ZXIganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY291bnQtZGlzcGxheVwiPnt7IHBlcnNvbmEuY3VzdG9tRmllbGRzW2NmaV0ubGVuZ3RoIH19IHt7IGFwcFRyYW5zLmNvbW1vbi5pdGVtcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgIG1iLTIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IHYtbW9kZWw9XCJwZXJzb25hLmN1c3RvbUZpZWxkc1tjZmldXCIgcmVmPVwiY2ZvMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGF0YS1tYXgtb3B0aW9ucz1cImNGaWVsZHMuaXNTaW5nbGVTZWxlY3Rpb24gPyAxIDogZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmRhdGEtbWF4LW9wdGlvbnMtdGV4dD1cIlsnU2luZ2xlIHNlbGVjdGlvbiBlbmFibGVkJ11cIiBtdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VsZWN0cGlja2VyIG1tLXNlbGVjdC1zbVwiIDpjbGFzcz1cIidjdXN0b21GaWVsZHNzZWxlY3RwaWNrZXItJyArIGNmaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXNpemU9XCI1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDp0aXRsZT1cInBlcnNvbmEuY3VzdG9tRmllbGRzW2NmaV0gJiYgcGVyc29uYS5jdXN0b21GaWVsZHNbY2ZpXS5sZW5ndGggPyBudWxsIDogY0ZpZWxkcy50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGF0YS1hY3Rpb25zLWJveD1cImNGaWVsZHMuaXNTaW5nbGVTZWxlY3Rpb24gPyBmYWxzZSA6IHRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdi1mb3I9XCIoY2ZvMSwgaW5kZXgpIGluIGNGaWVsZHMub3B0aW9uc1wiIDp2YWx1ZT1cImNmbzFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGF0YS1jb250ZW50PVwicHJlcGFyZUN1c3RvbUZpZWxkT3B0aW9uKGNmbzEpXCIgOmtleT1cIidjZm8xJyArIGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmRhdGEtc3VidGV4dD1cImNmbzEuZGVzY3JpcHRpb25cIj4gPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZGF0YS1jb21wb25lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW1cIiB2LWZvcj1cIihjZm8xLCBpbmRleCkgaW4gcGVyc29uYS5jdXN0b21GaWVsZHNbY2ZpXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY2ZvMS50aXRsZSA/IGNmbzEudGl0bGUgOiBjZm8xLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlbGV0ZVwiIEBjbGljaz1cInVubGlua0RpbWVuc2lvbihpbmRleCwgJ2N1c3RvbUZpZWxkcycsIGNmaSlcIj7Dlzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gTm90ZXMgYW5kIERvY3VtZW50cyBCb3hlcyAtLT5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHAtMFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBkLWZsZXgxIGQtbm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwic3ViaGVhZFwiPiB7eyBhcHBUcmFucy5jb21tb24ubm90ZXMgfX08L2gyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGQtZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwic3ViaGVhZFwiPiB7eyBhcHBUcmFucy5iYXNlLmRvY3VtZW50cyB9fTwvaDI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGQtZmxleDEgbWItMzAgZC1ub25lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnbG9iYWwtY29tcG9uZW50LWJveFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGFsaWduLXNlbGYtY2VudGVyIGp1c3RpZnktY29udGVudC1zdGFydCAgbWItMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWFkLWxhYmVsXCI+IHt7IGFwcFRyYW5zLmNvbW1vbi5ub3RlIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiAgbWItMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbW0taW5wdXQtc21cIiA6cGxhY2Vob2xkZXI9XCJhcHBUcmFucy5jb21tb24ubm90ZV90aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImZvcm0tY29udHJvbCBtbS10ZXh0YXJlYS1tZFwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBkLWZsZXggbWItMzBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1jb21wb25lbnQtYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyAgbWItMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOCBkLWZsZXggYWxpZ24tc2VsZi1jZW50ZXIganVzdGlmeS1jb250ZW50LXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVhZC1sYWJlbFwiPnt7IGFwcFRyYW5zLmJhc2UuZG9jdW1lbnRzIH19ICgge3sgYXBwVHJhbnMuY29tbW9uLm1heCB9fSAzKTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGQtZmxleCBhbGlnbi1zZWxmLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY291bnQtZGlzcGxheVwiPnt7IHBlcnNvbmEuZG9jdW1lbnRzID8gcGVyc29uYS5kb2N1bWVudHMubGVuZ3RoIDogMCB9fSB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcFRyYW5zLmNvbW1vbi5pdGVtcyB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgIG1iLTIwXCIgdi1pZj1cInBlcnNvbmEuZG9jdW1lbnRzICYmIHBlcnNvbmEuZG9jdW1lbnRzLmxlbmd0aCA8PSAyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gZ2xvYmFsLWJ0bi1zbSAgdXBsb2FkYnRuXCIgQGNsaWNrPVwib3Blbk1vZGFsKCdhZGREb2N1bWVudE1vZGFsJylcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcFRyYW5zLmNvbW1vbi5hZGQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcHBUcmFucy5iYXNlLmRvY3VtZW50cyB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyICBtYi0yMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jc2dsb2JhbC1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHYtZm9yPVwiKGRvYywgZCkgaW4gcGVyc29uYS5kb2N1bWVudHNcIiA6a2V5PVwiZCArICdkb2NzJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGUtdHlwZS1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyA6c3JjPVwiZ2V0RmlsZUljb24oZG9jLmRfdHlwZSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVsZXRlXCIgQGNsaWNrPVwicmVtb3ZlSXRlbShwZXJzb25hLmRvY3VtZW50cywgZClcIj7Dlzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0Pnt7IGRvYy5kX3JlYWxuYW1lIH19PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJkLW5vbmVcIj41TUI8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBTYXZpbmcgTGlua3MgQm90dG9tIC0tPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1iLTkwXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGFsaWduLXNlbGYtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGdsb2JhbC1idG4tbWQgYm9yZGVyZWQtdHJhbnNwYXJlbnRidG5cIiBAY2xpY2s9XCJjbG9zZVBlcnNvbmFNb2RhbCgpXCI+XG4gICAgICAgICAgICAgICAgICB7eyBhcHBUcmFucy5jb21tb24uY2FuY2VsIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBnbG9iYWwtYnRuLW1kIGdyYWRpZW50YnRuIG1sLTIwXCJcbiAgICAgICAgICAgICAgICAgIEBjbGljaz1cInBlcnNvbmEucGVyc29uYV9pZCA/IG9wZW5Nb2RhbCgnd2FyblBlcnNvbmEnKSA6IHNhdmVQZXJzb25hKClcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZmEgZmEtcGx1c1wiIHYtaWY9XCIhcGVyc29uYS5wZXJzb25hX2lkXCI+PC9pPlxuICAgICAgICAgICAgICAgICAge3sgcGVyc29uYS5wZXJzb25hX2lkID8gYXBwVHJhbnMuY29tbW9uLnNhdmUgOiBhcHBUcmFucy5jb21tb24uY3JlYXRlICsgJyAnICsgcGVyc29uYVRpdGxlIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLUVuZCBBZGQvRWRpdCBQZXJzb25hIC0tPlxuICAgIDwhLS0gQWRkIEltYWdlIFBvcHVwIC0tPlxuICAgIDxtZWRpYSBAY2xpY2tlZD1cInNhdmVNZWRpYVwiIDptZWRpYUZvcj1cInBlcnNvbmFGb3JcIj48L21lZGlhPlxuICAgIDwhLS1TdGFydCBTYXZlIFdhcm4gcGVyc29uYSBNb2RhbC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlIG1vZGFsYmcgbWFpbk1vZGFsXCIgaWQ9XCJ3YXJuUGVyc29uYVwiIHRhYmluZGV4PVwiLTFcIiByb2xlPVwiZGlhbG9nXCJcbiAgICAgIGFyaWEtbGFiZWxsZWRieT1cIndhcm5QZXJzb25hTW9kYWxMYWJlbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBpbnNpZ2h0LVdhcm5pbmcgbW9kYWwtZGlhbG9nLWNlbnRlcmVkXCIgcm9sZT1cImRvY3VtZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgPGgyIGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cbiAgICAgICAgICAgICAgPHN0cm9uZz48L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbW90aW9uLXRpdGxlXCI+e3sgYXBwVHJhbnMuY29tbW9uLndhcm5pbmcgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+XG4gICAgICAgICAgICAgIDxzcGFuPsOXPC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluc2lnaHRzQm9keSBwLTAgdGV4dC1sZWZ0IGluc2lnaHRXYXJuaW5nVGV4dFwiPlxuICAgICAgICAgICAgICB7eyBhcHBUcmFucy5iYXNlLnNhdmVfeW91cl9jaGFuZ2VzX21pbGt5bWFwMSB9fSB7eyBwZXJzb25hVGl0bGUgfX0ge3tcbiAgICAgICAgICAgICAgICBhcHBUcmFucy5iYXNlLnNhdmVfeW91cl9jaGFuZ2VzX21pbGt5bWFwMiB9fSA8YnI+XG4gICAgICAgICAgICAgIDxicj5cbiAgICAgICAgICAgICAge3sgYXBwVHJhbnMuYmFzZS5zYXZlX2FsbF9taWxreW1hcHMgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBnbG9iYWwtYnRuLXNtIGdyYWRpZW50YnRuXCIgQGNsaWNrPVwicGVyc29uYS5wZXJzb25hX2lkID8gdXBkYXRlUGVyc29uYSgpIDogc2F2ZVBlcnNvbmEoKVwiPlxuICAgICAgICAgICAgICB7eyBhcHBUcmFucy5jb21tb24ueWVzIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gZ2xvYmFsLWJ0bi1zbSBib3JkZXJlZC10cmFuc3BhcmVudGJ0blwiIEBjbGljaz1cImNhbmNlbFdhcm4oKVwiPlxuICAgICAgICAgICAgICB7eyBhcHBUcmFucy5jb21tb24uY2FuY2VsIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tRW5kIFNhdmUgV2FybiBwZXJzb25hIE1vZGFsLS0+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0PlxuaW1wb3J0IE1lZGlhIGZyb20gJy4uL21vZGFscy9NZWRpYS52dWUnO1xuaW1wb3J0IENLRWRpdG9yIGZyb20gJ0Bja2VkaXRvci9ja2VkaXRvcjUtdnVlMic7XG5pbXBvcnQgSW5saW5lRWRpdG9yIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9qcy9ja2VkaXRvcjUnO1xuaW1wb3J0IHsgZXZlbnRCdXMgfSBmcm9tICcuLi8uLi8uLi9hc3NldHMvanMvY29tbW9uL2V2ZW50QnVzLmpzJztcbmltcG9ydCB7IGNvbW1vbiB9IGZyb20gJy4uLy4uL01hcHMvTWl4aW5zL2NvbW1vbi5qcyc7XG5cbi8vIGltcG9ydCB7bWFwR2V0dGVyc30gZnJvbSAndnVleCc7XG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdwZXJzb25hZm9ybScsXG4gIHByb3BzOiBbJ3BlcnNvbmFQdWJsaWNUeXBlJywgJ3BlcnNvbmFUaXRsZScsICdhcHBTZXNzJywgJ3Byb2R1Y3RzJywgJ2NvdW50cmllcycsICdjX3NlZ21lbnRzJywgJ3BlcnNvbmFEYXRhJywgJ1Bmb3InLCAndGFiJywgJ2RvY3VtZW50cycsICdhZG1pbl9icmFuZHMnLCAnbW9kZScsICdjb21wb25lbnRGb3InLCAnY3VzdG9tX2ZpZWxkcyddLFxuICBjb21wb25lbnRzOiB7XG4gICAgTWVkaWEsXG4gICAgY2tlZGl0b3I6IENLRWRpdG9yLmNvbXBvbmVudCxcbiAgfSxcbiAgbWl4aW5zOiBbY29tbW9uXSxcbiAgd2F0Y2g6IHtcbiAgICBwZXJzb25hRGF0YToge1xuICAgICAgLy8gdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBzdGFydCBvZiB0aGUgb2JzZXJ2YXRpb25cbiAgICAgIGltbWVkaWF0ZTogdHJ1ZSxcbiAgICAgIGhhbmRsZXIodmFsLCBvbGRWYWwpIHtcbiAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgIHRoaXMucGVyc29uYSA9IHZhbDtcbiAgICAgICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAkKCcuc2VsZWN0cGlja2VyJykuc2VsZWN0cGlja2VyKCk7XG4gICAgICAgICAgICAkKCcuc2VsZWN0cGlja2VyJykuc2VsZWN0cGlja2VyKCdyZWZyZXNoJyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZVNldERhdGEoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBwZXJzb25hRm9yOiAncGVyc29uYScsXG4gICAgICBtZWRpYTogJycsXG4gICAgICBwZXJzb25hOiB7XG4gICAgICAgIGltYWdlOiBudWxsLFxuICAgICAgICBwZXJzb25hX2lkOiAnJyxcbiAgICAgICAgbmFtZTogJycsXG4gICAgICAgIG5pY2tfbmFtZTogJycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgcXVvdGU6ICcnLFxuICAgICAgICBleHRlcm5hbF9saW5rOiAnJyxcbiAgICAgICAgYnJhbmRzOiBbXSxcbiAgICAgICAgY3M6IFtdLFxuICAgICAgICBwcm9kdWN0OiBbXSxcbiAgICAgICAgY291bnRyaWVzOiBbXSxcbiAgICAgICAgZG9jdW1lbnRzOiBbXSxcbiAgICAgICAgZ2FpbnM6IFtdLFxuICAgICAgICBwYWluczogW10sXG4gICAgICAgIGpvYnM6IFtdLFxuICAgICAgICBwdWJsaWM6IG51bGwsXG4gICAgICAgIGN1c3RvbUZpZWxkczogW1tdLCBbXV0sXG4gICAgICB9LFxuICAgICAgc3VibWl0dGVkOiBmYWxzZSxcblxuICAgICAgZWRpdG9yOiB7XG4gICAgICAgIGVkaXRvcjogSW5saW5lRWRpdG9yLFxuICAgICAgICBlZGl0b3JDb25maWc6IHt9LFxuICAgICAgfSxcbiAgICB9O1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgaW5pdEVkaXRvcigpIHtcbiAgICAgIHRoaXMuJHNldCh0aGlzLmVkaXRvciwgJ2VkaXRvckNvbmZpZycsIHtcbiAgICAgICAgbGluazoge1xuICAgICAgICAgIGRlZmF1bHRQcm90b2NvbDogJ2h0dHA6Ly8nLFxuICAgICAgICAgIGFkZFRhcmdldFRvRXh0ZXJuYWxMaW5rczogZmFsc2UsXG4gICAgICAgICAgZGVjb3JhdG9yczoge1xuICAgICAgICAgICAgaXNFeHRlcm5hbDoge1xuICAgICAgICAgICAgICBtb2RlOiAnbWFudWFsJyxcbiAgICAgICAgICAgICAgbGFiZWw6ICdPcGVuIGluIGEgbmV3IHRhYicsXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIHRhcmdldDogJ19ibGFuaycsXG4gICAgICAgICAgICAgICAgcmVsOiAnbm9vcGVuZXIgbm9yZWZlcnJlcicsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHRvb2xiYXI6IHtcbiAgICAgICAgICBpdGVtczogWydib2xkJywgJ2l0YWxpYycsICdzdHJpa2V0aHJvdWdoJywgJ3VuZGVybGluZScsICd8JywgJ2FsaWdubWVudCcsICd8JywgJ2J1bGxldGVkTGlzdCcsICdudW1iZXJlZExpc3QnLCAnfCcsICdmb250ZmFtaWx5JywgJy0nLCAnZm9udHNpemUnLCAnfCcsICdoZWFkaW5nJywgJ3wnLCAnZm9udENvbG9yJywgJ2ZvbnRCYWNrZ3JvdW5kQ29sb3InLCAnfCcsICdsaW5rJywgJ3wnXSxcbiAgICAgICAgICBzaG91bGROb3RHcm91cFdoZW5GdWxsOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBsaW5rU2hvd0FkdmFuY2VkVGFiOiBmYWxzZSxcbiAgICAgICAgbGlua1Nob3dUYXJnZXRUYWI6IHRydWUsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGNsb3NlUGVyc29uYU1vZGFsKCkge1xuICAgICAgJCgnI2NyZWF0ZVBlcnNvbmFzTW9kYWwnKS5tb2RhbCgnaGlkZScpO1xuICAgIH0sXG4gICAgb3Blbk1vZGFsKG1vZGFsKSB7XG4gICAgICAkKCcjJyArIG1vZGFsKS5tb2RhbCgnc2hvdycpO1xuICAgIH0sXG4gICAgY2FuY2VsV2FybigpIHtcbiAgICAgICQoJyN3YXJuUGVyc29uYScpLm1vZGFsKCdoaWRlJyk7XG4gICAgfSxcbiAgICBzZXRCcmFuZChicmFuZCkge1xuICAgICAgaWYgKHRoaXMucGVyc29uYS5icmFuZHMuc29tZShicmFuID0+IGJyYW5bJ2JfaWQnXSA9PT0gYnJhbmQuYl9pZCkpIHtcbiAgICAgICAgbW1fbWVzc2FnZXIuZGlzcGxheV90aW1lcl9tZXNzYWdlKHRoaXMuYXBwVHJhbnMuYnJhbmQubXNnX2FscmVhZHlfYWRkZWQsICd3YXJuaW5nJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucGVyc29uYS5icmFuZHMucHVzaChicmFuZCk7XG4gICAgfSxcbiAgICBzYXZlTWVkaWEobWVkaWEsIHR5cGUpIHtcbiAgICAgIHRoaXMuJHNldCh0aGlzLnBlcnNvbmEsICdpbWFnZScsIG1lZGlhLmltYWdlX3BhdGgpO1xuICAgICAgcmV0dXJuO1xuICAgIH0sXG4gICAgc2F2ZUltYWdlKGNyb3BwZWRJbWFnZVNyYykge1xuICAgICAgdGhpcy4kc2V0KHRoaXMucGVyc29uYSwgJ2ltYWdlJywgY3JvcHBlZEltYWdlU3JjKTtcbiAgICB9LFxuICAgIHNhdmVEb2N1bWVudChkb2MpIHtcbiAgICAgIHRoaXMucGVyc29uYS5kb2N1bWVudHMucHVzaChkb2MpO1xuICAgIH0sXG4gICAgc2F2ZVBlcnNvbmEoKSB7XG4gICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICBpZiAoIXRoaXMucGVyc29uYS5uYW1lIHx8ICF0aGlzLnBlcnNvbmEubmlja19uYW1lKSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAhdGhpcy5wZXJzb25hLm5hbWUgPyB0aGlzLmFwcFRyYW5zLnBlcnNvbmEubXNnX25hbWVfZW1wdHkgOiB0aGlzLmFwcFRyYW5zLnBlcnNvbmEubXNnX25pY2tuYW1lX2VtcHR5O1xuICAgICAgICBtbV9tZXNzYWdlci5kaXNwbGF5X3RpbWVyX21lc3NhZ2UobWVzc2FnZSwgJ3dhcm5pbmcnKTtcbiAgICAgICAgJCgnI3dhcm5QZXJzb25hJykubW9kYWwoJ2hpZGUnKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy4kZW1pdCgnc2F2ZVBlcnNvbmEnLCB0aGlzLnBlcnNvbmEpO1xuICAgIH0sXG4gICAgdXBkYXRlUGVyc29uYSgpIHtcbiAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgIGlmICghdGhpcy5wZXJzb25hLm5hbWUgfHwgIXRoaXMucGVyc29uYS5uaWNrX25hbWUpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9ICF0aGlzLnBlcnNvbmEubmFtZSA/IHRoaXMuYXBwVHJhbnMucGVyc29uYS5tc2dfbmFtZV9lbXB0eSA6IHRoaXMuYXBwVHJhbnMucGVyc29uYS5tc2dfbmlja25hbWVfZW1wdHk7XG4gICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfdGltZXJfbWVzc2FnZShtZXNzYWdlLCAnd2FybmluZycpO1xuICAgICAgICAkKCcjd2FyblBlcnNvbmEnKS5tb2RhbCgnaGlkZScpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZVBlcnNvbmEnLCB0aGlzLnBlcnNvbmEpO1xuICAgIH0sXG4gICAgYWRkR2FpbigpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLiRyZWZzLmdhaW5JbnB1dC52YWx1ZTtcbiAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgIHRoaXMucGVyc29uYS5nYWlucy5wdXNoKHsgZ19uYW1lOiBuYW1lLCBnX2lkOiAnJyB9KTtcbiAgICAgICAgdGhpcy4kcmVmcy5nYWluSW5wdXQudmFsdWUgPSAnJztcbiAgICAgIH1cbiAgICB9LFxuICAgIGFkZFBhaW4oKSB7XG4gICAgICBjb25zdCBuYW1lID0gdGhpcy4kcmVmcy5wYWluSW5wdXQudmFsdWU7XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICB0aGlzLnBlcnNvbmEucGFpbnMucHVzaCh7IHBfbmFtZTogbmFtZSwgcF9pZDogJycgfSk7XG4gICAgICAgIHRoaXMuJHJlZnMucGFpbklucHV0LnZhbHVlID0gJyc7XG4gICAgICB9XG4gICAgfSxcbiAgICBhZGRKb2IoKSB7XG4gICAgICBjb25zdCBuYW1lID0gdGhpcy4kcmVmcy5qb2JJbnB1dC52YWx1ZTtcbiAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgIHRoaXMucGVyc29uYS5qb2JzLnB1c2goeyBqX3RpdGxlOiBuYW1lLCBqX2lkOiAnJyB9KTtcbiAgICAgICAgdGhpcy4kcmVmcy5qb2JJbnB1dC52YWx1ZSA9ICcnO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVtb3ZlSXRlbShkYXRhLCBpbmRleCkge1xuICAgICAgZGF0YS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH0sXG4gICAgdW5saW5rTWVkaWEoKSB7XG4gICAgICB0aGlzLnBlcnNvbmEubWVkaWEgPSB7fTtcbiAgICAgIHRoaXMubWVkaWEgPSAnJztcbiAgICB9LFxuICAgIHVubGlua1Byb2ZpbGUoKSB7XG4gICAgICB0aGlzLnBlcnNvbmEuaW1hZ2UgPSBudWxsO1xuICAgIH0sXG4gICAgdW5saW5rRGltZW5zaW9uKGluZGV4LCB0eXBlLCBwYXJlbnRJbmRleCA9IC0xKSB7XG4gICAgICBjb25zdCBzZWxlY3RQaWNrZXIgPSBwYXJlbnRJbmRleCA9PSAtMSA/IHR5cGUgKyAnc2VsZWN0cGlja2VyJyA6IHR5cGUgKyAnc2VsZWN0cGlja2VyLScgKyBwYXJlbnRJbmRleDtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdicmFuZCc6XG4gICAgICAgICAgdGhpcy5wZXJzb25hLmJyYW5kcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwcm9kdWN0JzpcbiAgICAgICAgICB0aGlzLnBlcnNvbmEucHJvZHVjdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdjcyc6XG4gICAgICAgICAgdGhpcy5wZXJzb25hLmNzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2NvdW50cnknOlxuICAgICAgICAgIHRoaXMucGVyc29uYS5jb3VudHJpZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY3VzdG9tRmllbGRzJzpcbiAgICAgICAgICB0aGlzLnBlcnNvbmEuY3VzdG9tRmllbGRzW3BhcmVudEluZGV4XS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAkKCcuJyArIHNlbGVjdFBpY2tlcikuc2VsZWN0cGlja2VyKCk7XG4gICAgICAgICQoJy4nICsgc2VsZWN0UGlja2VyKS5zZWxlY3RwaWNrZXIoJ3JlZnJlc2gnKTtcbiAgICAgIH0pO1xuXG4gICAgfSxcbiAgICB1bmxpbmtEb2MoZGluKSB7XG4gICAgICB0aGlzLnBlcnNvbmEuZG9jdW1lbnRzLnNwbGljZShkaW4sIDEpO1xuICAgIH0sXG4gICAgcmVTZXREYXRhKCkge1xuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLiRkYXRhLCB0aGlzLiRvcHRpb25zLmRhdGEuYXBwbHkodGhpcykpO1xuICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAkKCcuc2VsZWN0cGlja2VyJykuc2VsZWN0cGlja2VyKCk7XG4gICAgICAgICQoJy5zZWxlY3RwaWNrZXInKS5zZWxlY3RwaWNrZXIoJ3JlZnJlc2gnKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLy8gZ2V0SW1nVXJsKGJfaW1hZ2UsIGJfbmFtZSkge1xuICAgIC8vICAgcmV0dXJuIFwiPGltZyBzcmM9J1wiICsgYl9pbWFnZSArIFwiJz5cIiArIGJfbmFtZSArICcnO1xuICAgIC8vIH0sXG4gICAgcHJlcGFyZUN1c3RvbUZpZWxkT3B0aW9uKGZpZWxkT2JqZWN0KSB7XG4gICAgICBsZXQgdGl0bGUgPSBmaWVsZE9iamVjdC5kZXNjcmlwdGlvbiA/IGZpZWxkT2JqZWN0LmRlc2NyaXB0aW9uIDogZmllbGRPYmplY3QudGl0bGU7XG4gICAgICByZXR1cm4gJzxzcGFuIGNsYXNzPVwiY3VzdG9tbGlzdENvbG9yXCIgdGl0bGU9XCInICsgdGl0bGUgKyAnXCI+PGkgY2xhc3M9XCJmYSBmYS1zdG9wXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgc3R5bGU9XCJjb2xvcjonICsgZmllbGRPYmplY3QuY29sb3IgKyAnXCI+PC9pPicgKyBmaWVsZE9iamVjdC50aXRsZSArICc8L3NwYW4+JztcbiAgICB9LFxuICB9LFxuICBtb3VudGVkKCkge1xuICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICQoJy5zZWxlY3RwaWNrZXInKS5zZWxlY3RwaWNrZXIoKTtcbiAgICB9KTtcbiAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgZXZlbnRCdXMuJG9uKHNlbGYuY29tcG9uZW50Rm9yICsgJy1zZXQtdG8tcGVyc29uYScsIGRhdGEgPT4ge1xuICAgICAgc2VsZi5zYXZlRG9jdW1lbnQoZGF0YS5vYmopO1xuICAgIH0pO1xuICAgICQoJyNjcmVhdGVQZXJzb25hc01vZGFsJykub24oJ2hpZGUuYnMubW9kYWwnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgZXZlbnRCdXMuJGVtaXQoc2VsZi5jb21wb25lbnRGb3IgKyAnLXBlcnNvbmEtbW9kYWwtc3RhdHVzJywgZmFsc2UpO1xuICAgICAgc2VsZi5zdWJtaXR0ZWQgPSBmYWxzZTtcbiAgICAgIHNlbGYucmVTZXREYXRhKCk7XG4gICAgfSk7XG4gIH0sXG4gIGNyZWF0ZWQoKSB7XG4gICAgdGhpcy5pbml0RWRpdG9yKCk7XG4gIH0sXG4gIGRlc3Ryb3llZCgpIHtcbiAgICAkKCcuc2VsZWN0cGlja2VyJykuc2VsZWN0cGlja2VyKCdkZXN0cm95Jyk7XG4gIH0sXG59O1xuPC9zY3JpcHQ+XG48c3R5bGU+XG4ubW9kYWwtYmFja2Ryb3Age1xuICAvKiBidWcgZml4IC0gbm8gb3ZlcmxheSAqL1xuICBkaXNwbGF5OiBub25lO1xufVxuPC9zdHlsZT5cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9wZXJzb25hL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9wZXJzb25hL1BlcnNvbmFGb3JtLnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4uZHJvcGRvd246aG92ZXIgLmRyb3Bkb3duLW1lbnUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogLTE2cHggIWltcG9ydGFudDtcbiAgbWFyZ2luLWxlZnQ6IDE5cHggIWltcG9ydGFudDtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL01hcHMvUGFydHMvUGVyc29uYS52dWUiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5hY2NvcmRpYW5DaGVjayBpbnB1dCB7XG4gIHBhZGRpbmc6IDA7XG4gIGhlaWdodDogaW5pdGlhbDtcbiAgd2lkdGg6IGluaXRpYWw7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5hY2NvcmRpYW5DaGVjayBpbnB1dDpjaGVja2VkK2xhYmVsOmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMHB4O1xuICBsZWZ0OiAwcHg7XG4gIHdpZHRoOiAxM3B4O1xuICBoZWlnaHQ6IDEzcHg7XG4gIHdpZHRoOiAxM3B4O1xuICBiYWNrZ3JvdW5kOiAjNzgwMWZmO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICMwMDAwMDA7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9jb250cm9sY2VudGVyL21vdHMvTW90c0xpc3QudnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLnRvb2x0aXBDbGFzcyB7XG4gIGNvbG9yOiByZWQgIWltcG9ydGFudDtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9NYXBzVHJlZS52dWUiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4uZHJvcGRvd246aG92ZXIgLmRyb3Bkb3duLW1lbnUuaW5zIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IC0xNnB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1sZWZ0OiAxOXB4ICFpbXBvcnRhbnQ7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9jb21tb24vd2lkZ2V0cy9JbXByb3ZlbWVudC52dWUiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5kcm9wZG93bjpob3ZlciAuZHJvcGRvd24tbWVudS5pbnNuZXcge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogLTE2cHggIWltcG9ydGFudDtcbiAgbWFyZ2luLWxlZnQ6IDE5cHggIWltcG9ydGFudDtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi93aWRnZXRzL0luc2lnaHQudnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4uZHJvcGRvd246aG92ZXIgLmRyb3Bkb3duLW1lbnUuaW5zbmV3IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IC0xNnB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1sZWZ0OiAxOXB4ICFpbXBvcnRhbnQ7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9jb21tb24vd2lkZ2V0cy9DaGFubmVsLnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5kcm9wZG93bjpob3ZlciAuZHJvcGRvd24tbWVudS5tb3RNZW51IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IC0xNnB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1sZWZ0OiAxOXB4ICFpbXBvcnRhbnQ7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9jb21tb24vd2lkZ2V0cy9Nb3QudnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5kcm9wZG93bjpob3ZlciAuZHJvcGRvd24tbWVudS5tb3RNZW51IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IC0xNnB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1sZWZ0OiAxOXB4ICFpbXBvcnRhbnQ7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9jb21tb24vd2lkZ2V0cy9MaW5rV2lkZ2V0LnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4uZHJvcGRvd246aG92ZXIgLmRyb3Bkb3duLW1lbnUubW90TWVudSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tdG9wOiAtMTZweCAhaW1wb3J0YW50O1xuICBtYXJnaW4tbGVmdDogMTlweCAhaW1wb3J0YW50O1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvY29tbW9uL3dpZGdldHMvSGllcmFyY2h5V2lkZ2V0LnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLmRyb3Bkb3duOmhvdmVyIC5kcm9wZG93bi1tZW51Lmluc25ldyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tdG9wOiAtMTZweCAhaW1wb3J0YW50O1xuICBtYXJnaW4tbGVmdDogMTlweCAhaW1wb3J0YW50O1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvY29tbW9uL3dpZGdldHMvUGVyc29uYXMudnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLm10NjUge1xuICBtYXJnaW4tdG9wOiA2NXB4ICFpbXBvcnRhbnQ7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9jb21tb24va3BpL0twaUZvcm0udnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5kcm9wZG93bi5rcGlXaWRnZXREcm9wZG93bjpob3ZlciAuZHJvcGRvd24tbWVudSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tdG9wOiAtMTZweCAhaW1wb3J0YW50O1xuICBtYXJnaW4tbGVmdDogMTlweCAhaW1wb3J0YW50O1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvY29tbW9uL3dpZGdldHMvS3Bpcy52dWUiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5jaGVja2JveCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTAwMDAwO1xufVxuXG4ubm9MQ0Nvbm5lY3RlZCB7XG4gIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQsICM2NTAwMDAgMTAlLCAjNzMwMDAwIDEwMCUpO1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvdXNlcm1hbmFnZW1lbnQvQ3hMaWZlY3ljbGUudnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4uaGlkZSB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50O1xufVxuXG4ubm9ub3RpZmljIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBmb250LXNpemU6IDE1cHg7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9jb21tb24vaGVhZGVyL1NldHRpbmdzSGVhZGVyLnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4ubGlmZWN5Y2xlIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICAvKiBtYXJnaW4tdG9wOiAxMDBweDsqL1xufVxuXG5zdmcge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uc3RhZ2VUZXh0IHtcbiAgZmlsbDogI2ZmZmZmZjtcbiAgZm9udC1mYW1pbHk6ICdJbnRlciB2YXInLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDAuMThyZW07XG59XG5cbi5waGFzZVRleHQge1xuICBmaWxsOiAjZmZmZmZmO1xuICBmb250LWZhbWlseTogJ0ludGVyIHZhcicsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMC4xOHJlbTtcbn1cblxuLmNyVGV4dCB7XG4gIGZpbGw6ICNmZmZmZmY7XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXIgdmFyJywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAwLjE4cmVtO1xufVxuXG4uc2VsZWN0ZWQuQ1JyZWN0IHtcbiAgZmlsbDogI2ZmZjtcbiAgc3Ryb2tlOiAjNzgwMGZmO1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNhcHAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcbn1cblxucGF0aCB7XG4gIGZpbGw6IHRyYW5zcGFyZW50O1xufVxuXG4uc3ZnQ29udGFpbmVyIHtcbiAgd2lkdGg6IDgwMHB4O1xuICAvKmhlaWdodDo4MDBweDsqL1xufVxuLnNtYWxsZXJDaXJjbGV2aWV3IC5jclRleHQuc2VsZWN0ZWQge1xuICBmaWxsOiAjMDAwO1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvdXNlcm1hbmFnZW1lbnQvTGlmZUN5Y2xlLnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4ubWFpbmNvbnRhaW5lciB7XG4gIHBhZGRpbmctdG9wOiA3NHB4O1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvTWFwcy9QYXJ0cy9Db21tZW50LnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLmRyb3Bkb3duOmhvdmVyIC5kcm9wZG93bi1tZW51IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IC0xNnB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1sZWZ0OiAxOXB4ICFpbXBvcnRhbnQ7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9NYXBzL1BhcnRzL0ltcHJvdmVtZW50LnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLmRyb3Bkb3duOmhvdmVyIC5kcm9wZG93bi1tZW51IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IC0xNnB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1sZWZ0OiAxOXB4ICFpbXBvcnRhbnQ7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9NYXBzL1BhcnRzL0luc2lnaHQudnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5kcm9wZG93bjpob3ZlciAuZHJvcGRvd24tbWVudSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tdG9wOiAtMTZweCAhaW1wb3J0YW50O1xuICBtYXJnaW4tbGVmdDogMTlweCAhaW1wb3J0YW50O1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvTWFwcy9QYXJ0cy9DaGFubmVsLnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLmRyb3Bkb3duOmhvdmVyIC5kcm9wZG93bi1tZW51Lm1vdE1lbnUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogLTE2cHggIWltcG9ydGFudDtcbiAgbWFyZ2luLWxlZnQ6IDE5cHggIWltcG9ydGFudDtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi93aWRnZXRzL1RpbWVsaW5lV2lkZ2V0LnZ1ZSIsIlxuXG5cblxuXG4uZWNoYXJ0cyB7XG4gIHdpZHRoOiA2MDBweDtcbiAgaGVpZ2h0OiA0MDBweDtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy92dWUtZWNoYXJ0cy9jb21wb25lbnRzL0VDaGFydHMudnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5kcm9wZG93bjpob3ZlciAuZHJvcGRvd24tbWVudS5tb3RNZW51IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IC0xNnB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1sZWZ0OiAxOXB4ICFpbXBvcnRhbnQ7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9jb21tb24vd2lkZ2V0cy9UZXh0V2lkZ2V0TmV3LnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLmRpbV9hY3RpdmUgYSB7XG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvY29tbW9uL2hlYWRlci9Vc2VyU2lkZWJhck1lbnUudnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLm1iLTg1IHtcbiAgbWFyZ2luLWJvdHRvbTogODVweCAhaW1wb3J0YW50O1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvdXNlcm1hbmFnZW1lbnQvbG9ncy9HYWxheHlMb2dzLnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLnNtbG9hZGVyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA3MyU7XG4gIHotaW5kZXg6IDk5O1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG4gIGxlZnQ6IDA7XG4gIHRvcDogNTVweDtcbiAgLyogZGlzcGxheTogYmxvY2s7ICovXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLnNtbG9hZGVyIGltZyB7XG4gIHdpZHRoOiA2MHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xufVxuXG4uZWNoYXJ0cyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5jaGFydC13cmFwcGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIC8qIGhlaWdodDogMjkwcHg7ICovXG4gIG1hcmdpbi10b3A6IDVweDtcbn1cblxuLmRlbGljb24ge1xuICB6LWluZGV4OiA5OTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4udGh1bWJuYWlsIGxpIC5ncmFwaHNldCB7XG4gIHBhZGRpbmc6IDE1cHggMjBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbi1ib3R0b206IDBweDtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tQm9yZGVyX0RpdmlkZXIpO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG59XG5cbi5kYXRlcGlja2VySW5mbyB7XG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbi8qIC5pbnB1dC1ncm91cC1hZGRvbntcbiAgcmlnaHQ6IDBweCFpbXBvcnRhbnQ7XG4gIHRvcDogLTFweCFpbXBvcnRhbnQ7XG59XG5cbi5tYXBzdXNlcnNlbGVjdHtcbiAgd2lkdGg6MTAwJSFpbXBvcnRhbnQ7XG59ICovXG4uY29ubmVjdC1kYXRhLXJvdz4ubWFwc3VzZXJzZWxlY3Qge1xuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xufVxuXG4uY29ubmVjdC1kYXRhLXJvdyAuaW5wdXQtZ3JvdXAtYWRkb24ge1xuICByaWdodDogMHB4ICFpbXBvcnRhbnQ7XG4gIHRvcDogLTFweCAhaW1wb3J0YW50O1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvdXNlcm1hbmFnZW1lbnQvUXVlc3Rpb25zLnZ1ZSIsIjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb24gY2xhc3M9XCJ1c2VybWFpbmNvbnRhaW5lciB0b2dnbGVkIGQtZmxleCBtZW51bmF2T2Zmc2V0XCI+XG4gICAgPHNldHRpbmdzLWhlYWRlcj48L3NldHRpbmdzLWhlYWRlcj5cbiAgICA8dXNlci1zaWRlYmFyLW1lbnU+PC91c2VyLXNpZGViYXItbWVudT5cbiAgICA8c2VjdGlvbiBpZD1cInBhZ2UtY29udGVudC13cmFwcGVyXCIgY2xhc3M9XCJmdWxsd2lkdGhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYWluY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS0xMiBjb2wtbGctMTJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXJzZXR0aW5ncyBkYXRhbWFpbiBkYXRhbWFpbmRpdiByb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFicy1tYWluY29udGVudCBrcGljaGFubmVsbWFpblwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCIgaWQ9XCJuYXYtdGFiQ29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIGNvbm5lY3RvciB3aWRnZXRzLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItcGFuZSBmYWRlIGFjdGl2ZSBzaG93XCIgaWQ9XCJuYXYtY2hhbm5lbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJpbm5lcnRpdGxlIHNldHRpbmctdGl0bGVcIj5XaWRnZXRzPC9oMj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIHNlY29uZGFyeS1idG4gYWRkQ2hhbm5lbCBwdWxsLXJpZ2h0XCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10YXJnZXQ9XCIjcXVlc3Rpb25uYWlyZXNcIiBAY2xpY2s9XCJpbml0aWFsaXNlKClcIj48aSBjbGFzcz1cImZhIGZhLXBsdXNcIj48L2k+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG4gICAgPCEtLSBRdWVzdGlvbm5haXJlcyAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm1vZGFsIGZhZGUgbW9kYWxiZyBtb2RhbGJnIG1haW5Nb2RhbCBjb25uZWN0ZXItbW9kYWwgY2FuY2Vsc3Vic2NyaXB0aW9uTW9kYWwgZGVsZXRlY2hhbm5lbCB1cGxvYWRMb2dvIG5ld01vZGFsIGFkZEltYWdlTW9kYWwgY29ubmVjdGVkS3BpLWNyZWF0ZW1vZGFsXCJcbiAgICAgIGlkPVwicXVlc3Rpb25uYWlyZXNcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwicXVlc3Rpb25uYWlyZXNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nLWNlbnRlcmVkXCIgcm9sZT1cImRvY3VtZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cInF1ZXN0aW9ubmFpcmVzVGl0bGVcIj5BZGQgV2lkZ2V0czwvaDU+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj5cbiAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+w5c8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiIHYtaWY9XCJsb2FkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXNjb3VudHRhYmxlYm9keVwiPlxuICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJzaG93TG9kZXJcIiBjbGFzcz1cInNtbG9hZGVyIGQtZmxleFwiPlxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1zZWxmLWNlbnRlciB0ZXh0LWNlbnRlciBzaW1nXCJcbiAgICAgICAgICAgICAgICAgIDpzcmM9XCInL2J1bmRsZXMvbmV3L2ltYWdlcy9NaWxreW1hcC5naWYnXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3Jtc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcXVlc3Rpb24taGVpZ2h0YmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtN1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHJvdy1jb25uZWN0a3BpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgbWItMjBcIiB2LXNob3c9XCJzZWxlY3RlZGNvbm5lY3RvcnR5cGUgIT09ICdjc3YnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJrcGlOYW1lSW5wdXRcIj5OYW1lIG9mIHRoZSBjb25uZWN0ZWQga3BpPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCIgaWQ9XCJrcGlOYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImtwaU5hbWVJbnB1dFwiIHYtbW9kZWw9XCJrcGlOYW1lXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBtYi0yMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY29ubmVjdG9yRWxlbWVudFwiPlNlbGVjdCB0aGUgY29ubmVjdGlvbjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXBzdXNlcnNlbGVjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29ubmVjdG9yLWRyb3Agc2VsZWN0Y29uIHNlbGVjdHBpY2tlciByb2xlc2Ryb3AgZm9ybS1jb250cm9sIHVzZXJOZXdJbnZpdGVSb2xlIGZpcnN0QmxvY2tJbnB1dCBjaGFuZ2VSb2xlLWFkZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbm5lY3RvckVsZW1lbnRcIiB0aXRsZT1cIlNlbGVjdCBhIENvbm5lY3RvclwiIGRhdGEtbGl2ZS1zZWFyY2g9XCJ0cnVlXCIgZGF0YS1zaXplPVwiNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2hhbmdlPVwic2VsZWN0Q29ubmVjdG9yKClcIiB2LW1vZGVsPVwid2lkZ2V0T2JqLnNlbGVjdGVkQ29ubmVjdG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHYtZm9yPVwiKGNvbiwgY29uSW5kZXgpIGluIGNvbm5lY3RvcnNcIiA6dmFsdWU9XCJjb25JbmRleFwiIHYtYmluZDprZXk9XCJjb25JbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb24uY29ubmVjdG9yZGlzcGxheW5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNvbm5lY3RrcGlcIiB2LXNob3c9XCJzZWxlY3RlZGNvbm5lY3RvcnR5cGUgIT09ICdjc3YnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgbWItMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImJhc2VRdWVzdGlvbnNcIj5CYXNlIFF1ZXN0aW9uczwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXBzdXNlcnNlbGVjdFwiIHYtc2hvdz1cInNlbGVjdGVkY29ubmVjdG9ydHlwZSAhPT0gJ2NzdidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbm5lY3Rvci1kcm9wIHNlbGVjdGNvbiBzZWxlY3RwaWNrZXIgcm9sZXNkcm9wIGZvcm0tY29udHJvbCB1c2VyTmV3SW52aXRlUm9sZSBmaXJzdEJsb2NrSW5wdXQgY2hhbmdlUm9sZS1hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJiYXNlUXVlc3Rpb25zXCIgZGF0YS1zaXplPVwiNFwiIDp0aXRsZT1cInF1ZXN0aW9uaWQgPyBudWxsIDogJ1NlbGVjdCBRdWVzdGlvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNoYW5nZT1cInNlbGVjdFF1ZXN0aW9uKCRldmVudCwgJ2Jhc2VxdWVzdGlvbicpXCIgZGF0YS1saXZlLXNlYXJjaD1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cInF1ZXN0aW9uaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG9wdGlvbiBkaXNhYmxlZCBzZWxlY3RlZCBjbGFzcz1cImRpc2FibGVkXCI+U2VsZWN0IFF1ZXN0aW9uPC9vcHRpb24+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2LWZvcj1cInFyIGluIHF1ZXN0aW9uc1wiIDprZXk9XCInYlEtJyArIHFyLmF0dHJpYnV0ZXMuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dmFsdWU9XCJxci5hdHRyaWJ1dGVzLnF1ZXN0aW9uX2lkXCI+e3sgcXIuYXR0cmlidXRlcyA/IHFyLmF0dHJpYnV0ZXMuZGVzY3JpcHRpb24gOiAnJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFwc3VzZXJzZWxlY3RcIiB2LXNob3c9XCJzZWxlY3RlZGNvbm5lY3RvcnR5cGUgIT09ICdjc3YnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5RdWVzdGlvbiBUeXBlOiA8L2xhYmVsPjxsYWJlbCBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA1cHhcIj4ge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25EZXRhaWxzLlF1ZXN0aW9uVHlwZSA/IHF1ZXN0aW9uRGV0YWlscy5RdWVzdGlvblR5cGUgOiAnLScgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+Q2FsY3VsYXRpb24gVHlwZTogPC9sYWJlbD48bGFiZWwgc3R5bGU9XCJtYXJnaW4tbGVmdDogNXB4XCI+IHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uRGV0YWlscy5DYWxjdWxhdGlvblR5cGUgPyBxdWVzdGlvbkRldGFpbHMuQ2FsY3VsYXRpb25UeXBlIDogJy0nIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBtYi0yMCBvci1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvci1sYWJlbFwiPk9SPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3cgbS0wIGNvbC0xMiBwLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtMTIgcC0wIG0tMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlF1ZXN0aW9ubmFpcmU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbm5lY3Rvci1kcm9wIHNlbGVjdGNvbiBzZWxlY3RwaWNrZXIgcm9sZXNkcm9wIGZvcm0tY29udHJvbCB1c2VyTmV3SW52aXRlUm9sZSBmaXJzdEJsb2NrSW5wdXQgY2hhbmdlUm9sZS1hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInF1ZXN0aW9ubmFpcmVzRWxlbWVudFwiIGRhdGEtc2l6ZT1cIjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dGl0bGU9XCJxdWVzdGlvbm5haXJlSWQgPyBudWxsIDogJ1NlbGVjdCBRdWVzdGlvbm5haXJlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjaGFuZ2U9XCJnZXRRdWVzdGlvbnNGb3JRdWVzdGlvbm5haXJlcyhjb25uZWN0b3JzW3NlbGVjdGVkQ29ubmVjdG9yXS5jb25uZWN0b3JpZCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtbGl2ZS1zZWFyY2g9XCJ0cnVlXCIgdi1tb2RlbD1cInF1ZXN0aW9ubmFpcmVJZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxvcHRpb24+T3B0aW9uIDE8L29wdGlvbj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdi1mb3I9XCJxciBpbiBxdWVzdGlvbm5haXJlc1wiIDprZXk9XCInUW5haXJlLScgKyBxci5hdHRyaWJ1dGVzLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dmFsdWU9XCJxci5hdHRyaWJ1dGVzLnF1ZXN0aW9uX2lkXCI+e3sgcXIuYXR0cmlidXRlcyA/IHFyLmF0dHJpYnV0ZXMudGl0bGUgOiAnJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93IG0tMCBjb2wtMTIgcC0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLTEyIHAtMCBtdC01IG1iLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5RdWVzdGlvbnM8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbm5lY3Rvci1kcm9wIHNlbGVjdGNvbiBzZWxlY3RwaWNrZXIgcm9sZXNkcm9wIGZvcm0tY29udHJvbCB1c2VyTmV3SW52aXRlUm9sZSBmaXJzdEJsb2NrSW5wdXQgY2hhbmdlUm9sZS1hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInF1ZXN0aW9uc0VsZW1lbnRcIiBkYXRhLXNpemU9XCI0XCIgOnRpdGxlPVwicXVlc3Rpb25uYWlyZVFJZCA/IG51bGwgOiAnU2VsZWN0IFF1ZXN0aW9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjaGFuZ2U9XCJzZWxlY3RRdWVzdGlvbigkZXZlbnQsICdxdWVzdGlvbicpXCIgZGF0YS1saXZlLXNlYXJjaD1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwicXVlc3Rpb25uYWlyZVFJZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHYtZm9yPVwicXIgaW4gcXVlc3Rpb25uYWlyZVF1ZXN0aW9uc1wiIDprZXk9XCInUS0nICsgcXIuYXR0cmlidXRlcy5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnZhbHVlPVwicXIuYXR0cmlidXRlcy5xdWVzdGlvbl9pZFwiPnt7IHFyLmF0dHJpYnV0ZXMgPyBxci5hdHRyaWJ1dGVzLnRpdGxlIDogJycgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXBzdXNlcnNlbGVjdFwiIHYtc2hvdz1cInNlbGVjdGVkY29ubmVjdG9ydHlwZSAhPT0gJ2NzdidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlF1ZXN0aW9uIFR5cGU6IDwvbGFiZWw+PGxhYmVsIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDVweFwiPiB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbm5haXJlUXVlc3Rpb25EZXRhaWxzLlR5cGUgPyBxdWVzdGlvbm5haXJlUXVlc3Rpb25EZXRhaWxzLlR5cGUgOiAnLScgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+U2NhbGUgQmVoYXZpb3VyOiA8L2xhYmVsPjxsYWJlbCBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA1cHhcIj4ge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25uYWlyZVF1ZXN0aW9uRGV0YWlscy5TY2FsZUJlaGF2aW9yID8gcXVlc3Rpb25uYWlyZVF1ZXN0aW9uRGV0YWlscy5TY2FsZUJlaGF2aW9yIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0nIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3cgbWItMjAgcm93LWNvbm5lY3RrcGlcIiB2LXNob3c9XCJzZWxlY3RlZGNvbm5lY3RvcnR5cGUgPT09ICdjc3YnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXBzdXNlcnNlbGVjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJxdWVzdGlvbnRleHRcIiB2LW1vZGVsPVwicXVlc3Rpb250ZXh0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyByb3ctY29ubmVjdGtwaS1yYWRpb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29sLTZcIiB2LXNob3c9XCJzZWxlY3RlZGNvbm5lY3RvcnR5cGUgPT09ICdjc3YnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1zZWxlY3Qgc3dpdGNodG9nZ2xlIG1hcHN1c2Vyc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiA8aW5wdXQgdHlwZT1cInJhZGlvXCIgdmFsdWU9XCJCYXJcIiB2LW1vZGVsPVwid2lkZ2V0dHlwZVwiIC8+IEJhciA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4gPGlucHV0IHR5cGU9XCJyYWRpb1wiIHZhbHVlPVwiQ3VydmVcIiB2LW1vZGVsPVwid2lkZ2V0dHlwZVwiIC8+IEN1cnZlIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCIgdi1zaG93PVwic2VsZWN0ZWRjb25uZWN0b3J0eXBlICE9PSAnY3N2J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tc2VsZWN0IHN3aXRjaHRvZ2dsZSBtYXBzdXNlcnNlbGVjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4gPGlucHV0IHR5cGU9XCJyYWRpb1wiIHZhbHVlPVwiYXZlcmFnZVwiIHYtbW9kZWw9XCJ3aWRnZXREYXRhXCIgLz4gQXZlcmFnZSA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4gPGlucHV0IHR5cGU9XCJyYWRpb1wiIHZhbHVlPVwic2luZ2xlXCIgdi1tb2RlbD1cIndpZGdldERhdGFcIiAvPiBJbmRpdmlkdWFsIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIiB2LXNob3c9XCJzZWxlY3RlZGNvbm5lY3RvcnR5cGUgIT09ICdjc3YnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1zZWxlY3Qgc3dpdGNodG9nZ2xlIG1hcHN1c2Vyc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTxpbnB1dCB0eXBlPVwicmFkaW9cIiBjbGFzcz1cInJhZGlvLWJ1dHRvblwiIDp2YWx1ZT1cImxhYmVsXCIgOm5hbWU9XCJuYW1lXCIgdi1tb2RlbD1cInZhbHVlXCI+LS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiA8aW5wdXQgdHlwZT1cInJhZGlvXCIgdmFsdWU9XCJEYXlcIiB2LW1vZGVsPVwicGVyaW9kXCIgLz4gRGF5IDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiA8aW5wdXQgdHlwZT1cInJhZGlvXCIgdmFsdWU9XCJNb250aFwiIHYtbW9kZWw9XCJwZXJpb2RcIiAvPiBNb250aCA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4gPGlucHV0IHR5cGU9XCJyYWRpb1wiIHZhbHVlPVwiV2Vla1wiIHYtbW9kZWw9XCJwZXJpb2RcIiAvPiBXZWVrIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiA8aW5wdXQgdHlwZT1cInJhZGlvXCIgdmFsdWU9XCJZZWFyXCIgdi1tb2RlbD1cInBlcmlvZFwiIC8+IFllYXIgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHJvdy1jc3ZrcGlcIiB2LXNob3c9XCJzZWxlY3RlZGNvbm5lY3RvcnR5cGUgPT09ICdjc3YnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG0tMCB3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj48bGFiZWw+VXBsb2FkIHRoZSBmaWxlIHRvIGJlIGltcG9ydGVkPC9sYWJlbD48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1kb3dubG9kLWljb25zIHB1bGwtbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInB1bGwtbGVmdCBkZWxpY29uIGNvbm5lY3Rvci1pY29uXCI+PGkgY2xhc3M9XCJmYSBmYS11cGxvYWRcIj48L2k+PC9zcGFuPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gZ2xvYmFsLWJ0bi1zbSBwcmltYXJ5LWNvbG9yYnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwic2VsZWN0VXBsb2FkRGF0YVRlbXBsYXRlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiaW1wb3J0RGF0YVwiIHR5cGU9XCJmaWxlXCIgQGNoYW5nZT1cImltcG9ydENvbm5lY3RvckRhdGEoJGV2ZW50KVwiIGhpZGRlbiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXVwbG9hZFwiPjwvaT4gVXBsb2FkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJwdWxsLWxlZnQgZGVsaWNvbiBjb25uZWN0b3ItaWNvbiBtbC0yMFwiICBAY2xpY2s9XCJkb3dubG9hZFRlbXBsYXRlKGN3KVwiPjxpIGNsYXNzPVwiZmEgZmEtZG93bmxvYWRcIj48L2k+PC9zcGFuPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtLTAgdy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlbmFtZWRpc3BsYXlcIj48aSBjbGFzcz1cImZhIGZhLWZpbGUtZXhjZWwtb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4gRmlsZSBOYW1lIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGFJbXBvcnRlZEZpbGUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtLTAgdy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LXNob3c9XCJkYXRhSW1wb3J0ZWRGbGFnXCIgY2xhc3M9XCJjb2wtbWQtNlwiPjxsYWJlbD5HZXQgcXVlc3Rpb25zIGZyb20gdGhlIGZpbGUganVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkZWQ8L2xhYmVsPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtc2hvdz1cImRhdGFJbXBvcnRlZEZsYWdcIiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyB1cGxvYWQtZG93bmxvZC1pY29ucyBtLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJwdWxsLWxlZnQgZGVsaWNvbiBjb25uZWN0b3ItaWNvblwiPjxpIGNsYXNzPVwiZmEgZmEtdXBsb2FkXCI+PC9pPjwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwicHVsbC1sZWZ0IGRlbGljb24gY29ubmVjdG9yLWljb25cIiBAY2xpY2s9XCJzZWxlY3RTYW1lRGF0YVRlbXBsYXRlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdXBsb2FkXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInB1bGwtbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGdsb2JhbC1idG4tc20gcHJpbWFyeS1jb2xvcmJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwic2VsZWN0U2FtZURhdGFUZW1wbGF0ZSgpXCI+R2V0IFF1ZXN0aW9uczwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInB1bGwtbGVmdCBkZWxpY29uIGNvbm5lY3Rvci1pY29uIG1sLTIwXCIgIEBjbGljaz1cImRvd25sb2FkVGVtcGxhdGUoY3cpXCI+PGkgY2xhc3M9XCJmYSBmYS1kb3dubG9hZFwiPjwvaT48L3NwYW4+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiIHYtaWY9XCJjc3ZfcXVlc3Rpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11bHRpLXF1ZXN0aW9uLWJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPjxsYWJlbD5TZWxlY3QgdGhlIGRhdGEgdG8gYmUgaW1wb3J0ZWQ8L2xhYmVsPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCB2LW1vZGVsPVwiY3N2X2RhdGVfZmllbGRcIiBjbGFzcz1cImNvbm5lY3Rvci1kcm9wIHNlbGVjdGNvbiBzZWxlY3RwaWNrZXIgcm9sZXNkcm9wIGZvcm0tY29udHJvbCB1c2VyTmV3SW52aXRlUm9sZSBmaXJzdEJsb2NrSW5wdXQgY2hhbmdlUm9sZS1hZGQgY3N2X3NlbGVjdF9ib3hlc1wiIHRpdGxlPVwiU2VsZWN0IGRhdGVcIiBkYXRhLWxpdmUtc2VhcmNoPVwidHJ1ZVwiIGRhdGEtc2l6ZT1cIjVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHYtZm9yPVwicXVlc3Rpb24gaW4gY3N2X3F1ZXN0aW9uc1wiIDp2YWx1ZT1cInF1ZXN0aW9uXCIgdi1iaW5kOmtleT1cIidkYXRlLScgKyBxdWVzdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcXVlc3Rpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlaWdodGZpeGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPjxsYWJlbD5YIC0gQXhpczwvbGFiZWw+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPjxsYWJlbD5ZIC0gQXhpczwvbGFiZWw+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPiZuYnNwOzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHJlcGVhdC1ibG9ja1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IHYtbW9kZWw9XCJjc3ZfeF9heGlzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29ubmVjdG9yLWRyb3Agc2VsZWN0Y29uIHNlbGVjdHBpY2tlciByb2xlc2Ryb3AgZm9ybS1jb250cm9sIHVzZXJOZXdJbnZpdGVSb2xlIGZpcnN0QmxvY2tJbnB1dCBjaGFuZ2VSb2xlLWFkZCBjc3Zfc2VsZWN0X2JveGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiU2VsZWN0IHF1ZXN0aW9uXCIgZGF0YS1saXZlLXNlYXJjaD1cInRydWVcIiBkYXRhLXNpemU9XCI1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHYtZm9yPVwicXVlc3Rpb24gaW4gY3N2X3F1ZXN0aW9uc1wiIDp2YWx1ZT1cInF1ZXN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1iaW5kOmtleT1cIid4LScgKyBxdWVzdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBxdWVzdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IHYtbW9kZWw9XCJjc3ZfeV9heGlzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29ubmVjdG9yLWRyb3Agc2VsZWN0Y29uIHNlbGVjdHBpY2tlciByb2xlc2Ryb3AgZm9ybS1jb250cm9sIHVzZXJOZXdJbnZpdGVSb2xlIGZpcnN0QmxvY2tJbnB1dCBjaGFuZ2VSb2xlLWFkZCBjc3Zfc2VsZWN0X2JveGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiU2VsZWN0IHZhbHVlXCIgZGF0YS1saXZlLXNlYXJjaD1cInRydWVcIiBkYXRhLXNpemU9XCI1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHYtZm9yPVwicXVlc3Rpb24gaW4gY3N2X3F1ZXN0aW9uc1wiIDp2YWx1ZT1cInF1ZXN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1iaW5kOmtleT1cIid5LScgKyBxdWVzdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBxdWVzdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBzZWNvbmRhcnktYnRuIGFkZENoYW5uZWwgcHVsbC1yaWdodFwiIEBjbGljaz1cImFkZFRvSW1wb3J0T3B0aW9ucygpXCI+PGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLXBsdXNcIj48L2k+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNzdi1kcm9wZG93bi1kYXRhIG1vZGFsc2Nyb2xsYmFyT25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdi1mb3I9XCIob3B0aW9uLCBpbmRleCkgaW4gY3N2X2ltcG9ydF9vcHRpb25zXCIgdi1iaW5kOmtleT1cIidjc3ZPcHRpb25zJyArIGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdyByZXBlYXQtYmxvY2sgcmVtb3ZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgb3B0aW9uLnhBeGlzIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyBvcHRpb24ueUF4aXMgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiB0ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBAY2xpY2s9XCJyZW1vdmVGcm9tSW1wb3J0T3B0aW9ucyhpbmRleClcIiBjbGFzcz1cImRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPsOXPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHctMTAwIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBjbGFzcz1cImJ0biBnbG9iYWwtYnRuLXNtIGdyYWRpZW50YnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJzaG93UHJldmlldygpXCI+U2hvdyBwcmV2aWV3PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIGtvbGEgYWRkIGNvZGUgaGVyZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHJvdy1jb25uZWN0a3BpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcHN1c2Vyc2VsZWN0XCIgdi1zaG93PVwic2VsZWN0ZWRjb25uZWN0b3J0eXBlICE9PSAnY3N2J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwcmVmZXJyZWRUaW1lMVwiPnt7ICdGcm9tIERhdGUnIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgZGF0ZXBpY2tlckluZm9cIiBpZD1cImRhdGVwaWNrZXJJbmZvMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHJlZmVycmVkVGltZVwiIHJlZj1cImZkXCIgaWQ9XCJwcmVmZXJyZWRUaW1lMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBibHVyPVwiY2hhbmdlVGltZSgnZnJvbScsICRldmVudC50YXJnZXQudmFsdWUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jYWxlbmRhclwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFwc3VzZXJzZWxlY3RcIiB2LXNob3c9XCJzZWxlY3RlZGNvbm5lY3RvcnR5cGUgIT09ICdjc3YnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiIHYtaWY9XCJmcm9tRGF0ZSA9PSAnJ1wiPiogRnJvbSBEYXRlIGNhbiBub3QgYmUgZW1wdHk8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInByZWZlcnJlZFRpbWUyXCI+e3sgJ1RvIERhdGUnIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgZGF0ZXBpY2tlckluZm9cIiBpZD1cImRhdGVwaWNrZXJJbmZvMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHJlZmVycmVkVGltZVwiIHJlZj1cInRkXCIgaWQ9XCJwcmVmZXJyZWRUaW1lMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBibHVyPVwiY2hhbmdlVGltZSgndG8nLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2FsZW5kYXJcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNzdi1ncmFwaC1kYXRhIG1vZGFsc2Nyb2xsYmFyT25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNzdi1ncmFwaC1iZ1wiIHYtZm9yPVwiKG9wdGlvbiwgaW5kZXgpIGluIHByZXZpZXdcIiB2LWJpbmQ6a2V5PVwiJ2NzdkdPcHRpb25zJyArIGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxoNT5SRVNVTFRfUkVBU09OX0NPREU8L2g1PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjaGFydCA6b3B0aW9ucz1cIm9wdGlvblwiIHN0eWxlPVwid2lkdGg6IDQ0MHB4OyBoZWlnaHQ6IDI4MHB4XCI+PC9jaGFydD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxtYXBzLXRyZWUgOmFwcFNlc3M9XCJhcHBTZXNzXCIgOmpvdXJuZXlzPVwiam91cm5leXNcIiA6Y3VzdG9tRWxlbWVudHMuc3luYz1cImN1c3RvbUVsZW1lbnRzXCI+PC9tYXBzLXRyZWU+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1mbGV4IGZsZXgtcm93LXJldmVyc2UgcHItMFwiPlxuICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgaWQ9XCJhZGRVc2VyQnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBzZWNvbmRhcnktYnRuXCIgQGNsaWNrPVwiY3JlYXRlQ29ubmVjdG9yV2lkZ2V0KClcIj48aSBjbGFzcz1cImZhIGZhLXBsdXNcIj48L2k+IGFkZFxuICAgICAgICAgICAgICAgICAgd2lkZ2V0PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPENvbm5lY3RlZEZ1bGxzY3JlZW5LcGkgOm9wZW5GdWxsU2NyZWVuT3B0aW9ucz1cIm9wZW5GdWxsU2NyZWVuT3B0aW9uc1wiPjwvQ29ubmVjdGVkRnVsbHNjcmVlbktwaT5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5pbXBvcnQgVXNlclNpZGViYXJNZW51IGZyb20gJy4uL2NvbW1vbi9oZWFkZXIvVXNlclNpZGViYXJNZW51LnZ1ZSc7XG5pbXBvcnQgU2V0dGluZ3NIZWFkZXIgZnJvbSAnLi4vY29tbW9uL2hlYWRlci9TZXR0aW5nc0hlYWRlci52dWUnO1xuaW1wb3J0IENvbm5lY3RlZEZ1bGxzY3JlZW5LcGkgZnJvbSAnLi4vTWFwcy9QYXJ0cy9Db25uZWN0ZWRGdWxsc2NyZWVuS3BpLnZ1ZSc7XG5pbXBvcnQgTWFwc1RyZWUgZnJvbSAnLi4vY29tbW9uL01hcHNUcmVlLnZ1ZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZS9tb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0IGRyYWdnYWJsZSBmcm9tICd2dWVkcmFnZ2FibGUnO1xuaW1wb3J0IEVjaGFydHMgZnJvbSAndnVlLWVjaGFydHMnO1xuLy8gaW1wb3J0ICdlY2hhcnRzL2xpYi9jaGFydC9iYXInO1xuLy8gaW1wb3J0ICdlY2hhcnRzL2xpYi9jb21wb25lbnQvdG9vbHRpcCc7XG4vLyBpbXBvcnQgJ2VjaGFydHMvbGliL2NvbXBvbmVudC90aXRsZSc7XG5pbXBvcnQgeyBtYXBHZXR0ZXJzIH0gZnJvbSAndnVleCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ3F1ZXN0aW9ucycsXG4gIGNvbXBvbmVudHM6IHtcbiAgICBkcmFnZ2FibGUsXG4gICAgY2hhcnQ6IEVjaGFydHMsXG4gICAgVXNlclNpZGViYXJNZW51LFxuICAgIFNldHRpbmdzSGVhZGVyLFxuICAgIE1hcHNUcmVlLFxuICAgIENvbm5lY3RlZEZ1bGxzY3JlZW5LcGksXG4gIH0sXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHF1ZXN0aW9ubmFpcmVzOiBbXSxcbiAgICAgIGNvbm5lY3RvcnM6IFtdLFxuICAgICAgcXVlc3Rpb25zOiBbXSxcbiAgICAgIHF1ZXN0aW9ubmFpcmVRdWVzdGlvbnM6IFtdLFxuICAgICAgY3dpZGdldHM6IFtdLFxuICAgICAgZnJvbURhdGU6IG1vbWVudChtb21lbnQoKSkuZm9ybWF0KCdERC9NTS9ZWVlZIGhoOm1tOnNzJyksXG4gICAgICB0b0RhdGU6IG1vbWVudChtb21lbnQoKSkuZm9ybWF0KCdERC9NTS9ZWVlZIGhoOm1tOnNzJyksXG4gICAgICBxdWVzdGlvbmlkOiAnJyxcbiAgICAgIHF1ZXN0aW9ubmFpcmVJZDogJycsXG4gICAgICBxdWVzdGlvbm5haXJlUUlkOiAnJyxcbiAgICAgIHBlcmlvZDogJ0RheScsXG4gICAgICB3aWRnZXR0eXBlOiAnJyxcbiAgICAgIHdpZGdldERhdGE6ICdhdmVyYWdlJyxcbiAgICAgIHB3aWRnZXRzOiBbXSxcbiAgICAgIGxvYWRlcjogZmFsc2UsXG4gICAgICBvcmRlckRhdGE6IFtdLFxuICAgICAgcHJldmlldzogW10sXG4gICAgICBzaG93TG9kZXI6IGZhbHNlLFxuICAgICAgZmluaXNoZWQ6IGZhbHNlLFxuICAgICAga3BpTmFtZTogJycsXG4gICAgICBzZWxlY3RlZGNvbm5lY3RvcnR5cGU6ICcnLFxuICAgICAgc2VsZWN0ZWRDb25uZWN0b3I6ICcnLFxuICAgICAgcXVlc3Rpb250ZXh0OiAnJyxcbiAgICAgIG9wZW5GdWxsU2NyZWVuRmxhZzogZmFsc2UsXG4gICAgICBvcGVuRnVsbFNjcmVlbk9wdGlvbnM6IHt9LFxuICAgICAgcXVlc3Rpb25EZXRhaWxzOiB7fSxcbiAgICAgIHF1ZXN0aW9ubmFpcmVRdWVzdGlvbkRldGFpbHM6IHt9LFxuICAgICAgam91cm5leXM6IHtcbiAgICAgICAgbXlNYXBzOiBbXSxcbiAgICAgICAgb3VyTWFwczogW10sXG4gICAgICB9LFxuICAgICAgY3VzdG9tRWxlbWVudHM6IHtcbiAgICAgICAgbWFwczogW10sXG4gICAgICAgIGVwaXNvZGVzOiBbXSxcbiAgICAgICAgdG91Y2hwb2ludHM6IFtdLFxuICAgICAgfSxcbiAgICAgIGNzdl9xdWVzdGlvbnM6IFtdLFxuICAgICAgY3N2X3hfYXhpczogMCxcbiAgICAgIGNzdl95X2F4aXM6IDAsXG4gICAgICBjc3ZfaW1wb3J0X29wdGlvbnM6IFtdLFxuICAgICAgY3N2X2RhdGVfZmllbGQ6ICcnLFxuICAgICAgcXVlc3Rpb25MZXZlbDogMSxcbiAgICAgIGRhdGFJbXBvcnRlZEZsYWc6IGZhbHNlLFxuICAgICAgZGF0YUltcG9ydGVkRmlsZTogJy0tJyxcbiAgICAgIC8vIFRvZG8gVXBkYXRlIEluZGl2aWR1YWwgdmFsdWVzIHdpdGggdGhpc1xuICAgICAgZGltZW5zaW9uczoge1xuICAgICAgICBicmFuZHM6IFtdLFxuICAgICAgICBjczogW10sXG4gICAgICAgIGNvdW50cmllczogW10sXG4gICAgICAgIHByb2R1Y3RzOiBbXVxuICAgICAgfSxcbiAgICAgIHdpZGdldE9iajoge1xuICAgICAgICBrcGlOYW1lOiAnJyxcbiAgICAgICAgc2VsZWN0ZWRDb25uZWN0b3I6IC0xLFxuICAgICAgICBxdWVzdGlvbm5haXJlSWQ6IG51bGwsXG4gICAgICAgIHF1ZXN0aW9ubmFpcmVRSWQ6IG51bGwsXG4gICAgICAgIHF1ZXN0aW9uaWQ6IG51bGwsXG4gICAgICAgIHF1ZXN0aW9udGV4dDogJycsXG4gICAgICAgIHdpZGdldERhdGE6ICdhdmVyYWdlJyxcbiAgICAgICAgcGVyaW9kOiAnRGF5JyxcbiAgICAgICAgZnJvbURhdGU6IG1vbWVudChtb21lbnQoKSkuZm9ybWF0KCdERC9NTS9ZWVlZIGhoOm1tOnNzJyksXG4gICAgICAgIHRvRGF0ZTogbW9tZW50KG1vbWVudCgpKS5mb3JtYXQoJ0REL01NL1lZWVkgaGg6bW06c3MnKSxcbiAgICAgICAgbGFiZWw6ICcnLFxuICAgICAgICB1cmw6ICcnLFxuICAgICAgICBkaW1lbnNpb25zOiB7XG4gICAgICAgICAgYnJhbmRzOiBbXSxcbiAgICAgICAgICBjczogW10sXG4gICAgICAgICAgcHJvZHVjdHM6IFtdLFxuICAgICAgICAgIGNvdW50cmllczogW10sXG4gICAgICAgIH0sXG4gICAgICAgIGN1c3RvbUVsZW1lbnRzOiB7XG4gICAgICAgICAgbWFwczogW10sXG4gICAgICAgICAgZXBpc29kZXM6IFtdLFxuICAgICAgICAgIHRvdWNocG9pbnRzOiBbXSxcbiAgICAgICAgfSxcbiAgICAgICAgZ3JhcGhUeXBlOiAnUGllJyxcbiAgICAgICAgY29wdGlvbnM6IHt9XG4gICAgICB9LFxuICAgICAgc3VibWl0OiBmYWxzZVxuXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICAuLi5tYXBHZXR0ZXJzKFsnYXBwU2VzcyddKSxcbiAgICBnZXRRdWVzdGlvbm5haXJlUXVlc3Rpb25zKCkge1xuICAgICAgcmV0dXJuIHRoaXMud2lkZ2V0T2JqLnF1ZXN0aW9ubmFpcmVJZCA/IHRoaXMucXVlc3Rpb25uYWlyZVF1ZXN0aW9ucyA6IHRoaXMucXVlc3Rpb25zO1xuICAgIH0sXG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICAvKipcbiAgICAgKiBUbyBmZXRjaCBhbGwgQmFzZSBRdWVzdGlvbnNcbiAgICAgKi9cbiAgICBnZXRRdWVzdGlvbnMoY29ubmVjdG9ySWQpIHtcbiAgICAgIC8vIGxvYWRlci5vcGVuKCk7XG4gICAgICAvLyBUaGUgdmlldyBtb2RlbC5cbiAgICAgIGNvbnN0IHJlcSA9IHtcbiAgICAgICAgY29ubmVjdG9ySWQ6IGNvbm5lY3RvcklkLFxuICAgICAgfTtcblxuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgc2VsZi5sb2FkZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMuJGh0dHBcbiAgICAgICAgLnBvc3QoJy9hcGkvZ2V0UXVlc3Rpb25zJywgcmVxKVxuICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDIwMCkge1xuICAgICAgICAgICAgLy8gJCgnI2Jhc2VRdWVzdGlvbnMnKS5zZWxlY3RwaWNrZXIoJ2Rlc3Ryb3knKTtcbiAgICAgICAgICAgIHNlbGYucXVlc3Rpb25zID0gcmVzcG9uc2UuZGF0YS5kYXRhLmRhdGE7XG4gICAgICAgICAgICAkKCcjYmFzZVF1ZXN0aW9ucycpLnNlbGVjdHBpY2tlcigpO1xuICAgICAgICAgICAgJCgnI2Jhc2VRdWVzdGlvbnMnKS5zZWxlY3RwaWNrZXIoJ3JlZnJlc2gnKTtcbiAgICAgICAgICAgIHNlbGYuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgICAgJCgnI2Jhc2VRdWVzdGlvbnMnKS5zZWxlY3RwaWNrZXIoJ3JlZnJlc2gnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2VsZi5sb2FkZXIgPSB0cnVlO1xuICAgICAgICAgICAgLy8gbG9hZGVyLmNsb3NlKCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBsb2FkZXIuY2xvc2UoKTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFRvIGZldGNoIGFsbCBRdWVzdGlvbm5haXJlc1xuICAgICAqL1xuICAgIGdldFF1ZXN0aW9ubmFpcmVzKGNvbm5lY3RvcklkKSB7XG4gICAgICAvLyBsb2FkZXIub3BlbigpO1xuICAgICAgLy8gVGhlIHZpZXcgbW9kZWwuXG4gICAgICBjb25zdCByZXEgPSB7XG4gICAgICAgIGNvbm5lY3RvcklkOiBjb25uZWN0b3JJZCxcbiAgICAgIH07XG5cbiAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgIHRoaXMuJGh0dHBcbiAgICAgICAgLnBvc3QoJy9hcGkvZ2V0UXVlc3Rpb25uYWlyZXMnLCByZXEpXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgICAgICAvLyAkKCcjcXVlc3Rpb25uYWlyZXNFbGVtZW50Jykuc2VsZWN0cGlja2VyKCdkZXN0cm95Jyk7XG4gICAgICAgICAgICBzZWxmLnF1ZXN0aW9ubmFpcmVzID0gcmVzcG9uc2UuZGF0YS5kYXRhLmRhdGE7XG4gICAgICAgICAgICAkKCcjcXVlc3Rpb25uYWlyZXNFbGVtZW50Jykuc2VsZWN0cGlja2VyKCk7XG4gICAgICAgICAgICAkKCcjcXVlc3Rpb25uYWlyZXNFbGVtZW50Jykuc2VsZWN0cGlja2VyKCdyZWZyZXNoJyk7XG4gICAgICAgICAgICBzZWxmLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAgICQoJyNxdWVzdGlvbm5haXJlc0VsZW1lbnQnKS5zZWxlY3RwaWNrZXIoJ3JlZnJlc2gnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2VsZi5sb2FkZXIgPSB0cnVlO1xuICAgICAgICAgICAgLy8gbG9hZGVyLmNsb3NlKCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBsb2FkZXIuY2xvc2UoKTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFRvIGZldGNoIGFsbCBRdWVzdGlvbm5haXJlc1xuICAgICAqL1xuICAgIGdldFF1ZXN0aW9uc0ZvclF1ZXN0aW9ubmFpcmVzKGNvbm5lY3RvcklkLCBldmVudCkge1xuICAgICAgbG9hZGVyLm9wZW4oKTtcbiAgICAgIC8vIFRoZSB2aWV3IG1vZGVsLlxuXG4gICAgICBjb25zdCBzZWxlY3RlZFF1ZXN0aW9ubmFpcmUgPSBldmVudC50YXJnZXQudmFsdWU7XG5cbiAgICAgIGNvbnN0IHJlcSA9IHtcbiAgICAgICAgY29ubmVjdG9ySWQ6IGNvbm5lY3RvcklkLFxuICAgICAgICBxdWVzdGlvbm5haXJlSWQ6IHNlbGVjdGVkUXVlc3Rpb25uYWlyZSxcbiAgICAgIH07XG5cbiAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgIHRoaXMuJGh0dHBcbiAgICAgICAgLnBvc3QoJy9hcGkvZ2V0UXVlc3Rpb25zQnlRdWVzdGlvbm5haXJlJywgcmVxKVxuICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDIwMCkge1xuICAgICAgICAgICAgLy8gJCgnI3F1ZXN0aW9uc0VsZW1lbnQnKS5zZWxlY3RwaWNrZXIoJ2Rlc3Ryb3knKTtcbiAgICAgICAgICAgIHNlbGYucXVlc3Rpb25uYWlyZVF1ZXN0aW9ucyA9IHJlc3BvbnNlLmRhdGEuZGF0YS5kYXRhO1xuICAgICAgICAgICAgJCgnI3F1ZXN0aW9uc0VsZW1lbnQnKS5zZWxlY3RwaWNrZXIoKTtcbiAgICAgICAgICAgICQoJyNxdWVzdGlvbnNFbGVtZW50Jykuc2VsZWN0cGlja2VyKCdyZWZyZXNoJyk7XG4gICAgICAgICAgICBzZWxmLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAgICQoJyNxdWVzdGlvbnNFbGVtZW50Jykuc2VsZWN0cGlja2VyKCdyZWZyZXNoJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNlbGYubG9hZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvYWRlci5jbG9zZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgbG9hZGVyLmNsb3NlKCk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBUbyBmZXRjaCBhbGwgQ29ubmVjdG9yc1xuICAgICAqL1xuICAgIGdldENvbm5lY3Rpb25zKCkge1xuICAgICAgLy8gVGhlIHZpZXcgbW9kZWwuXG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICB0aGlzLiRodHRwXG4gICAgICAgIC5nZXQoJy9zZXJ2aWNlL2dldENvbm5lY3RvckRldGFpbHMnKVxuICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDIwMCkge1xuICAgICAgICAgICAgc2VsZi5jb25uZWN0b3JzID0gcmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coc2VsZi5jb25uZWN0b3JzKTtcbiAgICAgICAgICAgIHNlbGYuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgICAgJCgnI2Nvbm5lY3RvckVsZW1lbnQnKS5zZWxlY3RwaWNrZXIoJ3JlZnJlc2gnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2VsZi5sb2FkZXIgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgc2VsZWN0Q29ubmVjdG9yKCkge1xuICAgICAgLy8gdGhpcy5zZWxlY3RlZENvbm5lY3RvciA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkQ29ubmVjdG9yID0gdGhpcy53aWRnZXRPYmouc2VsZWN0ZWRDb25uZWN0b3I7XG4gICAgICBjb25zb2xlLmxvZyhzZWxlY3RlZENvbm5lY3Rvcik7XG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICBzZWxmLnNlbGVjdGVkY29ubmVjdG9ydHlwZSA9ICcnO1xuXG4gICAgICBpZiAodGhpcy5jb25uZWN0b3JzW3NlbGVjdGVkQ29ubmVjdG9yXS5jc3ZzdGF0dXMgPT0gMSkge1xuICAgICAgICB0aGlzLmRhdGFJbXBvcnRlZEZsYWcgPSB0aGlzLmNvbm5lY3RvcnNbc2VsZWN0ZWRDb25uZWN0b3JdLmZpbGVVcGxvYWRlZFJlY2VudGx5ID09IDEgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIHRoaXMuZGF0YUltcG9ydGVkRmlsZSA9IHRoaXMuY29ubmVjdG9yc1tzZWxlY3RlZENvbm5lY3Rvcl0uZmlsZVVwbG9hZGVkO1xuICAgICAgICB0aGlzLnNlbGVjdGVkY29ubmVjdG9ydHlwZSA9ICdjc3YnO1xuICAgICAgICB0aGlzLnF1ZXN0aW9uaWQgPSAtMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZ2V0UXVlc3Rpb25zKHRoaXMuY29ubmVjdG9yc1tzZWxlY3RlZENvbm5lY3Rvcl0uY29ubmVjdG9yaWQpO1xuICAgICAgICB0aGlzLmdldFF1ZXN0aW9ubmFpcmVzKHRoaXMuY29ubmVjdG9yc1tzZWxlY3RlZENvbm5lY3Rvcl0uY29ubmVjdG9yaWQpO1xuICAgICAgfVxuICAgICAgLy9nZXQgcXVlc3Rpb25zXG4gICAgICAvLyB0aGlzLmNvbm5lY3RvcnMuZm9yRWFjaCgoY29ubmVjdG9yKSA9PiB7XG4gICAgICAvLyAgIC8vIGNvbnNvbGUubG9nKGNvbm5lY3Rvci5jb25uZWN0b3JpZCk7XG4gICAgICAvLyAgIGlmIChjb25uZWN0b3IuY29ubmVjdG9yaWQgPT0gc2VsZWN0ZWRDb25uZWN0b3IpIHtcbiAgICAgIC8vICAgICAvLyBzZWxmLnNlbGVjdGVkY29ubmVjdG9ydHlwZSA9IGNvbm5lY3Rvci5jbGllbnRuYW1lO1xuICAgICAgLy8gICAgIGlmIChjb25uZWN0b3IuY3N2c3RhdHVzID09IDEpIHtcbiAgICAgIC8vICAgICAgIHNlbGYuc2VsZWN0ZWRjb25uZWN0b3J0eXBlID0gJ2Nzdic7XG4gICAgICAvLyAgICAgICBzZWxmLnF1ZXN0aW9uaWQgPSAtMTtcbiAgICAgIC8vICAgICB9XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH0pO1xuICAgIH0sXG4gICAgZ2V0UXVlc3Rpb25EZXRhaWxzKHF1ZXN0aW9uSWQpIHtcbiAgICAgIC8vIGNvbnN0IHF1ZXN0aW9uRGV0YWlsc09iamVjdCA9IEpTT04ucGFyc2UocXVlc3Rpb25EZXRhaWxzKTtcbiAgICAgIGNvbnN0IHF1ZXN0aW9uRGV0YWlsc09iamVjdCA9IHF1ZXN0aW9uRGV0YWlscztcbiAgICAgIC8vIGNvbnNvbGUubG9nKHF1ZXN0aW9uRGV0YWlscyk7XG4gICAgICBsZXQgcXVlc3Rpb25EZXRhaWxzID0ge307XG5cbiAgICAgIC8vIGdldCB0aGUgZGV0YWlscyBvZiB0aGUgcXVlc3Rpb24gZnJvbVxuICAgICAgdGhpcy5xdWVzdGlvbnMuZm9yRWFjaCgocXVlc3Rpb24pID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2cocXVlc3Rpb24uYXR0cmlidXRlcy5xdWVzdGlvbl9pZCwgcXVlc3Rpb25EZXRhaWxzT2JqZWN0LnF1ZXN0aW9uaWQpO1xuICAgICAgICBpZiAoU3RyaW5nKHF1ZXN0aW9uLmF0dHJpYnV0ZXMucXVlc3Rpb25faWQpID09IFN0cmluZyhxdWVzdGlvbklkKSkge1xuICAgICAgICAgIHF1ZXN0aW9uRGV0YWlscyA9IEpTT04ucGFyc2UocXVlc3Rpb24uYXR0cmlidXRlcy5yYXdfZGV0YWlscyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcXVlc3Rpb25EZXRhaWxzO1xuICAgIH0sXG4gICAgZ2V0UXVlc3Rpb25uYWlyZVF1ZXN0aW9uRGV0YWlscyhxdWVzdGlvbklkKSB7XG4gICAgICBjb25zdCBxdWVzdGlvbkRldGFpbHNPYmplY3QgPSBxdWVzdGlvbkRldGFpbHM7XG4gICAgICBsZXQgcXVlc3Rpb25EZXRhaWxzID0ge307XG5cbiAgICAgIC8vIGdldCB0aGUgZGV0YWlscyBvZiB0aGUgcXVlc3Rpb24gZnJvbVxuICAgICAgdGhpcy5xdWVzdGlvbm5haXJlUXVlc3Rpb25zLmZvckVhY2goKHF1ZXN0aW9uKSA9PiB7XG4gICAgICAgIGlmIChTdHJpbmcocXVlc3Rpb24uYXR0cmlidXRlcy5xdWVzdGlvbl9pZCkgPT0gU3RyaW5nKHF1ZXN0aW9uSWQpKSB7XG4gICAgICAgICAgcXVlc3Rpb25EZXRhaWxzID0gSlNPTi5wYXJzZShxdWVzdGlvbi5hdHRyaWJ1dGVzLnJhd19kZXRhaWxzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBxdWVzdGlvbkRldGFpbHM7XG4gICAgfSxcblxuICAgIGNoZWNrSWZNb3JlVGhhblplcm8oY3VzdG9tRWxlbWVudHMsIGVsZW1lbnRUeXBlLCBlbGVtZW50VGV4dCkge1xuICAgICAgaWYgKCFjdXN0b21FbGVtZW50cykge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIGxldCByZXR1cm5TdHJpbmcgPSAnJztcbiAgICAgIGlmIChjdXN0b21FbGVtZW50c1tlbGVtZW50VHlwZV0pIHtcbiAgICAgICAgcmV0dXJuIGN1c3RvbUVsZW1lbnRzW2VsZW1lbnRUeXBlXS5sZW5ndGg7XG4gICAgICAgIC8vIHJldHVyblN0cmluZyA9IGN1c3RvbUVsZW1lbnRzW2VsZW1lbnRUeXBlXS5sZW5ndGggKyAnICcgKyBlbGVtZW50VGV4dDtcbiAgICAgICAgLy8gaWYgKGN1c3RvbUVsZW1lbnRzW2VsZW1lbnRUeXBlXS5sZW5ndGggPiAxKSB7XG4gICAgICAgIC8vICAgcmV0dXJuU3RyaW5nICs9ICdzJztcbiAgICAgICAgLy8gfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJldHVyblN0cmluZztcbiAgICB9LFxuICAgIGluaXRpYWxpc2UoKSB7XG4gICAgICAvKipcbiAgICAgICAqICBEYXRlIFRpbWUgUGlja2VyXG4gICAgICAgKiAgVG9kbyByZW1vdmUganF1ZXJ5IGRhdGV0aW1lIHBpY2tlciB1c2UgdnVlXG4gICAgICAgKi9cbiAgICAgIHRoaXMuaW5pdERhdGV0aW1lUGlja2VycygyKTtcbiAgICAgICQoJy50b0RhdGVwaWNrZXJJbmZvJykudmFsKHRoaXMud2lkZ2V0T2JqLnRvRGF0ZSk7XG4gICAgICAkKCcuZnJvbURhdGVwaWNrZXJJbmZvJykudmFsKHRoaXMud2lkZ2V0T2JqLmZyb21EYXRlKTtcbiAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgJCgnLnNlbGVjdHBpY2tlcicpLnNlbGVjdHBpY2tlcigpO1xuICAgICAgICAkKCcuc2VsZWN0cGlja2VyJykuc2VsZWN0cGlja2VyKCdyZWZyZXNoJyk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGFkZFRvSW1wb3J0T3B0aW9ucygpIHtcbiAgICAgIC8vIGNoZWNrIGZvciB2YWxpZGF0aW5nIGRhdGFcbiAgICAgIGlmICh0aGlzLmNzdl94X2F4aXMgPT0gJycgfHwgdGhpcy5jc3ZfeV9heGlzID09ICcnKSB7XG4gICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfdGltZXJfbWVzc2FnZSgnQm90aCB4IGFuZCB5IGF4aXMgaGF2ZSB0byBiZSBzZWxlY3RlZCEnLCAnd2FybmluZycpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLmNzdl9pbXBvcnRfb3B0aW9ucy51bnNoaWZ0KHtcbiAgICAgICAgeEF4aXM6IHRoaXMuY3N2X3hfYXhpcyxcbiAgICAgICAgeUF4aXM6IHRoaXMuY3N2X3lfYXhpcyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jc3ZfeF9heGlzID0gMDtcbiAgICAgIHRoaXMuY3N2X3lfYXhpcyA9IDA7XG4gICAgICAkKCcuY3N2X3NlbGVjdF9ib3hlcycpLnZhbCgnZGVmYXVsdCcpO1xuICAgICAgJCgnLmNzdl9zZWxlY3RfYm94ZXMnKS5zZWxlY3RwaWNrZXIoJ3JlZnJlc2gnKTtcbiAgICB9LFxuICAgIHJlbW92ZUZyb21JbXBvcnRPcHRpb25zKGVsZW1lbnRJbmRleCkge1xuICAgICAgdGhpcy5jc3ZfaW1wb3J0X29wdGlvbnMuc3BsaWNlKGVsZW1lbnRJbmRleCwgMSk7XG4gICAgfSxcbiAgICBjaGFuZ2VUaW1lKHR5cGUsIGR0KSB7XG4gICAgICBpZiAodHlwZSA9PSAnZnJvbScpIHtcbiAgICAgICAgdGhpcy4kc2V0KHRoaXMud2lkZ2V0T2JqLCAnZnJvbURhdGUnLCBkdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiRzZXQodGhpcy53aWRnZXRPYmosICd0b0RhdGUnLCBkdCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzZWxlY3RRdWVzdGlvbihldmVudCwgc2VsZWN0aW9uVHlwZSkge1xuICAgICAgLy8gY29uc29sZS5sb2coZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgIHRoaXMucXVlc3Rpb25pZCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgIGlmIChzZWxlY3Rpb25UeXBlID09ICdxdWVzdGlvbicpIHtcbiAgICAgICAgdGhpcy5xdWVzdGlvbm5haXJlUXVlc3Rpb25EZXRhaWxzID0gdGhpcy5nZXRRdWVzdGlvbm5haXJlUXVlc3Rpb25EZXRhaWxzKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnF1ZXN0aW9uRGV0YWlscyA9IHRoaXMuZ2V0UXVlc3Rpb25EZXRhaWxzKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcgd2lkZ2V0XG4gICAgICovXG4gICAgY3JlYXRlQ29ubmVjdG9yV2lkZ2V0KCkge1xuICAgICAgY29uc29sZS5sb2coXCLwn5qAIH4gY3JlYXRlQ29ubmVjdG9yV2lkZ2V0XCIpXG4gICAgfSxcbiAgICBzZWxlY3RUZW1wbGF0ZSh3aWRnZXRkYXRhKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVtcGxhdGVVcGxvYWQnICsgd2lkZ2V0ZGF0YS5pZCkuY2xpY2soKTtcbiAgICB9LFxuICAgIHNlbGVjdFVwbG9hZERhdGFUZW1wbGF0ZSgpIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXBvcnREYXRhJykuY2xpY2soKTtcbiAgICB9LFxuICAgIHNlbGVjdFNhbWVEYXRhVGVtcGxhdGUoKSB7XG4gICAgICBjb25zb2xlLmxvZygnYXNkJyk7XG4gICAgICBobG9hZGVyLm9wZW4oKTtcbiAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgIHRoaXMuJGh0dHBcbiAgICAgICAgLmdldCgnL2FwaS9pbXBvcnRTYW1lQ3N2VGVtcGxhdGUnKVxuICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDIwMCkge1xuICAgICAgICAgICAgc2VsZi5jc3ZfcXVlc3Rpb25zID0gcmVzcG9uc2UuZGF0YS5kYXRhLnF1ZXN0aW9ucztcbiAgICAgICAgICAgICQoJy5jc3Zfc2VsZWN0X2JveGVzJykuc2VsZWN0cGlja2VyKCk7XG4gICAgICAgICAgICAkKCcuY3N2X3NlbGVjdF9ib3hlcycpLnNlbGVjdHBpY2tlcigncmVmcmVzaCcpO1xuICAgICAgICAgICAgc2VsZi4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgICAgICAkKCcuY3N2X3NlbGVjdF9ib3hlcycpLnNlbGVjdHBpY2tlcigncmVmcmVzaCcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBobG9hZGVyLmNsb3NlKCk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICB1cGxvYWRUZW1wbGF0ZURhdGEoZSwgd2lkZ2V0ZGF0YSwgd2lkZ2V0aW5kZXgpIHtcbiAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgIGNvbnN0IGRvYyA9IGUudGFyZ2V0LmZpbGVzWzBdO1xuICAgICAgaWYgKCFkb2MpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8gQWxsb3dlZCBleHRlbnNpb25zXG4gICAgICBsZXQgcGVybWl0dGVkc2l6ZSA9IDEwO1xuICAgICAgbGV0IGRvY25hbWUgPSBkb2MubmFtZS5zcGxpdCgnLicpO1xuICAgICAgLy8gQ2hlY2tpbmcgZXh0ZW5zaW9uXG4gICAgICBpZiAoZG9jbmFtZVtkb2NuYW1lLmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCkgPT09ICd4bHN4Jykge1xuICAgICAgICBpZiAoZG9jLnNpemUgLyAxMDI0IC8gMTAyNCA8PSBwZXJtaXR0ZWRzaXplKSB7XG4gICAgICAgICAgaGxvYWRlci5vcGVuKCk7XG4gICAgICAgICAgbGV0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZG9jKTtcbiAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3dpZGdldGlkJywgd2lkZ2V0ZGF0YS5pZCk7XG4gICAgICAgICAgdGhpcy4kaHR0cFxuICAgICAgICAgICAgLnBvc3QoJy9hcGkvdXBsb2FkQ3N2VGVtcGxhdGUnLCBmb3JtRGF0YSwge1xuICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgaXRzIHN0YW5kYXJkIGNvbnRlbnQgZWxzZSBhbGxvdyB0aGUgdXNlciB0byBzZWxlY3QgdGhlIGZpZWxkc1xuXG4gICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgLy8gc2VsZi4kZW1pdCgnY2xpY2tlZCcsIHJlc3BvbnNlLmRhdGEuZGF0YSwgJ3VwZGF0ZScpXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlbXBsYXRlVXBsb2FkJyArIHdpZGdldGRhdGEuaWQpLnZhbHVlID0gJyc7XG5cbiAgICAgICAgICAgICAgICBzZWxmLmdldENvbm5lY3RvcldpZGdldERhdGEod2lkZ2V0aW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgbW1fbWVzc2FnZXIuZGlzcGxheV90aW1lcl9tZXNzYWdlKCdUZXN0IHRlbXBsYXRlIHVwbG9hZGVkJywgJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgICAgICBobG9hZGVyLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgIGhsb2FkZXIuY2xvc2UoKTtcbiAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlbXBsYXRlVXBsb2FkJyArIHdpZGdldGRhdGEuaWQpLnZhbHVlID0gJyc7XG5cbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yJyk7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgICAgICAgLy8gaWYoZXJyb3IucmVzcG9uc2Uuc3RhdHVzID09IDQwMSl7XG4gICAgICAgICAgICAgIC8vICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFwiL2xvZ291dFwiO1xuICAgICAgICAgICAgICAvLyB9ZWxzZSBpZihlcnJvci5yZXNwb25zZS5zdGF0dXMgPT0gNDAzKXtcbiAgICAgICAgICAgICAgLy8gICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvbWFwcGluZ1wiO1xuICAgICAgICAgICAgICAvLyB9ZWxzZXtcbiAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbW1fbWVzc2FnZXIuZGlzcGxheV90aW1lcl9tZXNzYWdlKHNlbGYuYXBwVHJhbnMubWVzc2FnZXMuZmlsZXMubGFyZ2Vfc2l6ZSwgJ3dhcm5pbmcnKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbW1fbWVzc2FnZXIuZGlzcGxheV90aW1lcl9tZXNzYWdlKHNlbGYuYXBwVHJhbnMubWVzc2FnZXMuZmlsZXMuZXh0ZW5zaW9uX2Vycm9yLCAnd2FybmluZycpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaW1wb3J0Q29ubmVjdG9yRGF0YShlKSB7XG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICBjb25zdCBkb2MgPSBlLnRhcmdldC5maWxlc1swXTtcbiAgICAgIGlmICghZG9jKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIEFsbG93ZWQgZXh0ZW5zaW9uc1xuICAgICAgbGV0IHBlcm1pdHRlZHNpemUgPSAxMDtcbiAgICAgIGxldCBkb2NuYW1lID0gZG9jLm5hbWUuc3BsaXQoJy4nKTtcbiAgICAgIC8vIENoZWNraW5nIGV4dGVuc2lvblxuICAgICAgaWYgKGRvY25hbWVbZG9jbmFtZS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpID09PSAneGxzeCcpIHtcbiAgICAgICAgaWYgKGRvYy5zaXplIC8gMTAyNCAvIDEwMjQgPD0gcGVybWl0dGVkc2l6ZSkge1xuICAgICAgICAgIGhsb2FkZXIub3BlbigpO1xuICAgICAgICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGRvYyk7XG4gICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdjb25uZWN0b3JJZCcsIHRoaXMuY29ubmVjdG9yc1t0aGlzLnNlbGVjdGVkQ29ubmVjdG9yXS5jb25uZWN0b3JpZCk7XG4gICAgICAgICAgdGhpcy4kaHR0cFxuICAgICAgICAgICAgLnBvc3QoJy9hcGkvaW1wb3J0Q3N2VGVtcGxhdGUnLCBmb3JtRGF0YSwge1xuICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgaXRzIHN0YW5kYXJkIGNvbnRlbnQgZWxzZSBhbGxvdyB0aGUgdXNlciB0byBzZWxlY3QgdGhlIGZpZWxkc1xuICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDIwMCkge1xuICAgICAgICAgICAgICAgIHNlbGYuZGF0YUltcG9ydGVkRmxhZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2VsZi5kYXRhSW1wb3J0ZWRGaWxlID0gcmVzcG9uc2UuZGF0YS5kYXRhLmZpbGVVcGxvYWRlZCA9PSAnJyA/ICctLScgOiByZXNwb25zZS5kYXRhLmRhdGEuZmlsZVVwbG9hZGVkO1xuICAgICAgICAgICAgICAgIHNlbGYuY3N2X3F1ZXN0aW9ucyA9IHJlc3BvbnNlLmRhdGEuZGF0YS5xdWVzdGlvbnM7XG4gICAgICAgICAgICAgICAgJCgnLmNzdl9zZWxlY3RfYm94ZXMnKS5zZWxlY3RwaWNrZXIoKTtcbiAgICAgICAgICAgICAgICAkKCcuY3N2X3NlbGVjdF9ib3hlcycpLnNlbGVjdHBpY2tlcigncmVmcmVzaCcpO1xuICAgICAgICAgICAgICAgIHNlbGYuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICQoJy5jc3Zfc2VsZWN0X2JveGVzJykuc2VsZWN0cGlja2VyKCdyZWZyZXNoJyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgIGhsb2FkZXIuY2xvc2UoKTtcblxuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3InKTtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbW1fbWVzc2FnZXIuZGlzcGxheV90aW1lcl9tZXNzYWdlKHNlbGYuYXBwVHJhbnMubWVzc2FnZXMuZmlsZXMubGFyZ2Vfc2l6ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfdGltZXJfbWVzc2FnZShzZWxmLmFwcFRyYW5zLm1lc3NhZ2VzLmZpbGVzLmV4dGVuc2lvbl9lcnJvcik7XG4gICAgICB9XG4gICAgfSxcbiAgICBkb3dubG9hZFRlbXBsYXRlKHdpZGdldGRhdGEpIHtcbiAgICAgIGxldCByb3V0ZURhdGEgPSB0aGlzLiRyb3V0ZXIucmVzb2x2ZSh7IHBhdGg6ICcvYXBpL2Rvd25sb2FkQ3N2VGVtcGxhdGUvJyArIHdpZGdldGRhdGEuaWQgKyAnL2RheS8wLzAnIH0pO1xuICAgICAgd2luZG93Lm9wZW4ocm91dGVEYXRhLmhyZWYsICdfYmxhbmsnKTtcbiAgICB9LFxuXG4gICAgc2hvd1ByZXZpZXcoKSB7XG4gICAgICAvLyBUaGUgdmlldyBtb2RlbC5cbiAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgIGxvYWRlci5vcGVuKCk7XG4gICAgICB0aGlzLiRodHRwXG4gICAgICAgIC5wb3N0KCcvYXBpL2dldENvbm5lY3RvclByZXZpZXdXaWRnZXREYXRhJywge1xuICAgICAgICAgIGNvbm5lY3RvcklkOiBzZWxmLmNvbm5lY3RvcnNbc2VsZi5zZWxlY3RlZENvbm5lY3Rvcl0uY29ubmVjdG9yaWQsXG4gICAgICAgICAgc2VsZWN0ZWRPcHRpb25zOiBzZWxmLmNzdl9pbXBvcnRfb3B0aW9ucyxcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAyMDApIHtcbiAgICAgICAgICAgIGxldCBwcmV2aWV3RGF0YSA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICAgICAgICAgIGxldCBjaCA9IHtcbiAgICAgICAgICAgICAgc2VyaWVzOiBbXSxcbiAgICAgICAgICAgICAgZ3JpZDoge1xuICAgICAgICAgICAgICAgIGxlZnQ6ICcyMHB4JyxcbiAgICAgICAgICAgICAgICBib3R0b206ICc2MHB4JyxcbiAgICAgICAgICAgICAgICBjb250YWluTGFiZWw6IHRydWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY2gudG9vbHRpcCA9IHNlbGYuZ3JhcGhCdWlsZFRvb2xUaXAoKTtcbiAgICAgICAgICAgIGNoLmNvbG9yID0gWycjNUM0Rjg5J107XG4gICAgICAgICAgICBjaC54QXhpcyA9IHNlbGYuZ3JhcGhTaG93SGlkZUxhYmVsKCdzaG93JywgJ3RleHQnLCBjaC54QXhpcyk7XG4gICAgICAgICAgICBjaC54QXhpcy5heGlzTGFiZWwucm90YXRlID0gMzA7XG4gICAgICAgICAgICBjaC54QXhpcy5heGlzTGFiZWwuZm9udFNpemUgPSA4O1xuICAgICAgICAgICAgY2gueUF4aXMgPSBzZWxmLmdyYXBoU2hvd0hpZGVMYWJlbCgnc2hvdycsICd2YWx1ZScpO1xuICAgICAgICAgICAgY2gueUF4aXMuYXhpc0xhYmVsLmZvbnRTaXplID0gODtcbiAgICAgICAgICAgIGNoLnNlcmllcyA9IHNlbGYuZ3JhcGhCdWlsZFNlcmllcygnYmFyJyk7XG4gICAgICAgICAgICBsZXQgcHJldmlld0dyYXBocyA9IFtdO1xuICAgICAgICAgICAgcHJldmlld0RhdGEuZm9yRWFjaCgoc2luZ2xlLCBqKSA9PiB7XG4gICAgICAgICAgICAgIGNoLnhBeGlzLmRhdGEgPSBbXTtcbiAgICAgICAgICAgICAgY2guc2VyaWVzWzBdLmRhdGEgPSBbXTtcbiAgICAgICAgICAgICAgY2gudGl0bGUgPSBzZWxmLmdyYXBoQnVpbGRUaXRsZShzZWxmLmNzdl9pbXBvcnRfb3B0aW9uc1tqXS54QXhpcywgc2VsZi5jc3ZfaW1wb3J0X29wdGlvbnNbal0ueUF4aXMsIDE4KTtcbiAgICAgICAgICAgICAgc2luZ2xlLmZvckVhY2goKHJhd1Bvc2l0aW9uLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGFuc3dlclRleHQgPSByYXdQb3NpdGlvbi5hbnN3ZXIubGVuZ3RoID4gMTUgPyByYXdQb3NpdGlvbi5hbnN3ZXIuc3Vic3RyKDAsIDEyKSArICcuLi4nIDogcmF3UG9zaXRpb24uYW5zd2VyO1xuICAgICAgICAgICAgICAgIGNoLnhBeGlzLmRhdGEucHVzaChhbnN3ZXJUZXh0KTtcbiAgICAgICAgICAgICAgICBjaC5zZXJpZXNbMF0uZGF0YS5wdXNoKHJhd1Bvc2l0aW9uLmF2ZXJhZ2UpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcHJldmlld0dyYXBocy5wdXNoKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY2gpKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNlbGYuJHNldChzZWxmLCAncHJldmlldycsIHByZXZpZXdHcmFwaHMpO1xuICAgICAgICAgICAgc2VsZi4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgICAgICBzZWxmLmluaXREYXRldGltZVBpY2tlcnMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbG9hZGVyLmNsb3NlKCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBsb2FkZXIuY2xvc2UoKTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIGZvcm1hdFRpdGxlKHRpdGxlVGV4dCkge1xuICAgICAgY29uc3QgcmVtb3ZlUHJlID0gdGl0bGVUZXh0LnNwbGl0KCcpOjxicj4nKTtcbiAgICAgIGlmIChyZW1vdmVQcmUubGVuZ3RoID4gMSkge1xuICAgICAgICB0aXRsZVRleHQgPSByZW1vdmVQcmVbMV07XG4gICAgICB9XG4gICAgICByZXR1cm4gdGl0bGVUZXh0O1xuICAgIH0sXG4gICAgaW5pdERhdGV0aW1lUGlja2VycygpIHtcbiAgICAgIC8vIFVzZSB0aGUgRHJhZ2dhYmxlIGNvbXBvbmVudCdzICRlbCB0byBmaW5kIGVsZW1lbnRzXG4gICAgICAkKCcuZGF0ZXBpY2tlckluZm8nKVxuICAgICAgICAuZGF0ZXRpbWVwaWNrZXIoe1xuICAgICAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIGFsbG93SW5wdXRUb2dnbGU6IHRydWUsXG4gICAgICAgICAgZm9ybWF0OiAnREQvTU0vWVlZWSBoaDptbTpzcycsXG4gICAgICAgICAgc2lkZUJ5U2lkZTogdHJ1ZSxcbiAgICAgICAgICBpY29uczoge1xuICAgICAgICAgICAgdGltZTogJ2ZhIGZhLWNsb2NrLW8nLFxuICAgICAgICAgICAgZGF0ZTogJ2ZhIGZhLWNhbGVuZGFyJyxcbiAgICAgICAgICAgIHVwOiAnZmEgZmEtY2hldnJvbi11cCcsXG4gICAgICAgICAgICBkb3duOiAnZmEgZmEtY2hldnJvbi1kb3duJyxcbiAgICAgICAgICAgIG5leHQ6ICdmYSBmYS1jaGV2cm9uLXJpZ2h0JyxcbiAgICAgICAgICAgIHByZXZpb3VzOiAnZmEgZmEtY2hldnJvbi1sZWZ0JyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAub24oJ2RwLmhpZGUnLCBmdW5jdGlvbiAoZXZlbnQpIHsgfSk7XG4gICAgfSxcbiAgICBoYW5kbGVEcmFnRW5kKCkge1xuICAgICAgLy8gVGhpcyBldmVudCBpcyB0cmlnZ2VyZWQgYXQgdGhlIGVuZCBvZiB0aGUgZHJhZyBvcGVyYXRpb25cbiAgICAgIC8vIFlvdSBtaWdodCBuZWVkIHRvIHJlLWluaXRpYWxpemUgZGF0ZXRpbWVwaWNrZXJzIGhlcmVcbiAgICAgIHRoaXMuaW5pdERhdGV0aW1lUGlja2VycygpO1xuICAgIH0sXG5cbiAgICByZXNlUXVlc3Rpb25uYWlyZXMoKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ29ubmVjdG9yID0gJyc7XG4gICAgICB0aGlzLnF1ZXN0aW9uaWQgPSAnJztcbiAgICAgIHRoaXMua3BpTmFtZSA9ICcnO1xuICAgICAgdGhpcy5xdWVzdGlvbm5haXJlSWQgPSAnJztcbiAgICAgIHRoaXMucXVlc3Rpb25uYWlyZVFJZCA9ICcnO1xuICAgICAgdGhpcy5xdWVzdGlvbnRleHQgPSAnJztcbiAgICAgIHRoaXMud2lkZ2V0RGF0YSA9ICdhdmVyYWdlJztcbiAgICAgIHRoaXMud2lkZ2V0dHlwZSA9ICcnO1xuICAgICAgdGhpcy5wZXJpb2QgPSAnRGF5JztcbiAgICAgIHRoaXMuY3VzdG9tRWxlbWVudHMgPSB7XG4gICAgICAgIG1hcHM6IFtdLFxuICAgICAgICBlcGlzb2RlczogW10sXG4gICAgICAgIHRvdWNocG9pbnRzOiBbXSxcbiAgICAgIH07XG4gICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICQoJy5zZWxlY3RwaWNrZXInKS5zZWxlY3RwaWNrZXIoJ3JlZnJlc2gnKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLy8gbWV0aG9kcyB0byBoYW5kbGUgZ3JhcGggb3B0aW9uc1xuICAgIGdyYXBoU2hvd0hpZGVMYWJlbChzdGF0dXMgPSAnc2hvdycsIHR5cGUgPSAndGV4dCcsIG9yaWdpbmFsT2JqZWN0ID0gbnVsbCwgYXhpc05hbWUgPSBudWxsKSB7XG4gICAgICBsZXQgYXhpc0RhdGEgPSB7XG4gICAgICAgIGRhdGE6IFtdLFxuICAgICAgfTtcbiAgICAgIGlmIChvcmlnaW5hbE9iamVjdCAhPSBudWxsKSB7XG4gICAgICAgIGF4aXNEYXRhLmRhdGEgPSBvcmlnaW5hbE9iamVjdC5kYXRhO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXR1cyA9PT0gJ2hpZGUnKSB7XG4gICAgICAgIGF4aXNEYXRhLmF4aXNMYWJlbCA9IHtcbiAgICAgICAgICBzaG93OiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0eXBlID09PSAndmFsdWUnKSB7XG4gICAgICAgICAgYXhpc0RhdGEudHlwZSA9ICd2YWx1ZSc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGF4aXNOYW1lICE9IG51bGwpIHtcbiAgICAgICAgICBheGlzRGF0YS5uYW1lID0gYXhpc05hbWU7XG4gICAgICAgIH1cbiAgICAgICAgYXhpc0RhdGEuYXhpc0xhYmVsID0ge1xuICAgICAgICAgIGNvbG9yOiB0aGlzLmFwcFNlc3MudXNlclNldHRpbmdzLnRoZW1lID09ICdkYXJrJyA/ICcjRkZGRkZGJyA6ICcjMTEwQTFBJyxcbiAgICAgICAgfTtcbiAgICAgICAgYXhpc0RhdGEubmFtZVRleHRTdHlsZSA9IHtcbiAgICAgICAgICBjb2xvcjogdGhpcy5hcHBTZXNzLnVzZXJTZXR0aW5ncy50aGVtZSA9PSAnZGFyaycgPyAnI0ZGRkZGRicgOiAnIzExMEExQScsXG4gICAgICAgICAgYWxpZ246ICdsZWZ0JyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBheGlzRGF0YTtcbiAgICB9LFxuICAgIGdyYXBoQnVpbGRTZXJpZXModHlwZSkge1xuICAgICAgbGV0IHNlcmllc0RhdGEgPSBbXTtcbiAgICAgIGlmICh0eXBlID09ICdsaW5lJykge1xuICAgICAgICBzZXJpZXNEYXRhWzBdID0ge1xuICAgICAgICAgIHR5cGU6ICdsaW5lJyxcbiAgICAgICAgICBkYXRhOiBbXSxcbiAgICAgICAgICBiYXJXaWR0aDogJzYwJScsXG4gICAgICAgICAgc21vb3RoOiB0cnVlLFxuICAgICAgICAgIHN5bWJvbDogJ25vbmUnLFxuICAgICAgICAgIGNvbm5lY3ROdWxsczogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAnYmFyJykge1xuICAgICAgICBzZXJpZXNEYXRhWzBdID0ge1xuICAgICAgICAgIHR5cGU6ICdiYXInLFxuICAgICAgICAgIGRhdGE6IFtdLFxuICAgICAgICAgIGJhcldpZHRoOiAnNjAlJyxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAncGllJykge1xuICAgICAgICBzZXJpZXNEYXRhWzBdID0ge1xuICAgICAgICAgIHR5cGU6ICdwaWUnLFxuICAgICAgICAgIGRhdGE6IFtdLFxuICAgICAgICAgIHJhZGl1czogJzU1JScsXG4gICAgICAgICAgLy8gY2VudGVyOiBbJzQwJScsICc1MCUnXSxcbiAgICAgICAgICBsYWJlbDoge1xuICAgICAgICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZXJpZXNEYXRhO1xuICAgIH0sXG4gICAgZ3JhcGhCdWlsZFRvb2xUaXAodHlwZSA9ICcnKSB7XG4gICAgICBsZXQgdG9vbFRpcCA9IHtcbiAgICAgICAgdHJpZ2dlcjogJ2l0ZW0nLFxuICAgICAgfTtcbiAgICAgIGlmICh0eXBlID09ICdwaWUnKSB7XG4gICAgICAgIHRvb2xUaXAuZm9ybWF0dGVyID0gJ3tifSA8YnI+IENvdW50IDoge2N9ICh7ZH0lKSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b29sVGlwLmZvcm1hdHRlciA9ICd7Yn0gPGJyPiBDb3VudCA6IHtjfSc7XG4gICAgICB9XG4gICAgICByZXR1cm4gdG9vbFRpcDtcbiAgICB9LFxuICAgIGdyYXBoQnVpbGRUaXRsZSh0aXRsZVRleHQgPSAnJywgdGl0bGVTdWJUZXh0ID0gJycsIGF4aXNGb250U2l6ZSA9IDE4KSB7XG4gICAgICBsZXQgdGl0bGUgPSB7XG4gICAgICAgIHRleHQ6IHRpdGxlVGV4dCxcbiAgICAgICAgeDogJ2xlZnQnLFxuICAgICAgICB0ZXh0U3R5bGU6IHtcbiAgICAgICAgICBmb250U2l6ZTogYXhpc0ZvbnRTaXplLFxuICAgICAgICAgIGNvbG9yOiB0aGlzLmFwcFNlc3MudXNlclNldHRpbmdzLnRoZW1lID09ICdkYXJrJyA/ICcjRkZGRkZGJyA6ICcjMTEwQTFBJyxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBpZiAodGl0bGVTdWJUZXh0ICE9ICcnKSB7XG4gICAgICAgIHRpdGxlLnN1YnRleHQgPSB0aXRsZVN1YlRleHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGl0bGU7XG4gICAgfSxcbiAgICBncmFwaEJ1aWxkTGVnZW5kKCkge1xuICAgICAgbGV0IGxlZ2VuZCA9IHtcbiAgICAgICAgdHlwZTogJ3Njcm9sbCcsXG4gICAgICAgIG9yaWVudDogJ3ZlcnRpY2FsJyxcbiAgICAgICAgbGVmdDogMCxcbiAgICAgICAgYm90dG9tOiAyMCxcbiAgICAgICAgdGV4dFN0eWxlOiB7XG4gICAgICAgICAgY29sb3I6IHRoaXMuYXBwU2Vzcy51c2VyU2V0dGluZ3MudGhlbWUgPT0gJ2RhcmsnID8gJyNGRkZGRkYnIDogJyMxMTBBMUEnLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIHJldHVybiBsZWdlbmQ7XG4gICAgfSxcblxuICAgIGNoZWNrTGV2ZWxWYWxpZGF0aW9ucyhsZXZlbCkge1xuICAgICAgY29uc29sZS5sb2codGhpcy53aWRnZXRPYmouc2VsZWN0ZWRDb25uZWN0b3IpO1xuICAgICAgdGhpcy5zdWJtaXQgPSB0cnVlO1xuICAgICAgaWYgKHRoaXMucXVlc3Rpb25MZXZlbCA9PSAxKSB7XG4gICAgICAgIGlmICh0aGlzLndpZGdldE9iai5zZWxlY3RlZENvbm5lY3RvciA9PSAtMSkge1xuICAgICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfdGltZXJfbWVzc2FnZSgnUGxlYXNlIGNob29zZSBhIGNvbm5lY3RvcicsICd3YXJuaW5nJyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMud2lkZ2V0T2JqLnF1ZXN0aW9uaWQgPT0gbnVsbCkge1xuICAgICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfdGltZXJfbWVzc2FnZSgnUGxlYXNlIGNob29zZSBhIHF1ZXN0aW9uJywgJ3dhcm5pbmcnKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMud2lkZ2V0T2JqLmZyb21EYXRlIHx8ICF0aGlzLndpZGdldE9iai5mcm9tRGF0ZSkge1xuICAgICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfdGltZXJfbWVzc2FnZSgnUGxlYXNlIGNob29zZSBhIGRhdGVzJywgJ3dhcm5pbmcnKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAobW9tZW50KHRoaXMud2lkZ2V0T2JqLmZyb21EYXRlLCAnREQvTU0vWVlZWSBoaDptbTpzcycpLmZvcm1hdCgpID4gbW9tZW50KHRoaXMud2lkZ2V0T2JqLnRvRGF0ZSwgJ0REL01NL1lZWVkgaGg6bW06c3MnKS5mb3JtYXQoKSkge1xuICAgICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfdGltZXJfbWVzc2FnZSgnUGxlYXNlIGNob29zZSB2YWxpZCBkYXRlcywgRnJvbSBEYXRlIGNhbiBub3QgYmUgZ3JlYXRlciB0aGFuIFRvIERhdGUnLCAnd2FybmluZycpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5zdWJtaXQgPSBmYWxzZTtcbiAgICAgIHRoaXMucXVlc3Rpb25MZXZlbCA9IHRoaXMucXVlc3Rpb25MZXZlbCArIGxldmVsO1xuICAgIH0sXG4gICAgY2FuY2VsV2lkZ2V0KCkge1xuICAgICAgJCgnI2NyZWF0ZUxpdmVXaWRnZXRtb2RhbCcpLm1vZGFsKCdoaWRlJyk7XG4gICAgfSxcbiAgICBzYXZlV2lkZ2V0KCkge1xuICAgICAgY29uc29sZS5sb2codGhpcy53aWRnZXRPYmopO1xuICAgICAgdGhpcy5jcmVhdGVDb25uZWN0b3JXaWRnZXQoKTtcbiAgICB9LFxuICAgIHJlc2V0V2lkZ2V0KCkge1xuICAgICAgdGhpcy5xdWVzdGlvbkxldmVsID0gMTtcbiAgICAgIHRoaXMud2lkZ2V0T2JqID0ge1xuICAgICAgICBrcGlOYW1lOiAnJyxcbiAgICAgICAgc2VsZWN0ZWRDb25uZWN0b3I6IC0xLFxuICAgICAgICBxdWVzdGlvbm5haXJlSWQ6IG51bGwsXG4gICAgICAgIHF1ZXN0aW9ubmFpcmVRSWQ6IG51bGwsXG4gICAgICAgIHF1ZXN0aW9uaWQ6ICcnLFxuICAgICAgICBxdWVzdGlvbnRleHQ6ICcnLFxuICAgICAgICB3aWRnZXREYXRhOiAnYXZlcmFnZScsXG4gICAgICAgIHBlcmlvZDogJ0RheScsXG4gICAgICAgIGZyb21EYXRlOiBtb21lbnQobW9tZW50KCkpLmZvcm1hdCgnREQvTU0vWVlZWSBoaDptbTpzcycpLFxuICAgICAgICB0b0RhdGU6IG1vbWVudChtb21lbnQoKSkuZm9ybWF0KCdERC9NTS9ZWVlZIGhoOm1tOnNzJyksXG4gICAgICAgIGxhYmVsOiAnJyxcbiAgICAgICAgdXJsOiAnJyxcbiAgICAgICAgZGltZW5zaW9uczoge1xuICAgICAgICAgIGJyYW5kczogW10sXG4gICAgICAgICAgY3M6IFtdLFxuICAgICAgICAgIHByb2R1Y3RzOiBbXSxcbiAgICAgICAgICBjb3VudHJpZXM6IFtdLFxuICAgICAgICB9LFxuICAgICAgICBjdXN0b21FbGVtZW50czoge1xuICAgICAgICAgIG1hcHM6IFtdLFxuICAgICAgICAgIGVwaXNvZGVzOiBbXSxcbiAgICAgICAgICB0b3VjaHBvaW50czogW10sXG4gICAgICAgIH0sXG4gICAgICAgIGdyYXBoVHlwZTogJ1BpZSdcbiAgICAgIH07XG4gICAgICB0aGlzLnN1Ym1pdCA9IGZhbHNlO1xuICAgIH0sXG4gICAgc2hvd0Nvbm5lY3RvcldhcmluZygpIHtcbiAgICAgIGlmICghdGhpcy53aWRnZXRPYmouc2VsZWN0ZWRDb25uZWN0b3IpIHtcbiAgICAgICAgbW1fbWVzc2FnZXIuZGlzcGxheV90aW1lcl9tZXNzYWdlKCdQbGVhc2Ugc2VsZWN0IGNvbm5lY3RvcicsICd3YXJuaW5nJyk7XG4gICAgICB9XG5cbiAgICB9LFxuICAgIGdldEltZ1VybChiX2ltYWdlLCBiX25hbWUpIHtcbiAgICAgIHJldHVybiBcIjxpbWcgc3JjPSdcIiArIGJfaW1hZ2UgKyBcIic+XCIgKyBiX25hbWUgKyAnJztcbiAgICB9LFxuICB9LFxuICBiZWZvcmVNb3VudCgpIHsgfSxcbiAgbW91bnRlZCgpIHtcbiAgICBpZiAoISF3aW5kb3cucGVyZm9ybWFuY2UgJiYgd2luZG93LnBlcmZvcm1hbmNlLm5hdmlnYXRpb24udHlwZSA9PT0gMikge1xuICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgIH1cbiAgICAvLyB0aGlzLmdldENvbm5lY3RvcldpZGdldHMoKTtcbiAgICAvL3RoaXMuZ2V0UXVlc3Rpb25zKCk7XG4gICAgdGhpcy5nZXRDb25uZWN0aW9ucygpO1xuXG4gICAgLy8gdGhpcy5nZXRNYXBzKCk7XG4gICAgLy8gdGhpcy5nZXRDb21wYW55RGltZW5zaW9ucygpO1xuICAgICQoJy5zZWxlY3RxdWUnKS5zZWxlY3RwaWNrZXIoKTtcbiAgICAkKCcuc2VsZWN0cXVlJykuc2VsZWN0cGlja2VyKCdyZWZyZXNoJyk7XG4gICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGlmIChzZWxmLnB3aWRnZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBzZWxmLnB3aWRnZXRzLmZvckVhY2goKHB3LCBqKSA9PiB7XG4gICAgICAgICAgICBzZWxmLmdldENvbm5lY3RvcldpZGdldERhdGEoaik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sIDMwMDAwMCk7XG4gICAgICAkKCcuc2VsZWN0Y29uMScpLnNlbGVjdHBpY2tlcigncmVmcmVzaCcpO1xuICAgIH0pO1xuICAgICQoJyNxdWVzdGlvbm5haXJlcycpLm9uKCdoaWRlLmJzLm1vZGFsJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIHNlbGYucmVzZVF1ZXN0aW9ubmFpcmVzKCk7XG4gICAgfSk7XG4gICAgJCgnI2NyZWF0ZUxpdmVXaWRnZXRtb2RhbCcpLm9uKCdoaWRlLmJzLm1vZGFsJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIHNlbGYucmVzZXRXaWRnZXQoKTtcbiAgICB9KTtcbiAgfSxcbiAgdXBkYXRlZCgpIHtcbiAgICAkKCcuc2VsZWN0cXVlJykuc2VsZWN0cGlja2VyKCdyZWZyZXNoJyk7XG4gIH0sXG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4uc21sb2FkZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDczJTtcbiAgei1pbmRleDogOTk7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcbiAgbGVmdDogMDtcbiAgdG9wOiA1NXB4O1xuICAvKiBkaXNwbGF5OiBibG9jazsgKi9cbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uc21sb2FkZXIgaW1nIHtcbiAgd2lkdGg6IDYwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi5lY2hhcnRzIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuLmNoYXJ0LXdyYXBwZXIge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAyOTBweDtcbiAgbWFyZ2luLXRvcDogNXB4O1xufVxuXG4uZGVsaWNvbiB7XG4gIHotaW5kZXg6IDk5O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi50aHVtYm5haWwgbGkgLmdyYXBoc2V0IHtcbiAgcGFkZGluZzogMTVweCAyMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1Cb3JkZXJfRGl2aWRlcik7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbn1cblxuLmRhdGVwaWNrZXJJbmZvIHtcbiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbn1cblxuLyogLmlucHV0LWdyb3VwLWFkZG9ue1xuICByaWdodDogMHB4IWltcG9ydGFudDtcbiAgdG9wOiAtMXB4IWltcG9ydGFudDtcbn1cblxuLm1hcHN1c2Vyc2VsZWN0e1xuICB3aWR0aDoxMDAlIWltcG9ydGFudDtcbn0gKi9cbi5jb25uZWN0LWRhdGEtcm93Pi5tYXBzdXNlcnNlbGVjdCB7XG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbi5jb25uZWN0LWRhdGEtcm93IC5pbnB1dC1ncm91cC1hZGRvbiB7XG4gIHJpZ2h0OiAwcHggIWltcG9ydGFudDtcbiAgdG9wOiAtMXB4ICFpbXBvcnRhbnQ7XG59XG48L3N0eWxlPlxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvdXNlcm1hbmFnZW1lbnQvdnVlL2NvbXBvbmVudHMvdXNlcm1hbmFnZW1lbnQvUXVlc3Rpb25zVGVzdC52dWUiLCI8dGVtcGxhdGU+XG4gIDxzZWN0aW9uIGNsYXNzPVwidXNlcm1haW5jb250YWluZXIgdG9nZ2xlZCBkLWZsZXggbWVudW5hdk9mZnNldFwiIDpjbGFzcz1cInRvZ2dsZUNsYXNzXCI+XG4gICAgPHNldHRpbmdzLWhlYWRlcj48L3NldHRpbmdzLWhlYWRlcj5cbiAgICA8bGVmdC1zaWRlLW1lbnUtZmlsdGVyIHYtaWY9XCJhcHBTZXNzXCIgOmFwcFNlc3M9XCJhcHBTZXNzXCIgOmZpbHRlci5zeW5jPVwiZmlsdGVyXCIgOmZpbHRlcnNEYXRhLnN5bmM9XCJmaWx0ZXJzRGF0YVwiIDphY3RpdmVUYWI9XCJhY3RpdmVUYWJcIiBAZmlsdGVyLWRhdGE9XCJmaWx0ZXJJbXByb3ZlbWVudFwiIEBjbGVhci1sZWZ0LWZpbHRlcnM9XCJjbGVhckxlZnRGaWx0ZXJzXCIgOmJyYW5kRmlsdGVycz1cImJyYW5kRmlsdGVyc1wiIDpwcm9kdWN0RmlsdGVycz1cInByb2R1Y3RGaWx0ZXJzXCIgOmNvdW50cnlGaWx0ZXJzPVwiY291bnRyeUZpbHRlcnNcIiA6Y3NGaWx0ZXJzPVwiY3NGaWx0ZXJzXCIgOm15TWFwRmlsdGVycz1cIm15TWFwRmlsdGVyc1wiIDpvdXJNYXBGaWx0ZXJzPVwib3VyTWFwRmlsdGVyc1wiIDpteU1hcHM9XCJteU1hcHNcIiA6b3VyTWFwcz1cIm91ck1hcHNcIj48L2xlZnQtc2lkZS1tZW51LWZpbHRlcj5cbiAgICA8c2VjdGlvbiBpZD1cInBhZ2UtY29udGVudC13cmFwcGVyXCIgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImluc2lnaHRCbG9jayBub0JvdHRvbVNwYWNlXCI+XG4gICAgICAgIDxmaWx0ZXItbWVudSByZWY9XCJmaWx0ZXJDb21wb25lbnRSZWZcIiA6dGl0bGU9XCJpbXByb3ZlbWVudFRpdGxlXCIgOnRpdGxlcz1cImltcHJvdmVtZW50c1RpdGxlXCIgOmNvbXBvbmVudEZvcj1cIidpbXByb3ZlbWVudHMnXCIgOmNvbXBvbmVudE5hbWU9XCJwYWdlXCIgOnBsYWNlaG9sZGVyPVwiJ0ltcHJvdmVtZW50cydcIiA6Y3VzdG9tX2ZpZWxkcz1cImN1c3RvbV9maWVsZHNcIiA6YWN0aXZlVGFiLnN5bmM9XCJhY3RpdmVUYWJcIiA6YnJhbmQ9XCJicmFuZEZpbHRlcnNcIiA6cHJvZHVjdD1cInByb2R1Y3RGaWx0ZXJzXCIgOmNvdW50cmllcz1cImNvdW50cnlGaWx0ZXJzXCIgOmNzPVwiY3NGaWx0ZXJzXCIgOmZpbHRlcnNEYXRhLnN5bmM9XCJmaWx0ZXJzRGF0YVwiIEBjbGVhci10b3AtZmlsdGVycz1cImNsZWFyVG9wRmlsdGVyc1wiIEBmaWx0ZXItZGF0YT1cImZpbHRlckltcHJvdmVtZW50XCIgQG1vdmUtdmlldz1cIm1vdmVWaWV3XCIgQGNyZWF0ZS1uZXc9XCJhZGRJbXByb3ZlbWVudFwiIEBzd2l0Y2gtdGFiPVwic3dpdGNoVGFiXCIgQHJlbW92ZS1zZWFyY2g9XCJyZW1vdmVTZWFyY2hcIiA6dXNlcnM9XCJ1c2Vyc1wiIDphcHBTZXNzPVwiYXBwU2Vzc1wiPjwvZmlsdGVyLW1lbnU+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tdGFicyBpbnNpZ2h0c1RvcHNwYWNlIGluc2lnaHRGaXhlZFRvcFNwYWNlIEluc2lnaHROZXdUYWJsZVNwYWNlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCI+XG4gICAgICAgICAgICA8IS0tIE1haW4gQ29udGVudCBTZWN0aW9uIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1wYW5lIGFjdGl2ZVwiIGlkPVwiaW1wcm92ZW1lbnRzXCIgcm9sZT1cInRhYnBhbmVsXCIgYXJpYS1sYWJlbGxlZGJ5PVwiaW1wcm92ZW1lbnRzXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnNpZ2h0RGF0YXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgPHRhYmxlPlxuICAgICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi10b29sdGlwLnRvcD1cIntjb250ZW50OiBnZXRUaXRsZSgnVGl0bGUnKSwgaHRtbDogdHJ1ZX1cIiBjbGFzcz1cInNvcnQtdG9nZ2xlLWJ0biB0aXRsZXNwYWNlXCIgOmNsYXNzPVwiZmlsdGVyLnNvcnRCeSA9PSAndGl0bGUnID8gJ2FjdGl2ZScgOiAnYm90aG9yZGVyJ1wiIEBjbGljaz1cInNvcnRJbXByb3ZlbWVudCgndGl0bGUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5UaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYmxlRmlsdGVyaWNvbnNcIiB2LWh0bWw9XCJnZXRTb3J0SWNvbihmaWx0ZXIuc29ydEJ5T3JkZXIsIGZpbHRlci5zb3J0QnkgPT0gJ3RpdGxlJylcIj4gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi10b29sdGlwLnRvcD1cIntjb250ZW50OiBnZXRUaXRsZSgnT3duZXInKSwgaHRtbDogdHJ1ZX1cIiBjbGFzcz1cInNvcnQtdG9nZ2xlLWJ0blwiIDpjbGFzcz1cImZpbHRlci5zb3J0QnkgPT0gJ293bmVyJyA/ICdhY3RpdmUnIDogJ2JvdGhvcmRlcidcIiBAY2xpY2s9XCJzb3J0SW1wcm92ZW1lbnQoJ293bmVyJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+b3duZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZUZpbHRlcmljb25zXCIgdi1odG1sPVwiZ2V0U29ydEljb24oZmlsdGVyLnNvcnRCeU9yZGVyLCBmaWx0ZXIuc29ydEJ5ID09ICdvd25lcicpXCI+IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtdG9vbHRpcC50b3A9XCJ7Y29udGVudDogZ2V0VGl0bGUoJ1N0YXR1cycpLCBodG1sOiB0cnVlfVwiIGNsYXNzPVwic29ydC10b2dnbGUtYnRuXCIgOmNsYXNzPVwiZmlsdGVyLnNvcnRCeSA9PSAnc3RhdHVzJyA/ICdhY3RpdmUnIDogJ2JvdGhvcmRlcidcIiBAY2xpY2s9XCJzb3J0SW1wcm92ZW1lbnQoJ3N0YXR1cycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPnN0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYmxlRmlsdGVyaWNvbnNcIiB2LWh0bWw9XCJnZXRTb3J0SWNvbihmaWx0ZXIuc29ydEJ5T3JkZXIsIGZpbHRlci5zb3J0QnkgPT0gJ3N0YXR1cycpXCI+IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtdG9vbHRpcC50b3A9XCJ7Y29udGVudDogZ2V0VGl0bGUoJ0ltcG9ydGFuY2UnKSwgaHRtbDogdHJ1ZX1cIiBjbGFzcz1cInNvcnQtdG9nZ2xlLWJ0blwiIDpjbGFzcz1cImZpbHRlci5zb3J0QnkgPT0gJ2ltcG9ydGFuY2UnID8gJ2FjdGl2ZScgOiAnYm90aG9yZGVyJ1wiIEBjbGljaz1cInNvcnRJbXByb3ZlbWVudCgnaW1wb3J0YW5jZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPmltcG9ydGFuY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZUZpbHRlcmljb25zXCIgdi1odG1sPVwiZ2V0U29ydEljb24oZmlsdGVyLnNvcnRCeU9yZGVyLCBmaWx0ZXIuc29ydEJ5ID09ICdpbXBvcnRhbmNlJylcIj4gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1jaGVja0FjY2Vzcz1cInsgY29uZmlnczogYXBwU2Vzcy5jb25maWd1cmF0aW9ucywgbW9kdWxlOiAnZGltZW5zaW9ucycgfVwiIHYtdG9vbHRpcC50b3A9XCJ7Y29udGVudDogZ2V0VGl0bGUoYXBwU2Vzcy5sYWJlbHMgPyBhcHBTZXNzLmxhYmVscy5kaW1lbnNpb25zLmRpbWVuc2lvbnMgOiAnRGltZW5zaW9ucycpLCBodG1sOiB0cnVlfVwiIGNsYXNzPVwic29ydC10b2dnbGUtYnRuXCIgOmNsYXNzPVwiZmlsdGVyLnNvcnRCeSA9PSAnZGltZW5zaW9ucycgPyAnYWN0aXZlJyA6ICdib3Rob3JkZXInXCIgQGNsaWNrPVwic29ydEltcHJvdmVtZW50KCdkaW1lbnNpb25zJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgYXBwU2Vzcy5sYWJlbHMgPyBhcHBTZXNzLmxhYmVscy5kaW1lbnNpb25zLmRpbWVuc2lvbnMgOiAnRGltZW5zaW9ucycgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZUZpbHRlcmljb25zXCIgdi1odG1sPVwiZ2V0U29ydEljb24oZmlsdGVyLnNvcnRCeU9yZGVyLCBmaWx0ZXIuc29ydEJ5ID09ICdkaW1lbnNpb25zJylcIj4gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1jaGVja0FjY2Vzcz1cInsgY29uZmlnczogYXBwU2Vzcy5jb25maWd1cmF0aW9ucywgbW9kdWxlOiAnbWFwJyB9XCIgdi10b29sdGlwLnRvcD1cIntjb250ZW50OiBnZXRUaXRsZSgnam91cm5leXMnKSwgaHRtbDogdHJ1ZX1cIiBjbGFzcz1cInNvcnQtdG9nZ2xlLWJ0blwiIDpjbGFzcz1cImZpbHRlci5zb3J0QnkgPT0gJ2pvdXJuZXlzJyA/ICdhY3RpdmUnIDogJ2JvdGhvcmRlcidcIiBAY2xpY2s9XCJzb3J0SW1wcm92ZW1lbnQoJ2pvdXJuZXlzJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+am91cm5leXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZUZpbHRlcmljb25zXCIgdi1odG1sPVwiZ2V0U29ydEljb24oZmlsdGVyLnNvcnRCeU9yZGVyLCBmaWx0ZXIuc29ydEJ5ID09ICdqb3VybmV5cycpXCI+IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtdG9vbHRpcC50b3A9XCJ7Y29udGVudDogZ2V0VGl0bGUoYXBwU2Vzcy5sYWJlbHMgPyBhcHBTZXNzLmxhYmVscy5pbXByb3ZlbWVudC5hY3Rpb25zIDogJ0FjdGlvbnMnKSwgaHRtbDogdHJ1ZX1cIiBjbGFzcz1cInNvcnQtdG9nZ2xlLWJ0blwiIDpjbGFzcz1cImZpbHRlci5zb3J0QnkgPT0gJ2FjdGlvbnMnID8gJ2FjdGl2ZScgOiAnYm90aG9yZGVyJ1wiIEBjbGljaz1cInNvcnRJbXByb3ZlbWVudCgnYWN0aW9ucycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGFwcFNlc3MubGFiZWxzID8gYXBwU2Vzcy5sYWJlbHMuaW1wcm92ZW1lbnQuYWN0aW9ucyA6ICdBY3Rpb25zJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYmxlRmlsdGVyaWNvbnNcIiB2LWh0bWw9XCJnZXRTb3J0SWNvbihmaWx0ZXIuc29ydEJ5T3JkZXIsIGZpbHRlci5zb3J0QnkgPT0gJ2FjdGlvbnMnKVwiPiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGg+Jm5ic3A7PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGg+Jm5ic3A7PC90aD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDx0ciB2LWZvcj1cIihpbXByb3ZlbWVudCwgaW5kZXgpIGluIGltcHJvdmVtZW50c1wiIDprZXk9XCJpbmRleFwiIEBjbGljay5zZWxmPVwidmlld0ltcHJvdmVtZW50KGluZGV4KVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBAY2xpY2s9XCJ2aWV3SW1wcm92ZW1lbnQoaW5kZXgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm91dGV0ZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXJUaXRsZWljb24gcm91bmRlZC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5vcm1hbCBteWltcHJvdmUtaWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZUVsbGlwc2lzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbm5lci10b29sdGlwXCIgdi10b29sdGlwLnJpZ2h0PVwie2NvbnRlbnQ6IGdldFRpdGxlKGltcHJvdmVtZW50LnRpdGxlKSwgaHRtbDogdHJ1ZX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGltcHJvdmVtZW50LnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBAY2xpY2s9XCJ2aWV3SW1wcm92ZW1lbnQoaW5kZXgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXJwcm9maWxlXCIgdi10b29sdGlwLnRvcD1cImltcHJvdmVtZW50Lm93bmVyLnVzZXJuYW1lXCIgdi1pZj1cImltcHJvdmVtZW50Lm93bmVyLnVzZXJpbWFnZSA9PT0gbnVsbCB8fCBpbXByb3ZlbWVudC5vd25lci51c2VyaW1hZ2UgPT09ICcnXCI+e3sgaW1wcm92ZW1lbnQub3duZXIudXNlcm5hbWVzaG9ydCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXNlcnByb2ZpbGUgcHJvZmlsZWltZ1wiIHYtdG9vbHRpcC50b3A9XCJpbXByb3ZlbWVudC5vd25lci51c2VybmFtZVwiIHYtaWY9XCJpbXByb3ZlbWVudC5vd25lci51c2VyaW1hZ2UgIT09IG51bGwgJiYgaW1wcm92ZW1lbnQub3duZXIudXNlcmltYWdlICE9PSAnJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIDpzcmM9XCJpbXByb3ZlbWVudC5vd25lci51c2VyaW1hZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIEBjbGljaz1cInZpZXdJbXByb3ZlbWVudChpbmRleClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXNlcnN0YXR1cyBzdGF0dXN0b2RvXCIgdi1pZj1cImltcHJvdmVtZW50LmltcHJvdmVtZW50X3N0YXR1cyA9PT0gMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi9idW5kbGVzL2FkbWluL2ltYWdlcy9zdGF0dXMtdG9kby1pY29uLnN2Z1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXJzdGF0dXMgc3RhdHVzaW5wcm9ncmVzc1wiIHYtaWY9XCJpbXByb3ZlbWVudC5pbXByb3ZlbWVudF9zdGF0dXMgPT09IDJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYnVuZGxlcy9hZG1pbi9pbWFnZXMvc3RhdHVzLWlucHJvZ3Jlc3MtaWNvbi5zdmdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1c2Vyc3RhdHVzIHN0YXR1c2FjdGl2ZVwiIHYtaWY9XCJpbXByb3ZlbWVudC5pbXByb3ZlbWVudF9zdGF0dXMgPT09IDNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYnVuZGxlcy9hZG1pbi9pbWFnZXMvc3RhdHVzLXRpY2staWNvbi5zdmdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIEBjbGljaz1cInZpZXdJbXByb3ZlbWVudChpbmRleClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLXJhdGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIDpjbGFzcz1cInthY3RpdmU6IGltcHJvdmVtZW50LmltcG9ydGFuY2UgPj0gMX1cIj48L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA6Y2xhc3M9XCJ7YWN0aXZlOiBpbXByb3ZlbWVudC5pbXBvcnRhbmNlID49IDJ9XCI+PC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgOmNsYXNzPVwie2FjdGl2ZTogaW1wcm92ZW1lbnQuaW1wb3J0YW5jZSA+PSAzfVwiPjwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIDpjbGFzcz1cInthY3RpdmU6IGltcHJvdmVtZW50LmltcG9ydGFuY2UgPj0gNH1cIj48L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA6Y2xhc3M9XCJ7YWN0aXZlOiBpbXByb3ZlbWVudC5pbXBvcnRhbmNlID49IDV9XCI+PC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIEBjbGljaz1cInZpZXdJbXByb3ZlbWVudChpbmRleClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtY2hlY2tBY2Nlc3M9XCJ7IGNvbmZpZ3M6IGFwcFNlc3MuY29uZmlndXJhdGlvbnMsIG1vZHVsZTogJ2RpbWVuc2lvbnMnIH1cIiBjbGFzcz1cInVzZXJhY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiL2J1bmRsZXMvYWRtaW4vaW1hZ2VzL2luc2lnaHQtZGltZW5zaW9uLWljb24uc3ZnXCIgY2xhc3M9XCJkYXJrdGhlbWUtaWNvblwiICBhbHQ9XCJEaW1lbnNpb24gSWNvblwiPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYnVuZGxlcy9tYXAvaW1hZ2VzL2luc2lnaHQtZGltZW5zaW9uLWJsYWNrLWljb24uc3ZnXCIgY2xhc3M9XCJsaWdodHRoZW1lLWljb25cIiAgIGFsdD1cIkRpbWVuc2lvbiBJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGltcHJvdmVtZW50LmRpbWVuc2lvbnNDb3VudCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIEBjbGljaz1cInZpZXdJbXByb3ZlbWVudChpbmRleClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXNlcmFjdGlvbnNcIiB2LWNoZWNrQWNjZXNzPVwieyBjb25maWdzOiBhcHBTZXNzLmNvbmZpZ3VyYXRpb25zLCBtb2R1bGU6ICdtYXAnIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYnVuZGxlcy9hZG1pbi9pbWFnZXMvbWFwLWljb24tdy5zdmdcIiBjbGFzcz1cImRhcmt0aGVtZS1pY29uXCIgIGFsdD1cIkpvdXJuZXkgSWNvblwiPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYnVuZGxlcy9hZG1pbi9pbWFnZXMvbWFwLWljb24tYi5zdmdcIiBjbGFzcz1cImxpZ2h0dGhlbWUtaWNvblwiICAgYWx0PVwiSm91cm5leSBJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGltcHJvdmVtZW50LmpvdXJuZXltYXBzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgQGNsaWNrPVwidmlld0ltcHJvdmVtZW50KGluZGV4KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1c2VyYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi9idW5kbGVzL2FkbWluL2ltYWdlcy9pbnNpZ2h0LWFjdGlvbi1yb2JvdC1pY29uLnN2Z1wiIGNsYXNzPVwiZGFya3RoZW1lLWljb25cIiBhbHQ9XCJBY3Rpb25zIEljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYnVuZGxlcy9hZG1pbi9pbWFnZXMvaW5zaWdodC1hY3Rpb24tcm9ib3QtZGFyay1pY29uLnN2Z1wiIGNsYXNzPVwibGlnaHR0aGVtZS1pY29uXCIgIGFsdD1cIkFjdGlvbnMgSWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpbXByb3ZlbWVudC5hY3Rpb25zIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgQGNsaWNrPVwidmlld0ltcHJvdmVtZW50KGluZGV4KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1c2VybGlua1wiIEBjbGljay5zdG9wPVwicmVkaXJlY3QoaW1wcm92ZW1lbnQuZXh0ZXJuYWxfbGluaylcIiBkYXRhLXRvZ2dsZT1cInRvb2x0aXBcIiBkYXRhLXBsYWNlbWVudD1cInRvcFwiIDp0aXRsZT1cImltcHJvdmVtZW50LmV4dGVybmFsX2xpbmtcIiB2LWlmPVwiaW1wcm92ZW1lbnQuZXh0ZXJuYWxfbGluayAhPSAnJ1wiPjxpbWcgc3JjPVwiL2J1bmRsZXMvYWRtaW4vaW1hZ2VzL2luc2lnaHQtbGluay1pY29uLnN2Z1wiIC8+TGluazwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLTMtZG90c21lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duIGRyb3B1cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlXCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTxpbWcgc3JjPVwiL2J1bmRsZXMvYWRtaW4vaW1hZ2VzL2luc2lnaHQtM2RvdHMtbWVudS5zdmdcIiAvPi0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgQGNsaWNrLnN0b3A9XCJlZGl0SW1wcm92ZW1lbnQoaW5kZXgpXCIgdi1pZj1cImFwcFNlc3Mucm9sZSAhPSAnVmlld2VyJ1wiPkVkaXQ8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBAY2xpY2suc3RvcD1cInZpZXdJbXByb3ZlbWVudChpbmRleClcIj5WaWV3PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGRlbGV0ZVwiIEBjbGljay5zdG9wPVwiZGVsZXRlSW1wcm92ZW1lbnRXYXJuaW5nKGluZGV4KVwiIHYtaWY9XCJhcHBTZXNzLnJvbGUgIT0gJ1ZpZXdlcicgJiYgYXBwU2Vzcy5yb2xlICE9ICdQYXJ0aWNpcGFudCdcIj5EZWxldGU8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPE9ic2VydmVyIEBpbnRlcnNlY3Q9XCJsb2FkRGF0YSgpXCIgOml0ZW1zTGVuZ3RoLnN5bmM9XCJjaGVja0ltcHJvdmVtZW50c0xlbmd0aFwiIDpsaW1pdD1cImdldExpbWl0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPExvYWRlciB2LWlmPVwibG9hZGVyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiY3JlYXRuZXcgbm9kYXRhXCIgdi1pZj1cImltcHJvdmVtZW50cy5sZW5ndGggPT0gMCAmJiBsb2FkZXIgPT0gZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+Tm8ge3sgYXBwU2Vzcy5sYWJlbHMgPyBhcHBTZXNzLmxhYmVscy5pbXByb3ZlbWVudC5pbXByb3ZlbWVudHMgOiAnSW1wcm92ZW1lbnRzJyB9fSBmb3VuZDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiY3JlYXRuZXdcIiB2LWlmPVwiKGFwcFNlc3Mucm9sZSA9PSAnQWRtaW4nIHx8IChmaWx0ZXJzRGF0YVthY3RpdmVUYWJdLmZpbHRlck9iai5wdWJsaWMgPT0gMCAmJiBhcHBTZXNzLnJvbGUgPT0gJ1VzZXInKSkgJiYgIWxvYWRlclwiIEBjbGljaz1cImFkZEltcHJvdmVtZW50KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvaT4gQ3JlYXRlIHt7IGZpbHRlcnNEYXRhW2FjdGl2ZVRhYl0uZmlsdGVyT2JqLnB1YmxpYyA/ICcgT3VyICcgOiAnIE15ICcgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBwU2Vzcy5sYWJlbHMgPyBhcHBTZXNzLmxhYmVscy5pbXByb3ZlbWVudC5pbXByb3ZlbWVudCA6ICdJbXByb3ZlbWVudCcgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImVtcHR5cm93XCIgdi1pZj1cImFwcFNlc3Mucm9sZSAhPSAnQWRtaW4nICYmIGZpbHRlcnNEYXRhW2FjdGl2ZVRhYl0uZmlsdGVyT2JqLnB1YmxpYyAhPSAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPCEtLVN0YXJ0IFByc2VudCBJbnNpZ2h0IE1vZGFsLS0+XG4gICAgPFZpZXdJbXByb3ZlbWVudCB2LWlmPVwiaW1wcm92ZW1lbnQgJiYgYXBwU2Vzc1wiIDppbXByb3ZlbWVudFB1YmxpY1R5cGU9XCJnZXRJbXByb3ZlbWVudFB1YmxpY1R5cGUoKVwiIDppbXByb3ZlbWVudFRpdGxlPVwiaW1wcm92ZW1lbnRUaXRsZVwiIDppbXByb3ZlbWVudFR5cGU9XCJpbXByb3ZlbWVudFR5cGVcIiBAZWRpdC1pbXByb3ZlbWVudD1cImVkaXRJbXByb3ZlbWVudFwiIDp0ZW1waW1wcm92ZW1lbnQ9XCJ0ZW1waW1wcm92ZW1lbnRcIiA6aW1wcm92ZW1lbnREYXRhPVwiaW1wcm92ZW1lbnRcIiA6c2VsZWN0ZWRJbXByb3ZlbWVudEluZGV4LnN5bmM9XCJzZWxlY3RlZEltcHJvdmVtZW50SW5kZXhcIiA6YWN0aW9ucz1cImFjdGlvbnNcIj48L1ZpZXdJbXByb3ZlbWVudD5cbiAgICA8IS0tRW5kIFByc2VudCBJbnNpZ2h0IE1vZGFsLS0+XG5cbiAgICA8IS0tQWRkIEluc2lnaHQgTW9kYWwtLT5cblxuICAgIDwhLS0gVG9kbyAtLS0tLSBNeSBhbmQgT3VyIG1hcHMgYXJlIGZvciAtLSBMb2NhdGlvbnMgLS0+XG4gICAgPEFkZEltcHJvdmVtZW50IHYtaWY9XCJpbXByb3ZlbWVudCAmJiBhcHBTZXNzXCIgOmltcHJvdmVtZW50UHVibGljVHlwZT1cImdldEltcHJvdmVtZW50UHVibGljVHlwZSgpXCIgOmltcHJvdmVtZW50VGl0bGU9XCJpbXByb3ZlbWVudFRpdGxlXCIgOmltcHJvdmVtZW50VHlwZT1cImltcHJvdmVtZW50VHlwZVwiIDp0ZW1waW1wcm92ZW1lbnQ9XCJ0ZW1waW1wcm92ZW1lbnRcIiA6aW1wcm92ZW1lbnRzLnN5bmM9XCJpbXByb3ZlbWVudHNcIiA6aW1wcm92ZW1lbnREYXRhPVwiaW1wcm92ZW1lbnRcIiA6YWN0aW9ucz1cImFjdGlvbnNcIiA6c2VsZWN0ZWRJbXByb3ZlbWVudEluZGV4PVwic2VsZWN0ZWRJbXByb3ZlbWVudEluZGV4XCIgOm15TWFwcz1cIm15TWFwc1wiIDpvdXJNYXBzPVwib3VyTWFwc1wiIDphZG1pbl9icmFuZHM9XCJicmFuZEZpbHRlcnNcIiA6cHJvZHVjdHM9XCJwcm9kdWN0RmlsdGVyc1wiIDpjb3VudHJpZXM9XCJjb3VudHJ5RmlsdGVyc1wiIDpjX3NlZ21lbnRzPVwiY3NGaWx0ZXJzXCIgOm1lZGlhRGF0YT1cIm1lZGlhXCIgOmRvY3VtZW50cz1cImRvY3VtZW50c1wiPjwvQWRkSW1wcm92ZW1lbnQ+XG4gICAgPCEtLUVuZCBkZCBJbnNpZ2h0IE1vZGFsLS0+XG5cbiAgICA8IS0tU3RhcnQgRGVsZXRlIEltcHJvdmVtZW50IE1vZGFsLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsIGZhZGUgbW9kYWxiZyBtYWluTW9kYWxcIiBpZD1cImRlbGV0ZUltcHJvdmVtZW50TW9kYWxcIiB0YWJpbmRleD1cIi0xXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cImFkZFdpZGdldE1vZGFsTGFiZWxcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgaW5zaWdodC1XYXJuaW5nIG1vZGFsLWRpYWxvZy1jZW50ZXJlZCBpbXByb3ZlbWVudC13YXJuaW5nXCIgcm9sZT1cImRvY3VtZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgPGgyIGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cbiAgICAgICAgICAgICAgPHN0cm9uZz48L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbW90aW9uLXRpdGxlXCIgdGl0bGU9XCJ0ZXN0XCI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIHt7IGltcHJvdmVtZW50VGl0bGUgfX0gPzwvc3Bhbj5cbiAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5cbiAgICAgICAgICAgICAgPHNwYW4+w5c8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5zaWdodHNCb2R5IHAtMCB0ZXh0LWxlZnQgaW5zaWdodFdhcm5pbmdUZXh0XCI+XG4gICAgICAgICAgICAgIERlbGV0aW5nIHRoaXNcbiAgICAgICAgICAgICAge3sgaW1wcm92ZW1lbnRUaXRsZSB9fVxuICAgICAgICAgICAgICBkZWxldGVzIGl0IHBlcm1hbnRseSBmb3IgYWxsIHVzZXJzIGFuZCByZW1vdmVzIGl0IGF0IGV2ZXJ5IHBsYWNlIGl04oCZcyB1c2VkLiBUaGlzIGNhbuKAmXQgYmUgdW5kb25lLiA8YnI+XG4gICAgICAgICAgICAgIDxicj5cbiAgICAgICAgICAgICAgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRvIHRoaXM/XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gZ2xvYmFsLWJ0bi1zbSBkYW5nZXJidG5cIiBAY2xpY2s9XCJkZWxldGVJbXByb3ZlbWVudFwiPlxuICAgICAgICAgICAgICBQZXJtYW5lbnRseSBkZWxldGVcbiAgICAgICAgICAgICAge3sgaW1wcm92ZW1lbnRUaXRsZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGdsb2JhbC1idG4tc20gYm9yZGVyZWQtdHJhbnNwYXJlbnRidG5cIiBAY2xpY2s9XCJjYW5jZWxEZWxldGVcIj5cbiAgICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgICA8L2J1dHRvbj4gICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLUVuZCBEZWxldGUgSW1wcm92ZW1lbnQgTW9kYWwtLT5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG4vLyBpbXBvcnQgSW1wcm92ZW1lbnRzU2lkZWJhck1lbnUgZnJvbSAnLi4vY29tbW9uL2hlYWRlci9JbXByb3ZlbWVudHNTaWRlYmFyTWVudS52dWUnO1xuaW1wb3J0IExlZnRTaWRlTWVudUZpbHRlciBmcm9tICcuLi9jb21tb24vaGVhZGVyL0xlZnRTaWRlTWVudUZpbHRlci52dWUnO1xuaW1wb3J0IFNldHRpbmdzSGVhZGVyIGZyb20gJy4uL2NvbW1vbi9oZWFkZXIvU2V0dGluZ3NIZWFkZXIudnVlJztcbmltcG9ydCBBZGRJbXByb3ZlbWVudCBmcm9tICcuLi9jb21tb24vQWRkSW1wcm92ZW1lbnQudnVlJztcbmltcG9ydCBWaWV3SW1wcm92ZW1lbnQgZnJvbSAnLi4vY29tbW9uL2ltcHJvdmVtZW50cy9WaWV3SW1wcm92ZW1lbnQudnVlJztcbi8vIGltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbi8vIGltcG9ydCBkcmFnZ2FibGUgZnJvbSAndnVlZHJhZ2dhYmxlJztcbi8vIGltcG9ydCB2Q2xpY2tPdXRzaWRlIGZyb20gJ3YtY2xpY2stb3V0c2lkZSc7XG5pbXBvcnQge21hcEdldHRlcnMsIG1hcEFjdGlvbnN9IGZyb20gJ3Z1ZXgnO1xuaW1wb3J0IEZpbHRlck1lbnUgZnJvbSAnLi4vY29tbW9uL0ZpbHRlck1lbnUudnVlJztcbmltcG9ydCBPYnNlcnZlciBmcm9tICcuLi9jb21tb24vT2JzZXJ2ZXInO1xuaW1wb3J0IExvYWRlciBmcm9tICcuLi9jb21tb24vTG9hZGVyJztcblxuaW1wb3J0IHt2aWV3c30gZnJvbSAnLi4vLi4vYXNzZXRzL2pzL21peGlucy92aWV3cy5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ3F1ZXN0aW9ucycsXG4gIGNvbXBvbmVudHM6IHtcbiAgICAvLyBkcmFnZ2FibGUsXG4gICAgTGVmdFNpZGVNZW51RmlsdGVyLFxuICAgIFNldHRpbmdzSGVhZGVyLFxuICAgIEFkZEltcHJvdmVtZW50LFxuICAgIEZpbHRlck1lbnUsXG4gICAgVmlld0ltcHJvdmVtZW50LFxuXG4gICAgT2JzZXJ2ZXIsXG4gICAgTG9hZGVyLFxuICB9LFxuICBtaXhpbnM6IFt2aWV3c10sXG4gIGRpcmVjdGl2ZXM6IHtcbiAgICAvLyBjbGlja091dHNpZGU6IHZDbGlja091dHNpZGUuZGlyZWN0aXZlLFxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpbXByb3ZlbWVudFR5cGU6IG51bGwsXG4gICAgICB2ZXJzaW9uOiAxLFxuICAgICAgbG9hZGVyOiB0cnVlLCAvLyBGb3IgbGF6eSBsb2FkaW5nIGxvYWRlclxuICAgICAgY2hlY2tJbXByb3ZlbWVudHNMZW5ndGg6IG51bGwsIC8vIEZvciBPYnNlcnZlclxuICAgICAgaW1wcm92ZW1lbnRzOiBbXSxcbiAgICAgIGltcHJvdmVtZW50OiBudWxsLFxuICAgICAgYWN0aW9uczogW10sXG4gICAgICB0ZW1waW1wcm92ZW1lbnQ6IHtcbiAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgIGltcHJvdmVtZW50X3N0YXR1czogMCxcbiAgICAgICAgaW1wb3J0YW5jZTogMCxcbiAgICAgICAgaW1wcm92ZW1lbnRfZGF0ZTogJycsXG4gICAgICAgIGV4dGVybmFsX2xpbms6ICcnLFxuICAgICAgICBtZWRpYV9vYmplY3Q6ICcnLFxuICAgICAgICBicmFuZDogW10sXG4gICAgICAgIGNzOiBbXSxcbiAgICAgICAgcHJvZHVjdDogW10sXG4gICAgICAgIGNvdW50cmllczogW10sXG4gICAgICAgIG1hcHM6IFtdLFxuICAgICAgICBqaXJhX2RldGFpbHM6IFtdLFxuICAgICAgICBvd25lcjogW10sXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWRJbXByb3ZlbWVudEluZGV4OiAtMSxcblxuICAgICAgLy8gZmlsdGVyXG4gICAgICB1c2VyczogW10sXG4gICAgICBjdXN0b21fZmllbGRzOiBbXSxcbiAgICAgIG1lZGlhOiBbXSxcbiAgICAgIGRvY3VtZW50czogW10sXG4gICAgICBicmFuZEZpbHRlcnM6IFtdLFxuICAgICAgcHJvZHVjdEZpbHRlcnM6IFtdLFxuICAgICAgY291bnRyeUZpbHRlcnM6IFtdLFxuICAgICAgY3NGaWx0ZXJzOiBbXSxcbiAgICAgIG15TWFwRmlsdGVyczogW10sXG4gICAgICBvdXJNYXBGaWx0ZXJzOiBbXSxcbiAgICAgIG15TWFwczogW10sXG4gICAgICBvdXJNYXBzOiBbXSxcbiAgICAgIHRvZ2dsZUNsYXNzOiAnJyxcblxuICAgICAgYWN0aXZlVGFiOiAwLFxuICAgICAgY3VzdG9tRmlsdGVyczoge1xuICAgICAgICBhY3RpdmVUYWI6IDAsXG4gICAgICAgIHZlcnNpb246IDEsXG4gICAgICAgIGRhdGE6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWx0ZXJPYmo6IHtcbiAgICAgICAgICAgICAgc3RhdHVzOiBbXSxcbiAgICAgICAgICAgICAgb3duZXI6IFtdLFxuICAgICAgICAgICAgICBpbXBvcnRhbmNlOiBbXSxcbiAgICAgICAgICAgICAgZGF0ZTogJycsXG4gICAgICAgICAgICAgIGJyYW5kOiBbXSxcbiAgICAgICAgICAgICAgcHJvZHVjdDogW10sXG4gICAgICAgICAgICAgIGNvdW50cmllczogW10sXG4gICAgICAgICAgICAgIGNzOiBbXSxcbiAgICAgICAgICAgICAgbWFwczogW10sXG4gICAgICAgICAgICAgIGVwaXNvZGVzOiBbXSxcbiAgICAgICAgICAgICAgdG91Y2hwb2ludHM6IFtdLFxuICAgICAgICAgICAgICBwdWJsaWM6IDAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGFiTmFtZTogJ015IEltcHJvdmVtZW50JyxcbiAgICAgICAgICAgIHNvcnRCeTogJ2VkaXRlZCcsXG4gICAgICAgICAgICBzb3J0QnlPcmRlcjogJ2Rlc2MnLFxuICAgICAgICAgICAgbGltaXQ6IDEwLFxuICAgICAgICAgICAgc2hvdzogMSxcbiAgICAgICAgICAgIHN0YXJ0QXQ6IDAsXG4gICAgICAgICAgICBzZWFyY2hRdWVyeTogJycsXG4gICAgICAgICAgICByZWFkb25seTogdHJ1ZSxcbiAgICAgICAgICB9LFxuXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmlsdGVyT2JqOiB7XG4gICAgICAgICAgICAgIHN0YXR1czogW10sXG4gICAgICAgICAgICAgIG93bmVyOiBbXSxcbiAgICAgICAgICAgICAgaW1wb3J0YW5jZTogW10sXG4gICAgICAgICAgICAgIGRhdGU6ICcnLFxuICAgICAgICAgICAgICBicmFuZDogW10sXG4gICAgICAgICAgICAgIHByb2R1Y3Q6IFtdLFxuICAgICAgICAgICAgICBjb3VudHJpZXM6IFtdLFxuICAgICAgICAgICAgICBjczogW10sXG4gICAgICAgICAgICAgIG1hcHM6IFtdLFxuICAgICAgICAgICAgICBlcGlzb2RlczogW10sXG4gICAgICAgICAgICAgIHRvdWNocG9pbnRzOiBbXSxcbiAgICAgICAgICAgICAgcHVibGljOiAxLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRhYk5hbWU6ICdPdXIgSW1wcm92ZW1lbnQnLFxuICAgICAgICAgICAgc29ydEJ5OiAnY3JlYXRlZCcsXG4gICAgICAgICAgICBzb3J0QnlPcmRlcjogJ2Rlc2MnLFxuICAgICAgICAgICAgbGltaXQ6IDEwLFxuICAgICAgICAgICAgc2hvdzogMCxcbiAgICAgICAgICAgIHN0YXJ0QXQ6IDAsXG4gICAgICAgICAgICBzZWFyY2hRdWVyeTogJycsXG4gICAgICAgICAgICByZWFkb25seTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHBhZ2U6ICdpbXByb3ZlbWVudHMnLFxuICAgICAgY29tcG9uZW50TmFtZTogJ2ltcHJvdmVtZW50cycsXG4gICAgICBpbXByb3ZlbWVudFRpdGxlOiAnSW1wcm92ZW1lbnQnLFxuICAgICAgaW1wcm92ZW1lbnRzVGl0bGU6ICdJbXByb3ZlbWVudHMnLFxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgLi4ubWFwR2V0dGVycyhbJ2FwcFNlc3MnXSksXG4gICAgZmlsdGVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tRmlsdGVycy5kYXRhW3RoaXMuYWN0aXZlVGFiXTtcbiAgICB9LFxuXG4gICAgZmlsdGVyc0RhdGEoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXN0b21GaWx0ZXJzLmRhdGE7XG4gICAgfSxcbiAgICBmaWx0ZXJDbGVhcigpIHtcbiAgICAgIGNvbnN0IGlzRW1wdHkgPSB0aGlzLmZpbHRlcnNEYXRhW3RoaXMuYWN0aXZlVGFiXS5maWx0ZXJPYmouZGF0ZSA9PSAnJyB8fCB0aGlzLmZpbHRlcnNEYXRhW3RoaXMuYWN0aXZlVGFiXS5maWx0ZXJPYmoub3duZXIubGVuZ3RoIHx8IHRoaXMuZmlsdGVyc0RhdGFbdGhpcy5hY3RpdmVUYWJdLmZpbHRlck9iai5zdGF0dXMubGVuZ3RoIHx8IHRoaXMuZmlsdGVyc0RhdGFbdGhpcy5hY3RpdmVUYWJdLmZpbHRlck9iai5pbXBvcnRhbmNlLmxlbmd0aDtcbiAgICAgIHJldHVybiBpc0VtcHR5O1xuICAgIH0sXG4gICAgZ2V0TGltaXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXJzRGF0YVt0aGlzLmFjdGl2ZVRhYl0ubGltaXQ7XG4gICAgfSxcbiAgfSxcbiAgd2F0Y2g6IHt9LFxuICBtZXRob2RzOiB7XG4gICAgXG4gICAgXG4gICAgbG9hZERhdGEoKSB7XG4gICAgICBpZiAodGhpcy5jaGVja0ltcHJvdmVtZW50c0xlbmd0aCA9PSBudWxsIHx8IHRoaXMuaW1wcm92ZW1lbnRzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuJHNldCh0aGlzLmZpbHRlcnNEYXRhW3RoaXMuYWN0aXZlVGFiXSwgJ3N0YXJ0QXQnLCB0aGlzLmltcHJvdmVtZW50cy5sZW5ndGgpO1xuICAgICAgLy8gVG9kbyBnZXQgZGF0YVxuICAgICAgdGhpcy5nZXRJbXByb3ZlbWVudHModGhpcy5maWx0ZXJzRGF0YVt0aGlzLmFjdGl2ZVRhYl0sIHRydWUpO1xuICAgIH0sXG4gICAgZ2V0SW1wcm92ZW1lbnRzKGZpbHRlciwgbG9hZE1vcmUgPSBmYWxzZSkge1xuICAgICAgdGhpcy5maWx0ZXJzRGF0YVt0aGlzLmFjdGl2ZVRhYl0gPSBmaWx0ZXIgPyBmaWx0ZXIgOiB0aGlzLmZpbHRlcnNEYXRhW3RoaXMuYWN0aXZlVGFiXTtcbiAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICAgIGlmICghbG9hZE1vcmUpIHtcbiAgICAgICAgdGhpcy5pbXByb3ZlbWVudHMgPSBbXTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLiRzY3JlZW4uaGVpZ2h0ID49IDEyNTAgJiYgdGhpcy4kc2NyZWVuLmhlaWdodCA8PSAyMjUwICYmIHRoaXMuY2hlY2tJbXByb3ZlbWVudHNMZW5ndGggPT0gbnVsbCkge1xuICAgICAgICB0aGlzLiRzZXQodGhpcy5maWx0ZXJzRGF0YVt0aGlzLmFjdGl2ZVRhYl0sICdsaW1pdCcsIDIwKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy4kc2NyZWVuLmhlaWdodCA+IDIyNTAgJiYgdGhpcy4kc2NyZWVuLmhlaWdodCA8PSAzMjUwICYmIHRoaXMuY2hlY2tJbXByb3ZlbWVudHNMZW5ndGggPT0gbnVsbCkge1xuICAgICAgICB0aGlzLiRzZXQodGhpcy5maWx0ZXJzRGF0YVt0aGlzLmFjdGl2ZVRhYl0sICdsaW1pdCcsIDMwKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy4kc2NyZWVuLmhlaWdodCA+IDMyNTAgJiYgdGhpcy5jaGVja0ltcHJvdmVtZW50c0xlbmd0aCA9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuJHNldCh0aGlzLmZpbHRlcnNEYXRhW3RoaXMuYWN0aXZlVGFiXSwgJ2xpbWl0JywgNTApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4kc2V0KHRoaXMuZmlsdGVyc0RhdGFbdGhpcy5hY3RpdmVUYWJdLCAnbGltaXQnLCAyMCk7XG4gICAgICB9XG4gICAgICAvLyBsb2FkZXIub3BlbigpO1xuICAgICAgdGhpcy4kaHR0cFxuICAgICAgICAucG9zdCgnL2FwaS9pbXByb3ZlbWVudHMvZ2V0TGlzdCcsIHRoaXMuZmlsdGVyc0RhdGFbdGhpcy5hY3RpdmVUYWJdKVxuICAgICAgICAudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgY29uc3QgcmVzcCA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcblxuICAgICAgICAgICAgc2VsZi5jaGVja0ltcHJvdmVtZW50c0xlbmd0aCA9IHJlc3AuaW1wcm92ZW1lbnRzLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChsb2FkTW9yZSkge1xuICAgICAgICAgICAgICBzZWxmLmltcHJvdmVtZW50cy5wdXNoLmFwcGx5KHNlbGYuaW1wcm92ZW1lbnRzLCByZXNwLmltcHJvdmVtZW50cyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzZWxmLmltcHJvdmVtZW50cyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcC5pbXByb3ZlbWVudHMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGYubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICAvLyBsb2FkZXIuY2xvc2UoKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICAgICAgc2VsZi5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBnZXRGaWx0ZXJzKCkge1xuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgdGhpcy4kaHR0cFxuICAgICAgICAuZ2V0KCcvYXBpL2dldEZpbHRlcnMvaW1wcm92ZW1lbnQnKVxuICAgICAgICAudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgY29uc3QgcmVzcCA9IHJlc3BvbnNlLmRhdGEuZGF0YS5maWx0ZXJzO1xuXG4gICAgICAgICAgICBzZWxmLmJyYW5kRmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcC5icmFuZCkpO1xuICAgICAgICAgICAgc2VsZi5wcm9kdWN0RmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcC5wcm9kdWN0KSk7XG4gICAgICAgICAgICBzZWxmLmNvdW50cnlGaWx0ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXNwLmNvdW50cmllcykpO1xuICAgICAgICAgICAgc2VsZi5jc0ZpbHRlcnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlc3AuY3MpKTtcbiAgICAgICAgICAgIC8vIHNlbGYuY3VzdG9tX2ZpZWxkcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcC5jdXN0b21GaWVsZHMpKTtcbiAgICAgICAgICAgIHNlbGYubXlNYXBGaWx0ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXNwLm15bWFwcykpO1xuICAgICAgICAgICAgc2VsZi5vdXJNYXBGaWx0ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXNwLm91cm1hcHMpKTtcbiAgICAgICAgICAgIHNlbGYubXlNYXBzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXNwLm15bWFwcykpO1xuICAgICAgICAgICAgc2VsZi5vdXJNYXBzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXNwLm91cm1hcHMpKTtcbiAgICAgICAgICAgIHNlbGYudXNlcnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlc3AudXNlcnMpKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ/CfmoAgfiBmaWxlOiBJbXByb3ZlbWVudC52dWUgfiBsaW5lIDQyNyB+IGdldEZpbHRlcnMgfiBlcnJvcicsIGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBUbyBmZXRjaCBtZWRpYVxuICAgICAqL1xuICAgIGdldE1lZGlhKCkge1xuICAgICAgLy8gVGhlIHZpZXcgbW9kZWwuXG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICB0aGlzLiRodHRwXG4gICAgICAgIC5nZXQoJy9zZXJ2aWNlL2ltYWdlbGF6eScpXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAyMDApIHtcbiAgICAgICAgICAgIHNlbGYubWVkaWEgPSByZXNwb25zZS5kYXRhLmRhdGEubWVkaWE7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnJvcikge30pO1xuICAgIH0sXG4gICAgcmVkaXJlY3QoZXh0ZXJuYWxfbGluaywgdGFyZ2V0ID0gJ19ibGFuaycpIHtcbiAgICAgIC8vIGNoZWNrIGlmIGl0cyBhIHZhbGlkIGxpbmtcbiAgICAgIGlmIChleHRlcm5hbF9saW5rLnN1YnN0cmluZygwLCA0KSAhPT0gJ2h0dHAnKSB7XG4gICAgICAgIGV4dGVybmFsX2xpbmsgPSAnaHR0cDovLycgKyBleHRlcm5hbF9saW5rO1xuICAgICAgfVxuICAgICAgd2luZG93Lm9wZW4oZXh0ZXJuYWxfbGluaywgdGFyZ2V0KTtcbiAgICB9LFxuICAgIGVkaXRJbXByb3ZlbWVudChpbmRleCwgcGFnZUZyb20pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbXByb3ZlbWVudEluZGV4ID0gaW5kZXg7XG5cbiAgICAgIGlmIChwYWdlRnJvbSAhPSAndmlldycpIHtcbiAgICAgICAgdGhpcy5pbXByb3ZlbWVudCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5pbXByb3ZlbWVudHNbaW5kZXhdKSk7XG4gICAgICAgIHRoaXMuZ2V0U2luZ2xlSW1wcm92ZW1lbnQodGhpcy5pbXByb3ZlbWVudC5pbXByb3ZlbWVudF9pZCk7XG4gICAgICB9XG4gICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICQoJyNhZGRJbXByb3ZlbWVudE1vZGFsJykubW9kYWwoJ3Nob3cnKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgdmlld0ltcHJvdmVtZW50KGluZGV4KSB7XG4gICAgICAvLyB0b2RvIGNoYW5nZSB0aGlzIGluIGFsbCBwbGFjZXNcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbXByb3ZlbWVudEluZGV4ID0gaW5kZXg7XG4gICAgICB0aGlzLmltcHJvdmVtZW50ID0gdGhpcy5pbXByb3ZlbWVudHNbaW5kZXhdO1xuICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAkKCcjdmlld0ltcHJvdmVtZW50TW9kYWwnKS5tb2RhbCgnc2hvdycpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmdldFNpbmdsZUltcHJvdmVtZW50KHRoaXMuaW1wcm92ZW1lbnQuaW1wcm92ZW1lbnRfaWQpO1xuICAgIH0sXG4gICAgZ2V0U2luZ2xlSW1wcm92ZW1lbnQoaW1wcm92ZW1lbnRfaWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKCfwn5qAIH4gZmlsZTogSW1wcm92ZW1lbnQudnVlIH4gbGluZSA1NDMgfiBnZXRTaW5nbGVJbXByb3ZlbWVudCB+IGltcHJvdmVtZW50X2lkJywgaW1wcm92ZW1lbnRfaWQpO1xuICAgICAgaWYgKGltcHJvdmVtZW50X2lkKSB7XG4gICAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgICAgbG9hZGVyLm9wZW4oKTtcbiAgICAgICAgdGhpcy4kaHR0cFxuICAgICAgICAgIC5wb3N0KCcvYXBpL2ltcHJvdmVtZW50cy9nZXRTaW5nbGVJbXByb3ZlbWVudCcsIHtcbiAgICAgICAgICAgIGltcHJvdmVtZW50X2lkOiBpbXByb3ZlbWVudF9pZCxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgbGV0IHJlc3AgPSByZXNwb25zZS5kYXRhLmRhdGE7XG4gICAgICAgICAgICAgIHNlbGYuYWN0aW9ucyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZGF0YS5kYXRhLmFjdGlvbnMpKTtcbiAgICAgICAgICAgICAgbGV0IHRlbXBpbXByb3ZlbWVudCA9IHtcbiAgICAgICAgICAgICAgICBjczogcmVzcC5jcyxcbiAgICAgICAgICAgICAgICBicmFuZDogcmVzcC5icmFuZCxcbiAgICAgICAgICAgICAgICBwcm9kdWN0OiByZXNwLnByb2R1Y3QsXG4gICAgICAgICAgICAgICAgY291bnRyaWVzOiByZXNwLmNvdW50cmllcyxcbiAgICAgICAgICAgICAgICBtYXBzOiByZXNwLm1hcHMsXG4gICAgICAgICAgICAgICAgY29ubmVjdGVkX2NvdW50OiByZXNwLmNvbm5lY3RlZF9jb3VudCxcbiAgICAgICAgICAgICAgICBqaXJhX2RldGFpbHM6IHJlc3AuamlyYV9kZXRhaWxzLFxuICAgICAgICAgICAgICAgIG1lZGlhX29iamVjdDogcmVzcC5tZWRpYSxcbiAgICAgICAgICAgICAgICBvd25lcjogcmVzcC5vd25lcixcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcmVzcC5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBwdWJsaWM6IHJlc3AucHVibGljLFxuICAgICAgICAgICAgICAgIHRpdGxlOiByZXNwLnRpdGxlLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBpZiAocmVzcC5vd25lci51c2VyaWQgPT0gc2VsZi5hcHBTZXNzLmlkKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5pbXByb3ZlbWVudFR5cGUgPSAwO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlbGYuaW1wcm92ZW1lbnRUeXBlID0gMTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZWxmLmltcHJvdmVtZW50ID0gey4uLnNlbGYuaW1wcm92ZW1lbnQsIC4uLnRlbXBpbXByb3ZlbWVudH07XG4gICAgICAgICAgICAgIGxvYWRlci5jbG9zZSgpO1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnJvcikge1xuICAgICAgICAgICAgbG9hZGVyLmNsb3NlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBhZGRJbXByb3ZlbWVudCgpIHtcbiAgICAgIGlmICh0aGlzLmxvYWRlcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmFjdGlvbnMgPSBbXTtcbiAgICAgIHRoaXMuaW1wcm92ZW1lbnQgPSB7XG4gICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICBpbXByb3ZlbWVudF9zdGF0dXM6IDAsXG4gICAgICAgIGltcG9ydGFuY2U6IDAsXG4gICAgICAgIGltcHJvdmVtZW50X2RhdGU6ICcnLFxuICAgICAgICBleHRlcm5hbF9saW5rOiAnJyxcbiAgICAgICAgbWVkaWFfb2JqZWN0OiAnJyxcbiAgICAgICAgYnJhbmQ6IFtdLFxuICAgICAgICBjczogW10sXG4gICAgICAgIHByb2R1Y3Q6IFtdLFxuICAgICAgICBjb3VudHJpZXM6IFtdLFxuICAgICAgICBtYXBzOiBbXSxcbiAgICAgICAgamlyYV9kZXRhaWxzOiBbXSxcbiAgICAgICAgb3duZXI6IFtdLFxuICAgICAgICBwdWJsaWM6IHRoaXMuZmlsdGVyc0RhdGFbdGhpcy5hY3RpdmVUYWJdLmZpbHRlck9iai5wdWJsaWMsXG4gICAgICB9O1xuICAgICAgdGhpcy5pbXByb3ZlbWVudFR5cGUgPSB0aGlzLmZpbHRlcnNEYXRhW3RoaXMuYWN0aXZlVGFiXS5maWx0ZXJPYmoucHVibGljO1xuXG4gICAgICAvLyB0aGlzLmltcHJvdmVtZW50cy5wdXNoKGltcHJvdmVtZW50KTtcbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRJbXByb3ZlbWVudEluZGV4ID0gdGhpcy5pbXByb3ZlbWVudHMubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgJCgnI2FkZEltcHJvdmVtZW50TW9kYWwnKS5tb2RhbCgnc2hvdycpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBkZWxldGVJbXByb3ZlbWVudFdhcm5pbmcoaW5kZXgpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbXByb3ZlbWVudEluZGV4ID0gaW5kZXg7XG4gICAgICAkKCcjZGVsZXRlSW1wcm92ZW1lbnRNb2RhbCcpLm1vZGFsKCdzaG93Jyk7XG4gICAgfSxcbiAgICBkZWxldGVJbXByb3ZlbWVudCgpIHtcbiAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgIHRoaXMuJGh0dHBcbiAgICAgICAgLnBvc3QoJy9hcGkvaW1wcm92ZW1lbnRzL2Rlc3Ryb3knLCB7XG4gICAgICAgICAgaW1wcm92ZW1lbnRfaWQ6IHNlbGYuaW1wcm92ZW1lbnRzW3NlbGYuc2VsZWN0ZWRJbXByb3ZlbWVudEluZGV4XS5pbXByb3ZlbWVudF9pZCxcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgIC8vdXBkYXRlIHBhcmVudCBpdGVtXG4gICAgICAgICAgICBzZWxmLmltcHJvdmVtZW50cy5zcGxpY2Uoc2VsZi5zZWxlY3RlZEltcHJvdmVtZW50SW5kZXgsIDEpO1xuICAgICAgICAgICAgc2VsZi5zZWxlY3RlZEltcHJvdmVtZW50SW5kZXggPSAtMTtcbiAgICAgICAgICAgICQoJyNkZWxldGVJbXByb3ZlbWVudE1vZGFsJykubW9kYWwoJ2hpZGUnKTtcbiAgICAgICAgICAgIGxvYWRlci5jbG9zZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgICAgICAkKCcjZGVsZXRlSW1wcm92ZW1lbnRNb2RhbCcpLm1vZGFsKCdoaWRlJyk7XG4gICAgICAgICAgc2VsZi5zZWxlY3RlZEltcHJvdmVtZW50SW5kZXggPSAtMTtcbiAgICAgICAgICBsb2FkZXIuY2xvc2UoKTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBjYW5jZWxEZWxldGUoKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW1wcm92ZW1lbnRJbmRleCA9IC0xO1xuICAgICAgJCgnI2RlbGV0ZUltcHJvdmVtZW50TW9kYWwnKS5tb2RhbCgnaGlkZScpO1xuICAgIH0sXG4gICAgZ2V0U29ydEljb24ob3JkZXIsIGFjdGl2ZSkge1xuICAgICAgaWYgKG9yZGVyID09ICdhc2MnICYmIGFjdGl2ZSkge1xuICAgICAgICByZXR1cm4gJzxpbWcgY2xhc3M9XCJib3RoT3JkZXJJY29uIGRhcmt0aGVtZS1pY29uXCIgc3JjPVwiL2J1bmRsZXMvYWRtaW4vaW1hZ2VzL3NvcnQtdG9nZ2xlLWljb24tdXAuc3ZnXCIgLz48aW1nIGNsYXNzPVwiYm90aE9yZGVySWNvbiBsaWdodHRoZW1lLWljb25cIiBzcmM9XCIvYnVuZGxlcy9hZG1pbi9pbWFnZXMvc29ydC10b2dnbGUtaWNvbi11cC1ibGFjay5zdmdcIiAvPic7XG4gICAgICB9IGVsc2UgaWYgKG9yZGVyID09ICdkZXNjJyAmJiBhY3RpdmUpIHtcbiAgICAgICAgcmV0dXJuICc8aW1nIGNsYXNzPVwiYm90aE9yZGVySWNvbiBkYXJrdGhlbWUtaWNvblwiIHNyYz1cIi9idW5kbGVzL2FkbWluL2ltYWdlcy9zb3J0LXRvZ2dsZS1pY29uLWRvd24uc3ZnXCIgLz48aW1nIGNsYXNzPVwiYm90aE9yZGVySWNvbiBsaWdodHRoZW1lLWljb25cIiBzcmM9XCIvYnVuZGxlcy9hZG1pbi9pbWFnZXMvc29ydC10b2dnbGUtaWNvbi1kb3duLWJsYWNrLnN2Z1wiIC8+JztcbiAgICAgIH1cbiAgICAgIHJldHVybiAnPGltZyBjbGFzcz1cImJvdGhPcmRlckljb24gZGFya3RoZW1lLWljb25cIiBzcmM9XCIvYnVuZGxlcy9hZG1pbi9pbWFnZXMvc29ydC10b2dnbGUtaWNvbi5zdmdcIiAvPjxpbWcgY2xhc3M9XCJib3RoT3JkZXJJY29uIGxpZ2h0dGhlbWUtaWNvblwiIHNyYz1cIi9idW5kbGVzL2FkbWluL2ltYWdlcy9zb3J0LXRvZ2dsZS1pY29uLWJsYWNrLnN2Z1wiIC8+JztcbiAgICB9LFxuICAgIGZpbHRlckltcHJvdmVtZW50KGZpbHRlciwgZ2V0RGF0YSA9IGZhbHNlKSB7XG4gICAgICB0aGlzLiRzZXQodGhpcy5maWx0ZXJzRGF0YVt0aGlzLmFjdGl2ZVRhYl0sICdzdGFydEF0JywgMCk7XG4gICAgICBpZiAoIWdldERhdGEpIHtcbiAgICAgICAgdGhpcy5nZXRJbXByb3ZlbWVudHMoZmlsdGVyKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXRWaWV3cygpO1xuICAgIH0sXG5cbiAgICBjaGVja1RvdWNocG9pbnRzKHN0YXR1cywgdG91Y2hwb2ludHMsIGVwaWQpIHtcbiAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgIGlmICghc3RhdHVzKSB7XG4gICAgICAgIGlmICghdG91Y2hwb2ludHMuc29tZSh0cCA9PiBzZWxmLmZpbHRlck9iai50b3VjaHBvaW50cy5pbmRleE9mKHRwLnRwX2lkKSAhPT0gLTEpKSB7XG4gICAgICAgICAgbGV0IGluZGV4ID0gc2VsZi5maWx0ZXJPYmouZXBpc29kZXMuaW5kZXhPZihlcGlkKTtcbiAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBzZWxmLmZpbHRlck9iai5lcGlzb2Rlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBjaGVja0FsbEVwaXNvZGVzVG91Y2hwb2ludHMoZXZlbnQsIGVwaXNvZGVzKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgIGxldCB0cHMgPSBbXTtcbiAgICAgIGxldCBlcHMgPSBbXTtcblxuICAgICAgZXBpc29kZXMuZm9yRWFjaChmdW5jdGlvbihlcGlzb2RlKSB7XG4gICAgICAgIGVwcy5wdXNoKGVwaXNvZGUuZV9pZCk7XG4gICAgICAgIGVwaXNvZGUudG91Y2hwb2ludHMuZm9yRWFjaChmdW5jdGlvbih0cCkge1xuICAgICAgICAgIHRwcy5wdXNoKHRwLnRwX2lkKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGV2ZW50LnRhcmdldC5jaGVja2VkKSB7XG4gICAgICAgIFtdLnB1c2guYXBwbHkoc2VsZi5maWx0ZXJPYmoudG91Y2hwb2ludHMsIHRwcyk7XG4gICAgICAgIFtdLnB1c2guYXBwbHkoc2VsZi5maWx0ZXJPYmouZXBpc29kZXMsIGVwcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxmLmZpbHRlck9iai50b3VjaHBvaW50cyA9IHNlbGYuZmlsdGVyT2JqLnRvdWNocG9pbnRzLmZpbHRlcihmdW5jdGlvbihlbCkge1xuICAgICAgICAgIHJldHVybiB0cHMuaW5kZXhPZihlbCkgPCAwO1xuICAgICAgICB9KTtcblxuICAgICAgICBzZWxmLmZpbHRlck9iai5lcGlzb2RlcyA9IHNlbGYuZmlsdGVyT2JqLmVwaXNvZGVzLmZpbHRlcihmdW5jdGlvbihlbCkge1xuICAgICAgICAgIHJldHVybiBlcHMuaW5kZXhPZihlbCkgPCAwO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5maWx0ZXJJbXByb3ZlbWVudCgpO1xuICAgIH0sXG5cbiAgICBjaGVja0FsbFRvdWNocG9pbnRzKGV2ZW50LCB0b3VjaHBvaW50cywgZXBpc29kZXMsIG1hcGlkKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgIGxldCB0cHMgPSBbXTtcbiAgICAgIHRvdWNocG9pbnRzLmZvckVhY2goZnVuY3Rpb24odHApIHtcbiAgICAgICAgdHBzLnB1c2godHAudHBfaWQpO1xuICAgICAgfSk7XG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcbiAgICAgICAgW10ucHVzaC5hcHBseShzZWxmLmZpbHRlck9iai50b3VjaHBvaW50cywgdHBzKTtcbiAgICAgICAgLy8gc2VsZi5maWx0ZXJPYmoudG91Y2hwb2ludHMucHVzaC5hcHBseSguLi5bdHBzXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGYuZmlsdGVyT2JqLnRvdWNocG9pbnRzID0gc2VsZi5maWx0ZXJPYmoudG91Y2hwb2ludHMuZmlsdGVyKGZ1bmN0aW9uKGVsKSB7XG4gICAgICAgICAgcmV0dXJuIHRwcy5pbmRleE9mKGVsKSA8IDA7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWVwaXNvZGVzLnNvbWUoZXAgPT4gc2VsZi5maWx0ZXJPYmouZXBpc29kZXMuaW5kZXhPZihlcC5lX2lkKSAhPT0gLTEpKSB7XG4gICAgICAgICAgbGV0IGluZGV4ID0gc2VsZi5maWx0ZXJPYmoubWFwcy5pbmRleE9mKG1hcGlkKTtcbiAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBzZWxmLmZpbHRlck9iai5tYXBzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZmlsdGVySW1wcm92ZW1lbnQoKTtcbiAgICB9LFxuXG4gICAgYWxsRXBpc29kZXNTZWxlY3RlZChlcGlzb2Rlcykge1xuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgbGV0IHN0YXR1cyA9IDE7XG4gICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgZXBpc29kZXMuZm9yRWFjaChlcCA9PiB7XG4gICAgICAgIGlmIChzZWxmLmZpbHRlck9iai5lcGlzb2Rlcy5pbmRleE9mKGVwLmVfaWQpICE9PSAtMSkge1xuICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKGNvdW50ID09IGVwaXNvZGVzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gMztcbiAgICAgIH0gZWxzZSBpZiAoY291bnQgPT0gMCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAyO1xuICAgICAgfVxuICAgICAgLy8gcmV0dXJuIGVwaXNvZGVzLmV2ZXJ5KChlcCkgPT4gc2VsZi5maWx0ZXJPYmouZXBpc29kZXMuaW5kZXhPZihlcC5lX2lkKSAhPT0gLTEgKTtcbiAgICB9LFxuICAgIGFsbFRvdWNocG9pbnRzU2VsZWN0ZWQodG91Y2hwb2ludHMpIHtcbiAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICB0b3VjaHBvaW50cy5mb3JFYWNoKHRwID0+IHtcbiAgICAgICAgaWYgKHNlbGYuZmlsdGVyT2JqLnRvdWNocG9pbnRzLmluZGV4T2YodHAudHBfaWQpICE9PSAtMSkge1xuICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKGNvdW50ID09IHRvdWNocG9pbnRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gMztcbiAgICAgIH0gZWxzZSBpZiAoY291bnQgPT0gMCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAyO1xuICAgICAgfVxuICAgICAgLy8gcmV0dXJuIHRvdWNocG9pbnRzLmV2ZXJ5KCh0cCkgPT4gc2VsZi5maWx0ZXJPYmoudG91Y2hwb2ludHMuaW5kZXhPZih0cC50cF9pZCkgIT09IC0xICk7XG4gICAgfSxcblxuICAgIG15TWFwU2VsZWN0aW9uQ291bnQoZXZlbnQsIG1hcGlkKSB7XG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE15Sm91cm5leUl0ZW1zKys7XG4gICAgICAgIGlmICh0aGlzLm91ck1hcEZpbHRlcnMuc29tZShtYXAgPT4gbWFwLmpfaWQgPT09IG1hcGlkKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPdXJKb3VybmV5SXRlbXMrKztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE15Sm91cm5leUl0ZW1zLS07XG4gICAgICAgIGlmICh0aGlzLm91ck1hcEZpbHRlcnMuc29tZShtYXAgPT4gbWFwLmpfaWQgPT09IG1hcGlkKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPdXJKb3VybmV5SXRlbXMtLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgb3VyTWFwU2VsZWN0aW9uQ291bnQoZXZlbnQsIHVzZXJpZCkge1xuICAgICAgaWYgKGV2ZW50LnRhcmdldC5jaGVja2VkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPdXJKb3VybmV5SXRlbXMrKztcbiAgICAgICAgaWYgKHRoaXMuYXBwU2Vzcy5pZCA9PSB1c2VyaWQpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTXlKb3VybmV5SXRlbXMrKztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE91ckpvdXJuZXlJdGVtcy0tO1xuICAgICAgICBpZiAodGhpcy5hcHBTZXNzLmlkID09IHVzZXJpZCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNeUpvdXJuZXlJdGVtcy0tO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEFycmF5IGRpZmZlcmVuY2VcbiAgICAgKiByZW1vdmUgdW5zZWxlY3RlZCBib3ggaW1wcm92ZW1lbnRzXG4gICAgICovXG4gICAgZGlmZmVyZW5jZTIoYSwgYikge1xuICAgICAgcmV0dXJuIGEuZmlsdGVyKFxuICAgICAgICBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuICF0aGlzLmdldCh2KSB8fCAhdGhpcy5zZXQodiwgdGhpcy5nZXQodikgLSAxKTtcbiAgICAgICAgfSxcbiAgICAgICAgYi5yZWR1Y2UoKGFjYywgdikgPT4gYWNjLnNldCh2LCAoYWNjLmdldCh2KSB8fCAwKSArIDEpLCBuZXcgTWFwKCkpXG4gICAgICApO1xuICAgIH0sXG5cbiAgICBjbG9zZVBvcFVwKGV2ZW50KSB7XG4gICAgICB0aGlzLmZpbHRlclNob3cgPSBmYWxzZTtcbiAgICB9LFxuICAgIHN3aXRjaFRhYih2YWwpIHtcbiAgICAgIHRoaXMuYWN0aXZlVGFiID0gdmFsO1xuICAgICAgdGhpcy5pbXByb3ZlbWVudHMgPSBbXTtcbiAgICAgIHRoaXMuY2hlY2tJbXByb3ZlbWVudHNMZW5ndGggPSBudWxsO1xuICAgICAgdGhpcy4kc2V0KHRoaXMuZmlsdGVyc0RhdGFbdGhpcy5hY3RpdmVUYWJdLCAnc3RhcnRBdCcsIDApO1xuICAgICAgdGhpcy5maWx0ZXJJbXByb3ZlbWVudCgpO1xuICAgIH0sXG4gICAgcmVtb3ZlU2VhcmNoKCkge1xuICAgICAgdGhpcy4kc2V0KHRoaXMuZmlsdGVyc0RhdGFbdGhpcy5hY3RpdmVUYWJdLCAnc2VhcmNoUXVlcnknLCAnJyk7XG4gICAgICB0aGlzLmZpbHRlckltcHJvdmVtZW50KHRoaXMuZmlsdGVyc0RhdGFbdGhpcy5hY3RpdmVUYWJdKTtcbiAgICB9LFxuICAgIGNsZWFyVG9wRmlsdGVycygpIHtcbiAgICAgIGNvbnN0IGZpbHRlciA9IHtcbiAgICAgICAgZmlsdGVyT2JqOiB7XG4gICAgICAgICAgb3duZXI6IFtdLFxuICAgICAgICAgIGRhdGU6ICcnLFxuICAgICAgICAgIHN0YXR1czogW10sXG4gICAgICAgICAgaW1wb3J0YW5jZTogW10sXG4gICAgICAgICAgYnJhbmQ6IHRoaXMuZmlsdGVyc0RhdGFbdGhpcy5hY3RpdmVUYWJdLmZpbHRlck9iai5icmFuZCxcbiAgICAgICAgICBwcm9kdWN0OiB0aGlzLmZpbHRlcnNEYXRhW3RoaXMuYWN0aXZlVGFiXS5maWx0ZXJPYmoucHJvZHVjdCxcbiAgICAgICAgICBjb3VudHJpZXM6IHRoaXMuZmlsdGVyc0RhdGFbdGhpcy5hY3RpdmVUYWJdLmZpbHRlck9iai5jb3VudHJpZXMsXG4gICAgICAgICAgY3M6IHRoaXMuZmlsdGVyc0RhdGFbdGhpcy5hY3RpdmVUYWJdLmZpbHRlck9iai5jcyxcbiAgICAgICAgICBtYXBzOiB0aGlzLmZpbHRlcnNEYXRhW3RoaXMuYWN0aXZlVGFiXS5maWx0ZXJPYmoubWFwcyxcbiAgICAgICAgICBlcGlzb2RlczogdGhpcy5maWx0ZXJzRGF0YVt0aGlzLmFjdGl2ZVRhYl0uZmlsdGVyT2JqLmVwaXNvZGVzLFxuICAgICAgICAgIHRvdWNocG9pbnRzOiB0aGlzLmZpbHRlcnNEYXRhW3RoaXMuYWN0aXZlVGFiXS5maWx0ZXJPYmoudG91Y2hwb2ludHMsXG4gICAgICAgICAgcHVibGljOiB0aGlzLmZpbHRlcnNEYXRhW3RoaXMuYWN0aXZlVGFiXS5maWx0ZXJPYmoucHVibGljLFxuICAgICAgICB9LFxuICAgICAgICB0YWJOYW1lOiB0aGlzLmZpbHRlcnNEYXRhW3RoaXMuYWN0aXZlVGFiXS50YWJOYW1lLFxuICAgICAgICBzb3J0Qnk6ICdlZGl0ZWQnLFxuICAgICAgICBzb3J0QnlPcmRlcjogJ2Rlc2MnLFxuICAgICAgICBsaW1pdDogMTAsXG4gICAgICAgIHNob3c6ICB0aGlzLmZpbHRlcnNEYXRhW3RoaXMuYWN0aXZlVGFiXS5zaG93LFxuICAgICAgICBzdGFydEF0OiAwLFxuICAgICAgICBzZWFyY2hRdWVyeTogdGhpcy5maWx0ZXJzRGF0YVt0aGlzLmFjdGl2ZVRhYl0uc2VhcmNoUXVlcnksXG4gICAgICAgIHJlYWRvbmx5OiB0aGlzLmZpbHRlcnNEYXRhW3RoaXMuYWN0aXZlVGFiXS5yZWFkb25seSxcbiAgICAgIH07XG5cbiAgICAgIC8vIHRoaXMuZmlsdGVyRGF0YVt0aGlzLmFjdGl2ZVRhYl0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZmlsdGVyT2JqLCBmaWx0ZXIpKSk7XG4gICAgICB0aGlzLiRzZXQodGhpcy5maWx0ZXJzRGF0YSwgdGhpcy5hY3RpdmVUYWIsIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSkpO1xuXG4gICAgICAvLyB0aGlzLnNvcnRBbmRGaWx0ZXIoKTtcbiAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgJCgnLnNlbGVjdHBpY2tlcicpLnNlbGVjdHBpY2tlcigpO1xuICAgICAgICAkKCcuc2VsZWN0cGlja2VyJykuc2VsZWN0cGlja2VyKCdyZWZyZXNoJyk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZmlsdGVySW1wcm92ZW1lbnQoKTtcbiAgICB9LFxuICAgIGNsZWFyTGVmdEZpbHRlcnMoKSB7XG4gICAgICBjb25zdCBmaWx0ZXIgPSB7XG4gICAgICAgIGZpbHRlck9iajoge1xuICAgICAgICAgIG93bmVyOiB0aGlzLmZpbHRlcnNEYXRhW3RoaXMuYWN0aXZlVGFiXS5maWx0ZXJPYmoub3duZXIsXG4gICAgICAgICAgZGF0ZTogdGhpcy5maWx0ZXJzRGF0YVt0aGlzLmFjdGl2ZVRhYl0uZmlsdGVyT2JqLmRhdGUsXG4gICAgICAgICAgc3RhdHVzOiB0aGlzLmZpbHRlcnNEYXRhW3RoaXMuYWN0aXZlVGFiXS5maWx0ZXJPYmouc3RhdHVzLFxuICAgICAgICAgIGltcG9ydGFuY2U6IHRoaXMuZmlsdGVyc0RhdGFbdGhpcy5hY3RpdmVUYWJdLmZpbHRlck9iai5pbXBvcnRhbmNlLFxuICAgICAgICAgIGJyYW5kOiBbXSxcbiAgICAgICAgICBwcm9kdWN0OiBbXSxcbiAgICAgICAgICBjb3VudHJpZXM6IFtdLFxuICAgICAgICAgIGNzOiBbXSxcbiAgICAgICAgICBtYXBzOiBbXSxcbiAgICAgICAgICBlcGlzb2RlczogW10sXG4gICAgICAgICAgdG91Y2hwb2ludHM6IFtdLFxuICAgICAgICAgIHB1YmxpYzogdGhpcy5maWx0ZXJzRGF0YVt0aGlzLmFjdGl2ZVRhYl0uZmlsdGVyT2JqLnB1YmxpYyxcbiAgICAgICAgfSxcbiAgICAgICAgdGFiTmFtZTogdGhpcy5maWx0ZXJzRGF0YVt0aGlzLmFjdGl2ZVRhYl0udGFiTmFtZSxcbiAgICAgICAgc29ydEJ5OiAnZWRpdGVkJyxcbiAgICAgICAgc29ydEJ5T3JkZXI6ICdkZXNjJyxcbiAgICAgICAgbGltaXQ6IDEwLFxuICAgICAgICBzaG93OiB0aGlzLmZpbHRlcnNEYXRhW3RoaXMuYWN0aXZlVGFiXS5zaG93LFxuICAgICAgICBzdGFydEF0OiAwLFxuICAgICAgICBzZWFyY2hRdWVyeTogdGhpcy5maWx0ZXJzRGF0YVt0aGlzLmFjdGl2ZVRhYl0uc2VhcmNoUXVlcnksXG4gICAgICAgIHJlYWRvbmx5OiB0aGlzLmZpbHRlcnNEYXRhW3RoaXMuYWN0aXZlVGFiXS5yZWFkb25seSxcbiAgICAgIH07XG5cbiAgICAgIC8vIHRoaXMuZmlsdGVyRGF0YVt0aGlzLmFjdGl2ZVRhYl0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZmlsdGVyT2JqLCBmaWx0ZXIpKSk7XG4gICAgICB0aGlzLiRzZXQodGhpcy5maWx0ZXJzRGF0YSwgdGhpcy5hY3RpdmVUYWIsIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSkpO1xuXG4gICAgICAvLyB0aGlzLnNvcnRBbmRGaWx0ZXIoKTtcbiAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgJCgnLnNlbGVjdHBpY2tlcicpLnNlbGVjdHBpY2tlcigpO1xuICAgICAgICAkKCcuc2VsZWN0cGlja2VyJykuc2VsZWN0cGlja2VyKCdyZWZyZXNoJyk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZmlsdGVySW1wcm92ZW1lbnQoKTtcbiAgICB9LFxuICAgIHNvcnRJbXByb3ZlbWVudChzb3J0ZXIpIHtcbiAgICAgIHRoaXMuJHNldCh0aGlzLmZpbHRlcnNEYXRhW3RoaXMuYWN0aXZlVGFiXSwgJ3NvcnRCeScsIHNvcnRlcik7XG4gICAgICB0aGlzLiRzZXQodGhpcy5maWx0ZXJzRGF0YVt0aGlzLmFjdGl2ZVRhYl0sICdzb3J0QnlPcmRlcicsIHRoaXMuZmlsdGVyc0RhdGFbdGhpcy5hY3RpdmVUYWJdLnNvcnRCeU9yZGVyID09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnKTtcbiAgICAgIHRoaXMuZmlsdGVySW1wcm92ZW1lbnQodGhpcy5maWx0ZXJzRGF0YVt0aGlzLmFjdGl2ZVRhYl0pO1xuICAgIH0sXG4gICAgZ2V0SW1wcm92ZW1lbnRQdWJsaWNUeXBlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0R2VuZXJhbEN1c3RvbU5hbWUodGhpcy5pbXByb3ZlbWVudCAmJiBbMSwgMiwgNF0uaW5jbHVkZXModGhpcy5pbXByb3ZlbWVudC5wdWJsaWMpID8gJyBPdXIgJyA6ICcgTXkgJywgdGhpcy5hcHBTZXNzKTtcbiAgICB9LFxuICAgIGdldEltcHJvdmVtZW50VGl0bGUoZGVmYXVsdFZhbHVlLCBrZXlOYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDdXN0b21OYW1lKGRlZmF1bHRWYWx1ZSwga2V5TmFtZSwgJ2ltcHJvdmVtZW50JywgdGhpcy5hcHBTZXNzKTtcbiAgICB9LFxuICB9LFxuICBiZWZvcmVNb3VudCgpIHt9LFxuXG4gIGFzeW5jIG1vdW50ZWQoKSB7XG4gICAgXG4gICAgaWYgKHRoaXMuYXBwU2Vzcy5zeXN0ZW1hZG1pbikge1xuICAgICAgdGhpcy4kcm91dGVyLnB1c2goJy91c2VybWFuYWdlbWVudC91c2VycycpO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmdldFZpZXdzKCk7XG4gICAgdGhpcy5pbXByb3ZlbWVudFRpdGxlID0gdGhpcy5nZXRJbXByb3ZlbWVudFRpdGxlKCdJbXByb3ZlbWVudCcsICdpbXByb3ZlbWVudCcpO1xuICAgIHRoaXMuaW1wcm92ZW1lbnRzVGl0bGUgPSB0aGlzLmdldEltcHJvdmVtZW50VGl0bGUoJ0ltcHJvdmVtZW50cycsICdpbXByb3ZlbWVudHMnKTtcbiAgICB0aGlzLmdldEZpbHRlcnMoKTtcbiAgICB0aGlzLmdldE1lZGlhKCk7XG4gICAgLy8gdGhpcy5nZXRBbGxVc2Vyc0xpc3QoKTtcbiAgICAvLyB0aGlzLmdldEFsbEJyYW5kcygpO1xuICAgIC8vIHRoaXMuZ2V0TWVkaWEoKTtcbiAgICAvLyB0aGlzLmdldEFsbFByb2R1Y3RzKCk7XG4gICAgLy8gdGhpcy5nZXRBbGxTZWdtZW50cygpO1xuICAgIC8vIHRoaXMuZ2V0Q291bnRyaWVzKCk7XG4gICAgbGV0IHNlbGYgPSB0aGlzO1xuXG4gICAgJCgnI2RlbGV0ZUltcHJvdmVtZW50TW9kYWwnKS5vbignaGlkZS5icy5tb2RhbCcsIGZ1bmN0aW9uKGUpIHtcbiAgICAgIHNlbGYuc2VsZWN0ZWRJbXByb3ZlbWVudEluZGV4ID0gLTE7XG4gICAgfSk7XG4gIH0sXG4gIHVwZGF0ZWQoKSB7fSxcbn07XG48L3NjcmlwdD5cbjxzdHlsZSBzY29wZWQ+XG4uYWNjb3JkaWFuQ2hlY2sgaW5wdXQge1xuICBwYWRkaW5nOiAwO1xuICBoZWlnaHQ6IGluaXRpYWw7XG4gIHdpZHRoOiBpbml0aWFsO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBkaXNwbGF5OiBibG9jaztcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uYWNjb3JkaWFuQ2hlY2sgaW5wdXQ6Y2hlY2tlZCArIGxhYmVsOmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMHB4O1xuICBsZWZ0OiAwcHg7XG4gIHdpZHRoOiAxM3B4O1xuICBoZWlnaHQ6IDEzcHg7XG4gIHdpZHRoOiAxM3B4O1xuICBiYWNrZ3JvdW5kOiAjNzgwMWZmO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICMwMDAwMDA7XG59XG48L3N0eWxlPlxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvdXNlcm1hbmFnZW1lbnQvdnVlL2NvbXBvbmVudHMvdXNlcm1hbmFnZW1lbnQvSW1wcm92ZW1lbnQudnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLnRvb2x0aXBDbGFzcyB7XG4gIGNvbG9yOiByZWQgIWltcG9ydGFudDtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9oZWFkZXIvTGVmdFNpZGVNZW51RmlsdGVyLnZ1ZSIsIjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb24gY2xhc3M9XCJ1c2VybWFpbmNvbnRhaW5lciB0b2dnbGVkIGQtZmxleCBtZW51bmF2T2Zmc2V0XCIgOmNsYXNzPVwidG9nZ2xlQ2xhc3NcIj5cbiAgICA8c2V0dGluZ3MtaGVhZGVyPjwvc2V0dGluZ3MtaGVhZGVyPlxuICAgIDxsZWZ0LXNpZGUtbWVudS1maWx0ZXIgdi1pZj1cImFwcFNlc3NcIiA6YXBwU2Vzcz1cImFwcFNlc3NcIiA6ZmlsdGVyLnN5bmM9XCJmaWx0ZXJcIiA6ZmlsdGVyc0RhdGE9XCJmaWx0ZXJzRGF0YVwiIDphY3RpdmVUYWI9XCJhY3RpdmVUYWJcIiA6Y2hlY2tJbnNpZ2h0c0xlbmd0aD1cImNoZWNrSW5zaWdodHNMZW5ndGhcIiBAZmlsdGVyLWRhdGE9XCJmaWx0ZXJJbnNpZ2h0XCIgQGNsZWFyLWxlZnQtZmlsdGVycz1cImNsZWFyTGVmdEZpbHRlcnNcIiA6YnJhbmRGaWx0ZXJzPVwiYnJhbmRGaWx0ZXJzXCIgOnByb2R1Y3RGaWx0ZXJzPVwicHJvZHVjdEZpbHRlcnNcIiA6Y291bnRyeUZpbHRlcnM9XCJjb3VudHJ5RmlsdGVyc1wiIDpjc0ZpbHRlcnM9XCJjc0ZpbHRlcnNcIiA6bXlNYXBGaWx0ZXJzPVwibXlNYXBGaWx0ZXJzXCIgOm91ck1hcEZpbHRlcnM9XCJvdXJNYXBGaWx0ZXJzXCIgOm15TWFwcz1cIm15TWFwc1wiIDpvdXJNYXBzPVwib3VyTWFwc1wiPjwvbGVmdC1zaWRlLW1lbnUtZmlsdGVyPlxuICAgIDxzZWN0aW9uIGlkPVwicGFnZS1jb250ZW50LXdyYXBwZXJcIiBjbGFzcz1cInctMTAwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5zaWdodEJsb2NrIG5vQm90dG9tU3BhY2VcIj5cbiAgICAgICAgPGZpbHRlci1tZW51IHJlZj1cImZpbHRlckNvbXBvbmVudFJlZlwiIDp0aXRsZT1cImluc2lnaHRUaXRsZVwiIDp0aXRsZXM9XCJpbnNpZ2h0c1RpdGxlXCIgOmNvbXBvbmVudEZvcj1cImNvbXBvbmVudE5hbWVcIiA6Y29tcG9uZW50TmFtZT1cImNvbXBvbmVudE5hbWVcIiA6cGxhY2Vob2xkZXI9XCInSW5zaWdodHMnXCIgOmN1c3RvbV9maWVsZHM9XCJjdXN0b21fZmllbGRzXCIgOmFjdGl2ZVRhYi5zeW5jPVwiYWN0aXZlVGFiXCIgOmZpbHRlcnNEYXRhLnN5bmM9XCJmaWx0ZXJzRGF0YVwiIEBjbGVhci10b3AtZmlsdGVycz1cImNsZWFyVG9wRmlsdGVyc1wiIEBmaWx0ZXItZGF0YT1cImZpbHRlckluc2lnaHRcIiBAbW92ZS12aWV3PVwibW92ZVZpZXdcIiBAY3JlYXRlLW5ldz1cImNyZWF0ZU5ld1wiIEBzd2l0Y2gtdGFiPVwic3dpdGNoVGFiXCIgQGV4cG9ydC1pdGVtcz1cInNob3dFeHBvcnRXYXJuaW5nXCIgQHJlbW92ZS1zZWFyY2g9XCJyZW1vdmVTZWFyY2hcIiA6dXNlcnM9XCJ1c2Vyc1wiIDphcHBTZXNzPVwiYXBwU2Vzc1wiIDpicmFuZD1cImJyYW5kRmlsdGVyc1wiIDpwcm9kdWN0PVwicHJvZHVjdEZpbHRlcnNcIiA6Y291bnRyaWVzPVwiY291bnRyeUZpbHRlcnNcIiA6Y3M9XCJjc0ZpbHRlcnNcIj48L2ZpbHRlci1tZW51PlxuICAgICAgICA8aW5zaWdodC1jb250ZW50IDphcHBTZXNzPVwiYXBwU2Vzc1wiIDppbnNpZ2h0VGl0bGU9XCJpbnNpZ2h0VGl0bGVcIiA6aW5zaWdodFB1YmxpY1R5cGU9XCJpbnNpZ2h0UHVibGljVHlwZVwiIDppbnNpZ2h0c1RpdGxlPVwiaW5zaWdodHNUaXRsZVwiIDpmaWx0ZXI9XCJmaWx0ZXJcIiA6aW5zaWdodHMuc3luYz1cImluc2lnaHRzXCIgOmZpbHRlcnNEYXRhPVwiZmlsdGVyc0RhdGFcIiA6Y3VzdG9tX2ZpZWxkcz1cImN1c3RvbV9maWVsZHNcIiA6YWN0aXZlVGFiPVwiYWN0aXZlVGFiXCIgOmxvYWRlcj1cImxvYWRlclwiIDpjaGVja0luc2lnaHRzTGVuZ3RoPVwiY2hlY2tJbnNpZ2h0c0xlbmd0aFwiIDpjb21wb25lbnRGb3I9XCJjb21wb25lbnROYW1lXCIgOmNvbXBvbmVudE5hbWU9XCJjb21wb25lbnROYW1lXCIgOnVzZXJzPVwidXNlcnNcIiBAc29ydC1pbnNpZ2h0PVwic29ydEluc2lnaHRcIiBAdmlldy1pbnNpZ2h0PVwidmlld0luc2lnaHRcIiBAZWRpdC1pbnNpZ2h0PVwiZWRpdEluc2lnaHRcIiBAZGVsZXRlLWluc2lnaHQtd2FybmluZz1cImRlbGV0ZUluc2lnaHRXYXJuaW5nXCIgQG9wZW4tcHVibGlzaC1wb3B1cD1cIm9wZW5QdWJsaXNoUG9wVXBcIiBAYWRkLWluc2lnaHQ9XCJjcmVhdGVOZXdcIiBAbG9hZC1kYXRhPVwibG9hZERhdGFcIiBAY2hhbmdlLW93bmVyPVwiY2hhbmdlT3duZXJcIiBAY2hhbmdlLWNvLW93bmVyPVwiY2hhbmdlQ29Pd25lclwiIEBnZXQtaW5pZ2h0LWZhY3RzPVwiZ2V0SW5zaWdodEZhY3RzXCIgQGZhY3QtYWN0aW9ucz1cImZhY3RBY3Rpb25zXCI+PC9pbnNpZ2h0LWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG4gICAgPENoYW5nZVVzZXIgOm93bmVyQ2hhbmdlRm9yPVwib3duZXJDaGFuZ2VGb3JcIiA6YXBwU2Vzcz1cImFwcFNlc3NcIiA6dXNlcnM9XCJ1c2Vyc1wiIDptb2RPd25lcj1cIm1vZE93bmVyXCIgOm1vZEluZGV4PVwibW9kSW5kZXhcIiA6Y29Pd25lcnNQcm9wPVwiY29Pd25lcnNcIiA6aW5pdGlhbGlzZT1cInNob3dPd25lckNoYW5nZVBvcFVwXCIgQGNoYW5nZS1vd25lcj1cImNoYW5nZU93bmVyXCIgQGNoYW5nZS1jby1vd25lcj1cImNoYW5nZUNvT3duZXJcIj48L0NoYW5nZVVzZXI+XG5cbiAgICA8IS0tU3RhcnQgUHJzZW50IEluc2lnaHQgTW9kYWwtLT5cbiAgICA8Vmlld0luc2lnaHQgdi1pZj1cImluc2lnaHQgJiYgYXBwU2Vzc1wiIDppbnNpZ2h0UHVibGljVHlwZT1cImluc2lnaHRQdWJsaWNUeXBlXCIgOmluc2lnaHRUaXRsZT1cImluc2lnaHRUaXRsZVwiIEBlZGl0LWluc2lnaHQ9XCJlZGl0SW5zaWdodFwiIDp0ZW1waW5zaWdodD1cInRlbXBpbnNpZ2h0XCIgOmluc2lnaHREYXRhPVwiaW5zaWdodFwiIDpzZWxlY3RlZEluc2lnaHRJbmRleC5zeW5jPVwic2VsZWN0ZWRJbnNpZ2h0SW5kZXhcIiA6Y3VzdG9tX2ZpZWxkcz1cImN1c3RvbV9maWVsZHNcIiA6ZmFjdHM9XCJmYWN0c1wiPjwvVmlld0luc2lnaHQ+XG4gICAgPCEtLUVuZCBQcnNlbnQgSW5zaWdodCBNb2RhbC0tPlxuXG4gICAgPENyZWF0ZU1vZGFsIHYtaWY9XCJhcHBTZXNzXCIgOmFwcFNlc3M9XCJhcHBTZXNzXCIgOnRpdGxlcz1cImluc2lnaHRzVGl0bGVcIiAgOnRpdGxlPVwiaW5zaWdodFRpdGxlXCIgQG9wZW4tY3JlYXRlLW1vZGFsPVwiYWRkSW5zaWdodFwiIEBvcGVuLWluc2lnaHRzLWFpLXByZXZpZXc9XCJvcGVuSW5zaWdodHNQcmV2aWV3XCI+PC9DcmVhdGVNb2RhbD5cbiAgICA8IS0tIFRvZG8gLS0tLS0gTXkgYW5kIE91ciBtYXBzIGFyZSBmb3IgLS0gTG9jYXRpb25zIC0tPlxuICAgIDxBZGRJbnNpZ2h0IDpjb21wb25lbnRGb3I9XCInaW5zaWdodHMnXCIgdi1pZj1cImluc2lnaHQgJiYgYXBwU2Vzc1wiIDppbnNpZ2h0UHVibGljVHlwZT1cImluc2lnaHRQdWJsaWNUeXBlXCIgOmluc2lnaHRUaXRsZT1cImluc2lnaHRUaXRsZVwiIDp0ZW1waW5zaWdodD1cInRlbXBpbnNpZ2h0XCIgOmluc2lnaHRzLnN5bmM9XCJpbnNpZ2h0c1wiIDppbnNpZ2h0RGF0YT1cImluc2lnaHRcIiA6ZmFjdHMuc3luYz1cImZhY3RzXCIgOnNlbGVjdGVkSW5zaWdodEluZGV4PVwic2VsZWN0ZWRJbnNpZ2h0SW5kZXhcIiA6bXlNYXBzPVwibXlNYXBzXCIgOm91ck1hcHM9XCJvdXJNYXBzXCIgOmFkbWluX2JyYW5kcz1cImJyYW5kRmlsdGVyc1wiIDpwcm9kdWN0cz1cInByb2R1Y3RGaWx0ZXJzXCIgOmNvdW50cmllcz1cImNvdW50cnlGaWx0ZXJzXCIgOmNfc2VnbWVudHM9XCJjc0ZpbHRlcnNcIiA6Y3VzdG9tX2ZpZWxkPVwiY3VzdG9tX2ZpZWxkc1wiIDptZWRpYURhdGE9XCJtZWRpYVwiIDpkb2N1bWVudHM9XCJkb2N1bWVudHNcIj48L0FkZEluc2lnaHQ+XG4gICAgPCEtLUVuZCBkZCBJbnNpZ2h0IE1vZGFsLS0+XG5cbiAgICA8ZGVsZXRlLXdhcm5pbmctaW5zaWdodCB2LWlmPVwiYXBwU2Vzc1wiIDppbnNpZ2h0VGl0bGU9XCJpbnNpZ2h0VGl0bGVcIiA6YXBwU2Vzcz1cImFwcFNlc3NcIiBAZGVsZXRlLXdhcm5pbmc9XCJkZWxldGVJbnNpZ2h0XCIgQGNhbmNlbC1kZWxldGU9XCJjYW5jZWxEZWxldGVcIj48L2RlbGV0ZS13YXJuaW5nLWluc2lnaHQ+XG4gICAgPHB1Ymxpc2gtaW5zaWdodCB2LWlmPVwiYXBwU2Vzc1wiIDppbnNpZ2h0UHVibGljVHlwZT1cImluc2lnaHRQdWJsaWNUeXBlXCIgOmluc2lnaHRUaXRsZT1cImluc2lnaHRUaXRsZVwiIDppbnNpZ2h0c1RpdGxlPVwiaW5zaWdodHNUaXRsZVwiIDphcHBTZXNzPVwiYXBwU2Vzc1wiIDppbnNpZ2h0VHlwZT1cImluc2lnaHRUeXBlXCIgQG1ha2UtaW5zaWdodC1wdWJsaWM9XCJtYWtlSW5zaWdodFB1YmxpY1wiPjwvcHVibGlzaC1pbnNpZ2h0PlxuICAgIDxkZWxldGUtd2FybmluZy1mYWN0IHYtaWY9XCJhcHBTZXNzXCIgOmZhY3RUaXRsZT1cImZhY3RUaXRsZVwiICA6aW5zaWdodFRpdGxlPVwiaW5zaWdodFRpdGxlXCIgQGRlbGV0ZS1mYWN0PVwiZGVsZXRlRmFjdFwiIEBjYW5jZWwtZGVsZXRlPVwiY2FuY2VsRmFjdERlbGV0ZVwiPjwvZGVsZXRlLXdhcm5pbmctZmFjdD5cbiAgICBcbiAgICBcblxuICAgIDxFeHBvcnRXYXJuaW5nIHYtaWY9XCJhcHBTZXNzXCIgOnRpdGxlPVwiaW5zaWdodFRpdGxlXCIgOnRpdGxlcz1cImluc2lnaHRzVGl0bGVcIiA6YXBwU2Vzcz1cImFwcFNlc3NcIiBAZXhwb3J0LWl0ZW1zPVwiZXhwb3J0SW5zaWdodHNcIj48L0V4cG9ydFdhcm5pbmc+XG4gICAgPEltcG9ydC1tb2RhbCB2LWlmPVwiYXBwU2Vzc1wiIDp0aXRsZT1cImluc2lnaHRUaXRsZVwiIDp0aXRsZXM9XCJpbnNpZ2h0c1RpdGxlXCIgOmFwcFNlc3M9XCJhcHBTZXNzXCIgQGltcG9ydC1tb2R1bGU9XCJpbXBvcnRNb2R1bGVcIiBAZXhwb3J0LXRlbXBsYXRlPVwiZXhwb3J0VGVtcGxhdGVcIj48L0ltcG9ydC1tb2RhbD5cbiAgICA8RmFpbGVkLUltcG9ydHMgdi1pZj1cImFwcFNlc3NcIiA6dGl0bGU9XCJpbnNpZ2h0VGl0bGVcIiA6dGl0bGVzPVwiaW5zaWdodHNUaXRsZVwiIDphcHBTZXNzPVwiYXBwU2Vzc1wiIDppdGVtcz1cImZhaWxlZEluc2lnaHRzXCI+PC9GYWlsZWQtSW1wb3J0cz5cbiAgICA8QWlJbnNpZ2h0c1ByZXZpZXcgdi1pZj1cImFwcFNlc3NcIiByZWY9XCJhaUluc2lnaHRzUHJldmlld1wiIDphcHBTZXNzPVwiYXBwU2Vzc1wiIDp0aXRsZT1cImluc2lnaHRUaXRsZVwiIDp0aXRsZXM9XCJpbnNpZ2h0c1RpdGxlXCIgOmRpbWVuc2lvbnM9XCJkaW1lbnNpb25zQ29uZmlnXCIgQGFkZC1haS1pbnNpZ2h0cz1cImFkZEFpSW5zaWdodHNcIj48L0FpSW5zaWdodHNQcmV2aWV3PlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuPHNjcmlwdD5cbmltcG9ydCB7bWFwQWN0aW9uc30gZnJvbSAndnVleCc7XG4vLyBpbXBvcnQgSW5zaWdodHNTaWRlYmFyTWVudSBmcm9tICcuLi9jb21tb24vaGVhZGVyL0luc2lnaHRzU2lkZWJhck1lbnUudnVlJztcbmltcG9ydCBMZWZ0U2lkZU1lbnVGaWx0ZXIgZnJvbSAnLi4vY29tbW9uL2hlYWRlci9MZWZ0U2lkZU1lbnVGaWx0ZXIudnVlJztcbmltcG9ydCBTZXR0aW5nc0hlYWRlciBmcm9tICcuLi9jb21tb24vaGVhZGVyL1NldHRpbmdzSGVhZGVyLnZ1ZSc7XG5pbXBvcnQgQWRkSW5zaWdodCBmcm9tICcuLi9jb21tb24vQWRkSW5zaWdodC52dWUnO1xuXG5pbXBvcnQgVmlld0luc2lnaHQgZnJvbSAnLi4vY29tbW9uL2luc2lnaHRzL1ZpZXdJbnNpZ2h0LnZ1ZSc7XG5pbXBvcnQgUHVibGlzaEluc2lnaHQgZnJvbSAnLi4vY29tbW9uL2luc2lnaHRzL1B1Ymxpc2hJbnNpZ2h0LnZ1ZSc7XG5pbXBvcnQgRGVsZXRlV2FybmluZ0luc2lnaHQgZnJvbSAnLi4vY29tbW9uL2luc2lnaHRzL0RlbGV0ZVdhcm5pbmdJbnNpZ2h0LnZ1ZSc7XG5pbXBvcnQgRGVsZXRlV2FybmluZ0ZhY3QgZnJvbSAnLi4vY29tbW9uL2luc2lnaHRzL0RlbGV0ZVdhcm5pbmdGYWN0LnZ1ZSc7XG5pbXBvcnQgSW5zaWdodENvbnRlbnQgZnJvbSAnLi4vY29tbW9uL2luc2lnaHRzL0luc2lnaHRDb250ZW50LnZ1ZSc7XG5pbXBvcnQgQ2hhbmdlVXNlciBmcm9tICcuLi9jb21tb24vbW9kYWxzL0NoYW5nZVVzZXIudnVlJztcblxuLy8gaW1wb3J0IFZpZXdJbnNpZ2h0IGZyb20gXCIuLi9jb21tb24vVmlld0luc2lnaHQudnVlXCI7XG4vLyBpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG4vLyBpbXBvcnQgZHJhZ2dhYmxlIGZyb20gJ3Z1ZWRyYWdnYWJsZSc7XG4vLyBpbXBvcnQgdkNsaWNrT3V0c2lkZSBmcm9tICd2LWNsaWNrLW91dHNpZGUnO1xuaW1wb3J0IEZpbHRlck1lbnUgZnJvbSAnLi4vY29tbW9uL0ZpbHRlck1lbnUudnVlJztcblxuaW1wb3J0IEltcG9ydE1vZGFsIGZyb20gJy4uL2NvbW1vbi9leHBvcnQvSW1wb3J0TW9kYWwudnVlJztcbmltcG9ydCBGYWlsZWRJbXBvcnRzIGZyb20gJy4uL2NvbW1vbi9leHBvcnQvRmFpbGVkSW1wb3J0cy52dWUnO1xuaW1wb3J0IEFpSW5zaWdodHNQcmV2aWV3IGZyb20gJy4uL2NvbW1vbi9pbnNpZ2h0cy9BaUluc2lnaHRzUHJldmlldy52dWUnO1xuaW1wb3J0IEV4cG9ydFdhcm5pbmcgZnJvbSAnLi4vY29tbW9uL2V4cG9ydC9FeHBvcnRXYXJuaW5nLnZ1ZSc7XG5cbmltcG9ydCB7dmlld3N9IGZyb20gJy4uLy4uL2Fzc2V0cy9qcy9taXhpbnMvdmlld3MuanMnO1xuaW1wb3J0IGluc2lnaHRzTWl4aW4gZnJvbSAnLi4vLi4vYXNzZXRzL2pzL21peGlucy9pbnNpZ2h0c01peGluJztcbmltcG9ydCB7ZXZlbnRCdXN9IGZyb20gJy4uLy4uL2Fzc2V0cy9qcy9jb21tb24vZXZlbnRCdXMuanMnO1xuaW1wb3J0IENyZWF0ZU1vZGFsIGZyb20gJy4uL2NvbW1vbi9leHBvcnQvQ3JlYXRlTW9kYWwudnVlJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnaW5zaWdodHMtbWFpbicsXG4gIGNvbXBvbmVudHM6IHtcbiAgICAvLyBkcmFnZ2FibGUsXG4gICAgTGVmdFNpZGVNZW51RmlsdGVyLFxuICAgIFNldHRpbmdzSGVhZGVyLFxuICAgIEFkZEluc2lnaHQsXG4gICAgRmlsdGVyTWVudSxcbiAgICBWaWV3SW5zaWdodCxcbiAgICBQdWJsaXNoSW5zaWdodCxcbiAgICBEZWxldGVXYXJuaW5nSW5zaWdodCxcbiAgICBEZWxldGVXYXJuaW5nRmFjdCxcbiAgICBJbnNpZ2h0Q29udGVudCxcbiAgICBDaGFuZ2VVc2VyLFxuICAgIEltcG9ydE1vZGFsLFxuICAgIEZhaWxlZEltcG9ydHMsXG4gICAgQWlJbnNpZ2h0c1ByZXZpZXcsXG4gICAgRXhwb3J0V2FybmluZyxcbiAgICBDcmVhdGVNb2RhbFxuICB9LFxuICBtaXhpbnM6IFt2aWV3cywgaW5zaWdodHNNaXhpbl0sXG4gIGRpcmVjdGl2ZXM6IHtcbiAgICAvLyBjbGlja091dHNpZGU6IHZDbGlja091dHNpZGUuZGlyZWN0aXZlLFxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBtZWRpYTogW10sXG4gICAgICBkb2N1bWVudHM6IFtdLFxuICAgICAgdXNlcnM6IFtdLFxuICAgICAgZG9jdW1lbnRzOiBbXSxcbiAgICAgIGN1c3RvbV9maWVsZHM6IFtbXSwgW10sIFtdLCBbXSwgW10sIFtdXSxcbiAgICAgIGNvbXBvbmVudE5hbWU6ICdpbnNpZ2h0cycsXG4gICAgICAvLyBjaGFuZ2UgT3duZXIgLS0gaW5zaWdodHMgLCBtb3RzIGFuZCBpbXByb3ZlbWVudHNcbiAgICAgIG1vZE93bmVyOiBudWxsLFxuICAgICAgY29Pd25lcnM6IFtdLFxuICAgICAgbW9kSW5kZXg6IG51bGwsXG4gICAgICBzaG93T3duZXJDaGFuZ2VQb3BVcDogZmFsc2UsXG4gICAgICBvd25lckNoYW5nZUZvcjogJ2luc2lnaHRzJyxcbiAgICAgIHRvZ2dsZUNsYXNzOiAnJyxcbiAgICB9O1xuICB9LFxuICB3YXRjaDoge30sXG4gIG1ldGhvZHM6IHtcbiAgICBcbiAgICBcbiAgICBnZXRGaWx0ZXJzKCkge1xuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgdGhpcy4kaHR0cFxuICAgICAgICAuZ2V0KCcvYXBpL2dldEZpbHRlcnMvaW5zaWdodCcpXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICBjb25zdCByZXNwID0gcmVzcG9uc2UuZGF0YS5kYXRhLmZpbHRlcnM7XG5cbiAgICAgICAgICAgIHNlbGYuYnJhbmRGaWx0ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXNwLmJyYW5kKSk7XG4gICAgICAgICAgICBzZWxmLnByb2R1Y3RGaWx0ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXNwLnByb2R1Y3QpKTtcbiAgICAgICAgICAgIHNlbGYuY291bnRyeUZpbHRlcnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlc3AuY291bnRyaWVzKSk7XG4gICAgICAgICAgICBzZWxmLmNzRmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcC5jcykpO1xuXG4gICAgICAgICAgICBzZWxmLmRpbWVuc2lvbnNDb25maWcuYnJhbmRzID0gc2VsZi5icmFuZEZpbHRlcnMubWFwKGJyYW5kID0+IGJyYW5kLmJfbmFtZSk7XG4gICAgICAgICAgICBzZWxmLmRpbWVuc2lvbnNDb25maWcucHJvZHVjdHMgPSBzZWxmLnByb2R1Y3RGaWx0ZXJzLm1hcChwcm9kdWN0ID0+IHByb2R1Y3QucF9uYW1lKTtcbiAgICAgICAgICAgIHNlbGYuZGltZW5zaW9uc0NvbmZpZy5jb3VudHJpZXMgPSBzZWxmLmNvdW50cnlGaWx0ZXJzLm1hcChjb3VudHJ5ID0+IGNvdW50cnkubmFtZSk7XG4gICAgICAgICAgICBzZWxmLmRpbWVuc2lvbnNDb25maWcuY3MgPSBzZWxmLmNzRmlsdGVycy5tYXAoY3MgPT4gY3MuY3NfbmFtZSk7XG4gICAgICAgICAgICBzZWxmLmRpbWVuc2lvbnNDb25maWcuY29uZmlncyA9IHNlbGYuYXBwU2Vzcy5pbnNpZ2h0ID8gc2VsZi5hcHBTZXNzLmluc2lnaHQuY29uZmlndXJhdGlvbnMuZGltZW5zaW9ucyA6IFtdO1xuICAgICAgICAgICAvLyBpZihzZWxmLmNoZWNrQWNjZXNzKHNlbGYuYXBwU2Vzcy5jb25maWd1cmF0aW9ucywgJ2N1c3RvbUxpc3RzJykpe1xuICAgICAgICAgICAgc2VsZi5jdXN0b21fZmllbGRzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXNwLmN1c3RvbUZpZWxkcykpO1xuICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICBzZWxmLm15TWFwRmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcC5teW1hcHMpKTtcbiAgICAgICAgICAgIHNlbGYub3VyTWFwRmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcC5vdXJtYXBzKSk7XG4gICAgICAgICAgICBzZWxmLm15TWFwcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcC5teW1hcHMpKTtcbiAgICAgICAgICAgIHNlbGYub3VyTWFwcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcC5vdXJtYXBzKSk7XG4gICAgICAgICAgICBzZWxmLnVzZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXNwLnVzZXJzKSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCfwn5qAIH4gZmlsZTogSW5zaWdodC52dWUgfiBsaW5lIDEwMjggfiBnZXRGaWx0ZXJzIH4gZXJyb3InLCBlcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVG8gZmV0Y2ggbWVkaWFcbiAgICAgKi9cbiAgICBnZXRNZWRpYSgpIHtcbiAgICAgIC8vIFRoZSB2aWV3IG1vZGVsLlxuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgdGhpcy4kaHR0cFxuICAgICAgICAuZ2V0KCcvc2VydmljZS9pbWFnZWxhenknKVxuICAgICAgICAudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgICAgICBzZWxmLm1lZGlhID0gcmVzcG9uc2UuZGF0YS5kYXRhLm1lZGlhO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHt9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIERvY3VtZW50c1xuICAgICAqL1xuXG4gICAgZ2V0QWxsRG9jdW1lbnRzKCkge1xuICAgICAgLy8gVGhlIHZpZXcgbW9kZWwuXG4gICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICAvLyBpZighc2VsZi5qb3VybmV5bWFwLmpfaWQpe1xuICAgICAgLy8gICAgIHJldHVybjtcbiAgICAgIC8vIH1cbiAgICAgIHRoaXMuJGh0dHBcbiAgICAgICAgLnBvc3QoJy9zZXJ2aWNlL2FsbE1hcERvY3VtZW50cycsIHtcbiAgICAgICAgICAvL21hcGlkOiA0NjdcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDIwMCkge1xuICAgICAgICAgICAgc2VsZi5kb2N1bWVudHMgPSByZXNwb25zZS5kYXRhLmRhdGE7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnJvcikge30pO1xuICAgIH0sXG4gICAgZWRpdEluc2lnaHQoaW5kZXgsIHBhZ2VGcm9tLCBmYWN0SW5kZXggPSAtMSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEluc2lnaHRJbmRleCA9IGluZGV4O1xuXG4gICAgICBpZiAocGFnZUZyb20gIT0gJ3ZpZXcnKSB7XG4gICAgICAgIHRoaXMuaW5zaWdodCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5pbnNpZ2h0c1tpbmRleF0pKTtcbiAgICAgICAgaWYoZmFjdEluZGV4ID09IC0xKXtcbiAgICAgICAgICB0aGlzLmdldFNpbmdsZUluc2lnaHQodGhpcy5pbnNpZ2h0Lmluc2lnaHRfaWQpO1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICB0aGlzLmZhY3RzID0gdGhpcy5pbnNpZ2h0c1tpbmRleF0uZmFjdHNMaXN0O1xuICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgIGV2ZW50QnVzLiRlbWl0KCdlZGl0LWZhY3QnLCB7aW5kZXg6IGZhY3RJbmRleH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgfVxuICAgICAgZXZlbnRCdXMuJGVtaXQodGhpcy5jb21wb25lbnRGb3IgKyAnLWluc2lnaHQtbW9kYWwtc3RhdHVzJywgdHJ1ZSk7XG4gICAgICBpZihmYWN0SW5kZXggPT0gLTEpe1xuICAgICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgJCgnI2FkZEluc2lnaHRNb2RhbCcpLm1vZGFsKCdzaG93Jyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgXG4gICAgfSxcbiAgICB2aWV3SW5zaWdodChpbmRleCwgZmFjdEluZGV4KSB7XG4gICAgICAvLyB0b2RvIGNoYW5nZSB0aGlzIGluIGFsbCBwbGFjZXNcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbnNpZ2h0SW5kZXggPSBpbmRleDtcbiAgICAgIHRoaXMuaW5zaWdodCA9IHRoaXMuaW5zaWdodHNbaW5kZXhdO1xuICAgICAgaWYoZmFjdEluZGV4ID4gLTEpe1xuICAgICAgICB0aGlzLmZhY3RzID0gdGhpcy5pbnNpZ2h0c1tpbmRleF0uZmFjdHNMaXN0O1xuICAgICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgZXZlbnRCdXMuJGVtaXQoJ3ZpZXctZmFjdCcsIHtpbmRleDogZmFjdEluZGV4LCBmYWN0IDogdGhpcy5mYWN0c1tmYWN0SW5kZXhdfSk7XG4gICAgICAgIH0pO1xuICAgICAgfWVsc2V7XG4gICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAkKCcjdmlld0luc2lnaHRNb2RhbCcpLm1vZGFsKCdzaG93Jyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdldFNpbmdsZUluc2lnaHQodGhpcy5pbnNpZ2h0Lmluc2lnaHRfaWQpO1xuICAgICAgfVxuICAgICAgXG4gICAgfSxcblxuICAgIGNoZWNrVG91Y2hwb2ludHMoc3RhdHVzLCB0b3VjaHBvaW50cywgZXBpZCkge1xuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgaWYgKCFzdGF0dXMpIHtcbiAgICAgICAgaWYgKCF0b3VjaHBvaW50cy5zb21lKHRwID0+IHNlbGYuZmlsdGVyLmZpbHRlck9iai50b3VjaHBvaW50cy5pbmRleE9mKHRwLnRwX2lkKSAhPT0gLTEpKSB7XG4gICAgICAgICAgbGV0IGluZGV4ID0gc2VsZi5maWx0ZXIuZmlsdGVyT2JqLmVwaXNvZGVzLmluZGV4T2YoZXBpZCk7XG4gICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgc2VsZi5maWx0ZXIuZmlsdGVyT2JqLmVwaXNvZGVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIGNoZWNrQWxsRXBpc29kZXNUb3VjaHBvaW50cyhldmVudCwgZXBpc29kZXMpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgbGV0IHRwcyA9IFtdO1xuICAgICAgbGV0IGVwcyA9IFtdO1xuXG4gICAgICBlcGlzb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGVwaXNvZGUpIHtcbiAgICAgICAgZXBzLnB1c2goZXBpc29kZS5lX2lkKTtcbiAgICAgICAgZXBpc29kZS50b3VjaHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKHRwKSB7XG4gICAgICAgICAgdHBzLnB1c2godHAudHBfaWQpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcbiAgICAgICAgW10ucHVzaC5hcHBseShzZWxmLmZpbHRlci5maWx0ZXJPYmoudG91Y2hwb2ludHMsIHRwcyk7XG4gICAgICAgIFtdLnB1c2guYXBwbHkoc2VsZi5maWx0ZXIuZmlsdGVyT2JqLmVwaXNvZGVzLCBlcHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZi5maWx0ZXIuZmlsdGVyT2JqLnRvdWNocG9pbnRzID0gc2VsZi5maWx0ZXIuZmlsdGVyT2JqLnRvdWNocG9pbnRzLmZpbHRlcihmdW5jdGlvbihlbCkge1xuICAgICAgICAgIHJldHVybiB0cHMuaW5kZXhPZihlbCkgPCAwO1xuICAgICAgICB9KTtcblxuICAgICAgICBzZWxmLmZpbHRlci5maWx0ZXJPYmouZXBpc29kZXMgPSBzZWxmLmZpbHRlci5maWx0ZXJPYmouZXBpc29kZXMuZmlsdGVyKGZ1bmN0aW9uKGVsKSB7XG4gICAgICAgICAgcmV0dXJuIGVwcy5pbmRleE9mKGVsKSA8IDA7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBjaGVja0FsbFRvdWNocG9pbnRzKGV2ZW50LCB0b3VjaHBvaW50cywgZXBpc29kZXMsIG1hcGlkKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgIGxldCB0cHMgPSBbXTtcbiAgICAgIHRvdWNocG9pbnRzLmZvckVhY2goZnVuY3Rpb24odHApIHtcbiAgICAgICAgdHBzLnB1c2godHAudHBfaWQpO1xuICAgICAgfSk7XG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcbiAgICAgICAgW10ucHVzaC5hcHBseShzZWxmLmZpbHRlci5maWx0ZXJPYmoudG91Y2hwb2ludHMsIHRwcyk7XG4gICAgICAgIC8vIHNlbGYuZmlsdGVyT2JqLnRvdWNocG9pbnRzLnB1c2guYXBwbHkoLi4uW3Rwc10pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxmLmZpbHRlci5maWx0ZXJPYmoudG91Y2hwb2ludHMgPSBzZWxmLmZpbHRlci5maWx0ZXJPYmoudG91Y2hwb2ludHMuZmlsdGVyKGZ1bmN0aW9uKGVsKSB7XG4gICAgICAgICAgcmV0dXJuIHRwcy5pbmRleE9mKGVsKSA8IDA7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWVwaXNvZGVzLnNvbWUoZXAgPT4gc2VsZi5maWx0ZXIuZmlsdGVyT2JqLmVwaXNvZGVzLmluZGV4T2YoZXAuZV9pZCkgIT09IC0xKSkge1xuICAgICAgICAgIGxldCBpbmRleCA9IHNlbGYuZmlsdGVyLmZpbHRlck9iai5tYXBzLmluZGV4T2YobWFwaWQpO1xuICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHNlbGYuZmlsdGVyLmZpbHRlck9iai5tYXBzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFsbEVwaXNvZGVzU2VsZWN0ZWQoZXBpc29kZXMpIHtcbiAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgIGxldCBzdGF0dXMgPSAxO1xuICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgIGVwaXNvZGVzLmZvckVhY2goZXAgPT4ge1xuICAgICAgICBpZiAoc2VsZi5maWx0ZXIuZmlsdGVyT2JqLmVwaXNvZGVzLmluZGV4T2YoZXAuZV9pZCkgIT09IC0xKSB7XG4gICAgICAgICAgY291bnQrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoY291bnQgPT0gZXBpc29kZXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAzO1xuICAgICAgfSBlbHNlIGlmIChjb3VudCA9PSAwKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDI7XG4gICAgICB9XG4gICAgICAvLyByZXR1cm4gZXBpc29kZXMuZXZlcnkoKGVwKSA9PiBzZWxmLmZpbHRlck9iai5lcGlzb2Rlcy5pbmRleE9mKGVwLmVfaWQpICE9PSAtMSApO1xuICAgIH0sXG4gICAgYWxsVG91Y2hwb2ludHNTZWxlY3RlZCh0b3VjaHBvaW50cykge1xuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgIHRvdWNocG9pbnRzLmZvckVhY2godHAgPT4ge1xuICAgICAgICBpZiAoc2VsZi5maWx0ZXIuZmlsdGVyT2JqLnRvdWNocG9pbnRzLmluZGV4T2YodHAudHBfaWQpICE9PSAtMSkge1xuICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKGNvdW50ID09IHRvdWNocG9pbnRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gMztcbiAgICAgIH0gZWxzZSBpZiAoY291bnQgPT0gMCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAyO1xuICAgICAgfVxuICAgICAgLy8gcmV0dXJuIHRvdWNocG9pbnRzLmV2ZXJ5KCh0cCkgPT4gc2VsZi5maWx0ZXJPYmoudG91Y2hwb2ludHMuaW5kZXhPZih0cC50cF9pZCkgIT09IC0xICk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEFycmF5IGRpZmZlcmVuY2VcbiAgICAgKiByZW1vdmUgdW5zZWxlY3RlZCBib3ggaW5zaWdodHNcbiAgICAgKi9cbiAgICBkaWZmZXJlbmNlMihhLCBiKSB7XG4gICAgICByZXR1cm4gYS5maWx0ZXIoXG4gICAgICAgIGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4gIXRoaXMuZ2V0KHYpIHx8ICF0aGlzLnNldCh2LCB0aGlzLmdldCh2KSAtIDEpO1xuICAgICAgICB9LFxuICAgICAgICBiLnJlZHVjZSgoYWNjLCB2KSA9PiBhY2Muc2V0KHYsIChhY2MuZ2V0KHYpIHx8IDApICsgMSksIG5ldyBNYXAoKSlcbiAgICAgICk7XG4gICAgfSxcblxuICAgIGNsb3NlUG9wVXAoZXZlbnQpIHtcbiAgICAgIHRoaXMuZmlsdGVyU2hvdyA9IGZhbHNlO1xuICAgIH0sXG5cbiAgICByZXNldERhdGEoKSB7XG4gICAgICB0aGlzLmluc2lnaHQgPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZEluc2lnaHRJbmRleCA9IC0xO1xuICAgICAgdGhpcy5mYWN0cyA9IFtdO1xuICAgIH0sXG4gICAgcHJlcGFyZUNoYW5nZVVzZXJQb3BVcChpbmRleCwgbW9kLCBvd25lckNoYW5nZUZvcikge1xuICAgICAgdGhpcy5tb2RPd25lciA9IG1vZC5vd25lci51c2VyaWQ7XG4gICAgICB0aGlzLm1vZEluZGV4ID0gaW5kZXg7XG4gICAgICB0aGlzLmNvT3duZXJzID0gbW9kLmNvT3duZXJzLm1hcChvd25lciA9PiBvd25lci51c2VyaWQpO1xuICAgICAgdGhpcy5zaG93T3duZXJDaGFuZ2VQb3BVcCA9IHRydWU7XG4gICAgICB0aGlzLm93bmVyQ2hhbmdlRm9yID0gb3duZXJDaGFuZ2VGb3I7XG4gICAgfSxcbiAgfSxcbiAgYmVmb3JlTW91bnQoKSB7fSxcblxuICBhc3luYyBtb3VudGVkKCkge1xuICAgIFxuICAgIGlmICh0aGlzLmFwcFNlc3Muc3lzdGVtYWRtaW4pIHtcbiAgICAgIHRoaXMuJHJvdXRlci5wdXNoKCcvdXNlcm1hbmFnZW1lbnQvdXNlcnMnKTtcbiAgICB9XG4gICAgdGhpcy5pbnNpZ2h0VGl0bGUgPSB0aGlzLmdldEluc2lnaHRUaXRsZSgnSW5zaWdodCcsICdpbnNpZ2h0Jyk7XG4gICAgdGhpcy5pbnNpZ2h0c1RpdGxlID0gdGhpcy5nZXRJbnNpZ2h0VGl0bGUoJ0luc2lnaHRzJywgJ2luc2lnaHRzJyk7XG4gICAgdGhpcy5nZXRNZWRpYSgpO1xuICAgIHRoaXMuZ2V0QWxsRG9jdW1lbnRzKCk7XG4gICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICQoJyNhZGRJbnNpZ2h0TW9kYWwnKS5vZmYoJ2hpZGUuYnMubW9kYWwnKS5vbignaGlkZS5icy5tb2RhbCcsIGZ1bmN0aW9uKGUpIHtcbiAgICAgIHNlbGYucmVzZXREYXRhKCk7XG4gICAgfSk7XG4gICAgJCgnI3ZpZXdJbnNpZ2h0TW9kYWwnKS5vZmYoJ2hpZGUuYnMubW9kYWwnKS5vbignaGlkZS5icy5tb2RhbCcsIGZ1bmN0aW9uKGUpIHtcbiAgICAgIHNlbGYucmVzZXREYXRhKCk7XG4gICAgfSk7XG5cbiAgICAkKCcjZGVsZXRlSW5zaWdodE1vZGFsJykub2ZmKCdoaWRlLmJzLm1vZGFsJykub24oJ2hpZGUuYnMubW9kYWwnLCBmdW5jdGlvbihlKSB7XG4gICAgICBzZWxmLnNlbGVjdGVkSW5zaWdodEluZGV4ID0gLTE7XG4gICAgfSk7XG4gICAgJCgnI3B1Ymxpc2hJbnNpZ2h0TW9kYWwnKS5vbignaGlkZS5icy5tb2RhbCcsIGZ1bmN0aW9uKGUpIHtcbiAgICAgIHNlbGYuc2VsZWN0ZWRJbnNpZ2h0SW5kZXggPSAtMTtcbiAgICAgIHNlbGYucHVibGljVmFsID0gbnVsbDtcbiAgICAgIHNlbGYuaW5zaWdodFR5cGUgPSAnJztcbiAgICB9KTtcbiAgICAkKCcjY2hhbmdlVXNlcicpXG4gICAgICAub2ZmKCdoaWRlLmJzLm1vZGFsJylcbiAgICAgIC5vbignaGlkZS5icy5tb2RhbCcsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgc2VsZi5zaG93T3duZXJDaGFuZ2VQb3BVcCA9IGZhbHNlO1xuICAgICAgICBzZWxmLm1vZE93bmVyID0gbnVsbDtcbiAgICAgICAgc2VsZi5tb2RJbmRleCA9IG51bGw7XG4gICAgICAgIHNlbGYuY29Pd25lcnMgPSBbXTtcbiAgICAgICAgc2VsZi5vd25lckNoYW5nZUZvciA9IG51bGw7XG4gICAgICB9KTtcbiAgICBldmVudEJ1cy4kb2ZmKCdpbnNpZ2h0cy1vd25lci1tb2RhbC1wcm9wcycpLiRvbignaW5zaWdodHMtb3duZXItbW9kYWwtcHJvcHMnLCBkYXRhID0+IHtcbiAgICAgIHNlbGYucHJlcGFyZUNoYW5nZVVzZXJQb3BVcChkYXRhLmluZGV4LCBkYXRhLm1vZCwgZGF0YS5vd25lckNoYW5nZUZvcik7XG4gICAgfSk7XG4gICAgZXZlbnRCdXMuJG9mZignaW5zaWdodHMtY2hhbmdlLW93bmVyJykuJG9uKCdpbnNpZ2h0cy1jaGFuZ2Utb3duZXInLCBkYXRhID0+IHtcbiAgICAgIHNlbGYuY2hhbmdlT3duZXIoZGF0YS51c2VyX2lkLCBkYXRhLm1vZE93bmVyLCBkYXRhLm1vZEluZGV4KTtcbiAgICB9KTtcbiAgICBldmVudEJ1cy4kb2ZmKCdpbnNpZ2h0cy1jaGFuZ2UtY28tb3duZXInKS4kb24oJ2luc2lnaHRzLWNoYW5nZS1jby1vd25lcicsIGRhdGEgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ/CfmoAgfiBmaWxlOiBJbnNpZ2h0LnZ1ZSB+IGxpbmUgMzM5IH4gZXZlbnRCdXMuJG9mZiB+IGRhdGEnLCBkYXRhKTtcbiAgICAgIHNlbGYuY2hhbmdlQ29Pd25lcihkYXRhLm1vZE93bmVyLCBkYXRhLm1vZEluZGV4LCBkYXRhLmNvT3duZXJzKTtcbiAgICB9KTtcbiAgfSxcbiAgdXBkYXRlZCgpIHt9LFxufTtcbjwvc2NyaXB0PlxuPHN0eWxlIHNjb3BlZD5cbi5hY2NvcmRpYW5DaGVjayBpbnB1dCB7XG4gIHBhZGRpbmc6IDA7XG4gIGhlaWdodDogaW5pdGlhbDtcbiAgd2lkdGg6IGluaXRpYWw7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5hY2NvcmRpYW5DaGVjayBpbnB1dDpjaGVja2VkICsgbGFiZWw6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwcHg7XG4gIGxlZnQ6IDBweDtcbiAgd2lkdGg6IDEzcHg7XG4gIGhlaWdodDogMTNweDtcbiAgd2lkdGg6IDEzcHg7XG4gIGJhY2tncm91bmQ6ICM3ODAxZmY7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgYm9yZGVyOiAxcHggc29saWQgIzAwMDAwMDtcbn1cbjwvc3R5bGU+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy91c2VybWFuYWdlbWVudC92dWUvY29tcG9uZW50cy91c2VybWFuYWdlbWVudC9JbnNpZ2h0LnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5hY2NvcmRpYW5DaGVjayBpbnB1dCB7XG4gIHBhZGRpbmc6IDA7XG4gIGhlaWdodDogaW5pdGlhbDtcbiAgd2lkdGg6IGluaXRpYWw7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5hY2NvcmRpYW5DaGVjayBpbnB1dDpjaGVja2VkK2xhYmVsOmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMHB4O1xuICBsZWZ0OiAwcHg7XG4gIHdpZHRoOiAxM3B4O1xuICBoZWlnaHQ6IDEzcHg7XG4gIHdpZHRoOiAxM3B4O1xuICBiYWNrZ3JvdW5kOiAjNzgwMWZmO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICMwMDAwMDA7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9jb250cm9sY2VudGVyL21vdHMvTU9Ucy52dWUiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5kcmFnZHJvcEJnIHtcbiAgei1pbmRleDogOTk5OTtcbn1cblxuLm1haW5jb250YWluZXIge1xuICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xufVxuXG4uZXh0cmFIZWFkZXJTcGFjZSB7XG4gIG92ZXJmbG93LXg6IGhpZGRlbiAhaW1wb3J0YW50O1xufVxuXG4ubXltYXBzRmlsdGVyT3B0aW9uc01haW4ge1xuICBtYXJnaW4tdG9wOiA1MHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5zdGlja3lNYXBzIHtcbiAgcG9zaXRpb246IC13ZWJraXQtc3RpY2t5O1xuICAvKiBTYWZhcmkgKi9cbiAgcG9zaXRpb246IHN0aWNreTtcbiAgdG9wOiAxMTFweCAhaW1wb3J0YW50O1xuICBsZWZ0OiAwcHggIWltcG9ydGFudDtcbiAgei1pbmRleDogOTk7XG4gIGJhY2tncm91bmQ6ICMxMTBhMWE7XG59XG5cbi5jb21wYXJlX3dpZHRoMTAge1xuICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3k7XG4gIC8qIFNhZmFyaSAqL1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICBsZWZ0OiAwcHggIWltcG9ydGFudDtcbiAgei1pbmRleDogNTA7XG4gIGJhY2tncm91bmQ6ICMxMTBhMWE7XG59XG5cbi5jb21wYXJlTWFwcyB7XG4gIG92ZXJmbG93LXk6IHZpc2libGU7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuLmNvbXBhcmVSb3cge1xuICBvdmVyZmxvdy14OiB2aXNpYmxlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5oaWdobGlnaHRHcm91cCB7XG4gIGJvcmRlcjogc29saWQgMXB4ICM3ODAwZmYgIWltcG9ydGFudDtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL2NvbnRyb2xjZW50ZXIvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zLnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4uYWNjb3JkaWFuQ2hlY2sgaW5wdXQge1xuICBwYWRkaW5nOiAwO1xuICBoZWlnaHQ6IGluaXRpYWw7XG4gIHdpZHRoOiBpbml0aWFsO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBkaXNwbGF5OiBibG9jaztcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uYWNjb3JkaWFuQ2hlY2sgaW5wdXQ6Y2hlY2tlZCArIGxhYmVsOmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMHB4O1xuICBsZWZ0OiAwcHg7XG4gIHdpZHRoOiAxM3B4O1xuICBoZWlnaHQ6IDEzcHg7XG4gIHdpZHRoOiAxM3B4O1xuICBiYWNrZ3JvdW5kOiAjNzgwMWZmO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICMwMDAwMDA7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy91c2VybWFuYWdlbWVudC9EYXRhQ2hhbm5lbHMudnVlIiwiLnZ1ZS1zd2F0Y2hlc19fY2hlY2tfX3dyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0udnVlLXN3YXRjaGVzX19jaGVja19fY2lyY2xle3dpZHRoOjIxcHg7aGVpZ2h0OjIxcHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xNSl9LnZ1ZS1zd2F0Y2hlc19fY2hlY2tfX3BhdGh7ZmlsbDojZmZmfS52dWUtc3dhdGNoZXNfX3N3YXRjaHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6MH0udnVlLXN3YXRjaGVzX19zd2F0Y2g6Zm9jdXMsLnZ1ZS1zd2F0Y2hlc19fc3dhdGNoOmhvdmVye29wYWNpdHk6Ljk7Ym94LXNoYWRvdzppbnNldCAwIDAgMnB4IHJnYmEoMCwwLDAsLjc1KTtvdXRsaW5lOm5vbmV9LnZ1ZS1zd2F0Y2hlc19fc3dhdGNoLnZ1ZS1zd2F0Y2hlc19fc3dhdGNoLS1ib3JkZXIsLnZ1ZS1zd2F0Y2hlc19fc3dhdGNoLnZ1ZS1zd2F0Y2hlc19fc3dhdGNoLS1zZWxlY3RlZHtib3gtc2hhZG93Omluc2V0IDAgMCAycHggcmdiYSgwLDAsMCwuNzUpfS52dWUtc3dhdGNoZXNfX3N3YXRjaF9fbGFiZWx7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OjA7Y29sb3I6IzY2Njtmb250LXNpemU6MTBweDtmb250LXdlaWdodDo3MDA7dGV4dC1hbGlnbjpjZW50ZXJ9LnZ1ZS1zd2F0Y2hlc19fc3dhdGNoIC52dWUtc3dhdGNoZXNfX2RpYWdvbmFsX193cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlfWZpZWxkc2V0W2Rpc2FibGVkXSAudnVlLXN3YXRjaGVze3BvaW50ZXItZXZlbnRzOm5vbmV9LnZ1ZS1zd2F0Y2hlc3twb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9jaztvdXRsaW5lOm5vbmV9LnZ1ZS1zd2F0Y2hlc19fdHJpZ2dlcl9fd3JhcHBlcntkaXNwbGF5OmlubGluZS1ibG9jaztjdXJzb3I6cG9pbnRlcn0udnVlLXN3YXRjaGVzX190cmlnZ2VyLnZ1ZS1zd2F0Y2hlcy0taXMtZW1wdHl7Ym9yZGVyOjJweCBzb2xpZCAjY2NjfS52dWUtc3dhdGNoZXNfX3RyaWdnZXIudnVlLXN3YXRjaGVzLS1pcy1kaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWR9LnZ1ZS1zd2F0Y2hlc19fY29udGFpbmVye2JveC1zaXppbmc6Y29udGVudC1ib3h9LnZ1ZS1zd2F0Y2hlc19fY29udGFpbmVyLnZ1ZS1zd2F0Y2hlcy0taW5saW5le2ZvbnQtc2l6ZTowfS52dWUtc3dhdGNoZXNfX2NvbnRhaW5lcjpub3QoLnZ1ZS1zd2F0Y2hlcy0taW5saW5lKXtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmF1dG87Ym9yZGVyLXJhZGl1czo1cHg7Ym94LXNoYWRvdzowIDJweCAzcHggcmdiYSgxMCwxMCwxMCwuMiksMCAwIDAgMXB4IHJnYmEoMTAsMTAsMTAsLjIpO3otaW5kZXg6NTB9LnZ1ZS1zd2F0Y2hlc19fd3JhcHBlcntiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7Ym94LXNpemluZzpjb250ZW50LWJveH0udnVlLXN3YXRjaGVzX19yb3d7Zm9udC1zaXplOjB9LnZ1ZS1zd2F0Y2hlc19fZmFsbGJhY2tfX3dyYXBwZXJ7ZGlzcGxheTp0YWJsZX0udnVlLXN3YXRjaGVzX19mYWxsYmFja19faW5wdXQtLXdyYXBwZXJ7ZGlzcGxheTp0YWJsZS1jZWxsO3BhZGRpbmctcmlnaHQ6MTBweDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxNHB4fS52dWUtc3dhdGNoZXNfX2ZhbGxiYWNrX19pbnB1dHt3aWR0aDoxMDAlO3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHg7Ym9yZGVyLXJhZGl1czo1cHg7Ym9yZGVyOjFweCBzb2xpZCAjZGNkY2RjO2NvbG9yOiMzNTQ5NWU7YmFja2dyb3VuZDojZmZmfS52dWUtc3dhdGNoZXNfX2ZhbGxiYWNrX19idXR0b257ZGlzcGxheTp0YWJsZS1jZWxsO3BhZGRpbmc6NnB4IDE1cHg7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXI7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMzU3MWM4O2JvcmRlci1yYWRpdXM6NXB4fS52dWUtc3dhdGNoZXMtc2hvdy1oaWRlLWVudGVyLWFjdGl2ZSwudnVlLXN3YXRjaGVzLXNob3ctaGlkZS1sZWF2ZS1hY3RpdmV7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2V9LnZ1ZS1zd2F0Y2hlcy1zaG93LWhpZGUtZW50ZXIsLnZ1ZS1zd2F0Y2hlcy1zaG93LWhpZGUtbGVhdmUtYWN0aXZle29wYWNpdHk6MH0udnVlLXN3YXRjaGVzLS1oYXMtY2hpbGRyZW4tY2VudGVyZWR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS52dWUtc3dhdGNoZXNfX2RpYWdvbmFsX193cmFwcGVye3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9LnZ1ZS1zd2F0Y2hlc19fZGlhZ29uYWx7d2lkdGg6NzUlO2hlaWdodDo3NSU7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gdG9wIHJpZ2h0LHRyYW5zcGFyZW50IDAsdHJhbnNwYXJlbnQgY2FsYyg1MCUgLSAyLjRweCksI2RlMDgwYSA1MCUsdHJhbnNwYXJlbnQgY2FsYyg1MCUgKyAyLjRweCksdHJhbnNwYXJlbnQpfVxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL25vZGVfbW9kdWxlcy92dWUtc3dhdGNoZXMvZGlzdC92dWUtc3dhdGNoZXMuY3NzIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4uZHJvcHpvbmUtb3ZlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICB6LWluZGV4OiA5OTk5ICFpbXBvcnRhbnQ7XG59XG5cbi5hZGREb2N1bWVudE1vZGFsIHtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL01hcHMvUGFydHMvRG9jdW1lbnRzTGlicmFyeS52dWUiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLmRyb3Bkb3duOmhvdmVyIC5kcm9wZG93bi1tZW51IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IC0xNnB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1sZWZ0OiAxOXB4ICFpbXBvcnRhbnQ7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy91c2VybWFuYWdlbWVudC9BbGxrcGlzLnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5kcmFnZHJvcEJnIHtcbiAgei1pbmRleDogOTk5OTtcbn1cblxuLm1haW5jb250YWluZXIge1xuICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xufVxuXG4uZXh0cmFIZWFkZXJTcGFjZSB7XG4gIG92ZXJmbG93LXg6IGhpZGRlbiAhaW1wb3J0YW50O1xufVxuXG4ubXltYXBzRmlsdGVyT3B0aW9uc01haW4ge1xuICBtYXJnaW4tdG9wOiA1MHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5zdGlja3lNYXBzIHtcbiAgcG9zaXRpb246IC13ZWJraXQtc3RpY2t5O1xuICAvKiBTYWZhcmkgKi9cbiAgcG9zaXRpb246IHN0aWNreTtcbiAgdG9wOiAxMTFweCAhaW1wb3J0YW50O1xuICBsZWZ0OiAwcHggIWltcG9ydGFudDtcbiAgei1pbmRleDogOTk7XG4gIGJhY2tncm91bmQ6ICMxMTBhMWE7XG59XG5cbi5jb21wYXJlX3dpZHRoMTAge1xuICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3k7XG4gIC8qIFNhZmFyaSAqL1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICBsZWZ0OiAwcHggIWltcG9ydGFudDtcbiAgei1pbmRleDogNTA7XG4gIGJhY2tncm91bmQ6ICMxMTBhMWE7XG59XG5cbi5jb21wYXJlTWFwcyB7XG4gIG92ZXJmbG93LXk6IHZpc2libGU7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuLmNvbXBhcmVSb3cge1xuICBvdmVyZmxvdy14OiB2aXNpYmxlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5oaWdobGlnaHRHcm91cCB7XG4gIGJvcmRlcjogc29saWQgMXB4ICM3ODAwZmYgIWltcG9ydGFudDtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL01hcHMvTWFwcy52dWUiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLnYtcG9wcGVyLS10aGVtZS1kcm9wZG93biAudi1wb3BwZXJfX2lubmVyIHtcbiAgYmFja2dyb3VuZDogIzVhNGY2NSAhaW1wb3J0YW50O1xuICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiAxNXB4ICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDBweCAhaW1wb3J0YW50O1xuICBib3JkZXI6IDFweCBzb2xpZCAjNWE0ZjY1ICFpbXBvcnRhbnQ7XG59XG5cbi52LXBvcHBlci0tdGhlbWUtZHJvcGRvd24gLnYtcG9wcGVyX19hcnJvdy1vdXRlciB7XG4gIGJvcmRlci1jb2xvcjogIzVhNGY2NSAhaW1wb3J0YW50XG59XG5cbi52LXBvcHBlci0tdGhlbWUtZHJvcGRvd24gLnYtcG9wcGVyX19hcnJvdy1pbm5lciB7XG4gIGJvcmRlci1jb2xvcjogIzVhNGY2NSAhaW1wb3J0YW50XG59XG5cbi52LXBvcHBlci0tdGhlbWUtZHJvcGRvd24gLnYtcG9wcGVyX19pbm5lciBkaXYge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi52LXBvcHBlci0tdGhlbWUtZHJvcGRvd24gLnYtcG9wcGVyX19hcnJvdyB7XG4gIGJvcmRlci1jb2xvcjogIzVhNGY2NSAhaW1wb3J0YW50O1xufVxuXG4udi1wb3BwZXJfX3BvcHBlci52LXBvcHBlci0tdGhlbWUtZHJvcGRvd24ge1xuICB0b3A6IC0zNXB4ICFpbXBvcnRhbnQ7XG59XG5cbi50aGVtZS1saWdodCAudi1wb3BwZXItLXRoZW1lLWRyb3Bkb3duIC52LXBvcHBlcl9faW5uZXIge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZDhkOGQ4ICFpbXBvcnRhbnQ7XG59XG5cbi50aGVtZS1saWdodCAudi1wb3BwZXItLXRoZW1lLWRyb3Bkb3duIC52LXBvcHBlcl9fYXJyb3ctb3V0ZXIge1xuICBib3JkZXItY29sb3I6ICNkOGQ4ZDggIWltcG9ydGFudFxufVxuXG4udGhlbWUtbGlnaHQgLnYtcG9wcGVyLS10aGVtZS1kcm9wZG93biAudi1wb3BwZXJfX2Fycm93LWlubmVyIHtcbiAgYm9yZGVyLWNvbG9yOiAjZDhkOGQ4ICFpbXBvcnRhbnRcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi9GaWx0ZXJCYXIudnVlIiwiLnN1cGVyLWZsb3dfX21lbnUtY29udGFpbmVyIC5zdXBlci1mbG93X19tZW51e3Bvc2l0aW9uOmFic29sdXRlO291dGxpbmU6bm9uZTt3aWR0aDoxODBweDtwYWRkaW5nOjRweCAwO2JvcmRlcjoxcHggc29saWQgI2I0YjRiNDtib3gtc2hhZG93OjAgOHB4IDE2cHggMCByZ2JhKDAsMCwwLC4zKTtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLXJhZGl1czozcHg7ei1pbmRleDoxMDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7bWFyZ2luOjB9LnN1cGVyLWZsb3dfX21lbnUtY29udGFpbmVyIC5zdXBlci1mbG93X19tZW51LWl0ZW17LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2JveC1zaXppbmc6Y29udGVudC1ib3g7d2lkdGg6MTcwcHg7bWluLWhlaWdodDoyNnB4O2xpbmUtaGVpZ2h0OjI2cHg7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzowIDRweH0uc3VwZXItZmxvd19fbWVudS1jb250YWluZXIgLnN1cGVyLWZsb3dfX21lbnUtaXRlbTpsYXN0LWNoaWxke21hcmdpbjowfS5zdXBlci1mbG93X19tZW51LWNvbnRhaW5lciAuc3VwZXItZmxvd19fbWVudS1pdGVtOmxhc3QtY2hpbGQ6YWZ0ZXJ7ZGlzcGxheTpub25lfS5zdXBlci1mbG93X19tZW51LWNvbnRhaW5lciAuc3VwZXItZmxvd19fbWVudS1pdGVtOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2VlZX0uc3VwZXItZmxvd19fbWVudS1jb250YWluZXIgLnN1cGVyLWZsb3dfX21lbnUtaXRlbS1pY29ue2Zsb2F0OmxlZnQ7d2lkdGg6MjZweDtoZWlnaHQ6MjZweH0uc3VwZXItZmxvd19fbWVudS1jb250YWluZXIgLnN1cGVyLWZsb3dfX21lbnUtaXRlbS1jb250ZW50e2Zsb2F0OmxlZnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29sb3I6IzMzMztmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoyNnB4O3dpZHRoOjE0NHB4O2ZvbnQtd2VpZ2h0OjQwMH0uc3VwZXItZmxvd19fbWVudS1jb250YWluZXIgLnN1cGVyLWZsb3dfX21lbnUtaXRlbT5kaXZ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjB9LnN1cGVyLWZsb3dfX21lbnUtY29udGFpbmVyIC5zdXBlci1mbG93X19tZW51LWl0ZW0uaXMtZGlzYWJsZWR7Y3Vyc29yOm5vLWRyb3B9LnN1cGVyLWZsb3dfX21lbnUtY29udGFpbmVyIC5zdXBlci1mbG93X19tZW51LWl0ZW0uaXMtZGlzYWJsZWQ+c3Bhbntjb2xvcjojOTk5fS5zdXBlci1mbG93X19tZW51LWNvbnRhaW5lciAuc3VwZXItZmxvd19fbWVudS1pdGVtLmlzLWRpc2FibGVkOmhvdmVye2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LnN1cGVyLWZsb3dfX21lbnUtY29udGFpbmVyIC5zdXBlci1mbG93X19tZW51LWxpbmV7d2lkdGg6MTAwJTttYXJnaW46NHB4IDA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2I0YjRiNDtoZWlnaHQ6MH0uc3VwZXItZmxvd19fbWVudS1jb250YWluZXIgLnN1cGVyLWZsb3dfX21lbnUtbGluZTpsYXN0LWNoaWxke2Rpc3BsYXk6bm9uZX0uc3VwZXItZmxvd19fbWVudS1jb250YWluZXIgLmZsb3dfX21lbnUtbWFza3tjb250ZW50OlwiXCI7cG9zaXRpb246Zml4ZWQ7dG9wOjA7Ym90dG9tOjA7cmlnaHQ6MDtsZWZ0OjA7ei1pbmRleDoxMDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5zdXBlci1mbG93X19ub2Rle2JveC1zaGFkb3c6MXB4IDJweCA4cHggcmdiYSgwLDAsMCwuMik7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNiNGI0YjQ7ei1pbmRleDoxO291dGxpbmU6bm9uZX0uc3VwZXItZmxvd19fbm9kZS5jYW4tbW92ZXtjdXJzb3I6bW92ZX0uc3VwZXItZmxvd19fbm9kZS1oZWFkZXJ7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0uc3VwZXItZmxvd19fbm9kZSAubm9kZS1zaWRle3Bvc2l0aW9uOmFic29sdXRlO2N1cnNvcjpjcm9zc2hhaXJ9LnN1cGVyLWZsb3dfX25vZGUgLm5vZGUtc2lkZS10b3B7dG9wOi01cHg7cmlnaHQ6MDtsZWZ0OjA7aGVpZ2h0OjEwcHh9LnN1cGVyLWZsb3dfX25vZGUgLm5vZGUtc2lkZS1yaWdodHt0b3A6MDtyaWdodDotNXB4O2JvdHRvbTowO3dpZHRoOjEwcHh9LnN1cGVyLWZsb3dfX25vZGUgLm5vZGUtc2lkZS1ib3R0b217cmlnaHQ6MDtib3R0b206LTVweDtsZWZ0OjA7aGVpZ2h0OjEwcHh9LnN1cGVyLWZsb3dfX25vZGUgLm5vZGUtc2lkZS1sZWZ0e3RvcDowO2JvdHRvbTowO2xlZnQ6LTVweDt3aWR0aDoxMHB4fS5zdXBlci1mbG93X19ub2RlOmhvdmVye2JveC1zaGFkb3c6MXB4IDJweCA4cHggcmdiYSgwLDAsMCwuNCl9LnN1cGVyLWZsb3dfX25vZGUuaXNTZWxlY3R7ei1pbmRleDoyfS5zdXBlci1mbG93X19saW5le3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MH0uc3VwZXItZmxvd19fbGluZS5pblBhdGh7Y3Vyc29yOnBvaW50ZXJ9LnN1cGVyLWZsb3dfX21hcmstbGluZXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjA7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudH0uc3VwZXItZmxvd3tmb250LWZhbWlseTpBcHBsZSBTeXN0ZW0sU0YgUHJvIFNDLFNGIFBybyBEaXNwbGF5LEhlbHZldGljYSBOZXVlLEFyaWFsLFBpbmdGYW5nIFNDLEhpcmFnaW5vIFNhbnMgR0IsU1RIZWl0aSxNaWNyb3NvZnQgWWFIZWksTWljcm9zb2Z0IEpoZW5nSGVpLFNvdXJjZSBIYW4gU2FucyBTQyxOb3RvIFNhbnMgQ0pLIFNDLFNvdXJjZSBIYW4gU2FucyBDTixzYW5zLXNlcmlmO3Bvc2l0aW9uOnJlbGF0aXZlO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW59LnN1cGVyLWZsb3c+LnNlbGVjdC1hbGxfX21hc2t7cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDg1LDE3NSwyNTUsLjEpO3otaW5kZXg6MjA7Ym9yZGVyOjFweCBkYXNoZWQgIzU1YWJmYztjdXJzb3I6bW92ZTtvdXRsaW5lOm5vbmV9XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL3Z1ZS1zdXBlci1mbG93L2xpYi9pbmRleC5jc3MiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLm1haW5jb250YWluZXIge1xuICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xufVxuXG4udG9VcHBlciB7XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xufVxuXG4uYWhpZ2hsaWdodCB7XG4gIGJhY2tncm91bmQ6ICMwM2FjMDAgIWltcG9ydGFudDtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xufVxuXG4uaWhpZ2hsaWdodCB7XG4gIGJhY2tncm91bmQ6ICNhZTY3MjUgIWltcG9ydGFudDtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xufVxuXG4uYW5pbWF0ZS1ib3R0b20ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGFuaW1hdGlvbjogYW5pbWF0ZWJvdHRvbSAwLjRzO1xufVxuXG4uZW1wdHktZHJhZy1zbG90LTEwMCB7XG4gIGhlaWdodDogNjBweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiA5MDtcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpO1xufVxuXG4uaW52aXNpYmxlIHtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4uYWRkRW1vdGlvbk1vZGFsLFxuLnNlbGVjdEljb25Nb2RhbCxcbi5hZGRJY29uTW9kYWwsXG4uYWRkSW1hZ2VNb2RhbCxcbi5hZGRCcmFuZE1vZGFsIHtcbiAgei1pbmRleDogOTk5OTtcbn1cblxuLmV4dHJhSGVhZGVyU3BhY2Uge1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLnJpZ2h0V3JhcHBlciB7XG4gIG92ZXJmbG93OiBpbmhlcml0ICFpbXBvcnRhbnQ7XG59XG5cbi5sZWZ0d3JhcHBlciB7XG4gIGxlZnQ6IDAgIWltcG9ydGFudDtcbn1cblxuLmVwaXNvZGVsZWZ0V3JhcHBlciB7XG4gIHotaW5kZXg6IDMgIWltcG9ydGFudDtcbn1cblxuLmpvdXJuZXlTdGlja3lIZWFkZXIge1xuICB6LWluZGV4OiAxNSAhaW1wb3J0YW50O1xufVxuXG4uc3RpY2t5IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDExMnB4O1xuICB6LWluZGV4OiA5OTk7XG59XG5cbi5qb3VybnlzdGlja3kge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogNjVweDtcbiAgei1pbmRleDogOTk5O1xufVxuXG4uc3RpY2t5UmlnaHQge1xuICBoZWlnaHQ6IDQwMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5qb3VybmV5U3RpY2t5SGVhZGVyVGV4dCBwIHtcbiAgbWFyZ2luOiA1cHggMHB4IC0xOTVweDtcbn1cblxuLmpvdXJuZXlTdGlja3lIZWFkZXJMZWZ0IHtcbiAgbWFyZ2luLXRvcDogNjBweCAhaW1wb3J0YW50O1xuICBtYXJnaW4tbGVmdDogMTZweDtcbn1cblxuLmpvdXJuZXlTdGlja3lCYXIge1xuICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kOiAjMTEwYTFhO1xuICBoZWlnaHQ6IDUwcHg7XG4gIHBhZGRpbmc6IDEwcHggMTVweDtcbiAgY29sb3I6ICNmZmY7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDYycHg7XG4gIHdpZHRoOiAxMDElO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHotaW5kZXg6IDk7XG4gIGxlZnQ6IDA7XG4gIG1hcmdpbi1sZWZ0OiAtMTVweCAhaW1wb3J0YW50O1xufVxuXG4uam91cm5leWZpeGVkIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNDAwcHg7XG4gIGJhY2tncm91bmQ6ICMxMTBhMWE7XG4gIHRvcDogNTNweDtcbiAgei1pbmRleDogMTAwO1xufVxuXG4uc3RpY2t5Sm91cm55IHtcbiAgcG9zaXRpb246IC13ZWJraXQtc3RpY2t5O1xuICAvKiBTYWZhcmkgKi9cbiAgcG9zaXRpb246IHN0aWNreTtcbiAgdG9wOiA5OXB4ICFpbXBvcnRhbnQ7XG4gIGxlZnQ6IDBweCAhaW1wb3J0YW50O1xuICB6LWluZGV4OiA1O1xuICBiYWNrZ3JvdW5kOiAjMTEwYTFhO1xufVxuXG4uc3RpY2t5Sm91cm5leUNvbnRlbnQge1xuICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3k7XG4gIC8qIFNhZmFyaSAqL1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDEwMHB4ICFpbXBvcnRhbnQ7XG4gIGxlZnQ6IDBweCAhaW1wb3J0YW50O1xuICB6LWluZGV4OiA1O1xuICBiYWNrZ3JvdW5kOiAjMTEwYTFhO1xufVxuXG4jYWRkTGFuZU1vZGFsIHtcbiAgei1pbmRleDogMTA1MTtcbn1cblxuLnRvb2x0aXAge1xuICAmLmJzLXRvb2x0aXAtYm90dG9tIHtcbiAgICBtYXJnaW4tdG9wOiAxMXB4ICFpbXBvcnRhbnQ7XG4gIH1cblxuICAmLmJzLXRvb2x0aXAtdG9wIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxMXB4ICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLnRvQ2FwaXRhbEZpcnN0IHtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG59XG5cbi5zZWxlY3RlZFNlY3Rpb24ge1xuICBib3JkZXI6IDFweCBzb2xpZCAjODU2OGZlO1xufVxuXG4udHAtc2l6ZS1vcHRpb25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiA1cHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDVweDtcbn1cblxuLnRwLXNpemUtb3B0aW9uIHtcbiAgcGFkZGluZzogMnB4IDZweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgYmFja2dyb3VuZDogI2Y4ZjlmYTtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzO1xufVxuXG4udHAtc2l6ZS1vcHRpb246aG92ZXIge1xuICBiYWNrZ3JvdW5kOiAjZTllY2VmO1xuICBib3JkZXItY29sb3I6ICNhZGI1YmQ7XG59XG5cbi50cC1zaXplLW9wdGlvbi5hY3RpdmUge1xuICBiYWNrZ3JvdW5kOiAjMDA3YmZmO1xuICBjb2xvcjogd2hpdGU7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZjtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL01hcHMvRWRpdE1hcC52dWUiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5lcnJvcnR4dCB7XG4gIGNvbG9yOiByZWQ7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9jb21tb24vaGVhZGVyL01hcEhlYWRlci52dWUiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4uZXJyb3J0eHQge1xuICBjb2xvcjogcmVkO1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvY29tbW9uL2hlYWRlci9wYXJ0cy9FeHBvcnRNYXAudnVlIiwiPHRlbXBsYXRlPlxuICA8c2VjdGlvbj5cbiAgICA8IS0tIEFkZCBJbWFnZSBQb3B1cCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwgZmFkZSBpbnZpdGVQZW9wbGUgbW9kYWxiZyBjYW5jZWxzdWJzY3JpcHRpb25Nb2RhbCBkZWxldGVjaGFubmVsIHVwbG9hZExvZ28gbmV3TW9kYWwgYWRkSW1hZ2VNb2RhbFwiXG4gICAgICBpZD1cImFkZEltYWdlTW9kYWxcIiB0YWJpbmRleD1cIi0xXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cImFkZEltYWdlTW9kYWxMYWJlbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZyBtb2RhbC1kaWFsb2ctY2VudGVyZWRcIiByb2xlPVwiZG9jdW1lbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAgICA8aDIgY2xhc3M9XCJtb2RhbC10aXRsZVwiPlxuICAgICAgICAgICAgICA8c3Ryb25nPjwvc3Ryb25nPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVtb3Rpb24tdGl0bGVcIj57eyBhcHBUcmFucy5jb21tb24uYWRkX21lZGlhIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPjxzcGFuPsOXPC9zcGFuPjwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCIgOmNsYXNzPVwieyBhZGRJbWFnZU1vZGFsTWFpbkJvZHk6IGNyb3BwZWRJbWFnZVNyYyB9XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkSW1hZ2Vib2R5IGFkZEltYWdlVGFic1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXRhYnMgYWRkSW1hZ2VUYWJMaXN0XCIgcm9sZT1cInRhYmxpc3RcIj5cbiAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmsgYWN0aXZlXCIgZGF0YS10b2dnbGU9XCJ0YWJcIiBocmVmPVwiI2xpYnJhcnlcIiByb2xlPVwidGFiXCI+e3sgYXBwVHJhbnMuY29tbW9uLmxpYnJhcnlcbiAgICAgICAgICAgICAgICAgICAgICB9fTwvYT5cbiAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rXCIgZGF0YS10b2dnbGU9XCJ0YWJcIiBocmVmPVwiI3VwbG9hZEltYWdlXCIgcm9sZT1cInRhYlwiPjxpIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvaT4ge3tcbiAgICAgICAgICAgICAgICAgICAgICBhcHBUcmFucy5jb21tb24uYWRkX25ldyB9fTwvYT5cbiAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICA8IS0tIDxsaSB2LWlmPVwic2hvd0ZlYXR1cmVGbGFnXCIgY2xhc3M9XCJuYXYtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rXCIgZGF0YS10b2dnbGU9XCJ0YWJcIiBocmVmPVwiI3VwbG9hZEltYWdlRnJvbUFJXCIgcm9sZT1cInRhYlwiPjxpIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvaT4gR2VuZXJhdGUgSW1hZ2U8L2E+XG4gICAgICAgICAgICAgICAgICA8L2xpPiAtLT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwhLS0gVGFiIHBhbmVzIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1wYW5lIGFjdGl2ZVwiIGlkPVwibGlicmFyeVwiIHJvbGU9XCJ0YWJwYW5lbFwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIEltYWdlcyBMaXN0IC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiaW1hZ2VMaXN0IHNjcm9sbGJhclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgdi1mb3I9XCIobWVkLCBtaW5kKSBpbiBtZWRpYVwiIDprZXk9XCJtaW5kICsgJ21lZGlhJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwieyBtZWRpYVZpZGVvOiBtZWQubWVkaWFfdHlwZSA9PSAndmlkZW8nIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cIm1lZC5pbWFnZV9wYXRoIHx8IG1lZC52aWRlb191cmwgPyBzZXRNZWRpYUZpbGUobWluZCkgOiAnJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbm5lSW1hZ2VCb3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgdi1pZj1cIm1lZC5tZWRpYV90eXBlID09ICd2aWRlbydcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI3MCVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c3JjPVwiZ2V0UG9zdGVyKG1lZC52aWRlb191cmwsIG1lZC5saW5rX3R5cGUpXCIgYWx0PVwibWVkaWEgbGlicmFyeSB2aWRlbyBJbWFnZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHYtZWxzZSA6c3JjPVwibWVkLmltYWdlX3BhdGhcIiBhbHQ9XCJcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlSG92ZXJcIiB2LWlmPVwibWVkLm1lZGlhX3R5cGUgPT0gJ3ZpZGVvJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGgtMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImluc2VydGltZ1R4dCByb3cganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1zZWxmLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIDpzcmM9XCInL2J1bmRsZXMvbWFwL2ltYWdlcy9wbGF5LWljb24uc3ZnJ1wiIGF0PVwiXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VIb3ZlclwiIHYtZWxzZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBoLTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnNlcnRpbWdUeHQgcm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24tc2VsZi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1jZW50ZXJcIj4gPGkgY2xhc3M9XCJmYSBmYS1wbHVzXCI+PC9pPiB7eyBhcHBUcmFucy5jb21tb24uYWRkX21lZGlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1wYW5lIHVwbG9hZEltYWdlXCIgaWQ9XCJ1cGxvYWRJbWFnZVwiIHJvbGU9XCJ0YWJwYW5lbFwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIFVwbG9hZCBJbWFnZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyb3dzZUZpbGVzQm94XCIgdi1pZj1cIiFpbWdTcmNcIiBAZHJhZ2VudGVyLnByZXZlbnQ9XCJkcmFnZ2luZyA9IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgIEBkcmFnb3Zlci5wcmV2ZW50PVwiZHJhZ2dpbmcgPSBmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZEltYWdlQm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBoLTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLXNlbGYtY2VudGVyIGNlbnRlclZlcnRpY2FsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmV2aWV3Qm94XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aW1nIDpzcmM9XCInL2J1bmRsZXMvbWFwL2ltYWdlcy91cGxvYWQtaWNvbi5zdmcnXCIgYWx0PVwiVXBsb2FkXCIgLz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IGFwcFRyYW5zLmZpbGVzLmRyYWdfZHJvcCB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgYXBwVHJhbnMuY29tbW9uLm9yIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCIkcmVmcy5maWxlLmNsaWNrKClcIiBjbGFzcz1cImJ0biBnbG9iYWwtYnRuLXNtIHByaW1hcnktY29sb3JidG5cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwVHJhbnMuZmlsZXMuYnJvd3NlX2ZpbGVzIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgY2xhc3M9XCJ1cGxvYWRGaWxlIGltZ1wiIGFjY2VwdD1cImltYWdlLypcIiBuYW1lPVwiZmlsZVwiIHJlZj1cImZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNoYW5nZT1cImxvYWRJbWFnZSgkZXZlbnQsIGZhbHNlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAwcHg7aGVpZ2h0OiAwcHg7b3ZlcmZsb3c6IGhpZGRlbjtcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS08cCBjbGFzcz1cImVycm9yVHh0XCI+RmlsZSB0eXBlIG5vdCBzdXBwb3J0ZWQgcGxlYXNlIHJlLXVwbG9hZCBhIC5qcGcsIC5wbmcsIC5zdmcsIC5tb3YuIChkZXYgZmlsbCBpbiB3aGF0IGZpbGUgdHlwZXMgYXJlIHN1cHBvcnRlZCk8L3A+LS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IGFwcFRyYW5zLmNvbW1vbi5vciB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgYXBwVHJhbnMuZmlsZXMubGlua190aXRsZSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwidmlkZW91cmxcIiB2LW1vZGVsPVwidmlkZW9fbGlua1wiIGNsYXNzPVwiZm9ybS1jb250cm9sIG1tLWlucHV0LXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtMTIganVzdGlmeS1jb250ZW50LWNlbnRlciBkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBnbG9iYWwtYnRuLW1kIGhpZGVWYWxpZGF0ZSB3LWF1dG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cInZpZGVvX2xpbmsgPT0gJycgPyAnZGlzYWJsZWRidG4nIDogJ2dyYWRpZW50YnRuJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwiaGFuZGxlVXBsb2FkVmlkZW9cIj57eyBhcHBUcmFucy5maWxlcy52YWxpZGF0ZV9saW5rX3RpdGxlIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQ3JvcHBlciBVcGxvYWRlZCBJbWFnZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZGVkSW1hZ2VcIiB2LWlmPVwiaW1nU3JjXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBDcm9wcGVyIFNob3cgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkSW1hZ2VCb3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGgtMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24tc2VsZi1jZW50ZXIgY2VudGVyVmVydGljYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJyZVNldE1lZGlhKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGdsb2JhbC1idG4tc20gcHJpbWFyeS1jb2xvcmJ0biBtdC0xMCByZXNlbGVjdG1lZGlhQnV0dG9uXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBUcmFucy5jb21tb24ucmVzZWxjdF9tZWRpYSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBjbGFzcz1cInVwbG9hZEZpbGUgaW1nXCIgYWNjZXB0PVwiaW1hZ2UvKlwiIG5hbWU9XCJmaWxlclwiIHJlZj1cImZpbGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2hhbmdlPVwibG9hZEltYWdlKCRldmVudCwgZmFsc2UpXCIgc3R5bGU9XCJ3aWR0aDogMHB4O2hlaWdodDogMHB4O292ZXJmbG93OiBoaWRkZW47XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXdCb3ggY3JvcHBlclByZXZpZXcgbWVkaWFwcmV2aWV3Qm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwiaW1nU3JjXCIgc3R5bGU9XCJoZWlnaHQ6MTAwJTsgd2lkdGg6MTAwJTsgcG9zaXRpb246cmVsYXRpdmU7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y3JvcHBlciBjbGFzc25hbWU9XCJjcm9wcGVyXCIgcmVmPVwiY3JvcHBlclwiIDphc3BlY3RSYXRpbz1cIjEgLyAxXCIgOnN0ZW5jaWwtcHJvcHM9XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzcGVjdFJhdGlvOiAxNiAvIDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiIDpzcmM9XCJpbWdTcmNcIiBAY2hhbmdlPVwiY3JvcFwiPjwvY3JvcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkSW1hZ2VCb3ggdXBsb2FkZWRJbWFnZVZpZXdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGgtMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24tc2VsZi1jZW50ZXIgY2VudGVyVmVydGljYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+UHJldmlldzwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXdCb3ggbWVkaWFwcmV2aWV3Qm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyB2LWlmPVwiY3JvcHBlZEltYWdlU3JjXCIgOnNyYz1cImNyb3BwZWRJbWFnZVNyY1wiIGFsdD1cInBob3RvXCIgY2xhc3M9XCJkZWZhdWx0aW1hZ2VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwidXBsb2FkaW1hZ2VibG9ja3Nob3dcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZHJhZy1idG4gc2F2ZUNhbmNlbGJ0bnMgZml4V2lkdGhTYXZlQ2FuY2VsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC04IGQtZmxleCBmbGV4LXJvdy1yZXZlcnNlIHByLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBjbGFzcz1cImJ0biBnbG9iYWwtYnRuLW1kIGJvcmRlcmVkLXRyYW5zcGFyZW50YnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBwVHJhbnMuY29tbW9uLmNhbmNlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgQGNsaWNrPVwic2F2ZUltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCIhY3JvcHBlZEltYWdlU3JjID8gJ2Rpc2FibGVkYnRuJyA6ICdncmFkaWVudGJ0bidcIiBjbGFzcz1cImJ0biBnbG9iYWwtYnRuLW1kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBwVHJhbnMuY29tbW9uLmluc2VydF9tZWRpYSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIENyb3BwZXIgUHJldmlldyBJbWFnZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZGVkUHJldmlld1wiIHYtaWY9XCJlbWJlZF9saW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkSW1hZ2VCb3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGgtMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24tc2VsZi1jZW50ZXIgY2VudGVyVmVydGljYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXdCb3hcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZEltYWdlQm94IHVwbG9hZGVkSW1hZ2VWaWV3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBoLTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLXNlbGYtY2VudGVyIGNlbnRlclZlcnRpY2FsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IGFwcFRyYW5zLmNvbW1vbi5wcmV2aWV3IH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlld0JveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZnJhbWUgZnJhbWVib3JkZXI9XCIwXCIgOnNyYz1cImVtYmVkX2xpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAzMDBweDtcIj48L2lmcmFtZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXJcIj48YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImdsb2JhbC1idG4tc20gcHJpbWFyeS1jb2xvcmJ0biBtdC0xMCBidG4gdy1hdXRvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cInJlU2V0TWVkaWEoKVwiPlJlc2VsZWN0IE1lZGlhPC9idXR0b24+PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBkcmFnLWJ0biBzYXZlQ2FuY2VsYnRucyBmaXhXaWR0aFNhdmVDYW5jZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTggZC1mbGV4IGZsZXgtcm93LXJldmVyc2UgcHItMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGNsYXNzPVwiYnRuIGdsb2JhbC1idG4tbWQgYm9yZGVyZWQtdHJhbnNwYXJlbnRidG5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcHBUcmFucy5jb21tb24uY2FuY2VsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiA6Y2xhc3M9XCJlbWJlZF9saW5rID8gJ2dyYWRpZW50YnRuJyA6ICdkaXNhYmxlZGJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGdsb2JhbC1idG4tbWRcIiBAY2xpY2s9XCJ1cGxvYWRWaWRlbygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBwVHJhbnMuY29tbW9uLmluc2VydF9tZWRpYSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1wYW5lIHVwbG9hZEltYWdlRnJvbUFJXCIgaWQ9XCJ1cGxvYWRJbWFnZUZyb21BSVwiIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgICAgICAgICAgICAgICAgIHYtaWY9XCJtZWRpYUZyb21BaSAmJiBtZWRpYUZyb21BaS5yZXN1bHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBzdHlsZT1cIm1hcmdpbi10b3A6MTBweFwiPnt7IGFwcFRyYW5zLmFpLnN1Z2dlc3Rpb25zX2J1dHRvbiB9fTwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBnbG9iYWwtYnRuLXNtIGdyYWRpZW50YnRuXCIgQGNsaWNrPVwiZ2VuZXJhdGVNZWRpYSgpXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwVHJhbnMuYWkuZ2VuZXJhdGVfYnV0dG9uIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHt7bWVkaWFGcm9tQWkucXVlcnl9fSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImltYWdlTGlzdCBzY3JvbGxiYXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHYtZm9yPVwiKG1lZCwgbWluZCkgaW4gbWVkaWFGcm9tQWkucmVzdWx0XCIgOmtleT1cIm1pbmQgKyAnbWVkaWEnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJ7IG1lZGlhVmlkZW86IG1lZC5tZWRpYV90eXBlID09ICd2aWRlbycgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwibWVkLmltYWdlX3BhdGggfHwgbWVkLnZpZGVvX3VybCA/IHNldE1lZGlhRmlsZShtaW5kKSA6ICcnXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5uZUltYWdlQm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIDpzcmM9XCJtZWQudXJsXCIgYWx0PVwiXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZUhvdmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggaC0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5zZXJ0aW1nVHh0IHJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLXNlbGYtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2VudGVyXCI+IDxpIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvaT4ge3sgYXBwVHJhbnMuY29tbW9uLmFkZF9tZWRpYSB9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIERyYWcgRHJvcCBCRyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZHJhZ2Ryb3BCZyBkLWZsZXhcIiB2LWlmPVwiZHJhZ2dpbmdcIiA6Y2xhc3M9XCJbZHJhZ2dpbmcgPyAnZHJvcHpvbmUtb3ZlcicgOiAnJ11cIlxuICAgICAgQGRyYWdsZWF2ZT1cImRyYWdnaW5nID0gZmFsc2VcIiBAZHJhZ292ZXIucHJldmVudCBAZHJvcC5zdG9wLnByZXZlbnQ9XCJsb2FkSW1hZ2UoJGV2ZW50LCB0cnVlKVwiPlxuICAgICAgPHAgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1zZWxmLWNlbnRlciB0ZXh0LWNlbnRlclwiPnt7IGFwcFRyYW5zLmZpbGVzLmRyb3BfbWVkaWEgfX08L3A+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBWaWV3IEltYWdlIC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibW9kYWwgZmFkZSBpbnZpdGVQZW9wbGUgbW9kYWxiZyBjYW5jZWxzdWJzY3JpcHRpb25Nb2RhbCBkZWxldGVjaGFubmVsIHVwbG9hZExvZ28gbmV3TW9kYWwgYWRkSW1hZ2VNb2RhbCBwbGF5VmlkZW9Nb2RhbFwiXG4gICAgICBpZD1cInZpZXdJbWFnZU1vZGFsXCIgdGFiaW5kZXg9XCItMVwiIHJvbGU9XCJkaWFsb2dcIiBhcmlhLWxhYmVsbGVkYnk9XCJ2aWV3SW1hZ2VNb2RhbExhYmVsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLW1kIG1vZGFsLWRpYWxvZy1jZW50ZXJlZFwiIHJvbGU9XCJkb2N1bWVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxoMiBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW1vdGlvbi10aXRsZVwiPnt7IGFwcFRyYW5zLmZpbGVzLm1lZGlhX3ByZXZpZXcgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+w5c8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlUHJldmlld29NYWluRGRpdlwiPlxuICAgICAgICAgICAgICA8aW1nIDpzcmM9XCInL2J1bmRsZXMvbWFwL2ltYWdlcy9pbWFnZTIuanBnJ1wiIGNsYXNzPVwiZXBpc29kZUltYWdlXCIgYWx0PVwiRXBpc29kZSBJbWFnZVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5pbXBvcnQgeyBwcmV2aWV3IH0gZnJvbSAnLi4vTWFwcy9NaXhpbnMvcHJldmlldy5qcyc7XG5pbXBvcnQgeyBDcm9wcGVyIH0gZnJvbSAndnVlLWFkdmFuY2VkLWNyb3BwZXInO1xuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnbWVkaWFsaWJyYXJ5JyxcbiAgcHJvcHM6IFsnbWVkaWEnLCAnbWVkaWFGcm9tQWknLCAnc2hvd0ZlYXR1cmVGbGFnJ10sXG4gIG1peGluczogW3ByZXZpZXddLFxuICBjb21wb25lbnRzOiB7XG4gICAgQ3JvcHBlcixcbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBtZWRpYToge1xuICAgICAgLy8gdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBzdGFydCBvZiB0aGUgb2JzZXJ2YXRpb25cbiAgICAgIGltbWVkaWF0ZTogdHJ1ZSxcbiAgICAgIGhhbmRsZXIodmFsLCBvbGRWYWwpIHtcbiAgICAgICAgdGhpcy5tZWRpYSA9IHZhbDtcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY3JvcHBlZEltYWdlU3JjOiAnJyxcbiAgICAgIHNob3dNb2RhbDogZmFsc2UsXG4gICAgICBpbWdTcmM6ICcnLFxuICAgICAgY29vcmRpbmF0ZXM6IHtcbiAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgbGVmdDogMCxcbiAgICAgICAgdG9wOiAwLFxuICAgICAgfSxcbiAgICAgIGRyYWdnaW5nOiBmYWxzZSxcbiAgICAgIHZpZGVvX2xpbms6ICcnLFxuICAgICAgZW1iZWRfbGluazogJycsXG4gICAgICB2aWRlb19jb2RlOiAnJyxcbiAgICAgIHZpZGVvX2RldGFpbHM6IHt9LFxuICAgIH07XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICByZVNldE1lZGlhKCkge1xuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLiRkYXRhLCB0aGlzLiRvcHRpb25zLmRhdGEuYXBwbHkodGhpcykpO1xuICAgICAgJCgnLmJyb3dzZUZpbGVzQm94Jykuc2hvdygpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDcm9wIGltYWdlIGFuZCB1cGRhdGUgUHJldmlld1xuICAgICAqL1xuXG4gICAgY3JvcCgpIHtcbiAgICAgIGNvbnN0IHsgY29vcmRpbmF0ZXMsIGNhbnZhcyB9ID0gdGhpcy4kcmVmcy5jcm9wcGVyLmdldFJlc3VsdCgpO1xuICAgICAgdGhpcy5jb29yZGluYXRlcyA9IGNvb3JkaW5hdGVzO1xuICAgICAgLy8gWW91IGFibGUgdG8gZG8gZGlmZmVyZW50IG1hbmlwdWxhdGlvbnMgYXQgYSBjYW52YXNcbiAgICAgIC8vIGJ1dCB0aGVyZSB3ZSBqdXN0IGdldCBhIGNyb3BwZWQgaW1hZ2VcbiAgICAgIHRoaXMuY3JvcHBlZEltYWdlU3JjID0gY2FudmFzLnRvRGF0YVVSTCgpO1xuICAgICAgY2FudmFzLnRvQmxvYihyZXN1bHQgPT4geyB9LCAnaW1hZ2UvanBlZycpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBzZW5kIGJsb2IgaW1hZ2UgdG8gcGFyZW50IGNvbXBvbmVudCBhbmQgcmVzZXQgdmFsdWVzXG4gICAgICovXG5cbiAgICBzYXZlSW1hZ2UoKSB7XG4gICAgICB0aGlzLiRlbWl0KCdjbGlja2VkJywgdGhpcy5jcm9wcGVkSW1hZ2VTcmMsIC0xLCAnaW1hZ2UnLCAnJywgJycpO1xuICAgICAgdGhpcy5jcm9wcGVkSW1hZ2VTcmMgPSAnJztcbiAgICAgICh0aGlzLmltZ1NyYyA9ICcnKSwgJCgnI2FkZEltYWdlTW9kYWwnKS5tb2RhbCgnaGlkZScpO1xuICAgIH0sXG5cbiAgICBzZXRNZWRpYUZpbGUoaW5kKSB7XG4gICAgICB0aGlzLiRlbWl0KCdjbGlja2VkJywgdGhpcy5jcm9wcGVkSW1hZ2VTcmMsIGluZCwgJycsICcnLCAnJyk7XG4gICAgICAkKCcjYWRkSW1hZ2VNb2RhbCcpLm1vZGFsKCdoaWRlJyk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIE9uIGZpbGUgdXBsb2FkIHJlYWQgZmlsZSBhbmQgdXBkYXRlIGRvbSBpZiBpdCdzIHZhbGlkIGZpbGVcbiAgICAgKi9cblxuICAgIGxvYWRJbWFnZShldmVudCwgZHJvcCkge1xuICAgICAgaWYgKGRyb3ApIHtcbiAgICAgICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gUmVmZXJlbmNlIHRvIHRoZSBET00gaW5wdXQgZWxlbWVudFxuICAgICAgdmFyIGlucHV0ID0gZHJvcCA/IGV2ZW50LmRhdGFUcmFuc2ZlciA6IGV2ZW50LnRhcmdldDtcbiAgICAgIC8vIEVuc3VyZSB0aGF0IHlvdSBoYXZlIGEgZmlsZSBiZWZvcmUgYXR0ZW1wdGluZyB0byByZWFkIGl0XG4gICAgICBpZiAoaW5wdXQuZmlsZXMgJiYgaW5wdXQuZmlsZXNbMF0gJiYgdGhpcy52YWxpZGF0ZUltYWdlKGlucHV0LmZpbGVzWzBdKSkge1xuICAgICAgICAvLyBjcmVhdGUgYSBuZXcgRmlsZVJlYWRlciB0byByZWFkIHRoaXMgaW1hZ2UgYW5kIGNvbnZlcnQgdG8gYmFzZTY0IGZvcm1hdFxuICAgICAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgLy8gRGVmaW5lIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcnVuLCB3aGVuIEZpbGVSZWFkZXIgZmluaXNoZXMgaXRzIGpvYlxuICAgICAgICByZWFkZXIub25sb2FkID0gZSA9PiB7XG4gICAgICAgICAgLy8gTm90ZTogYXJyb3cgZnVuY3Rpb24gdXNlZCBoZXJlLCBzbyB0aGF0IFwidGhpcy5pbWFnZURhdGFcIiByZWZlcnMgdG8gdGhlIGltYWdlRGF0YSBvZiBWdWUgY29tcG9uZW50XG4gICAgICAgICAgLy8gUmVhZCBpbWFnZSBhcyBiYXNlNjQgYW5kIHNldCB0byBpbWFnZURhdGFcbiAgICAgICAgICB0aGlzLmltZ1NyYyA9IGUudGFyZ2V0LnJlc3VsdDtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gU3RhcnQgdGhlIHJlYWRlciBqb2IgLSByZWFkIGZpbGUgYXMgYSBkYXRhIHVybCAoYmFzZTY0IGZvcm1hdClcbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoaW5wdXQuZmlsZXNbMF0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0ZSBpbWFnZVxuICAgICAqL1xuXG4gICAgdmFsaWRhdGVJbWFnZShpbWFnZSkge1xuICAgICAgdmFyIGZpbGVFeHRlbnNpb24gPSBbJ2pwZWcnLCAnanBnJywgJ3BuZycsICdnaWYnLCAnYm1wJ107XG4gICAgICB2YXIgcGVybWl0dGVkc2l6ZSA9IDEwO1xuICAgICAgdmFyIGltYWdlbmFtZSA9IGltYWdlLm5hbWUuc3BsaXQoJy4nKTtcbiAgICAgIHZhciBleHRlbnNpb24gPSAkLmluQXJyYXkoaW1hZ2VuYW1lW2ltYWdlbmFtZS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpLCBmaWxlRXh0ZW5zaW9uKTtcbiAgICAgIC8vIGNoZWNrIGZpbGUgZXh0ZW5zaW9uIGV4aXN0cyBpbiB0aGUgbGlzdFxuICAgICAgaWYgKGV4dGVuc2lvbiAhPSAtMSkge1xuICAgICAgICBpZiAoaW1hZ2Uuc2l6ZSAvIDEwMjQgLyAxMDI0IDw9IHBlcm1pdHRlZHNpemUpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtbV9tZXNzYWdlci5kaXNwbGF5X3RpbWVyX21lc3NhZ2UodGhpcy5hcHBUcmFucy5tZXNzYWdlcy5pbWFnZS5lcnJvcl9zaXplLCAnd2FybmluZycpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbW1fbWVzc2FnZXIuZGlzcGxheV90aW1lcl9tZXNzYWdlKHRoaXMuYXBwVHJhbnMubWVzc2FnZXMuaW1hZ2UuZXJyb3JfdHlwZSwgJ3dhcm5pbmcnKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICB1cGxvYWRWaWRlbygpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2NsaWNrZWQnLCB0aGlzLmVtYmVkX2xpbmssIC0xLCAndmlkZW8nLCB0aGlzLnZpZGVvX3R5cGUsIHRoaXMudmlkZW9fY29kZSk7XG4gICAgICB0aGlzLmVtYmVkX2xpbmsgPSAnJztcbiAgICAgIHRoaXMudmlkZW9fbGluayA9ICcnO1xuICAgICAgdGhpcy52aWRlb190eXBlID0gJyc7XG4gICAgICB0aGlzLnZpZGVvX2NvZGUgPSAnJztcbiAgICAgICQoJyNhZGRJbWFnZU1vZGFsJykubW9kYWwoJ2hpZGUnKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogIFVwbG9hZCB2aWRlb1xuICAgICAqL1xuXG4gICAgaGFuZGxlVXBsb2FkVmlkZW8oZSkge1xuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuXG4gICAgICBpZiAoc2VsZi52aWRlb19saW5rICE9ICcnKSB7XG4gICAgICAgIC8vIGNoZWNrIGZvciB2YWxpZCB1cmxcbiAgICAgICAgY29uc3QgZGV0YWlscyA9IHNlbGYucGFyc2VWaWRlbygpO1xuICAgICAgICBpZiAoZGV0YWlscykge1xuICAgICAgICAgIHNlbGYudmlkZW9fZGV0YWlscyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmFzc2lnbih7fSwgc2VsZi52aWRlb19kZXRhaWxzLCBkZXRhaWxzKSkpO1xuICAgICAgICAgIGlmIChkZXRhaWxzLnR5cGUgPT0gJ3lvdXR1YmUnKSB7XG4gICAgICAgICAgICBzZWxmLmVtYmVkX2xpbmsgPSAnaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvJyArIGRldGFpbHMuaWQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlbGYuZW1iZWRfbGluayA9ICdodHRwczovL3BsYXllci52aW1lby5jb20vdmlkZW8vJyArIGRldGFpbHMuaWQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNlbGYudmlkZW9fdHlwZSA9IGRldGFpbHMudHlwZTtcbiAgICAgICAgICBzZWxmLnZpZGVvX2NvZGUgPSBkZXRhaWxzLmlkO1xuXG4gICAgICAgICAgJCgnLmJyb3dzZUZpbGVzQm94JykuaGlkZSgpO1xuICAgICAgICAgICQoJy51cGxvYWRlZFByZXZpZXcnKS5zaG93KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbW1fbWVzc2FnZXIuZGlzcGxheV90aW1lcl9tZXNzYWdlKHNlbGYuYXBwVHJhbnMubWVzc2FnZXMuZmlsZXMuaGludF9tc2csICd3YXJuaW5nJyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1tX21lc3NhZ2VyLmRpc3BsYXlfdGltZXJfbWVzc2FnZShzZWxmLmFwcFRyYW5zLm1lc3NhZ2VzLmZpbGVzLmhpbnRfbXNnLCAnd2FybmluZycpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0aW5nIHZpZGVvIHVybChhbGxvd2VkIG9ubHkgeW91dHViZSBhbmQgVmltZW8pXG4gICAgICovXG4gICAgcGFyc2VWaWRlbygpIHtcbiAgICAgIGNvbnN0IHJlZiA9IHRoaXMudmlkZW9fbGluay5tYXRjaCgvKGh0dHA6fGh0dHBzOnwpXFwvXFwvKHBsYXllci58d3d3Lik/KHZpbWVvXFwuY29tfHlvdXR1KGJlXFwuY29tfFxcLmJlfGJlXFwuZ29vZ2xlYXBpc1xcLmNvbSkpXFwvKGNoYW5uZWxzXFwvc3RhZmZwaWNrc1xcL3x2aWRlb1xcL3xlbWJlZFxcL3x3YXRjaFxcP3Y9fHZcXC8pPyhbQS1aYS16MC05Ll8lLV0qKShcXCZcXFMrKT8vKTtcbiAgICAgIGlmIChSZWdFeHAuJDMuaW5kZXhPZigneW91dHUnKSA+IC0xICYmIFJlZ0V4cC4kNikge1xuICAgICAgICB2YXIgdHlwZSA9ICd5b3V0dWJlJztcbiAgICAgIH0gZWxzZSBpZiAoUmVnRXhwLiQzLmluZGV4T2YoJ3ZpbWVvJykgPiAtMSAmJiBSZWdFeHAuJDYpIHtcbiAgICAgICAgdmFyIHR5cGUgPSAndmltZW8nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBpZDogUmVnRXhwLiQ2LFxuICAgICAgfTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQWRkIEVwaXNvZGVcbiAgICAgKi9cbiAgICB1cGxvYWRNZWRpYShmaWxlKSB7XG4gICAgICBsZXQgcmVxID0ge1xuICAgICAgICBtZWRpYV90eXBlOiAnaW1hZ2UnLFxuICAgICAgICBjYXJ0b29uX3R5cGU6ICdtYXAnLFxuICAgICAgICBjYXJ0b29uX2lkOiAzOTcsXG4gICAgICAgIGZpbGU6IGZpbGUsXG4gICAgICAgIGxpbmtfdHlwZTogJycsXG4gICAgICB9O1xuICAgICAgLy8gVGhlIHZpZXcgbW9kZWwuXG4gICAgICBobG9hZGVyLm9wZW4oKTtcbiAgICAgIGxldCBzZWxmID0gdGhpcztcblxuICAgICAgdGhpcy4kaHR0cFxuICAgICAgICAucG9zdCgnL3NlcnZpY2UvdXBsb2FkTWVkaWEnLCByZXEpXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgICAgICBobG9hZGVyLmNsb3NlKCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBobG9hZGVyLmNsb3NlKCk7XG4gICAgICAgICAgaWYgKGVycm9yLnJlc3BvbnNlLnN0YXR1cyA9PSA0MDEpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9sb2dvdXQnO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZXJyb3IucmVzcG9uc2Uuc3RhdHVzID09IDQwMykge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL21hcHBpbmcnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgZm9ybWF0RW1iZWRVUkwodXJsX2NvZGUsIHR5cGUpIHtcbiAgICAgIGlmICh0eXBlID09ICd2aW1lbycpIHtcbiAgICAgICAgcmV0dXJuICdodHRwczovL3BsYXllci52aW1lby5jb20vdmlkZW8vJyArIHVybF9jb2RlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICdodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC8nICsgdXJsX2NvZGU7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGdlbmVyYXRlTWVkaWEoKSB7XG4gICAgICAvL3RoaXMuJGVtaXQoJ2dlbmVyYXRlSW1hZ2UnKTtcbiAgICB9XG4gIH0sXG4gIGJlZm9yZU1vdW50KCkgeyB9LFxuICBtb3VudGVkKCkge1xuICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAkKCcjYWRkSW1hZ2VNb2RhbCcpLm9uKCdoaWRlLmJzLm1vZGFsJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIHNlbGYucmVTZXRNZWRpYSgpO1xuICAgIH0pO1xuICB9LFxufTtcbjwvc2NyaXB0PlxuPHN0eWxlIHNjb3BlZD5cbi5kcm9wem9uZS1vdmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHotaW5kZXg6IDk5OTkgIWltcG9ydGFudDtcbn1cblxuLmFkZEltYWdlTW9kYWwge1xuICB6LWluZGV4OiA5OTk4O1xufVxuPC9zdHlsZT5cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL2NvbW1vbi92dWUvY29tcG9uZW50cy9jb21tb24vTWVkaWFMaWJyYXJ5LnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLmRyYWdnYWJsZS1pdGVtIHtcbiAgd2lkdGg6IDIwMHB4O1xuICBtaW4td2lkdGg6IDIwMHB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5naG9zdCB7XG4gIG9wYWNpdHk6IDAuNTtcbiAgYmFja2dyb3VuZDogcmVkO1xufVxuXG4uY2hvc2VuIHtcbiAgb3BhY2l0eTogMC41O1xuICBiYWNrZ3JvdW5kOiBvcmFuZ2U7XG59XG5cbi5kcmFnIHtcbiAgb3BhY2l0eTogMDtcbiAgYmFja2dyb3VuZDogZ3JlZW47XG59XG5cbiNhcHAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZmxleC13cmFwOiB3cmFwO1xufVxuXG4ucmVzaXplMSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW46IDVweDtcbiAgd2lkdGg6IDEwMHB4O1xuICBoZWlnaHQ6IDEwMHB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzNlMmNlO1xuICBtaW4td2lkdGg6IDEwMHB4O1xuICBtYXgtd2lkdGg6IDIwMHB4O1xufVxuXG4ucmVzaXplIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbjogNXB4O1xuICB3aWR0aDogMTAwcHg7XG4gIGhlaWdodDogMTAwcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHJlc2l6ZTogaG9yaXpvbnRhbDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2MzZTJjZTtcbiAgbWluLXdpZHRoOiAxMDBweDtcbiAgbWF4LXdpZHRoOiAyMDBweDtcbn1cblxuLndpZHRoLTE0LWVtcHR5IHtcbiAgbWluLXdpZHRoOiAwcHggIWltcG9ydGFudDtcbiAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9NYXBzL1BhcnRzL0VwaXNvZGVHcm91cEVkaXQudnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4uYWRkdG91Y2hwb2ludE1vZGFsIHtcbiAgei1pbmRleDogOTk5Nztcbn1cblxuLmFkZFdpZGdldE1vZGFsLFxuLmFkZEJyYW5kTW9kYWwsXG4uYWRkQ29udGFjdFJlYXNvbk1vZGFsIHtcbiAgei1pbmRleDogOTk5OTtcbn1cblxuLnRwLXNpemUtb3B0aW9ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogMDtcbiAganVzdGlmeS1jb250ZW50OiBzdHJldGNoO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW4tdG9wOiA4cHg7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4udHAtc2l6ZS1vcHRpb24ge1xuICBmbGV4OiAxIDEgMDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYmFja2dyb3VuZDogI2U2ZjllNjtcbiAgY29sb3I6ICMxY2EyMWM7XG4gIGJvcmRlcjogMnB4IHNvbGlkICMxY2EyMWM7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4ycywgY29sb3IgMC4ycztcbiAgZm9udC1zaXplOiAxOHB4O1xufVxuXG4udHAtc2l6ZS1vcHRpb246bm90KDpsYXN0LWNoaWxkKSB7XG4gIGJvcmRlci1yaWdodDogbm9uZTtcbn1cblxuLnRwLXNpemUtb3B0aW9uLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6ICNhN2FkYWU7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvTWFwcy9QYXJ0cy9Ub3VjaHBvaW50LnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5mbG93LWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG59XG4uc3VwZXItZmxvdy1iYXNlLWRlbW8ge1xuICBtYXJnaW4tbGVmdDogNTBweDtcbiAgLyogQWRqdXN0IHRoZSBmbG93IGNoYXJ0IHBvc2l0aW9uIHRvIGxlYXZlIHNwYWNlIGZvciB0aGUgdGl0bGVzICovXG59XG4uc3VwZXItZmxvd19fbm9kZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG59XG4uZmxvdy1ub2RlIHtcbn1cbi5yZXNpemUtaGFuZGxlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTBweDtcbiAgaGVpZ2h0OiAxMHB4O1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBncmF5O1xuICBjdXJzb3I6IG53c2UtcmVzaXplO1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvTWFwcy9QYXJ0cy9GcmFtZXdvcmtMYW5lLnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLndpZGdldC1zZWxlY3Rpb24tY29udGFpbmVyIHtcbiAgcGFkZGluZzogMDtcbn1cbi8qIFJlc3BvbnNpdmUgYWRqdXN0bWVudHMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAud2lkZ2V0LXR5cGVzLWdyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIGdhcDogMTBweDtcbiAgfVxuXG4gIC53aWRnZXQtb3B0aW9uLWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDEycHg7XG4gIH1cblxuICAucHJlc2V0LW9wdGlvbnMge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAxMHB4O1xuICB9XG5cblxuICAubW9kYWwtZm9vdGVyIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMTVweDtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgfVxuXG4gIC5mb290ZXItYnV0dG9ucyB7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cblxuICAudGV4dCB7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIH1cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL01hcHMvUGFydHMvVFBTaXplT3B0aW9ucy52dWUiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8qIEFkZCBhbnkgc2NvcGVkIHN0eWxlcyBpZiBuZWVkZWQgKi9cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL01hcHMvUGFydHMvV2lkZ2V0SXRlbS52dWUiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLyogQWRkIGFueSB0b3VjaHBvaW50IGxhbmUgc3BlY2lmaWMgc3R5bGVzIGhlcmUgKi9cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL01hcHMvUGFydHMvVG91Y2hwb2ludExhbmUudnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLnRvb2x0aXAtY29udGVudCB7XG4gICAgbWF4LXdpZHRoOiAyNTBweDtcbn1cblxuLnRvb2x0aXAtdGl0bGUge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbWFyZ2luLWJvdHRvbTogNnB4O1xufVxuXG4udG9vbHRpcC1kZXNjIHtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgY29sb3I6ICNjY2M7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL01hcHMvUGFydHMvVG91Y2hwb2ludEVkaXQudnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4ucGVyZm9ybWFuY2VDb2x1bW5zQ29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogMTVweDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbn1cblxuLnBlcmZvcm1hbmNlQ29sdW1uIHtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTBlMGUwO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBwYWRkaW5nOiAxNXB4O1xufVxuXG4ucGVyZm9ybWFuY2VGaWxsZWRTbG90IHtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTBlMGUwO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBwYWRkaW5nOiAxNXB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnBlcmYtc2xvdC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgbWluLWhlaWdodDogMjBweDtcbn1cblxuLnBlcmYtc2xvdC1tZW51IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5wZXJmLXNsb3QtbWVudSAuZHJvcGRvd24tbWVudSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDA7XG4gICAgdG9wOiAxMDAlO1xuICAgIG1pbi13aWR0aDogMTEwcHg7XG4gICAgei1pbmRleDogMTA1MDtcbn1cblxuLnBlcmYtc2xvdC1tZW51OmhvdmVyIC5kcm9wZG93bi1tZW51IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmNvbHVtbkhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlO1xufVxuXG4uY29sdW1uVGl0bGUge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6ICMzMzM7XG59XG5cbi5jb2x1bW5Cb2R5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAxMHB4O1xufVxuXG4uY29sdW1uQm9keSAuZm9ybS1ncm91cCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmNvbHVtbkJvZHkgaW5wdXQsXG4uY29sdW1uQm9keSBzZWxlY3Qge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBmb250LXNpemU6IDEzcHg7XG59XG5cbi5hZGRDb2x1bW5CdG4ge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG59XG5cbi5wZXJmb3JtYW5jZVZpZXdNb2RlIHtcbiAgICBwYWRkaW5nOiAyMHB4O1xufVxuXG4ucGVyZm9ybWFuY2VDb2x1bW5zVmlldyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBnYXA6IDE1cHg7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG59XG5cbi5wZXJmb3JtYW5jZUNvbHVtblZpZXcge1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uY29sdW1uVmlld0NvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDEwcHg7XG59XG5cbi5jb2x1bW5WaWV3TmFtZSB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGNvbG9yOiAjOTk5O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLmNvbHVtblZpZXdWYWx1ZSB7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6ICMzMzM7XG59XG5cbi5oaWRlV2lkZ2V0IHtcbiAgICBvcGFjaXR5OiAwLjY7XG59XG5cbi53aWRnZXQtdHlwZS1saXN0IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDE1MHB4LCAxZnIpKTtcbiAgICBnYXA6IDIwcHg7XG59XG5cbi53aWRnZXQtdHlwZS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1pbi1oZWlnaHQ6IDE4MHB4O1xufVxuXG4ud2lkZ2V0LXR5cGUtaWNvbi1jb250YWluZXIgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICBvYmplY3QtZml0OiBjb250YWluO1xufVxuXG4uZGFya3RoZW1lLWljb24ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ubGlnaHR0aGVtZS1pY29uIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4udGhlbWUtbGlnaHQgLmRhcmt0aGVtZS1pY29uIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4udGhlbWUtbGlnaHQgLmxpZ2h0dGhlbWUtaWNvbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi53aWRnZXQtdHlwZS1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiA4cHg7XG4gICAgZmxleDogMTtcbn1cblxuXG5cbi5wZXJmb3JtYW5jZVNsb3RzIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7XG4gICAgZ2FwOiAxMHB4O1xuICAgIHdpZHRoOiAxMDAlO1xufVxuLnBlcmZvcm1hbmNlU2xvdCB7XG4gICAgbWluLXdpZHRoOiAxMDAlO1xufVxuXG5cblxuXG4uZW1wdHlTbG90IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGNvbG9yOiAjNzc3O1xufVxuXG4ucGVyZi1lbXB0eS1yZWFkb25seSB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgIGJhY2tncm91bmQ6ICNmOWY5Zjk7XG4gICAgYm9yZGVyOiAxcHggZGFzaGVkICNkZGQ7XG59XG5cbi5hZGRTbG90Qm9keSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA2cHg7XG59XG5cbi5hZGRTbG90VGV4dCB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xufVxuXG4uYWRkQ29sdW1uQnRuIHtcbiAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjI1cyBlYXNlO1xufVxuXG4uYWRkQnRuVGV4dCB7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbn1cblxuXG5cbi5wZXJmLXNsaWRlci1pbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5cblxuXG5cblxuXG4uZ2hvc3Qge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBiYWNrZ3JvdW5kOiAjZjVmNWY1O1xufVxuXG5cblxuLmRyYWcge1xuICAgIG9wYWNpdHk6IDE7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9NYXBzL1BhcnRzL1BlcmZvcm1hbmNlQmxvY2sudnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5wZXJmLWN1c3RvbS1maWVsZC1ibG9jayB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiA0cHggMDtcbn1cblxuLnBlcmYtY2Ytcm93IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBnYXA6IDZweDtcbn1cblxuLnBlcmYtY2YtY29sIHtcbiAgZmxleDogMSAxIGF1dG87XG4gIG1pbi13aWR0aDogMDtcbn1cblxuLnBlcmYtY2YtbGFiZWwge1xuICBmb250LXNpemU6IDEwcHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiAjOTk5O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsZXR0ZXItc3BhY2luZzogMC40cHg7XG4gIG1hcmdpbi1ib3R0b206IDNweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbi5wZXJmLWNmLW9wdGlvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGdhcDogM3B4O1xufVxuXG4ucGVyZi1jZi1vcHRpb24ge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAzcHg7XG4gIGZvbnQtc2l6ZTogMTBweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6ICNmZmY7XG4gIHBhZGRpbmc6IDJweCA2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLnBlcmYtY2YtY291bnQge1xuICBmb250LXNpemU6IDlweDtcbiAgb3BhY2l0eTogMC44NTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLnBlcmYtY2YtZW1wdHkge1xuICBmb250LXNpemU6IDExcHg7XG4gIGNvbG9yOiAjYmJiO1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvY29tbW9uL2N1c3RvbUZpZWxkL3ZpZXdNb2RlUGVyZm9ybWFuY2UudnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4uY3VzdG9tLWZpZWxkLXRpdGxlIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuLm5vLW9wdGlvbnMge1xuICAgIGNvbG9yOiAjODg4O1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbn1cblxuLnNlbGVjdGVkLWl0ZW1zIHtcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG59XG5cbi5pdGVtIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgYmFja2dyb3VuZDogI2YwZjBmMDtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIHBhZGRpbmc6IDJweCAxMHB4O1xuICAgIG1hcmdpbi1yaWdodDogNnB4O1xuICAgIG1hcmdpbi1ib3R0b206IDRweDtcbn1cblxuLmRlbGV0ZSB7XG4gICAgbWFyZ2luLWxlZnQ6IDZweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY29sb3I6ICNkMDA7XG59XG5cbi5maWVsZC10eXBlIHtcbiAgICBjb2xvcjogIzg4ODtcbiAgICBmb250LXNpemU6IDEycHg7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9NYXBzL1BhcnRzL0N1c3RvbUZpZWxkU2VsZWN0TW9kYWwudnVlIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4vKiAuY2tlZGl0b3IgdWwsbGkge1xuICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IGRpc2MgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuY2tlZGl0b3Igb2wsbGkge1xuICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IGRlY2ltYWwgIWltcG9ydGFudDtcbiAgICB9ICovXG4vKi5tYWluY29udGFpbmVyIHsqL1xuLypwYWRkaW5nLXRvcDogNzRweDsqL1xuLyp9Ki9cbi5tYWluY29udGFpbmVyIHtcbiAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcbn1cblxuLmZpeGVkSm91cm5leUNsYXNzIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBsZWZ0OiAwO1xuICB0b3A6IDUwcHg7XG4gIHdpZHRoOiAxMDB2dztcbiAgei1pbmRleDogMTA7XG4gIGhlaWdodDogNTBweDtcbn1cblxuLmZpeGVkRnVsbEpvdXJuZXlDbGFzcyB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgbGVmdDogMDtcbiAgdG9wOiA1MHB4O1xuICB3aWR0aDogMTAwdnc7XG4gIHotaW5kZXg6IDEwO1xufVxuXG4uZml4ZWRGdWxsSm91cm5leVJpZ2h0Q2xhc3Mge1xuICBwb3NpdGlvbjogZml4ZWQ7XG59XG5cbi5maXhlZEVwaXNvZGVDbGFzcyB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMHZ3O1xuICB6LWluZGV4OiAxMDtcbiAgaGVpZ2h0OiA1MHB4O1xufVxuXG4uZml4ZWRFcGlzb2RlTWFwT3BlbiB7XG4gIHRvcDogNDUwcHg7XG4gIG1pbi1oZWlnaHQ6IDBweDtcbn1cblxuLmZpeGVkRXBpc29kZU1hcENsb3NlIHtcbiAgdG9wOiAxMTJweDtcbiAgbWluLWhlaWdodDogMHB4O1xufVxuXG4uZml4ZWRKb3VybmV5RXBpc29kZVRvcENsYXNzIHtcbiAgbWFyZ2luLXRvcDogNTBweDtcbn1cblxuLmZpeGVkRXBpc29kZUxhbmVzVG9wQ2xhc3Mge1xuICBtYXJnaW4tdG9wOiAxMDBweDtcbn1cblxuLyouZml4ZWRFcGlzb2RlQ2xhc3MgeyovXG4vKnBvc2l0aW9uOiBmaXhlZDsqL1xuLypsZWZ0OiAwOyovXG4vKnRvcDogMTEycHg7Ki9cbi8qd2lkdGg6IDEwMHZ3OyovXG4vKnotaW5kZXg6IDEwOyovXG4vKmhlaWdodDogNTBweDsqL1xuLyp9Ki9cblxuLm5hdmJhci52dWUtZml4ZWQtaGVhZGVyLS1pc0ZpeGVkIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIHdpZHRoOiAxMDB2dztcbiAgei1pbmRleDogMTA7XG59XG5cbi8qIC5wcmVzZW50TWFpbkNvbnRhaW5lciAuZXBpc29kZXNNYWluRGl2LnN0aWNreUVwaXNvZGVzIC50b3BNb3JlQWN0aW9uc3tcbiAgICAgICAgdG9wOiAxMjBweDtcbiAgICB9ICovXG4uZXh0cmFIZWFkZXJTcGFjZSB7XG4gIHBhZGRpbmctYm90dG9tOiA2NXB4O1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLnJpZ2h0V3JhcHBlciB7XG4gIG92ZXJmbG93OiBpbmhlcml0ICFpbXBvcnRhbnQ7XG59XG5cbi5tYWluSFRNTEN1c3RvbUNsYXNzIHtcbiAgcGFkZGluZy10b3A6IDY1cHg7XG59XG5cbi5ib2R5Q2xhc3NNYXBDbG9zZUVwT3BlbiB7XG4gIG1hcmdpbi10b3A6IDExMHB4O1xufVxuXG4uYm9keUNsYXNzTWFwQ2xvc2VFcENsb3NlIHtcbiAgbWFyZ2luLXRvcDogMTY4cHg7XG59XG5cbi5ib2R5Q2xhc3NNYXBPcGVuRXBDbG9zZSB7XG4gIG1hcmdpbi10b3A6IDU1MHB4O1xufVxuXG4uZXBpc29kZWxlZnRXcmFwcGVyIHtcbiAgei1pbmRleDogNCAhaW1wb3J0YW50O1xufVxuXG4uam91cm5leVN0aWNreUhlYWRlciB7XG4gIHotaW5kZXg6IDE1ICFpbXBvcnRhbnQ7XG59XG5cbi5zdGlja3kge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMTEycHg7XG4gIHotaW5kZXg6IDk5OTtcbn1cblxuLmpvdXJueXN0aWNreSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiA2NXB4O1xuICB6LWluZGV4OiA5OTk7XG59XG5cbi5zdGlja3lSaWdodCB7XG4gIGhlaWdodDogNDAwcHggIWltcG9ydGFudDtcbn1cblxuLmpvdXJuZXlTdGlja3lIZWFkZXJUZXh0IHAge1xuICBtYXJnaW46IDVweCAwcHggLTE5NXB4O1xufVxuXG4uam91cm5leVN0aWNreUhlYWRlckxlZnQge1xuICBtYXJnaW4tdG9wOiA2MHB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1sZWZ0OiAxNnB4O1xufVxuXG4uc3RpY2t5Sm91cm5leUJhciB7XG4gIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQ6ICMxMTBhMWE7XG4gIGhlaWdodDogNTBweDtcbiAgcGFkZGluZzogMTBweCAxNXB4O1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogNTBweDtcbiAgd2lkdGg6IDEwMSU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgei1pbmRleDogOTA7XG4gIGxlZnQ6IDA7XG4gIG1hcmdpbi1sZWZ0OiAtMTVweCAhaW1wb3J0YW50O1xufVxuXG4uam91cm5leVN0aWNreUJhciB7XG4gIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQ6ICMxMTBhMWE7XG4gIGhlaWdodDogNTBweDtcbiAgcGFkZGluZzogMTBweCAxNXB4O1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogNTBweDtcbiAgd2lkdGg6IDEwMSU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgei1pbmRleDogOTtcbiAgbGVmdDogMDtcbiAgbWFyZ2luLWxlZnQ6IC0xNXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5qb3VybmV5Zml4ZWQge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA0MDBweDtcbiAgYmFja2dyb3VuZDogIzExMGExYTtcbiAgdG9wOiA1M3B4O1xuICB6LWluZGV4OiA5ODtcbn1cblxuLmxlZnR3cmFwcGVyIHtcbiAgbGVmdDogMCAhaW1wb3J0YW50O1xufVxuXG4uc3RpY2t5Sm91cm55IHtcbiAgcG9zaXRpb246IC13ZWJraXQtc3RpY2t5O1xuICAvKiBTYWZhcmkgKi9cbiAgcG9zaXRpb246IHN0aWNreTtcbiAgdG9wOiA5OXB4ICFpbXBvcnRhbnQ7XG4gIGxlZnQ6IDBweCAhaW1wb3J0YW50O1xuICB6LWluZGV4OiA1O1xuICBiYWNrZ3JvdW5kOiAjMTEwYTFhO1xufVxuXG4uc3RpY2t5Sm91cm5leUNvbnRlbnQge1xuICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3k7XG4gIC8qIFNhZmFyaSAqL1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDEwMHB4ICFpbXBvcnRhbnQ7XG4gIC8qIHdpZHRoOiAxMDAlOyAqL1xuICBsZWZ0OiAwcHggIWltcG9ydGFudDtcbiAgei1pbmRleDogNTtcbiAgYmFja2dyb3VuZDogIzExMGExYTtcbn1cblxuLnN0aWNrSm91cm55Y29tbWVudHMge1xuICB3aWR0aDogY2FsYygxMDAlIC0gMzUwcHgpO1xuICBsZWZ0OiAzNTBweDtcbn1cblxuLnRvb2x0aXAge1xuICAmLmJzLXRvb2x0aXAtYm90dG9tIHtcbiAgICBtYXJnaW4tdG9wOiAxMXB4ICFpbXBvcnRhbnQ7XG4gIH1cblxuICAmLmJzLXRvb2x0aXAtdG9wIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxMXB4ICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Z1ZS9jb21wb25lbnRzL01hcHMvUHJlc2VudGF0aW9uLnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5tYWluY29udGFpbmVyIHtcbiAgcGFkZGluZy10b3A6IDc0cHg7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9NYXBzL1BhcnRzL0xpc3RPZkNvbW1lbnRzLnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4udG9vbHRpcC1jb250ZW50IHtcbiAgICBtYXgtd2lkdGg6IDI1MHB4O1xufVxuXG4udG9vbHRpcC10aXRsZSB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBtYXJnaW4tYm90dG9tOiA2cHg7XG59XG5cbi50b29sdGlwLWRlc2Mge1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBjb2xvcjogI2NjYztcbiAgICBsaW5lLWhlaWdodDogMS40O1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvTWFwcy9QYXJ0cy9Ub3VjaHBvaW50UHJlc2VudC52dWUiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8qIC5ja2VkaXRvciB1bCxsaSB7XG4gICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogZGlzYyAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5ja2VkaXRvciBvbCxsaSB7XG4gICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogZGVjaW1hbCAhaW1wb3J0YW50O1xuICAgIH0gKi9cbi8qLm1haW5jb250YWluZXIgeyovXG4vKnBhZGRpbmctdG9wOiA3NHB4OyovXG4vKn0qL1xuLm1haW5jb250YWluZXIge1xuICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xufVxuXG4uZml4ZWRKb3VybmV5Q2xhc3Mge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGxlZnQ6IDA7XG4gIHRvcDogNTBweDtcbiAgd2lkdGg6IDEwMHZ3O1xuICB6LWluZGV4OiAxMDtcbiAgaGVpZ2h0OiA1MHB4O1xufVxuXG4uZml4ZWRGdWxsSm91cm5leUNsYXNzIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBsZWZ0OiAwO1xuICB0b3A6IDUwcHg7XG4gIHdpZHRoOiAxMDB2dztcbiAgei1pbmRleDogMTA7XG59XG5cbi5maXhlZEZ1bGxKb3VybmV5UmlnaHRDbGFzcyB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbn1cblxuLmZpeGVkRXBpc29kZUNsYXNzIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwdnc7XG4gIHotaW5kZXg6IDEwO1xuICBoZWlnaHQ6IDUwcHg7XG59XG5cbi5maXhlZEVwaXNvZGVNYXBPcGVuIHtcbiAgdG9wOiA0NTBweDtcbiAgbWluLWhlaWdodDogMHB4O1xufVxuXG4uZml4ZWRFcGlzb2RlTWFwQ2xvc2Uge1xuICB0b3A6IDExMnB4O1xuICBtaW4taGVpZ2h0OiAwcHg7XG59XG5cbi5maXhlZEpvdXJuZXlFcGlzb2RlVG9wQ2xhc3Mge1xuICBtYXJnaW4tdG9wOiA1MHB4O1xufVxuXG4uZml4ZWRFcGlzb2RlTGFuZXNUb3BDbGFzcyB7XG4gIG1hcmdpbi10b3A6IDEwMHB4O1xufVxuXG4vKi5maXhlZEVwaXNvZGVDbGFzcyB7Ki9cbi8qcG9zaXRpb246IGZpeGVkOyovXG4vKmxlZnQ6IDA7Ki9cbi8qdG9wOiAxMTJweDsqL1xuLyp3aWR0aDogMTAwdnc7Ki9cbi8qei1pbmRleDogMTA7Ki9cbi8qaGVpZ2h0OiA1MHB4OyovXG4vKn0qL1xuXG4ubmF2YmFyLnZ1ZS1maXhlZC1oZWFkZXItLWlzRml4ZWQge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDEwMHZ3O1xuICB6LWluZGV4OiAxMDtcbn1cblxuLyogLnByZXNlbnRNYWluQ29udGFpbmVyIC5lcGlzb2Rlc01haW5EaXYuc3RpY2t5RXBpc29kZXMgLnRvcE1vcmVBY3Rpb25ze1xuICAgICAgICB0b3A6IDEyMHB4O1xuICAgIH0gKi9cbi5leHRyYUhlYWRlclNwYWNlIHtcbiAgcGFkZGluZy1ib3R0b206IDY1cHg7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4ucmlnaHRXcmFwcGVyIHtcbiAgb3ZlcmZsb3c6IGluaGVyaXQgIWltcG9ydGFudDtcbn1cblxuLm1haW5IVE1MQ3VzdG9tQ2xhc3Mge1xuICBwYWRkaW5nLXRvcDogNjVweDtcbn1cblxuLmJvZHlDbGFzc01hcENsb3NlRXBPcGVuIHtcbiAgbWFyZ2luLXRvcDogMTEwcHg7XG59XG5cbi5ib2R5Q2xhc3NNYXBDbG9zZUVwQ2xvc2Uge1xuICBtYXJnaW4tdG9wOiAxNjhweDtcbn1cblxuLmJvZHlDbGFzc01hcE9wZW5FcENsb3NlIHtcbiAgbWFyZ2luLXRvcDogNTUwcHg7XG59XG5cbi5lcGlzb2RlbGVmdFdyYXBwZXIge1xuICB6LWluZGV4OiA0ICFpbXBvcnRhbnQ7XG59XG5cbi5qb3VybmV5U3RpY2t5SGVhZGVyIHtcbiAgei1pbmRleDogMTUgIWltcG9ydGFudDtcbn1cblxuLnN0aWNreSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAxMTJweDtcbiAgei1pbmRleDogOTk5O1xufVxuXG4uam91cm55c3RpY2t5IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDY1cHg7XG4gIHotaW5kZXg6IDk5OTtcbn1cblxuLnN0aWNreVJpZ2h0IHtcbiAgaGVpZ2h0OiA0MDBweCAhaW1wb3J0YW50O1xufVxuXG4uam91cm5leVN0aWNreUhlYWRlclRleHQgcCB7XG4gIG1hcmdpbjogNXB4IDBweCAtMTk1cHg7XG59XG5cbi5qb3VybmV5U3RpY2t5SGVhZGVyTGVmdCB7XG4gIG1hcmdpbi10b3A6IDYwcHggIWltcG9ydGFudDtcbiAgbWFyZ2luLWxlZnQ6IDE2cHg7XG59XG5cbi5zdGlja3lKb3VybmV5QmFyIHtcbiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZDogIzExMGExYTtcbiAgaGVpZ2h0OiA1MHB4O1xuICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LXNpemU6IDEzcHg7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiA1MHB4O1xuICB3aWR0aDogMTAxJTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB6LWluZGV4OiA5MDtcbiAgbGVmdDogMDtcbiAgbWFyZ2luLWxlZnQ6IC0xNXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5qb3VybmV5U3RpY2t5QmFyIHtcbiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZDogIzExMGExYTtcbiAgaGVpZ2h0OiA1MHB4O1xuICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LXNpemU6IDEzcHg7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiA1MHB4O1xuICB3aWR0aDogMTAxJTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB6LWluZGV4OiA5O1xuICBsZWZ0OiAwO1xuICBtYXJnaW4tbGVmdDogLTE1cHggIWltcG9ydGFudDtcbn1cblxuLmpvdXJuZXlmaXhlZCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDQwMHB4O1xuICBiYWNrZ3JvdW5kOiAjMTEwYTFhO1xuICB0b3A6IDUzcHg7XG4gIHotaW5kZXg6IDk4O1xufVxuXG4ubGVmdHdyYXBwZXIge1xuICBsZWZ0OiAwICFpbXBvcnRhbnQ7XG59XG5cbi5zdGlja3lKb3Vybnkge1xuICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3k7XG4gIC8qIFNhZmFyaSAqL1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDk5cHggIWltcG9ydGFudDtcbiAgbGVmdDogMHB4ICFpbXBvcnRhbnQ7XG4gIHotaW5kZXg6IDU7XG4gIGJhY2tncm91bmQ6ICMxMTBhMWE7XG59XG5cbi5zdGlja3lKb3VybmV5Q29udGVudCB7XG4gIHBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTtcbiAgLyogU2FmYXJpICovXG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMTAwcHggIWltcG9ydGFudDtcbiAgLyogd2lkdGg6IDEwMCU7ICovXG4gIGxlZnQ6IDBweCAhaW1wb3J0YW50O1xuICB6LWluZGV4OiA1O1xuICBiYWNrZ3JvdW5kOiAjMTEwYTFhO1xufVxuXG4uc3RpY2tKb3Vybnljb21tZW50cyB7XG4gIHdpZHRoOiBjYWxjKDEwMCUgLSAzNTBweCk7XG4gIGxlZnQ6IDM1MHB4O1xufVxuXG4udG9vbHRpcCB7XG4gICYuYnMtdG9vbHRpcC1ib3R0b20ge1xuICAgIG1hcmdpbi10b3A6IDExcHggIWltcG9ydGFudDtcbiAgfVxuXG4gICYuYnMtdG9vbHRpcC10b3Age1xuICAgIG1hcmdpbi1ib3R0b206IDExcHggIWltcG9ydGFudDtcbiAgfVxufVxuXG4uc2tlbGV0b24tbWFpbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5za2VsZXRvbi1ibG9jayB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5za2VsZXRvbiB7XG4gIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9NYXBzL1NoYXJlLnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4vKiAgICAubWFpbmNvbnRhaW5lcntcbiAgICAgICAgcGFkZGluZy10b3A6IDc0cHg7XG4gICAgfSovXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi92dWUvY29tcG9uZW50cy9UZXN0L0dyYXBoLnZ1ZSIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5lbGxpcHNpcyB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG59XG5cbi5zdXBlci1mbG93LWJhc2UtZGVtbyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDgwMHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbiAgb3ZlcmZsb3c6IHNjcm9sbDtcblxuICAuc3VwZXItZmxvdyB7XG4gICAgd2lkdGg6IDE4MDBweDtcbiAgICBoZWlnaHQ6IDEwMDBweDtcbiAgfVxuXG4gIC5zdXBlci1mbG93X19ub2RlIHtcbiAgICAuZmxvdy1ub2RlIHtcbiAgICAgID4gaGVhZGVyIHtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzMnB4O1xuICAgICAgICBwYWRkaW5nOiAwIDEycHg7XG4gICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgfVxuXG4gICAgICA+IHNlY3Rpb24ge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBwYWRkaW5nOiA2cHggMTJweDtcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuICAgICAgfVxuXG4gICAgICAmLmZsb3ctbm9kZS1zdGFydCB7XG4gICAgICAgID4gaGVhZGVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTVhYmZjO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuZmxvdy1ub2RlLWNvbmRpdGlvbiB7XG4gICAgICAgID4gaGVhZGVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmMxZDE2O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuZmxvdy1ub2RlLWN1c3RvbWVySm91cm5leSB7XG4gICAgICAgID4gaGVhZGVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE4OCwgMTgxLCA1OCwgMC43Nik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5mbG93LW5vZGUtYmFja1N0YWdlIHtcbiAgICAgICAgPiBoZWFkZXIge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzMGI5NWM7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5mbG93LW5vZGUtc3VwcG9ydCB7XG4gICAgICAgID4gaGVhZGVyIHtcbiAgICAgICAgICBoZWlnaHQ6IDUwcHg7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDUwcHg7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzU1YWJmYztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvVGVzdC9UZXN0LnZ1ZSIsIi8qIFRvIGxvYWQgY29tcG9uZW50IHNtb290aGx5Ki9cbi5mYWRlLWVudGVyLWFjdGl2ZSwgLmZhZGUtbGVhdmUtYWN0aXZlIHtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXM7XG59XG4uZmFkZS1lbnRlciwgLmZhZGUtbGVhdmUtdG8gLyogLmZhZGUtbGVhdmUtYWN0aXZlIGJlbG93IHZlcnNpb24gMi4xLjggKi8ge1xuICAgIG9wYWNpdHk6IDA7XG59XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2Fzc2V0cy9jc3MvbWFpbi5jc3MiLCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi50ZXh0LXRpbnkge1xuICAgIGZvbnQtc2l6ZTogMC43ZW07XG59XG5cbi50ZXh0LXNtYWxsIHtcbiAgICBmb250LXNpemU6IDAuODVlbTtcbn1cblxuLnRleHQtYmlnIHtcbiAgICBmb250LXNpemU6IDEuNGVtO1xufVxuXG4udGV4dC1odWdlIHtcbiAgICBmb250LXNpemU6IDEuOGVtO1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vdnVlL2NvbXBvbmVudHMvQXBwLnZ1ZSIsIi5yZXNpemUtb2JzZXJ2ZXJbZGF0YS12LTg4NTljYzZjXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7ei1pbmRleDotMTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlcjpub25lO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7cG9pbnRlci1ldmVudHM6bm9uZTtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjtvcGFjaXR5OjB9LnJlc2l6ZS1vYnNlcnZlcltkYXRhLXYtODg1OWNjNmNdIG9iamVjdHtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjtwb2ludGVyLWV2ZW50czpub25lO3otaW5kZXg6LTF9LnYtcG9wcGVyLS10aGVtZS1kcm9wZG93biAudi1wb3BwZXJfX2lubmVye2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMDAwO3BhZGRpbmc6NnB4O2JvcmRlci1yYWRpdXM6NnB4O2JvcmRlcjoxcHggc29saWQgI2RkZDtib3gtc2hhZG93OjAgNnB4IDMwcHggcmdiYSgwLDAsMCwuMSl9LnYtcG9wcGVyLS10aGVtZS1kcm9wZG93biAudi1wb3BwZXJfX2Fycm93LWlubmVye3Zpc2liaWxpdHk6dmlzaWJsZTtib3JkZXItY29sb3I6I2ZmZn0udi1wb3BwZXItLXRoZW1lLWRyb3Bkb3duIC52LXBvcHBlcl9fYXJyb3ctb3V0ZXJ7Ym9yZGVyLWNvbG9yOiNkZGR9LnYtcG9wcGVye3dpZHRoOi13ZWJraXQtbWF4LWNvbnRlbnQ7d2lkdGg6LW1vei1tYXgtY29udGVudDt3aWR0aDptYXgtY29udGVudH0udi1wb3BwZXJfX3BvcHBlcnt6LWluZGV4OjEwMDAwfS52LXBvcHBlcl9fcG9wcGVyLnYtcG9wcGVyX19wb3BwZXItLWhpZGRlbnt2aXNpYmlsaXR5OmhpZGRlbjtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMsdmlzaWJpbGl0eSAuMTVzfS52LXBvcHBlcl9fcG9wcGVyLnYtcG9wcGVyX19wb3BwZXItLXNob3due3Zpc2liaWxpdHk6dmlzaWJsZTtvcGFjaXR5OjE7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXN9LnYtcG9wcGVyX19wb3BwZXIudi1wb3BwZXJfX3BvcHBlci0tc2tpcC10cmFuc2l0aW9uLC52LXBvcHBlcl9fcG9wcGVyLnYtcG9wcGVyX19wb3BwZXItLXNraXAtdHJhbnNpdGlvbj4udi1wb3BwZXJfX3dyYXBwZXJ7dHJhbnNpdGlvbjpub25lIWltcG9ydGFudH0udi1wb3BwZXJfX2lubmVye3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveH0udi1wb3BwZXJfX2Fycm93LWNvbnRhaW5lcnt3aWR0aDoxMHB4O2hlaWdodDoxMHB4fS52LXBvcHBlcl9fYXJyb3ctaW5uZXIsLnYtcG9wcGVyX19hcnJvdy1vdXRlcntib3JkZXItc3R5bGU6c29saWQ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3dpZHRoOjA7aGVpZ2h0OjB9LnYtcG9wcGVyX19hcnJvdy1pbm5lcnt2aXNpYmlsaXR5OmhpZGRlbjtib3JkZXItd2lkdGg6N3B4fS52LXBvcHBlcl9fYXJyb3ctb3V0ZXJ7Ym9yZGVyLXdpZHRoOjZweH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWJvdHRvbV0gLnYtcG9wcGVyX19hcnJvdy1pbm5lciwudi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXRvcF0gLnYtcG9wcGVyX19hcnJvdy1pbm5lcntsZWZ0Oi0ycHh9LnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1ib3R0b21dIC52LXBvcHBlcl9fYXJyb3ctb3V0ZXIsLnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj10b3BdIC52LXBvcHBlcl9fYXJyb3ctb3V0ZXJ7bGVmdDotMXB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49dG9wXSAudi1wb3BwZXJfX2Fycm93LWlubmVyLC52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49dG9wXSAudi1wb3BwZXJfX2Fycm93LW91dGVye2JvcmRlci1ib3R0b20td2lkdGg6MDtib3JkZXItbGVmdC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXRvcF0gLnYtcG9wcGVyX19hcnJvdy1pbm5lcnt0b3A6LTJweH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWJvdHRvbV0gLnYtcG9wcGVyX19hcnJvdy1jb250YWluZXJ7dG9wOjB9LnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1ib3R0b21dIC52LXBvcHBlcl9fYXJyb3ctaW5uZXIsLnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1ib3R0b21dIC52LXBvcHBlcl9fYXJyb3ctb3V0ZXJ7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1sZWZ0LWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItcmlnaHQtY29sb3I6dHJhbnNwYXJlbnQhaW1wb3J0YW50O2JvcmRlci10b3AtY29sb3I6dHJhbnNwYXJlbnQhaW1wb3J0YW50fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49Ym90dG9tXSAudi1wb3BwZXJfX2Fycm93LWlubmVye3RvcDotNHB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49Ym90dG9tXSAudi1wb3BwZXJfX2Fycm93LW91dGVye3RvcDotNnB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49bGVmdF0gLnYtcG9wcGVyX19hcnJvdy1pbm5lciwudi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXJpZ2h0XSAudi1wb3BwZXJfX2Fycm93LWlubmVye3RvcDotMnB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49bGVmdF0gLnYtcG9wcGVyX19hcnJvdy1vdXRlciwudi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXJpZ2h0XSAudi1wb3BwZXJfX2Fycm93LW91dGVye3RvcDotMXB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49cmlnaHRdIC52LXBvcHBlcl9fYXJyb3ctaW5uZXIsLnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1yaWdodF0gLnYtcG9wcGVyX19hcnJvdy1vdXRlcntib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1sZWZ0LWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItdG9wLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXJpZ2h0XSAudi1wb3BwZXJfX2Fycm93LWlubmVye2xlZnQ6LTRweH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXJpZ2h0XSAudi1wb3BwZXJfX2Fycm93LW91dGVye2xlZnQ6LTZweH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWxlZnRdIC52LXBvcHBlcl9fYXJyb3ctY29udGFpbmVye3JpZ2h0Oi0xMHB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49bGVmdF0gLnYtcG9wcGVyX19hcnJvdy1pbm5lciwudi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWxlZnRdIC52LXBvcHBlcl9fYXJyb3ctb3V0ZXJ7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLXRvcC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWxlZnRdIC52LXBvcHBlcl9fYXJyb3ctaW5uZXJ7bGVmdDotMnB4fS52LXBvcHBlci0tdGhlbWUtdG9vbHRpcCAudi1wb3BwZXJfX2lubmVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuOCk7Y29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjZweDtwYWRkaW5nOjdweCAxMnB4IDZweH0udi1wb3BwZXItLXRoZW1lLXRvb2x0aXAgLnYtcG9wcGVyX19hcnJvdy1vdXRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuOCl9XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbm9kZV9tb2R1bGVzL3YtdG9vbHRpcC9kaXN0L3YtdG9vbHRpcC5jc3MiXSwic291cmNlUm9vdCI6IiJ9*/