ctt-babylon 0.26.21 → 0.26.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -536,14 +536,18 @@ export class LisC4TxtDesCtaComponent {
536
536
  const resolvedImg = this.getFirstImageByTag(this.tagName, item.images ?? item?.multimedia?.imagenes) ??
537
537
  item.images?.[0] ??
538
538
  item?.multimedia?.imagenes?.[0] ??
539
+ item?.img?.[0] ??
540
+ item?.img ??
539
541
  '/assets/babylon/svg/empty.png';
540
542
  if (typeof resolvedImg !== 'string') {
541
- return resolvedImg?.img?.src ?? '/assets/babylon/svg/empty.png';
543
+ return (resolvedImg?.img?.src ??
544
+ resolvedImg?.src ??
545
+ '/assets/babylon/svg/empty.png');
542
546
  }
543
547
  return resolvedImg;
544
548
  }
545
549
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LisC4TxtDesCtaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
546
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: LisC4TxtDesCtaComponent, isStandalone: true, selector: "lis-c4-txt-des-cta", inputs: { texts: "texts", items: "items", links: "links", additional1LikeMarca: "additional1LikeMarca", showCleanFilters: "showCleanFilters", experiences: "experiences", destinations: "destinations", showDestinations: "showDestinations", showFilters: "showFilters", maxColumns: "maxColumns", hideServicesFilter: "hideServicesFilter", tags: "tags", textColors: "textColors" }, usesOnChanges: true, ngImport: i0, template: "@if (items?.length) {\n <section class=\"mdl-md002\">\n <div class=\"mdl-container\">\n <div class=\"m-content-top\">\n @if (texts?.title) {\n <lib-babylon-dynamic-heading\n [tag]=\"tags?.title || 'h2'\"\n cssClass=\"m-title\"\n [content]=\"texts?.title ?? ''\"\n [color]=\"textColors?.title\"\n ></lib-babylon-dynamic-heading>\n }\n @if (showFilters) {\n <div class=\"m-selects\">\n @if (hasActiveFilters && showCleanFilters) {\n <button\n type=\"button\"\n class=\"m-clear\"\n (click)=\"clearFilters()\"\n >\n {{ texts?.cleanFilters ?? 'Limpiar filtros' }}\n </button>\n }\n @if (\n !hideServicesFilter && availableServices.length > 0\n ) {\n @if (availableServices.length === 1) {\n <div\n class=\"m-services-single services-filter services-filter__single\"\n >\n <div class=\"m-checkbox-group\">\n <input\n type=\"checkbox\"\n id=\"single-srv-0\"\n [checked]=\"\n selectedServices.has(\n availableServices[0]\n )\n \"\n (change)=\"\n toggleService(\n availableServices[0]\n )\n \"\n />\n <label for=\"single-srv-0\">{{\n availableServices[0]\n }}</label>\n </div>\n </div>\n } @else {\n <div\n class=\"m-services-filter m-select services-filter services-filter__multi\"\n >\n <button\n type=\"button\"\n class=\"m-services-btn\"\n (click)=\"toggleServicesMenu()\"\n >\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 6H20M7 12H17M10 18H14\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n @if (\n texts?.servicestitle ||\n selectedServices.size > 0\n ) {\n <span>\n @if (texts?.servicestitle) {\n {{ texts?.servicestitle }}\n }\n @if (\n selectedServices.size > 0\n ) {\n ({{\n selectedServices.size\n }})\n }\n </span>\n }\n </button>\n\n @if (isServicesMenuOpen) {\n <div\n class=\"m-services-overlay\"\n (click)=\"toggleServicesMenu()\"\n ></div>\n\n <div class=\"m-services-dropdown\">\n <div class=\"m-dropdown-header\">\n <span\n class=\"m-close\"\n (click)=\"\n toggleServicesMenu()\n \"\n >\u2715</span\n >\n </div>\n <div class=\"m-dropdown-content\">\n @for (\n srv of availableServices;\n track $index\n ) {\n <div\n class=\"m-checkbox-group\"\n >\n <input\n type=\"checkbox\"\n [id]=\"\n 'srv-' + $index\n \"\n [checked]=\"\n selectedServices.has(\n srv\n )\n \"\n (change)=\"\n toggleService(\n srv\n )\n \"\n />\n <label\n [for]=\"\n 'srv-' + $index\n \"\n >{{ srv }}</label\n >\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n }\n <div class=\"m-select brand-filter\">\n <select\n #BrandSel\n [attr.aria-label]=\"texts?.marca ?? 'marca'\"\n [(ngModel)]=\"selectedBrand\"\n (ngModelChange)=\"onBrandChange($event)\"\n >\n <option value=\"\">\n {{ texts?.marca ?? 'All' }}\n </option>\n @for (opt of brandOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n @if (experienceOptions.length > 0) {\n <div class=\"m-select experience-filter\">\n <select\n #ExperienceSel\n aria-label=\"Experiencias\"\n [(ngModel)]=\"selectedExperience\"\n (ngModelChange)=\"onExperienceChange($event)\"\n >\n <option value=\"\">Experiencias</option>\n @for (\n opt of experienceOptions;\n track $index\n ) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n }\n @if (texts?.hotelType) {\n <div class=\"m-select hoteltype-filter\">\n <select\n #hotelTypeSel\n [attr.aria-label]=\"\n texts?.hotelType ?? 'hoteles'\n \"\n [(ngModel)]=\"selectedHotelType\"\n (ngModelChange)=\"onHotelTypeChange($event)\"\n >\n <option value=\"\">\n {{ texts?.hotelType }}\n </option>\n @for (\n opt of hotelTypeOptions;\n track $index\n ) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n }\n\n <div class=\"m-select destination-filter\">\n <select\n #Destination\n [attr.aria-label]=\"\n texts?.destinations ?? 'destinos'\n \"\n [(ngModel)]=\"selectedDestination\"\n (ngModelChange)=\"onDestinationChange($event)\"\n >\n <option value=\"\">\n {{ texts?.destinations }}\n </option>\n @for (opt of destinationOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n </div>\n }\n </div>\n\n <div\n class=\"m-cards-container\"\n [style.--maxColumns]=\"maxColumns ?? 4\"\n >\n @if (filteredItems?.length) {\n @for (item of filteredItems; track $index) {\n <div\n class=\"m-card\"\n [ngClass]=\"{\n cardempty:\n !getFirstImageByTag(\n tagName,\n item?.images ??\n item?.multimedia?.imagenes ??\n []\n ) &&\n !(\n item.images?.[0] ??\n item?.multimedia?.imagenes?.[0]\n ),\n }\"\n >\n @if (getImageUrl(item); as img) {\n <a\n class=\"link-container\"\n [href]=\"item.links?.[0]?.url\"\n [linkType]=\"item.links?.[0]?.linkType\"\n [disablePointerNone]=\"true\"\n >\n <div\n class=\"m-card-top\"\n [style.background-image]=\"\n 'url(' + img + ')'\n \"\n >\n <div class=\"m-tag-left\">\n @if (item.hoteltype) {\n {{ item.hoteltype }}\n }\n <div class=\"m-keys\">\n @if (\n (item?.hoteltype ===\n 'Hotel' ||\n item?.hoteltype ===\n 'H\u00F4tel') &&\n item?.hotelcategory\n ) {\n <div class=\"category\">\n @for (\n item of getNumber(\n item?.hotelcategory ??\n ''\n );\n track $index\n ) {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n >\n <g\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g>\n <g>\n <g\n transform=\"translate(-1404.000000, -5922.000000) translate(191.000000, 5865.000000) translate(1109.000000, 57.000000)\"\n >\n <g>\n <path\n fill=\"#fff\"\n fill-opacity=\"1\"\n fill-rule=\"nonzero\"\n d=\"M10 0l2.294 7.104c.034.106.133.178.245.178L20 7.267l-6.046 4.374v.001c-.09.066-.128.182-.093.289l2.322 7.095-6.032-4.4c-.09-.065-.213-.065-.303 0l-6.029 4.4 2.322-7.095H6.14c.035-.107-.003-.223-.094-.289L0 7.268l7.461.015.001-.001c.112 0 .211-.072.245-.178L10 0z\"\n transform=\"translate(104.000000, 0.000000)\"\n />\n </g>\n </g>\n </g>\n </g>\n </g>\n </svg>\n }\n </div>\n }\n\n @if (\n (item?.hoteltype ===\n 'Apartamento' ||\n item?.hoteltype ===\n 'Appartement') &&\n item?.hotelcategory\n ) {\n <div class=\"category\">\n @for (\n item of getNumber(\n item?.hotelcategory ??\n ''\n );\n track $index\n ) {\n <svg\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.146296 4.26479L1.14015 2.01692C1.31289 1.62559 1.62559 1.31289 2.01692 1.14015L4.26479 0.146297C4.58174 0.00641826 4.93356 -0.0343944 5.27412 0.0292127C5.61467 0.0928198 5.92805 0.257876 6.17314 0.50273L7.9475 2.27839C8.1606 2.49155 8.31388 2.75701 8.39197 3.04813C8.47006 3.33925 8.4702 3.64578 8.39239 3.93698L7.93579 5.64109L12.866 10.5713C12.9085 10.6136 12.9422 10.6639 12.9652 10.7193C12.9882 10.7746 13 10.834 13 10.8939V12.5447C12.9993 12.6652 12.9511 12.7807 12.8659 12.8659C12.7807 12.9511 12.6652 12.9993 12.5447 13H10.8939C10.7926 12.9998 10.6942 12.9659 10.6142 12.9038C10.5341 12.8416 10.477 12.7547 10.4516 12.6566L10.2045 11.6796L9.3303 11.5131C9.24322 11.4968 9.16282 11.4553 9.09903 11.3938C9.03523 11.3323 8.99082 11.2535 8.97127 11.1671L8.73321 10.1173L7.89026 10.0367C7.78479 10.0274 7.68608 9.9808 7.61188 9.90528L5.64109 7.93579L3.93697 8.39239C3.6458 8.47047 3.33919 8.47046 3.04802 8.39236C2.75685 8.31426 2.4914 8.16082 2.27839 7.9475L0.502729 6.17314C0.257875 5.92805 0.0928202 5.61467 0.029213 5.27412C-0.0343943 4.93357 0.00641727 4.58174 0.146296 4.26479ZM3.6703 5.08953C3.81061 5.22968 3.98932 5.32508 4.18385 5.36369C4.37837 5.40229 4.57997 5.38236 4.76317 5.30641C4.94636 5.23047 5.10294 5.10191 5.21309 4.937C5.32324 4.7721 5.38203 4.57823 5.38203 4.37991C5.38203 4.1816 5.32324 3.98773 5.21309 3.82283C5.10294 3.65792 4.94636 3.52936 4.76317 3.45342C4.57997 3.37747 4.37837 3.35754 4.18385 3.39614C3.98932 3.43475 3.81061 3.53015 3.6703 3.6703C3.57689 3.76336 3.50277 3.87395 3.45219 3.99572C3.40162 4.1175 3.37558 4.24806 3.37558 4.37991C3.37558 4.51177 3.40162 4.64233 3.45219 4.76411C3.50277 4.88588 3.57689 4.99647 3.6703 5.08953Z\"\n fill=\"#fff\"\n fill-opacity=\"1\"\n />\n </svg>\n }\n </div>\n }\n </div>\n {{ showIfSup(item?.hotelcategory) }}\n </div>\n @if (item?.texts?.additional2) {\n <div\n class=\"m-tag-right\"\n [ngClass]=\"{\n 'left-mode':\n !item.hoteltype,\n }\"\n [style.backgroundColor]=\"\n item?.styles?.primary ??\n '#ff4338'\n \"\n >\n {{ item?.texts?.additional2 }}\n </div>\n }\n </div>\n </a>\n <div class=\"m-content\">\n @if (\n item.texts?.title || item.texts?.name\n ) {\n <div class=\"m-title\">\n {{\n item.texts?.title ??\n item.texts?.name\n }}\n </div>\n }\n\n <div class=\"m-subtitle\">\n @if (item.locality) {\n {{ item.locality }}\n }\n @if (item.locality && item.province) {\n -\n }\n @if (item.province) {\n {{ item.province }}\n }\n </div>\n\n @if (item.buttons?.length) {\n @for (\n btn of item.buttons;\n track $index\n ) {\n <a\n class=\"m-btn\"\n [ngClass]=\"{\n 'm-button-sm':\n $index % 2 === 0,\n 'm-but m-underline':\n $index % 2 !== 0,\n }\"\n [style.--btn-primary-dynamic]=\"\n item.styles?.primary\n \"\n [style.--btn-hover-dynamic]=\"\n item.styles?.primaryHover\n \"\n [href]=\"\n getButtonUrl(\n btn,\n item,\n $index\n )\n \"\n [attr.target]=\"\n btn.target || '_self'\n \"\n [linkType]=\"btn.linkType\"\n [attr.aria-label]=\"btn.label\"\n >\n <span>{{ btn.label }}</span>\n </a>\n }\n }\n </div>\n }\n </div>\n }\n } @else {\n <div class=\"m-empty\">\n {{\n texts?.notFound ??\n 'No se encontraron resultados con esos filtros.'\n }}\n </div>\n }\n </div>\n </div>\n </section>\n}\n", styles: ["@charset \"UTF-8\";.m-button-big{display:block;min-width:max-content;max-width:100%;width:33rem;text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;background-color:#ff4338;border-radius:.4rem;transition:.3s ease;height:4.8rem;cursor:pointer;position:relative;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button-big{font-size:1.6rem}}.m-button-big.red{background-color:#ff4338}@media (hover: hover){.m-button-big.red:hover{background-color:#ed3b37}}.m-button-big.blue{background-color:#5b87da}@media (hover: hover){.m-button-big.blue:hover{background-color:#446ecd}}.m-button-big.green{background-color:#3fd5ae}@media (hover: hover){.m-button-big.green:hover{background-color:#2ec99b}}.m-button-big.underline{color:#fff;border:.1rem solid white;background-color:transparent}@media (hover: hover){.m-button-big.underline:hover{border:.1rem solid #ed3b37;background-color:#ed3b37}}.m-button-big span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content}@media (hover: hover){.m-button-big:hover{background-color:#ed3b37}}.m-button-sm{display:block;min-width:max-content;width:100%;max-width:26rem;text-align:center;cursor:pointer;box-sizing:border-box;padding:1.1rem;color:#fff;border-radius:.4rem;transition:.3s ease;height:4.8rem;position:relative;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button-sm{font-size:1.6rem}}.m-button-sm span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content;color:var(--cl_btn-call-text-hover)}@media (hover: hover){.m-button-sm:hover{background-color:#ed3b37}.m-button-sm:hover span{color:var(--cl_btn-call-text-hover)}}.m-button-sm:focus{background-color:#ed3b37}.m-button-sm:focus span{color:var(--cl_btn-call-text-hover)}.m-underline{display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;color:var(--cl_title);font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline{font-size:1.6rem}}@media (hover: hover){.m-underline:hover:after,.m-underline.active:after{opacity:1;width:100%}}.m-underline:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;z-index:1}.m-underline:after{content:\"\";position:absolute;bottom:0rem;left:0;opacity:0;width:0%;height:.2rem;background-color:#ed3b37;transition:.3s ease;z-index:2}.m-underline-red{color:var(--cl_btn-link);display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-red{font-size:1.6rem}}.m-underline-red:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:var(--cl_btn-link);z-index:1}.m-underline-red:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#ed3b37;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-red:hover{color:#ed3b37}.m-underline-red:hover:after{width:100%}}.m-underline-blue{color:var(--cl_btn-link);display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-blue{font-size:1.6rem}}.m-underline-blue:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:var(--cl_btn-link);z-index:1}.m-underline-blue:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#446ecd;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-blue:hover{color:#446ecd}.m-underline-blue:hover:after{width:100%}}.m-underline-green{color:var(--cl_btn-link);display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-green{font-size:1.6rem}}.m-underline-green:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:var(--cl_btn-link);z-index:1}.m-underline-green:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#2ec99b;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-green:hover{color:#2ec99b}.m-underline-green:hover:after{width:100%}}.m-swiper-button{width:4.8rem;height:4.8rem;background-color:#ff4338;transition:.3s ease;cursor:pointer;position:relative}.m-swiper-button.swiper-button-disabled{opacity:.7}.m-swiper-button svg{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.m-swiper-button.prev{border-top-left-radius:8rem;border-bottom-left-radius:8rem}.m-swiper-button.next{border-top-right-radius:8rem;border-bottom-right-radius:8rem}@media (hover: hover){.m-swiper-button:hover{background-color:#ed3b37}}@media (max-width: 768px){.m-swiper-button{width:3.8rem;height:3.8rem}}@media (max-width: 540px){.m-swiper-button{width:3.2rem;height:3.2rem}.m-swiper-button svg{width:.5rem}}.m-swiper-button-s{width:3rem;height:3rem;background-color:#ff4338;transition:.3s ease;cursor:pointer;position:relative;border-radius:100%}.m-swiper-button-s svg{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.m-swiper-button-s.prev svg{left:45%}.m-swiper-button-s.next svg{left:55%}@media (hover: hover){.m-swiper-button-s:hover{background-color:#ed3b37}}.m-button-close{background-color:#ff4338;width:4.4rem;height:4.4rem;border-radius:100%;transition:.3s ease;cursor:pointer;position:relative}.m-button-close svg{transition:transform .4s ease;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}@media (hover: hover){.m-button-close:hover{background-color:#ed3b37}.m-button-close:hover svg{transform:rotate(180deg)}}.m-button{display:block;width:max-content;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button{font-size:1.6rem}}.m-button{text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;background-color:#ff4338;border-radius:.4rem;transition:.3s ease}@media (hover: hover){.m-button:hover{background-color:#ed3b37}}@media (max-width: 540px){.m-button{min-width:unset;max-width:33rem;width:100%;font-size:1.6rem}}.m-button2{display:block;width:max-content;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button2{font-size:1.6rem}}.m-button2{text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;border-radius:.4rem;transition:.3s ease;background-color:transparent;border:.1rem solid white}.m-button2.red{background-color:#ff4338}@media (hover: hover){.m-button2.red:hover{background-color:#ed3b37}}.m-button2.blue{background-color:#5b87da}@media (hover: hover){.m-button2.blue:hover{background-color:#446ecd}}.m-button2.green{background-color:#3fd5ae}@media (hover: hover){.m-button2.green:hover{background-color:#2ec99b}}.m-button2.underline{color:#fff;border:.1rem solid white;background-color:transparent}@media (hover: hover){.m-button2.underline:hover{border:.1rem solid #ed3b37;background-color:#ed3b37}}@media (hover: hover){.m-button2:hover{background-color:#ed3b37}}@media (max-width: 540px){.m-button2{min-width:unset;max-width:33rem;width:100%;font-size:1.6rem}}select.mini-arrow{position:relative;background-image:url(/assets/babylon/img/icons/icon-caret-down.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 0.8rem)\";background-position-y:50%;min-width:.8rem}.m-checkbox-group .m-checkbox:checked,.m-checkbox-group input:checked{background-color:#fff;background-image:url(/assets/babylon/img/icons/icon-check.svg);background-position:center;background-repeat:no-repeat;background-size:1.6rem;position:relative;left:0rem;top:0rem}.m-input.m-calendar{background-image:url(/assets/babylon/img/icons/icon-calendar-blue.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 2rem)\";background-position-y:50%}input[type=date]::-webkit-inner-spin-button,input[type=date]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none}input:not([type=radio]):not([type=checkbox]),textarea,select{background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::placeholder,textarea::placeholder,select::placeholder{font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-moz-placeholder,textarea::-moz-placeholder,select::-moz-placeholder{font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-ms-input-placeholder,textarea::-ms-input-placeholder,select::-ms-input-placeholder{font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-webkit-input-placeholder,textarea::-webkit-input-placeholder,select::-webkit-input-placeholder{font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px var(--cl_background_gray) inset!important;-webkit-text-fill-color:white!important;transition:background-color 5000s ease-in-out 0s}select{position:relative;cursor:pointer}select.mini-arrow{position:relative;background-image:url(/assets/babylon/img/icons/icon-caret-down.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 0.8rem)\";background-position-y:50%;min-width:.8rem}select option{font-family:var(--font-text);font-size:1.4rem;font-weight:var(--w_text);color:var(--cl_dropdown-text)}.m-checkbox-group{display:flex;flex-direction:row;align-items:flex-start}.m-checkbox-group .m-checkbox,.m-checkbox-group input{border-radius:0!important;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:2.8rem;height:2.8rem;border:.1rem solid #d2d2d2;background-color:transparent;padding:0;margin-right:2rem;border-radius:0;cursor:pointer;position:relative}.m-checkbox-group .m-checkbox:checked,.m-checkbox-group input:checked{background-color:#fff;background-image:url(/assets/babylon/img/icons/icon-check.svg);background-position:center;background-repeat:no-repeat;background-size:1.6rem;position:relative;left:0rem;top:0rem}.m-checkbox-group label{font-family:var(--font-text);font-size:1.3rem;font-weight:600;max-width:\"calc(100% - 5rem)\"}.m-radio-group{display:flex;flex-direction:row;align-items:center}.m-radio-group .m-radio{-webkit-appearance:none;width:2.8rem;height:2.8rem;border:.2rem solid #d2d2d2;background-color:transparent;border-radius:50%;padding:0;margin-right:2rem;cursor:pointer;position:relative}.m-radio-group .m-radio:checked{background-color:#fff!important}.m-radio-group .m-radio:checked:after{content:\" \";position:absolute;top:50%;left:50%;width:1.6rem;height:1.6rem;border-radius:50%;background-color:var(--cl_radio);transform:translate(-50%,-50%)}.m-radio-group label{font-family:var(--font-text);font-size:1.4rem;font-weight:500;max-width:\"calc(100% - 5rem)\"}.m-input.m-calendar{background-image:url(/assets/babylon/img/icons/icon-calendar-blue.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 2rem)\";background-position-y:50%}html{font-size:62.5%;overflow-x:hidden}html.overflow-hidden{overflow:hidden}html body{font:14px \"\"}@media (min-width: 1921px) and (max-height: 600px){html{font-size:55.5%}}html a{text-decoration:none}h1,h2,h3,h4,h5,h6{all:unset;display:revert}.fancybox__viewport{background-color:#fff}.fancybox__viewport.no-idiomas{background-color:red}section[class*=mdl]{padding-left:10rem;padding-right:10rem;box-sizing:border-box}@media (max-width: 1366px){section[class*=mdl]{padding-left:9rem;padding-right:9rem}}@media (max-width: 1280px){section[class*=mdl]{padding-left:8rem;padding-right:8rem}}@media (max-width: 1080px){section[class*=mdl]{padding-left:9.5rem;padding-right:9.5rem}}@media (max-width: 768px){section[class*=mdl]{padding-left:7.7rem;padding-right:7.7rem}}@media (max-width: 540px){section[class*=mdl]{padding-left:4.1rem;padding-right:4.1rem}}@media (max-width: 375px){section[class*=mdl]{padding-left:2.7rem;padding-right:2.7rem}}section .mdl-container{width:100%;max-width:160rem;margin:0 auto}.readmoreinit{overflow:hidden}.readmoreinit{line-height:1.6!important}@media screen and (max-width: 1200px){.readmoreinit{line-height:1.6!important}}@media screen and (max-width: 600px){.readmoreinit{line-height:1.6!important}}.read-more{display:flex;flex-direction:column;font-family:var(--font-text);font-size:1.5rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.4;letter-spacing:normal;color:#e6411e;text-decoration:underline;cursor:pointer;margin-top:2rem}.read-more .less{display:none}.w100{font-weight:100}.w300{font-weight:300}.w400{font-weight:400}.w500{font-weight:medium}.w600{font-weight:600}.w700{font-weight:700}.w900{font-weight:900}.italic{font-style:italic}.row{display:flex;flex-direction:row}.col{display:flex;flex-direction:column}html{overflow-x:hidden}body{cursor:default;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{color:inherit;border:0;margin:0;padding:0}a{text-size-adjust:none;-webkit-text-size-adjust:none;text-decoration:none;cursor:pointer}ul{list-style-position:outside}li{padding-left:3rem;list-style:none;position:relative}li:before{content:\"\\25cf\";position:absolute;top:0;left:0}button,mark{background:none}button,label{cursor:pointer}:focus{outline:none!important}::-moz-focus-inner{border:0}summary::-webkit-details-marker{display:none}button,input[type=submit],input[type=text]{-webkit-appearance:none}h1,h2,h3,h4,h5,h6{text-transform:none}p{width:100%}img{width:auto;height:auto;object-fit:contain}@-webkit-keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}@keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}.fancybox__container{background-color:#fff}.fancybox__container .fancybox__slide{flex-direction:column-reverse}.fancybox__container .fancybox__backdrop,.fancybox__container .fancybox__counter{display:none}.fancybox__container .fancybox__caption{color:var(--cl_btn-link);text-align:center;font-family:var(--font-text);font-weight:400;font-size:1.8rem;line-height:3.9rem;padding:0rem 0 2rem}@media (max-width: 540px){.fancybox__container .fancybox__caption{font-size:1.5rem}}@media (max-width: 375px){.fancybox__container .fancybox__caption{font-size:1.3rem}}.fancybox__container .fancybox__thumbs{display:none}.fancybox__container .fancybox__nav .carousel__button{background-color:#ff4338;top:55%}.fancybox__container .fancybox__nav .carousel__button svg{stroke:#fff;stroke-width:.3rem}.fancybox__container .carousel__button.is-close svg{display:none}.fancybox__container .carousel__button.is-close{background:url(/assets/babylon/img/icons/closeRed.svg) no-repeat center;background-size:100%;width:4.2rem;height:4.2rem;top:-4.7rem;right:-5rem;transition:transform .3s ease;transform:rotate(0)}.fancybox__container .carousel__button.is-close:hover{transition:transform .3s ease;transform:rotate(180deg)}@media (max-width: 540px){.fancybox__container .carousel__button.is-close{width:3rem;height:3rem}}.fancybox__container .fancybox__toolbar{border-bottom:none;margin:0 0 0 auto;padding:1rem}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items button:not(.fancybox__button--close){display:none}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close{background-color:#ff4338}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close svg{width:40%}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close svg path{stroke:#fff;stroke-width:.3rem}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-background-clip:text;-webkit-text-fill-color:#ffffff;transition:background-color 5000s ease-in-out 0s;box-shadow:inset 0 0 20px 20px #23232329}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.mdl-md002{background-color:var(--cl_background_body)}.mdl-md002.p-top{margin-top:10rem}.mdl-md002 .mdl-container{display:flex;flex-direction:column;gap:4rem;align-items:center}.mdl-md002 .mdl-container .m-content-top{width:100%;display:flex;flex-direction:row;justify-content:space-between;align-items:flex-end}.mdl-md002 .mdl-container .m-content-top .m-title{font-family:var(--font-text);font-weight:300;font-size:4.4rem;line-height:5.8rem}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:3.6rem;line-height:4.8rem}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:3rem;line-height:4rem}}@media (max-width: 375px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:2.4rem;line-height:3rem}}.mdl-md002 .mdl-container .m-content-top .m-title{width:100%;max-width:54.4rem;color:var(--cl_btn-link);font-weight:400}.mdl-md002 .mdl-container .m-content-top .m-selects{display:inline-block;display:flex;gap:2.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single{display:flex;align-items:center;height:4.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single .m-checkbox-group{margin:0;align-items:center}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single .m-checkbox-group input[type=checkbox]{margin-right:1rem;width:2rem;height:2rem;flex-shrink:0;border:.1rem solid #d2d2d2;border-radius:.4rem!important;cursor:pointer}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single .m-checkbox-group input[type=checkbox]:checked{background-color:var(--cl_btn-link, #ff4338);border-color:var(--cl_btn-link, #ff4338);background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E\")!important;background-size:1.2rem;background-position:center;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single .m-checkbox-group label{margin:0;font-size:1.4rem;cursor:pointer;font-weight:500;color:var(--cl_btn-link);max-width:none}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter{position:relative}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-btn{display:flex;align-items:center;gap:.8rem;padding:.5rem 4rem .5rem 1rem;font-size:1.4rem;color:var(--cl_btn-link);border:.1rem solid var(--cl_btn-link);border-radius:.5rem;background-color:#fff;cursor:pointer;min-height:4.4rem;font-family:var(--font-text);font-weight:500;width:100%}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-btn svg{width:2rem;height:2rem;stroke:#ff4338}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:90;cursor:default}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown{position:absolute;top:110%;left:0;background:#fff;border:1px solid #e4e4e4;border-radius:.8rem;box-shadow:0 4px 12px #0000001a;z-index:100;min-width:25rem;max-height:35rem;display:flex;flex-direction:column}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-header{display:flex;justify-content:flex-end;padding:1rem 1.5rem;border-bottom:1px solid #e4e4e4}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-header .m-close{cursor:pointer;font-weight:700;font-size:1.6rem;color:#4a4a49}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content{padding:1.5rem;overflow-y:auto;display:flex;flex-direction:column;gap:1.2rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content .m-checkbox-group{display:flex;align-items:center;margin-bottom:0}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content .m-checkbox-group input[type=checkbox]{margin-right:1rem;width:2rem;height:2rem;flex-shrink:0;border:.1rem solid #d2d2d2;border-radius:.4rem!important;cursor:pointer}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content .m-checkbox-group input[type=checkbox]:checked{background-color:var(--cl_btn-link, #ff4338);border-color:var(--cl_btn-link, #ff4338);background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E\")!important;background-size:1.2rem;background-position:center;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content .m-checkbox-group label{margin:0;font-size:1.4rem;cursor:pointer;font-weight:400;color:var(--cl_btn-link);max-width:none}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select{position:relative}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select select{width:20rem;padding:.5rem 2rem .5rem 1rem;font-size:1rem;color:var(--cl_btn-link);border:.1rem solid var(--cl_btn-link);border-radius:.5rem;background-color:#fff;appearance:none;-webkit-appearance:none;-moz-appearance:none;font-family:var(--font-text);font-weight:500;font-size:1.5rem;line-height:100%;cursor:pointer;min-height:4.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select:after{content:\"\\276e\";position:absolute;right:2rem;top:1.5rem;transform:rotate(270deg);pointer-events:none;color:var(--cl_btn-link);font-weight:700;font-size:1.3rem}.mdl-md002 .mdl-container .m-cards-container{display:flex;align-items:start;flex-direction:row;gap:0 3rem;max-width:100%;display:grid;grid-template-columns:repeat(var(--maxColumns),1fr);width:100%}.mdl-md002 .mdl-container .m-cards-container .link-container{width:100%;height:100%}.mdl-md002 .mdl-container .m-cards-container .m-card{-webkit-tap-highlight-color:transparent;position:relative;display:flex;flex-direction:column;align-items:center;width:100%;cursor:pointer;aspect-ratio:378/486;max-width:38rem;padding-bottom:2rem;margin-inline:auto}@media (min-width: 1024px){.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-card-top{background-blend-mode:multiply}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-card-top:after{bottom:4rem}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content{transform:translateY(-20%)}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-logo{opacity:1;transform:translateY(-118%)}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-button-sm{opacity:1;transform:none;width:100%;max-width:26rem}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-but{opacity:1;transform:none}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top{position:relative;background-position:center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%;transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top:after{content:\"\";width:102%;transition:all .3s ease;height:13.8rem;left:-1px;bottom:-1px;position:absolute;background-image:url(/assets/babylon/svg/others/cards-footer-shape.svg);background-position:center;background-size:cover;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top:before{content:\"\";width:100%;height:8rem;background-color:#fff;position:absolute;bottom:0;left:0}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag{font-family:var(--font-text);font-weight:400;font-size:1.8rem;line-height:100%;position:absolute;background-color:#ed3b37;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:2.6rem;left:3rem;white-space:nowrap}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-left{font-family:var(--font-text);font-weight:400;font-size:1.8rem;line-height:100%;position:absolute;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:2.5rem;left:1.5rem;white-space:nowrap;display:flex;gap:.8rem;align-items:center}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-right{font-family:jokker,sans-serif;font-weight:400;font-size:1.3rem;line-height:100%;position:absolute;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:3rem;right:3rem;white-space:nowrap}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-right.left-mode{left:3rem;right:auto}@media (max-width: 540px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-right{left:3rem;right:auto!important;top:6rem!important}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon{background-position:center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%;transition:all .3s ease;height:31vw;max-height:56rem;background-color:#fff9f9;position:relative}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon:after{content:\"\";width:102%;height:13.8rem;left:-1px;bottom:-1px;position:absolute;background-image:url(/assets/babylon/svg/others/cards-footer-shape.svg);background-position:center;background-size:cover;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon img{height:22.1rem;position:absolute;top:30%;left:50%;transform:translate(-50%,-30%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-family:var(--font-text);font-weight:300;font-size:3.2rem;line-height:4.6rem}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.8rem;line-height:3.8rem}}@media (max-width: 1080px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:3.2rem;line-height:4.6rem}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.8rem;line-height:3.8rem}}@media (max-width: 375px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.2rem;line-height:3rem}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{padding:6rem 5rem;color:var(--cl_btn-link)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content{display:flex;flex-direction:column;align-items:center;margin-top:-7rem;z-index:1;text-align:center;width:100%;transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-logo{position:absolute;justify-self:anchor-center;align-self:anchor-center;opacity:0;transition:all .3s ease;filter:invert(100%) sepia(6%) saturate(3350%) hue-rotate(358deg) brightness(108%) contrast(116%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-button-sm{margin-top:1.6rem;opacity:0;transform:translateY(-118%);transition:all .3s ease;width:100%;max-width:26rem;min-width:20rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-but{margin:2rem 0 4rem;opacity:0;transform:translateY(-118%);transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{font-family:var(--font-text);font-weight:500;font-size:2.3rem;color:var(--cl_title)}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{font-size:2rem}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{margin-bottom:1rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-subtitle{font-family:var(--font-text);font-weight:400;font-size:1.6rem;line-height:2.8rem;color:var(--cl_btn-link)}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(3,1fr)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-card-icon{height:34vw}.mdl-md002 .mdl-container .m-title{max-width:66rem}.mdl-md002 .mdl-container .m-content-top{display:flex;flex-direction:column;align-items:flex-start}.mdl-md002 .mdl-container .m-content-top .m-selects{margin:3rem auto 0;flex-wrap:wrap;justify-content:center}}@media (max-width: 1280px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon img{height:17.1rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.4rem;line-height:3.5rem}}@media (max-width: 1080px){.mdl-md002{padding-top:7.5rem}.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(2,1fr)}.mdl-md002 .mdl-container .m-cards-container .cardempty{display:none}.mdl-md002 .mdl-container .m-cards-container .m-card{aspect-ratio:378/582}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-text{font-size:2.8rem;line-height:3.8rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag{left:50%;transform:translate(-50%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-button-sm,.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-but{opacity:1;transform:none}}@media (max-width: 768px){.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(1,1fr)}.mdl-md002 .mdl-container .m-cards-container .m-title{width:100%;max-width:none}.mdl-md002 .mdl-container .m-cards-container .m-cards-container .m-card .m-content .m-subtitle{font-size:2.8rem}.mdl-md002 .mdl-container .m-content-top .m-selects{flex-direction:column}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-content-top .m-selects{margin:0;flex-wrap:nowrap;flex-direction:column;width:100%;margin-top:2rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select,.mdl-md002 .mdl-container .m-content-top .m-selects .m-select select{width:100%}}.mdl-md002 .m-btn{--btn-primary: var(--cl_btn-box);--btn-hover: var(--cl_btn-box-hover);background:var(--btn-primary);border:1px solid var(--btn-primary);color:var(--cl_btn-call-text);display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.mdl-md002 .m-btn:hover{background:var(--btn-hover);border-color:var(--btn-hover)}.mdl-md002 .m-button-sm{border:0;background-color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-button-sm:hover{background-color:var(--btn-hover-dynamic, #ed3b37)!important}.mdl-md002 .m-but.m-underline{background:transparent;border:0}.mdl-md002 .m-but.m-underline span{color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-but.m-underline:after{background-color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-empty{font-family:var(--font-text);font-weight:300;font-size:4.4rem;line-height:5.8rem}@media (max-width: 1366px){.mdl-md002 .m-empty{font-size:3.6rem;line-height:4.8rem}}@media (max-width: 540px){.mdl-md002 .m-empty{font-size:3rem;line-height:4rem}}@media (max-width: 375px){.mdl-md002 .m-empty{font-size:2.4rem;line-height:3rem}}.mdl-md002 .m-empty{width:100%;max-width:54.4rem;color:var(--cl_btn-link);font-weight:400}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: BabylonLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick", "clickPopup", "disablePointerNone"], outputs: ["anchorClicked"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: BabylonDynamicHeadingComponent, selector: "lib-babylon-dynamic-heading", inputs: ["useInnerHtml", "tag", "wrapper", "cssClass", "content", "color"] }], encapsulation: i0.ViewEncapsulation.None }); }
550
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: LisC4TxtDesCtaComponent, isStandalone: true, selector: "lis-c4-txt-des-cta", inputs: { texts: "texts", items: "items", links: "links", additional1LikeMarca: "additional1LikeMarca", showCleanFilters: "showCleanFilters", experiences: "experiences", destinations: "destinations", showDestinations: "showDestinations", showFilters: "showFilters", maxColumns: "maxColumns", hideServicesFilter: "hideServicesFilter", tags: "tags", textColors: "textColors" }, usesOnChanges: true, ngImport: i0, template: "@if (items?.length) {\n <section class=\"mdl-md002\">\n <div class=\"mdl-container\">\n <div class=\"m-content-top\">\n @if (texts?.title) {\n <lib-babylon-dynamic-heading\n [tag]=\"tags?.title || 'h2'\"\n cssClass=\"m-title\"\n [content]=\"texts?.title ?? ''\"\n [color]=\"textColors?.title\"\n ></lib-babylon-dynamic-heading>\n }\n @if (showFilters) {\n <div class=\"m-selects\">\n @if (hasActiveFilters && showCleanFilters) {\n <button\n type=\"button\"\n class=\"m-clear\"\n (click)=\"clearFilters()\"\n >\n {{ texts?.cleanFilters ?? 'Limpiar filtros' }}\n </button>\n }\n @if (\n !hideServicesFilter && availableServices.length > 0\n ) {\n @if (availableServices.length === 1) {\n <div\n class=\"m-services-single services-filter services-filter__single\"\n >\n <div class=\"m-checkbox-group\">\n <input\n type=\"checkbox\"\n id=\"single-srv-0\"\n [checked]=\"\n selectedServices.has(\n availableServices[0]\n )\n \"\n (change)=\"\n toggleService(\n availableServices[0]\n )\n \"\n />\n <label for=\"single-srv-0\">{{\n availableServices[0]\n }}</label>\n </div>\n </div>\n } @else {\n <div\n class=\"m-services-filter m-select services-filter services-filter__multi\"\n >\n <button\n type=\"button\"\n class=\"m-services-btn\"\n (click)=\"toggleServicesMenu()\"\n >\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 6H20M7 12H17M10 18H14\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n @if (\n texts?.servicestitle ||\n selectedServices.size > 0\n ) {\n <span>\n @if (texts?.servicestitle) {\n {{ texts?.servicestitle }}\n }\n @if (\n selectedServices.size > 0\n ) {\n ({{\n selectedServices.size\n }})\n }\n </span>\n }\n </button>\n\n @if (isServicesMenuOpen) {\n <div\n class=\"m-services-overlay\"\n (click)=\"toggleServicesMenu()\"\n ></div>\n\n <div class=\"m-services-dropdown\">\n <div class=\"m-dropdown-header\">\n <span\n class=\"m-close\"\n (click)=\"\n toggleServicesMenu()\n \"\n >\u2715</span\n >\n </div>\n <div class=\"m-dropdown-content\">\n @for (\n srv of availableServices;\n track $index\n ) {\n <div\n class=\"m-checkbox-group\"\n >\n <input\n type=\"checkbox\"\n [id]=\"\n 'srv-' + $index\n \"\n [checked]=\"\n selectedServices.has(\n srv\n )\n \"\n (change)=\"\n toggleService(\n srv\n )\n \"\n />\n <label\n [for]=\"\n 'srv-' + $index\n \"\n >{{ srv }}</label\n >\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n }\n <div class=\"m-select brand-filter\">\n <select\n #BrandSel\n [attr.aria-label]=\"texts?.marca ?? 'marca'\"\n [(ngModel)]=\"selectedBrand\"\n (ngModelChange)=\"onBrandChange($event)\"\n >\n <option value=\"\">\n {{ texts?.marca ?? 'All' }}\n </option>\n @for (opt of brandOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n @if (experienceOptions.length > 0) {\n <div class=\"m-select experience-filter\">\n <select\n #ExperienceSel\n aria-label=\"Experiencias\"\n [(ngModel)]=\"selectedExperience\"\n (ngModelChange)=\"onExperienceChange($event)\"\n >\n <option value=\"\">Experiencias</option>\n @for (\n opt of experienceOptions;\n track $index\n ) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n }\n @if (texts?.hotelType) {\n <div class=\"m-select hoteltype-filter\">\n <select\n #hotelTypeSel\n [attr.aria-label]=\"\n texts?.hotelType ?? 'hoteles'\n \"\n [(ngModel)]=\"selectedHotelType\"\n (ngModelChange)=\"onHotelTypeChange($event)\"\n >\n <option value=\"\">\n {{ texts?.hotelType }}\n </option>\n @for (\n opt of hotelTypeOptions;\n track $index\n ) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n }\n\n <div class=\"m-select destination-filter\">\n <select\n #Destination\n [attr.aria-label]=\"\n texts?.destinations ?? 'destinos'\n \"\n [(ngModel)]=\"selectedDestination\"\n (ngModelChange)=\"onDestinationChange($event)\"\n >\n <option value=\"\">\n {{ texts?.destinations }}\n </option>\n @for (opt of destinationOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n </div>\n }\n </div>\n\n <div\n class=\"m-cards-container\"\n [style.--maxColumns]=\"maxColumns ?? 4\"\n >\n @if (filteredItems?.length) {\n @for (item of filteredItems; track $index) {\n <div\n class=\"m-card\"\n [ngClass]=\"{\n cardempty:\n !getFirstImageByTag(\n tagName,\n item?.images ??\n item?.multimedia?.imagenes ??\n []\n ) &&\n !(\n item.images?.[0] ??\n item?.multimedia?.imagenes?.[0] ??\n item?.img\n ),\n }\"\n >\n @if (getImageUrl(item); as img) {\n <a\n class=\"link-container\"\n [href]=\"item.links?.[0]?.url\"\n [linkType]=\"item.links?.[0]?.linkType\"\n [disablePointerNone]=\"true\"\n >\n <div\n class=\"m-card-top\"\n [style.background-image]=\"\n 'url(' + img + ')'\n \"\n >\n <div class=\"m-tag-left\">\n @if (item.hoteltype) {\n {{ item.hoteltype }}\n }\n <div class=\"m-keys\">\n @if (\n (item?.hoteltype ===\n 'Hotel' ||\n item?.hoteltype ===\n 'H\u00F4tel') &&\n item?.hotelcategory\n ) {\n <div class=\"category\">\n @for (\n item of getNumber(\n item?.hotelcategory ??\n ''\n );\n track $index\n ) {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n >\n <g\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g>\n <g>\n <g\n transform=\"translate(-1404.000000, -5922.000000) translate(191.000000, 5865.000000) translate(1109.000000, 57.000000)\"\n >\n <g>\n <path\n fill=\"#fff\"\n fill-opacity=\"1\"\n fill-rule=\"nonzero\"\n d=\"M10 0l2.294 7.104c.034.106.133.178.245.178L20 7.267l-6.046 4.374v.001c-.09.066-.128.182-.093.289l2.322 7.095-6.032-4.4c-.09-.065-.213-.065-.303 0l-6.029 4.4 2.322-7.095H6.14c.035-.107-.003-.223-.094-.289L0 7.268l7.461.015.001-.001c.112 0 .211-.072.245-.178L10 0z\"\n transform=\"translate(104.000000, 0.000000)\"\n />\n </g>\n </g>\n </g>\n </g>\n </g>\n </svg>\n }\n </div>\n }\n\n @if (\n (item?.hoteltype ===\n 'Apartamento' ||\n item?.hoteltype ===\n 'Appartement') &&\n item?.hotelcategory\n ) {\n <div class=\"category\">\n @for (\n item of getNumber(\n item?.hotelcategory ??\n ''\n );\n track $index\n ) {\n <svg\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.146296 4.26479L1.14015 2.01692C1.31289 1.62559 1.62559 1.31289 2.01692 1.14015L4.26479 0.146297C4.58174 0.00641826 4.93356 -0.0343944 5.27412 0.0292127C5.61467 0.0928198 5.92805 0.257876 6.17314 0.50273L7.9475 2.27839C8.1606 2.49155 8.31388 2.75701 8.39197 3.04813C8.47006 3.33925 8.4702 3.64578 8.39239 3.93698L7.93579 5.64109L12.866 10.5713C12.9085 10.6136 12.9422 10.6639 12.9652 10.7193C12.9882 10.7746 13 10.834 13 10.8939V12.5447C12.9993 12.6652 12.9511 12.7807 12.8659 12.8659C12.7807 12.9511 12.6652 12.9993 12.5447 13H10.8939C10.7926 12.9998 10.6942 12.9659 10.6142 12.9038C10.5341 12.8416 10.477 12.7547 10.4516 12.6566L10.2045 11.6796L9.3303 11.5131C9.24322 11.4968 9.16282 11.4553 9.09903 11.3938C9.03523 11.3323 8.99082 11.2535 8.97127 11.1671L8.73321 10.1173L7.89026 10.0367C7.78479 10.0274 7.68608 9.9808 7.61188 9.90528L5.64109 7.93579L3.93697 8.39239C3.6458 8.47047 3.33919 8.47046 3.04802 8.39236C2.75685 8.31426 2.4914 8.16082 2.27839 7.9475L0.502729 6.17314C0.257875 5.92805 0.0928202 5.61467 0.029213 5.27412C-0.0343943 4.93357 0.00641727 4.58174 0.146296 4.26479ZM3.6703 5.08953C3.81061 5.22968 3.98932 5.32508 4.18385 5.36369C4.37837 5.40229 4.57997 5.38236 4.76317 5.30641C4.94636 5.23047 5.10294 5.10191 5.21309 4.937C5.32324 4.7721 5.38203 4.57823 5.38203 4.37991C5.38203 4.1816 5.32324 3.98773 5.21309 3.82283C5.10294 3.65792 4.94636 3.52936 4.76317 3.45342C4.57997 3.37747 4.37837 3.35754 4.18385 3.39614C3.98932 3.43475 3.81061 3.53015 3.6703 3.6703C3.57689 3.76336 3.50277 3.87395 3.45219 3.99572C3.40162 4.1175 3.37558 4.24806 3.37558 4.37991C3.37558 4.51177 3.40162 4.64233 3.45219 4.76411C3.50277 4.88588 3.57689 4.99647 3.6703 5.08953Z\"\n fill=\"#fff\"\n fill-opacity=\"1\"\n />\n </svg>\n }\n </div>\n }\n </div>\n {{ showIfSup(item?.hotelcategory) }}\n </div>\n @if (item?.texts?.additional2) {\n <div\n class=\"m-tag-right\"\n [ngClass]=\"{\n 'left-mode':\n !item.hoteltype,\n }\"\n [style.backgroundColor]=\"\n item?.styles?.primary ??\n '#ff4338'\n \"\n >\n {{ item?.texts?.additional2 }}\n </div>\n }\n </div>\n </a>\n <div class=\"m-content\">\n @if (\n item.texts?.title || item.texts?.name\n ) {\n <div class=\"m-title\">\n {{\n item.texts?.title ??\n item.texts?.name\n }}\n </div>\n }\n\n <div class=\"m-subtitle\">\n @if (item.locality) {\n {{ item.locality }}\n }\n @if (item.locality && item.province) {\n -\n }\n @if (item.province) {\n {{ item.province }}\n }\n </div>\n\n @if (item.buttons?.length) {\n @for (\n btn of item.buttons;\n track $index\n ) {\n <a\n class=\"m-btn\"\n [ngClass]=\"{\n 'm-button-sm':\n $index % 2 === 0,\n 'm-but m-underline':\n $index % 2 !== 0,\n }\"\n [style.--btn-primary-dynamic]=\"\n item.styles?.primary\n \"\n [style.--btn-hover-dynamic]=\"\n item.styles?.primaryHover\n \"\n [href]=\"\n getButtonUrl(\n btn,\n item,\n $index\n )\n \"\n [attr.target]=\"\n btn.target || '_self'\n \"\n [linkType]=\"btn.linkType\"\n [attr.aria-label]=\"btn.label\"\n >\n <span>{{ btn.label }}</span>\n </a>\n }\n }\n </div>\n }\n </div>\n }\n } @else {\n <div class=\"m-empty\">\n {{\n texts?.notFound ??\n 'No se encontraron resultados con esos filtros.'\n }}\n </div>\n }\n </div>\n </div>\n </section>\n}\n", styles: ["@charset \"UTF-8\";.m-button-big{display:block;min-width:max-content;max-width:100%;width:33rem;text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;background-color:#ff4338;border-radius:.4rem;transition:.3s ease;height:4.8rem;cursor:pointer;position:relative;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button-big{font-size:1.6rem}}.m-button-big.red{background-color:#ff4338}@media (hover: hover){.m-button-big.red:hover{background-color:#ed3b37}}.m-button-big.blue{background-color:#5b87da}@media (hover: hover){.m-button-big.blue:hover{background-color:#446ecd}}.m-button-big.green{background-color:#3fd5ae}@media (hover: hover){.m-button-big.green:hover{background-color:#2ec99b}}.m-button-big.underline{color:#fff;border:.1rem solid white;background-color:transparent}@media (hover: hover){.m-button-big.underline:hover{border:.1rem solid #ed3b37;background-color:#ed3b37}}.m-button-big span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content}@media (hover: hover){.m-button-big:hover{background-color:#ed3b37}}.m-button-sm{display:block;min-width:max-content;width:100%;max-width:26rem;text-align:center;cursor:pointer;box-sizing:border-box;padding:1.1rem;color:#fff;border-radius:.4rem;transition:.3s ease;height:4.8rem;position:relative;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button-sm{font-size:1.6rem}}.m-button-sm span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content;color:var(--cl_btn-call-text-hover)}@media (hover: hover){.m-button-sm:hover{background-color:#ed3b37}.m-button-sm:hover span{color:var(--cl_btn-call-text-hover)}}.m-button-sm:focus{background-color:#ed3b37}.m-button-sm:focus span{color:var(--cl_btn-call-text-hover)}.m-underline{display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;color:var(--cl_title);font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline{font-size:1.6rem}}@media (hover: hover){.m-underline:hover:after,.m-underline.active:after{opacity:1;width:100%}}.m-underline:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;z-index:1}.m-underline:after{content:\"\";position:absolute;bottom:0rem;left:0;opacity:0;width:0%;height:.2rem;background-color:#ed3b37;transition:.3s ease;z-index:2}.m-underline-red{color:var(--cl_btn-link);display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-red{font-size:1.6rem}}.m-underline-red:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:var(--cl_btn-link);z-index:1}.m-underline-red:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#ed3b37;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-red:hover{color:#ed3b37}.m-underline-red:hover:after{width:100%}}.m-underline-blue{color:var(--cl_btn-link);display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-blue{font-size:1.6rem}}.m-underline-blue:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:var(--cl_btn-link);z-index:1}.m-underline-blue:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#446ecd;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-blue:hover{color:#446ecd}.m-underline-blue:hover:after{width:100%}}.m-underline-green{color:var(--cl_btn-link);display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-green{font-size:1.6rem}}.m-underline-green:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:var(--cl_btn-link);z-index:1}.m-underline-green:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#2ec99b;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-green:hover{color:#2ec99b}.m-underline-green:hover:after{width:100%}}.m-swiper-button{width:4.8rem;height:4.8rem;background-color:#ff4338;transition:.3s ease;cursor:pointer;position:relative}.m-swiper-button.swiper-button-disabled{opacity:.7}.m-swiper-button svg{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.m-swiper-button.prev{border-top-left-radius:8rem;border-bottom-left-radius:8rem}.m-swiper-button.next{border-top-right-radius:8rem;border-bottom-right-radius:8rem}@media (hover: hover){.m-swiper-button:hover{background-color:#ed3b37}}@media (max-width: 768px){.m-swiper-button{width:3.8rem;height:3.8rem}}@media (max-width: 540px){.m-swiper-button{width:3.2rem;height:3.2rem}.m-swiper-button svg{width:.5rem}}.m-swiper-button-s{width:3rem;height:3rem;background-color:#ff4338;transition:.3s ease;cursor:pointer;position:relative;border-radius:100%}.m-swiper-button-s svg{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.m-swiper-button-s.prev svg{left:45%}.m-swiper-button-s.next svg{left:55%}@media (hover: hover){.m-swiper-button-s:hover{background-color:#ed3b37}}.m-button-close{background-color:#ff4338;width:4.4rem;height:4.4rem;border-radius:100%;transition:.3s ease;cursor:pointer;position:relative}.m-button-close svg{transition:transform .4s ease;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}@media (hover: hover){.m-button-close:hover{background-color:#ed3b37}.m-button-close:hover svg{transform:rotate(180deg)}}.m-button{display:block;width:max-content;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button{font-size:1.6rem}}.m-button{text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;background-color:#ff4338;border-radius:.4rem;transition:.3s ease}@media (hover: hover){.m-button:hover{background-color:#ed3b37}}@media (max-width: 540px){.m-button{min-width:unset;max-width:33rem;width:100%;font-size:1.6rem}}.m-button2{display:block;width:max-content;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button2{font-size:1.6rem}}.m-button2{text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;border-radius:.4rem;transition:.3s ease;background-color:transparent;border:.1rem solid white}.m-button2.red{background-color:#ff4338}@media (hover: hover){.m-button2.red:hover{background-color:#ed3b37}}.m-button2.blue{background-color:#5b87da}@media (hover: hover){.m-button2.blue:hover{background-color:#446ecd}}.m-button2.green{background-color:#3fd5ae}@media (hover: hover){.m-button2.green:hover{background-color:#2ec99b}}.m-button2.underline{color:#fff;border:.1rem solid white;background-color:transparent}@media (hover: hover){.m-button2.underline:hover{border:.1rem solid #ed3b37;background-color:#ed3b37}}@media (hover: hover){.m-button2:hover{background-color:#ed3b37}}@media (max-width: 540px){.m-button2{min-width:unset;max-width:33rem;width:100%;font-size:1.6rem}}select.mini-arrow{position:relative;background-image:url(/assets/babylon/img/icons/icon-caret-down.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 0.8rem)\";background-position-y:50%;min-width:.8rem}.m-checkbox-group .m-checkbox:checked,.m-checkbox-group input:checked{background-color:#fff;background-image:url(/assets/babylon/img/icons/icon-check.svg);background-position:center;background-repeat:no-repeat;background-size:1.6rem;position:relative;left:0rem;top:0rem}.m-input.m-calendar{background-image:url(/assets/babylon/img/icons/icon-calendar-blue.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 2rem)\";background-position-y:50%}input[type=date]::-webkit-inner-spin-button,input[type=date]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none}input:not([type=radio]):not([type=checkbox]),textarea,select{background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::placeholder,textarea::placeholder,select::placeholder{font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-moz-placeholder,textarea::-moz-placeholder,select::-moz-placeholder{font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-ms-input-placeholder,textarea::-ms-input-placeholder,select::-ms-input-placeholder{font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-webkit-input-placeholder,textarea::-webkit-input-placeholder,select::-webkit-input-placeholder{font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px var(--cl_background_gray) inset!important;-webkit-text-fill-color:white!important;transition:background-color 5000s ease-in-out 0s}select{position:relative;cursor:pointer}select.mini-arrow{position:relative;background-image:url(/assets/babylon/img/icons/icon-caret-down.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 0.8rem)\";background-position-y:50%;min-width:.8rem}select option{font-family:var(--font-text);font-size:1.4rem;font-weight:var(--w_text);color:var(--cl_dropdown-text)}.m-checkbox-group{display:flex;flex-direction:row;align-items:flex-start}.m-checkbox-group .m-checkbox,.m-checkbox-group input{border-radius:0!important;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:2.8rem;height:2.8rem;border:.1rem solid #d2d2d2;background-color:transparent;padding:0;margin-right:2rem;border-radius:0;cursor:pointer;position:relative}.m-checkbox-group .m-checkbox:checked,.m-checkbox-group input:checked{background-color:#fff;background-image:url(/assets/babylon/img/icons/icon-check.svg);background-position:center;background-repeat:no-repeat;background-size:1.6rem;position:relative;left:0rem;top:0rem}.m-checkbox-group label{font-family:var(--font-text);font-size:1.3rem;font-weight:600;max-width:\"calc(100% - 5rem)\"}.m-radio-group{display:flex;flex-direction:row;align-items:center}.m-radio-group .m-radio{-webkit-appearance:none;width:2.8rem;height:2.8rem;border:.2rem solid #d2d2d2;background-color:transparent;border-radius:50%;padding:0;margin-right:2rem;cursor:pointer;position:relative}.m-radio-group .m-radio:checked{background-color:#fff!important}.m-radio-group .m-radio:checked:after{content:\" \";position:absolute;top:50%;left:50%;width:1.6rem;height:1.6rem;border-radius:50%;background-color:var(--cl_radio);transform:translate(-50%,-50%)}.m-radio-group label{font-family:var(--font-text);font-size:1.4rem;font-weight:500;max-width:\"calc(100% - 5rem)\"}.m-input.m-calendar{background-image:url(/assets/babylon/img/icons/icon-calendar-blue.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 2rem)\";background-position-y:50%}html{font-size:62.5%;overflow-x:hidden}html.overflow-hidden{overflow:hidden}html body{font:14px \"\"}@media (min-width: 1921px) and (max-height: 600px){html{font-size:55.5%}}html a{text-decoration:none}h1,h2,h3,h4,h5,h6{all:unset;display:revert}.fancybox__viewport{background-color:#fff}.fancybox__viewport.no-idiomas{background-color:red}section[class*=mdl]{padding-left:10rem;padding-right:10rem;box-sizing:border-box}@media (max-width: 1366px){section[class*=mdl]{padding-left:9rem;padding-right:9rem}}@media (max-width: 1280px){section[class*=mdl]{padding-left:8rem;padding-right:8rem}}@media (max-width: 1080px){section[class*=mdl]{padding-left:9.5rem;padding-right:9.5rem}}@media (max-width: 768px){section[class*=mdl]{padding-left:7.7rem;padding-right:7.7rem}}@media (max-width: 540px){section[class*=mdl]{padding-left:4.1rem;padding-right:4.1rem}}@media (max-width: 375px){section[class*=mdl]{padding-left:2.7rem;padding-right:2.7rem}}section .mdl-container{width:100%;max-width:160rem;margin:0 auto}.readmoreinit{overflow:hidden}.readmoreinit{line-height:1.6!important}@media screen and (max-width: 1200px){.readmoreinit{line-height:1.6!important}}@media screen and (max-width: 600px){.readmoreinit{line-height:1.6!important}}.read-more{display:flex;flex-direction:column;font-family:var(--font-text);font-size:1.5rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.4;letter-spacing:normal;color:#e6411e;text-decoration:underline;cursor:pointer;margin-top:2rem}.read-more .less{display:none}.w100{font-weight:100}.w300{font-weight:300}.w400{font-weight:400}.w500{font-weight:medium}.w600{font-weight:600}.w700{font-weight:700}.w900{font-weight:900}.italic{font-style:italic}.row{display:flex;flex-direction:row}.col{display:flex;flex-direction:column}html{overflow-x:hidden}body{cursor:default;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{color:inherit;border:0;margin:0;padding:0}a{text-size-adjust:none;-webkit-text-size-adjust:none;text-decoration:none;cursor:pointer}ul{list-style-position:outside}li{padding-left:3rem;list-style:none;position:relative}li:before{content:\"\\25cf\";position:absolute;top:0;left:0}button,mark{background:none}button,label{cursor:pointer}:focus{outline:none!important}::-moz-focus-inner{border:0}summary::-webkit-details-marker{display:none}button,input[type=submit],input[type=text]{-webkit-appearance:none}h1,h2,h3,h4,h5,h6{text-transform:none}p{width:100%}img{width:auto;height:auto;object-fit:contain}@-webkit-keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}@keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}.fancybox__container{background-color:#fff}.fancybox__container .fancybox__slide{flex-direction:column-reverse}.fancybox__container .fancybox__backdrop,.fancybox__container .fancybox__counter{display:none}.fancybox__container .fancybox__caption{color:var(--cl_btn-link);text-align:center;font-family:var(--font-text);font-weight:400;font-size:1.8rem;line-height:3.9rem;padding:0rem 0 2rem}@media (max-width: 540px){.fancybox__container .fancybox__caption{font-size:1.5rem}}@media (max-width: 375px){.fancybox__container .fancybox__caption{font-size:1.3rem}}.fancybox__container .fancybox__thumbs{display:none}.fancybox__container .fancybox__nav .carousel__button{background-color:#ff4338;top:55%}.fancybox__container .fancybox__nav .carousel__button svg{stroke:#fff;stroke-width:.3rem}.fancybox__container .carousel__button.is-close svg{display:none}.fancybox__container .carousel__button.is-close{background:url(/assets/babylon/img/icons/closeRed.svg) no-repeat center;background-size:100%;width:4.2rem;height:4.2rem;top:-4.7rem;right:-5rem;transition:transform .3s ease;transform:rotate(0)}.fancybox__container .carousel__button.is-close:hover{transition:transform .3s ease;transform:rotate(180deg)}@media (max-width: 540px){.fancybox__container .carousel__button.is-close{width:3rem;height:3rem}}.fancybox__container .fancybox__toolbar{border-bottom:none;margin:0 0 0 auto;padding:1rem}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items button:not(.fancybox__button--close){display:none}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close{background-color:#ff4338}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close svg{width:40%}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close svg path{stroke:#fff;stroke-width:.3rem}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-background-clip:text;-webkit-text-fill-color:#ffffff;transition:background-color 5000s ease-in-out 0s;box-shadow:inset 0 0 20px 20px #23232329}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.mdl-md002{background-color:var(--cl_background_body)}.mdl-md002.p-top{margin-top:10rem}.mdl-md002 .mdl-container{display:flex;flex-direction:column;gap:4rem;align-items:center}.mdl-md002 .mdl-container .m-content-top{width:100%;display:flex;flex-direction:row;justify-content:space-between;align-items:flex-end}.mdl-md002 .mdl-container .m-content-top .m-title{font-family:var(--font-text);font-weight:300;font-size:4.4rem;line-height:5.8rem}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:3.6rem;line-height:4.8rem}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:3rem;line-height:4rem}}@media (max-width: 375px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:2.4rem;line-height:3rem}}.mdl-md002 .mdl-container .m-content-top .m-title{width:100%;max-width:54.4rem;color:var(--cl_btn-link);font-weight:400}.mdl-md002 .mdl-container .m-content-top .m-selects{display:inline-block;display:flex;gap:2.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single{display:flex;align-items:center;height:4.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single .m-checkbox-group{margin:0;align-items:center}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single .m-checkbox-group input[type=checkbox]{margin-right:1rem;width:2rem;height:2rem;flex-shrink:0;border:.1rem solid #d2d2d2;border-radius:.4rem!important;cursor:pointer}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single .m-checkbox-group input[type=checkbox]:checked{background-color:var(--cl_btn-link, #ff4338);border-color:var(--cl_btn-link, #ff4338);background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E\")!important;background-size:1.2rem;background-position:center;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single .m-checkbox-group label{margin:0;font-size:1.4rem;cursor:pointer;font-weight:500;color:var(--cl_btn-link);max-width:none}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter{position:relative}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-btn{display:flex;align-items:center;gap:.8rem;padding:.5rem 4rem .5rem 1rem;font-size:1.4rem;color:var(--cl_btn-link);border:.1rem solid var(--cl_btn-link);border-radius:.5rem;background-color:#fff;cursor:pointer;min-height:4.4rem;font-family:var(--font-text);font-weight:500;width:100%}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-btn svg{width:2rem;height:2rem;stroke:#ff4338}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:90;cursor:default}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown{position:absolute;top:110%;left:0;background:#fff;border:1px solid #e4e4e4;border-radius:.8rem;box-shadow:0 4px 12px #0000001a;z-index:100;min-width:25rem;max-height:35rem;display:flex;flex-direction:column}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-header{display:flex;justify-content:flex-end;padding:1rem 1.5rem;border-bottom:1px solid #e4e4e4}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-header .m-close{cursor:pointer;font-weight:700;font-size:1.6rem;color:#4a4a49}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content{padding:1.5rem;overflow-y:auto;display:flex;flex-direction:column;gap:1.2rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content .m-checkbox-group{display:flex;align-items:center;margin-bottom:0}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content .m-checkbox-group input[type=checkbox]{margin-right:1rem;width:2rem;height:2rem;flex-shrink:0;border:.1rem solid #d2d2d2;border-radius:.4rem!important;cursor:pointer}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content .m-checkbox-group input[type=checkbox]:checked{background-color:var(--cl_btn-link, #ff4338);border-color:var(--cl_btn-link, #ff4338);background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E\")!important;background-size:1.2rem;background-position:center;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content .m-checkbox-group label{margin:0;font-size:1.4rem;cursor:pointer;font-weight:400;color:var(--cl_btn-link);max-width:none}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select{position:relative}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select select{width:20rem;padding:.5rem 2rem .5rem 1rem;font-size:1rem;color:var(--cl_btn-link);border:.1rem solid var(--cl_btn-link);border-radius:.5rem;background-color:#fff;appearance:none;-webkit-appearance:none;-moz-appearance:none;font-family:var(--font-text);font-weight:500;font-size:1.5rem;line-height:100%;cursor:pointer;min-height:4.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select:after{content:\"\\276e\";position:absolute;right:2rem;top:1.5rem;transform:rotate(270deg);pointer-events:none;color:var(--cl_btn-link);font-weight:700;font-size:1.3rem}.mdl-md002 .mdl-container .m-cards-container{display:flex;align-items:start;flex-direction:row;gap:0 3rem;max-width:100%;display:grid;grid-template-columns:repeat(var(--maxColumns, 4),1fr);width:100%}.mdl-md002 .mdl-container .m-cards-container .link-container{width:100%;height:100%}.mdl-md002 .mdl-container .m-cards-container .m-card{-webkit-tap-highlight-color:transparent;position:relative;display:flex;flex-direction:column;align-items:center;width:100%;cursor:pointer;aspect-ratio:378/486;max-width:38rem;padding-bottom:2rem;margin-inline:auto}@media (min-width: 1024px){.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-card-top{background-blend-mode:multiply}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-card-top:after{bottom:4rem}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content{transform:translateY(-20%)}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-logo{opacity:1;transform:translateY(-118%)}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-button-sm{opacity:1;transform:none;width:100%;max-width:26rem}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-but{opacity:1;transform:none}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top{position:relative;background-position:center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%;transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top:after{content:\"\";width:102%;transition:all .3s ease;height:13.8rem;left:-1px;bottom:-1px;position:absolute;background-image:url(/assets/babylon/svg/others/cards-footer-shape.svg);background-position:center;background-size:cover;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top:before{content:\"\";width:100%;height:8rem;background-color:#fff;position:absolute;bottom:0;left:0}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag{font-family:var(--font-text);font-weight:400;font-size:1.8rem;line-height:100%;position:absolute;background-color:#ed3b37;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:2.6rem;left:3rem;white-space:nowrap}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-left{font-family:var(--font-text);font-weight:400;font-size:1.8rem;line-height:100%;position:absolute;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:2.5rem;left:1.5rem;white-space:nowrap;display:flex;gap:.8rem;align-items:center}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-right{font-family:jokker,sans-serif;font-weight:400;font-size:1.3rem;line-height:100%;position:absolute;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:3rem;right:3rem;white-space:nowrap}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-right.left-mode{left:3rem;right:auto}@media (max-width: 540px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-right{left:3rem;right:auto!important;top:6rem!important}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon{background-position:center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%;transition:all .3s ease;height:31vw;max-height:56rem;background-color:#fff9f9;position:relative}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon:after{content:\"\";width:102%;height:13.8rem;left:-1px;bottom:-1px;position:absolute;background-image:url(/assets/babylon/svg/others/cards-footer-shape.svg);background-position:center;background-size:cover;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon img{height:22.1rem;position:absolute;top:30%;left:50%;transform:translate(-50%,-30%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-family:var(--font-text);font-weight:300;font-size:3.2rem;line-height:4.6rem}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.8rem;line-height:3.8rem}}@media (max-width: 1080px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:3.2rem;line-height:4.6rem}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.8rem;line-height:3.8rem}}@media (max-width: 375px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.2rem;line-height:3rem}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{padding:6rem 5rem;color:var(--cl_btn-link)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content{display:flex;flex-direction:column;align-items:center;margin-top:-7rem;z-index:1;text-align:center;width:100%;transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-logo{position:absolute;justify-self:anchor-center;align-self:anchor-center;opacity:0;transition:all .3s ease;filter:invert(100%) sepia(6%) saturate(3350%) hue-rotate(358deg) brightness(108%) contrast(116%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-button-sm{margin-top:1.6rem;opacity:0;transform:translateY(-118%);transition:all .3s ease;width:100%;max-width:26rem;min-width:20rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-but{margin:2rem 0 4rem;opacity:0;transform:translateY(-118%);transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{font-family:var(--font-text);font-weight:500;font-size:2.3rem;color:var(--cl_title)}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{font-size:2rem}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{margin-bottom:1rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-subtitle{font-family:var(--font-text);font-weight:400;font-size:1.6rem;line-height:2.8rem;color:var(--cl_btn-link)}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(3,1fr)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-card-icon{height:34vw}.mdl-md002 .mdl-container .m-title{max-width:66rem}.mdl-md002 .mdl-container .m-content-top{display:flex;flex-direction:column;align-items:flex-start}.mdl-md002 .mdl-container .m-content-top .m-selects{margin:3rem auto 0;flex-wrap:wrap;justify-content:center}}@media (max-width: 1280px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon img{height:17.1rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.4rem;line-height:3.5rem}}@media (max-width: 1080px){.mdl-md002{padding-top:7.5rem}.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(2,1fr)}.mdl-md002 .mdl-container .m-cards-container .cardempty{display:none}.mdl-md002 .mdl-container .m-cards-container .m-card{aspect-ratio:378/582}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-text{font-size:2.8rem;line-height:3.8rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag{left:50%;transform:translate(-50%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-button-sm,.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-but{opacity:1;transform:none}}@media (max-width: 768px){.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(1,1fr)}.mdl-md002 .mdl-container .m-cards-container .m-title{width:100%;max-width:none}.mdl-md002 .mdl-container .m-cards-container .m-cards-container .m-card .m-content .m-subtitle{font-size:2.8rem}.mdl-md002 .mdl-container .m-content-top .m-selects{flex-direction:column}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-content-top .m-selects{margin:0;flex-wrap:nowrap;flex-direction:column;width:100%;margin-top:2rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select,.mdl-md002 .mdl-container .m-content-top .m-selects .m-select select{width:100%}}.mdl-md002 .m-btn{--btn-primary: var(--cl_btn-box);--btn-hover: var(--cl_btn-box-hover);background:var(--btn-primary);border:1px solid var(--btn-primary);color:var(--cl_btn-call-text);display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.mdl-md002 .m-btn:hover{background:var(--btn-hover);border-color:var(--btn-hover)}.mdl-md002 .m-button-sm{border:0;background-color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-button-sm:hover{background-color:var(--btn-hover-dynamic, #ed3b37)!important}.mdl-md002 .m-but.m-underline{background:transparent;border:0}.mdl-md002 .m-but.m-underline span{color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-but.m-underline:after{background-color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-empty{font-family:var(--font-text);font-weight:300;font-size:4.4rem;line-height:5.8rem}@media (max-width: 1366px){.mdl-md002 .m-empty{font-size:3.6rem;line-height:4.8rem}}@media (max-width: 540px){.mdl-md002 .m-empty{font-size:3rem;line-height:4rem}}@media (max-width: 375px){.mdl-md002 .m-empty{font-size:2.4rem;line-height:3rem}}.mdl-md002 .m-empty{width:100%;max-width:54.4rem;color:var(--cl_btn-link);font-weight:400}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: BabylonLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick", "clickPopup", "disablePointerNone"], outputs: ["anchorClicked"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: BabylonDynamicHeadingComponent, selector: "lib-babylon-dynamic-heading", inputs: ["useInnerHtml", "tag", "wrapper", "cssClass", "content", "color"] }], encapsulation: i0.ViewEncapsulation.None }); }
547
551
  }
548
552
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LisC4TxtDesCtaComponent, decorators: [{
549
553
  type: Component,
@@ -552,7 +556,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
552
556
  BabylonLinkTypeDirective,
553
557
  FormsModule,
554
558
  BabylonDynamicHeadingComponent,
555
- ], template: "@if (items?.length) {\n <section class=\"mdl-md002\">\n <div class=\"mdl-container\">\n <div class=\"m-content-top\">\n @if (texts?.title) {\n <lib-babylon-dynamic-heading\n [tag]=\"tags?.title || 'h2'\"\n cssClass=\"m-title\"\n [content]=\"texts?.title ?? ''\"\n [color]=\"textColors?.title\"\n ></lib-babylon-dynamic-heading>\n }\n @if (showFilters) {\n <div class=\"m-selects\">\n @if (hasActiveFilters && showCleanFilters) {\n <button\n type=\"button\"\n class=\"m-clear\"\n (click)=\"clearFilters()\"\n >\n {{ texts?.cleanFilters ?? 'Limpiar filtros' }}\n </button>\n }\n @if (\n !hideServicesFilter && availableServices.length > 0\n ) {\n @if (availableServices.length === 1) {\n <div\n class=\"m-services-single services-filter services-filter__single\"\n >\n <div class=\"m-checkbox-group\">\n <input\n type=\"checkbox\"\n id=\"single-srv-0\"\n [checked]=\"\n selectedServices.has(\n availableServices[0]\n )\n \"\n (change)=\"\n toggleService(\n availableServices[0]\n )\n \"\n />\n <label for=\"single-srv-0\">{{\n availableServices[0]\n }}</label>\n </div>\n </div>\n } @else {\n <div\n class=\"m-services-filter m-select services-filter services-filter__multi\"\n >\n <button\n type=\"button\"\n class=\"m-services-btn\"\n (click)=\"toggleServicesMenu()\"\n >\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 6H20M7 12H17M10 18H14\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n @if (\n texts?.servicestitle ||\n selectedServices.size > 0\n ) {\n <span>\n @if (texts?.servicestitle) {\n {{ texts?.servicestitle }}\n }\n @if (\n selectedServices.size > 0\n ) {\n ({{\n selectedServices.size\n }})\n }\n </span>\n }\n </button>\n\n @if (isServicesMenuOpen) {\n <div\n class=\"m-services-overlay\"\n (click)=\"toggleServicesMenu()\"\n ></div>\n\n <div class=\"m-services-dropdown\">\n <div class=\"m-dropdown-header\">\n <span\n class=\"m-close\"\n (click)=\"\n toggleServicesMenu()\n \"\n >\u2715</span\n >\n </div>\n <div class=\"m-dropdown-content\">\n @for (\n srv of availableServices;\n track $index\n ) {\n <div\n class=\"m-checkbox-group\"\n >\n <input\n type=\"checkbox\"\n [id]=\"\n 'srv-' + $index\n \"\n [checked]=\"\n selectedServices.has(\n srv\n )\n \"\n (change)=\"\n toggleService(\n srv\n )\n \"\n />\n <label\n [for]=\"\n 'srv-' + $index\n \"\n >{{ srv }}</label\n >\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n }\n <div class=\"m-select brand-filter\">\n <select\n #BrandSel\n [attr.aria-label]=\"texts?.marca ?? 'marca'\"\n [(ngModel)]=\"selectedBrand\"\n (ngModelChange)=\"onBrandChange($event)\"\n >\n <option value=\"\">\n {{ texts?.marca ?? 'All' }}\n </option>\n @for (opt of brandOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n @if (experienceOptions.length > 0) {\n <div class=\"m-select experience-filter\">\n <select\n #ExperienceSel\n aria-label=\"Experiencias\"\n [(ngModel)]=\"selectedExperience\"\n (ngModelChange)=\"onExperienceChange($event)\"\n >\n <option value=\"\">Experiencias</option>\n @for (\n opt of experienceOptions;\n track $index\n ) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n }\n @if (texts?.hotelType) {\n <div class=\"m-select hoteltype-filter\">\n <select\n #hotelTypeSel\n [attr.aria-label]=\"\n texts?.hotelType ?? 'hoteles'\n \"\n [(ngModel)]=\"selectedHotelType\"\n (ngModelChange)=\"onHotelTypeChange($event)\"\n >\n <option value=\"\">\n {{ texts?.hotelType }}\n </option>\n @for (\n opt of hotelTypeOptions;\n track $index\n ) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n }\n\n <div class=\"m-select destination-filter\">\n <select\n #Destination\n [attr.aria-label]=\"\n texts?.destinations ?? 'destinos'\n \"\n [(ngModel)]=\"selectedDestination\"\n (ngModelChange)=\"onDestinationChange($event)\"\n >\n <option value=\"\">\n {{ texts?.destinations }}\n </option>\n @for (opt of destinationOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n </div>\n }\n </div>\n\n <div\n class=\"m-cards-container\"\n [style.--maxColumns]=\"maxColumns ?? 4\"\n >\n @if (filteredItems?.length) {\n @for (item of filteredItems; track $index) {\n <div\n class=\"m-card\"\n [ngClass]=\"{\n cardempty:\n !getFirstImageByTag(\n tagName,\n item?.images ??\n item?.multimedia?.imagenes ??\n []\n ) &&\n !(\n item.images?.[0] ??\n item?.multimedia?.imagenes?.[0]\n ),\n }\"\n >\n @if (getImageUrl(item); as img) {\n <a\n class=\"link-container\"\n [href]=\"item.links?.[0]?.url\"\n [linkType]=\"item.links?.[0]?.linkType\"\n [disablePointerNone]=\"true\"\n >\n <div\n class=\"m-card-top\"\n [style.background-image]=\"\n 'url(' + img + ')'\n \"\n >\n <div class=\"m-tag-left\">\n @if (item.hoteltype) {\n {{ item.hoteltype }}\n }\n <div class=\"m-keys\">\n @if (\n (item?.hoteltype ===\n 'Hotel' ||\n item?.hoteltype ===\n 'H\u00F4tel') &&\n item?.hotelcategory\n ) {\n <div class=\"category\">\n @for (\n item of getNumber(\n item?.hotelcategory ??\n ''\n );\n track $index\n ) {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n >\n <g\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g>\n <g>\n <g\n transform=\"translate(-1404.000000, -5922.000000) translate(191.000000, 5865.000000) translate(1109.000000, 57.000000)\"\n >\n <g>\n <path\n fill=\"#fff\"\n fill-opacity=\"1\"\n fill-rule=\"nonzero\"\n d=\"M10 0l2.294 7.104c.034.106.133.178.245.178L20 7.267l-6.046 4.374v.001c-.09.066-.128.182-.093.289l2.322 7.095-6.032-4.4c-.09-.065-.213-.065-.303 0l-6.029 4.4 2.322-7.095H6.14c.035-.107-.003-.223-.094-.289L0 7.268l7.461.015.001-.001c.112 0 .211-.072.245-.178L10 0z\"\n transform=\"translate(104.000000, 0.000000)\"\n />\n </g>\n </g>\n </g>\n </g>\n </g>\n </svg>\n }\n </div>\n }\n\n @if (\n (item?.hoteltype ===\n 'Apartamento' ||\n item?.hoteltype ===\n 'Appartement') &&\n item?.hotelcategory\n ) {\n <div class=\"category\">\n @for (\n item of getNumber(\n item?.hotelcategory ??\n ''\n );\n track $index\n ) {\n <svg\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.146296 4.26479L1.14015 2.01692C1.31289 1.62559 1.62559 1.31289 2.01692 1.14015L4.26479 0.146297C4.58174 0.00641826 4.93356 -0.0343944 5.27412 0.0292127C5.61467 0.0928198 5.92805 0.257876 6.17314 0.50273L7.9475 2.27839C8.1606 2.49155 8.31388 2.75701 8.39197 3.04813C8.47006 3.33925 8.4702 3.64578 8.39239 3.93698L7.93579 5.64109L12.866 10.5713C12.9085 10.6136 12.9422 10.6639 12.9652 10.7193C12.9882 10.7746 13 10.834 13 10.8939V12.5447C12.9993 12.6652 12.9511 12.7807 12.8659 12.8659C12.7807 12.9511 12.6652 12.9993 12.5447 13H10.8939C10.7926 12.9998 10.6942 12.9659 10.6142 12.9038C10.5341 12.8416 10.477 12.7547 10.4516 12.6566L10.2045 11.6796L9.3303 11.5131C9.24322 11.4968 9.16282 11.4553 9.09903 11.3938C9.03523 11.3323 8.99082 11.2535 8.97127 11.1671L8.73321 10.1173L7.89026 10.0367C7.78479 10.0274 7.68608 9.9808 7.61188 9.90528L5.64109 7.93579L3.93697 8.39239C3.6458 8.47047 3.33919 8.47046 3.04802 8.39236C2.75685 8.31426 2.4914 8.16082 2.27839 7.9475L0.502729 6.17314C0.257875 5.92805 0.0928202 5.61467 0.029213 5.27412C-0.0343943 4.93357 0.00641727 4.58174 0.146296 4.26479ZM3.6703 5.08953C3.81061 5.22968 3.98932 5.32508 4.18385 5.36369C4.37837 5.40229 4.57997 5.38236 4.76317 5.30641C4.94636 5.23047 5.10294 5.10191 5.21309 4.937C5.32324 4.7721 5.38203 4.57823 5.38203 4.37991C5.38203 4.1816 5.32324 3.98773 5.21309 3.82283C5.10294 3.65792 4.94636 3.52936 4.76317 3.45342C4.57997 3.37747 4.37837 3.35754 4.18385 3.39614C3.98932 3.43475 3.81061 3.53015 3.6703 3.6703C3.57689 3.76336 3.50277 3.87395 3.45219 3.99572C3.40162 4.1175 3.37558 4.24806 3.37558 4.37991C3.37558 4.51177 3.40162 4.64233 3.45219 4.76411C3.50277 4.88588 3.57689 4.99647 3.6703 5.08953Z\"\n fill=\"#fff\"\n fill-opacity=\"1\"\n />\n </svg>\n }\n </div>\n }\n </div>\n {{ showIfSup(item?.hotelcategory) }}\n </div>\n @if (item?.texts?.additional2) {\n <div\n class=\"m-tag-right\"\n [ngClass]=\"{\n 'left-mode':\n !item.hoteltype,\n }\"\n [style.backgroundColor]=\"\n item?.styles?.primary ??\n '#ff4338'\n \"\n >\n {{ item?.texts?.additional2 }}\n </div>\n }\n </div>\n </a>\n <div class=\"m-content\">\n @if (\n item.texts?.title || item.texts?.name\n ) {\n <div class=\"m-title\">\n {{\n item.texts?.title ??\n item.texts?.name\n }}\n </div>\n }\n\n <div class=\"m-subtitle\">\n @if (item.locality) {\n {{ item.locality }}\n }\n @if (item.locality && item.province) {\n -\n }\n @if (item.province) {\n {{ item.province }}\n }\n </div>\n\n @if (item.buttons?.length) {\n @for (\n btn of item.buttons;\n track $index\n ) {\n <a\n class=\"m-btn\"\n [ngClass]=\"{\n 'm-button-sm':\n $index % 2 === 0,\n 'm-but m-underline':\n $index % 2 !== 0,\n }\"\n [style.--btn-primary-dynamic]=\"\n item.styles?.primary\n \"\n [style.--btn-hover-dynamic]=\"\n item.styles?.primaryHover\n \"\n [href]=\"\n getButtonUrl(\n btn,\n item,\n $index\n )\n \"\n [attr.target]=\"\n btn.target || '_self'\n \"\n [linkType]=\"btn.linkType\"\n [attr.aria-label]=\"btn.label\"\n >\n <span>{{ btn.label }}</span>\n </a>\n }\n }\n </div>\n }\n </div>\n }\n } @else {\n <div class=\"m-empty\">\n {{\n texts?.notFound ??\n 'No se encontraron resultados con esos filtros.'\n }}\n </div>\n }\n </div>\n </div>\n </section>\n}\n", styles: ["@charset \"UTF-8\";.m-button-big{display:block;min-width:max-content;max-width:100%;width:33rem;text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;background-color:#ff4338;border-radius:.4rem;transition:.3s ease;height:4.8rem;cursor:pointer;position:relative;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button-big{font-size:1.6rem}}.m-button-big.red{background-color:#ff4338}@media (hover: hover){.m-button-big.red:hover{background-color:#ed3b37}}.m-button-big.blue{background-color:#5b87da}@media (hover: hover){.m-button-big.blue:hover{background-color:#446ecd}}.m-button-big.green{background-color:#3fd5ae}@media (hover: hover){.m-button-big.green:hover{background-color:#2ec99b}}.m-button-big.underline{color:#fff;border:.1rem solid white;background-color:transparent}@media (hover: hover){.m-button-big.underline:hover{border:.1rem solid #ed3b37;background-color:#ed3b37}}.m-button-big span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content}@media (hover: hover){.m-button-big:hover{background-color:#ed3b37}}.m-button-sm{display:block;min-width:max-content;width:100%;max-width:26rem;text-align:center;cursor:pointer;box-sizing:border-box;padding:1.1rem;color:#fff;border-radius:.4rem;transition:.3s ease;height:4.8rem;position:relative;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button-sm{font-size:1.6rem}}.m-button-sm span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content;color:var(--cl_btn-call-text-hover)}@media (hover: hover){.m-button-sm:hover{background-color:#ed3b37}.m-button-sm:hover span{color:var(--cl_btn-call-text-hover)}}.m-button-sm:focus{background-color:#ed3b37}.m-button-sm:focus span{color:var(--cl_btn-call-text-hover)}.m-underline{display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;color:var(--cl_title);font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline{font-size:1.6rem}}@media (hover: hover){.m-underline:hover:after,.m-underline.active:after{opacity:1;width:100%}}.m-underline:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;z-index:1}.m-underline:after{content:\"\";position:absolute;bottom:0rem;left:0;opacity:0;width:0%;height:.2rem;background-color:#ed3b37;transition:.3s ease;z-index:2}.m-underline-red{color:var(--cl_btn-link);display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-red{font-size:1.6rem}}.m-underline-red:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:var(--cl_btn-link);z-index:1}.m-underline-red:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#ed3b37;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-red:hover{color:#ed3b37}.m-underline-red:hover:after{width:100%}}.m-underline-blue{color:var(--cl_btn-link);display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-blue{font-size:1.6rem}}.m-underline-blue:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:var(--cl_btn-link);z-index:1}.m-underline-blue:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#446ecd;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-blue:hover{color:#446ecd}.m-underline-blue:hover:after{width:100%}}.m-underline-green{color:var(--cl_btn-link);display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-green{font-size:1.6rem}}.m-underline-green:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:var(--cl_btn-link);z-index:1}.m-underline-green:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#2ec99b;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-green:hover{color:#2ec99b}.m-underline-green:hover:after{width:100%}}.m-swiper-button{width:4.8rem;height:4.8rem;background-color:#ff4338;transition:.3s ease;cursor:pointer;position:relative}.m-swiper-button.swiper-button-disabled{opacity:.7}.m-swiper-button svg{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.m-swiper-button.prev{border-top-left-radius:8rem;border-bottom-left-radius:8rem}.m-swiper-button.next{border-top-right-radius:8rem;border-bottom-right-radius:8rem}@media (hover: hover){.m-swiper-button:hover{background-color:#ed3b37}}@media (max-width: 768px){.m-swiper-button{width:3.8rem;height:3.8rem}}@media (max-width: 540px){.m-swiper-button{width:3.2rem;height:3.2rem}.m-swiper-button svg{width:.5rem}}.m-swiper-button-s{width:3rem;height:3rem;background-color:#ff4338;transition:.3s ease;cursor:pointer;position:relative;border-radius:100%}.m-swiper-button-s svg{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.m-swiper-button-s.prev svg{left:45%}.m-swiper-button-s.next svg{left:55%}@media (hover: hover){.m-swiper-button-s:hover{background-color:#ed3b37}}.m-button-close{background-color:#ff4338;width:4.4rem;height:4.4rem;border-radius:100%;transition:.3s ease;cursor:pointer;position:relative}.m-button-close svg{transition:transform .4s ease;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}@media (hover: hover){.m-button-close:hover{background-color:#ed3b37}.m-button-close:hover svg{transform:rotate(180deg)}}.m-button{display:block;width:max-content;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button{font-size:1.6rem}}.m-button{text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;background-color:#ff4338;border-radius:.4rem;transition:.3s ease}@media (hover: hover){.m-button:hover{background-color:#ed3b37}}@media (max-width: 540px){.m-button{min-width:unset;max-width:33rem;width:100%;font-size:1.6rem}}.m-button2{display:block;width:max-content;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button2{font-size:1.6rem}}.m-button2{text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;border-radius:.4rem;transition:.3s ease;background-color:transparent;border:.1rem solid white}.m-button2.red{background-color:#ff4338}@media (hover: hover){.m-button2.red:hover{background-color:#ed3b37}}.m-button2.blue{background-color:#5b87da}@media (hover: hover){.m-button2.blue:hover{background-color:#446ecd}}.m-button2.green{background-color:#3fd5ae}@media (hover: hover){.m-button2.green:hover{background-color:#2ec99b}}.m-button2.underline{color:#fff;border:.1rem solid white;background-color:transparent}@media (hover: hover){.m-button2.underline:hover{border:.1rem solid #ed3b37;background-color:#ed3b37}}@media (hover: hover){.m-button2:hover{background-color:#ed3b37}}@media (max-width: 540px){.m-button2{min-width:unset;max-width:33rem;width:100%;font-size:1.6rem}}select.mini-arrow{position:relative;background-image:url(/assets/babylon/img/icons/icon-caret-down.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 0.8rem)\";background-position-y:50%;min-width:.8rem}.m-checkbox-group .m-checkbox:checked,.m-checkbox-group input:checked{background-color:#fff;background-image:url(/assets/babylon/img/icons/icon-check.svg);background-position:center;background-repeat:no-repeat;background-size:1.6rem;position:relative;left:0rem;top:0rem}.m-input.m-calendar{background-image:url(/assets/babylon/img/icons/icon-calendar-blue.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 2rem)\";background-position-y:50%}input[type=date]::-webkit-inner-spin-button,input[type=date]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none}input:not([type=radio]):not([type=checkbox]),textarea,select{background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::placeholder,textarea::placeholder,select::placeholder{font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-moz-placeholder,textarea::-moz-placeholder,select::-moz-placeholder{font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-ms-input-placeholder,textarea::-ms-input-placeholder,select::-ms-input-placeholder{font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-webkit-input-placeholder,textarea::-webkit-input-placeholder,select::-webkit-input-placeholder{font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px var(--cl_background_gray) inset!important;-webkit-text-fill-color:white!important;transition:background-color 5000s ease-in-out 0s}select{position:relative;cursor:pointer}select.mini-arrow{position:relative;background-image:url(/assets/babylon/img/icons/icon-caret-down.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 0.8rem)\";background-position-y:50%;min-width:.8rem}select option{font-family:var(--font-text);font-size:1.4rem;font-weight:var(--w_text);color:var(--cl_dropdown-text)}.m-checkbox-group{display:flex;flex-direction:row;align-items:flex-start}.m-checkbox-group .m-checkbox,.m-checkbox-group input{border-radius:0!important;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:2.8rem;height:2.8rem;border:.1rem solid #d2d2d2;background-color:transparent;padding:0;margin-right:2rem;border-radius:0;cursor:pointer;position:relative}.m-checkbox-group .m-checkbox:checked,.m-checkbox-group input:checked{background-color:#fff;background-image:url(/assets/babylon/img/icons/icon-check.svg);background-position:center;background-repeat:no-repeat;background-size:1.6rem;position:relative;left:0rem;top:0rem}.m-checkbox-group label{font-family:var(--font-text);font-size:1.3rem;font-weight:600;max-width:\"calc(100% - 5rem)\"}.m-radio-group{display:flex;flex-direction:row;align-items:center}.m-radio-group .m-radio{-webkit-appearance:none;width:2.8rem;height:2.8rem;border:.2rem solid #d2d2d2;background-color:transparent;border-radius:50%;padding:0;margin-right:2rem;cursor:pointer;position:relative}.m-radio-group .m-radio:checked{background-color:#fff!important}.m-radio-group .m-radio:checked:after{content:\" \";position:absolute;top:50%;left:50%;width:1.6rem;height:1.6rem;border-radius:50%;background-color:var(--cl_radio);transform:translate(-50%,-50%)}.m-radio-group label{font-family:var(--font-text);font-size:1.4rem;font-weight:500;max-width:\"calc(100% - 5rem)\"}.m-input.m-calendar{background-image:url(/assets/babylon/img/icons/icon-calendar-blue.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 2rem)\";background-position-y:50%}html{font-size:62.5%;overflow-x:hidden}html.overflow-hidden{overflow:hidden}html body{font:14px \"\"}@media (min-width: 1921px) and (max-height: 600px){html{font-size:55.5%}}html a{text-decoration:none}h1,h2,h3,h4,h5,h6{all:unset;display:revert}.fancybox__viewport{background-color:#fff}.fancybox__viewport.no-idiomas{background-color:red}section[class*=mdl]{padding-left:10rem;padding-right:10rem;box-sizing:border-box}@media (max-width: 1366px){section[class*=mdl]{padding-left:9rem;padding-right:9rem}}@media (max-width: 1280px){section[class*=mdl]{padding-left:8rem;padding-right:8rem}}@media (max-width: 1080px){section[class*=mdl]{padding-left:9.5rem;padding-right:9.5rem}}@media (max-width: 768px){section[class*=mdl]{padding-left:7.7rem;padding-right:7.7rem}}@media (max-width: 540px){section[class*=mdl]{padding-left:4.1rem;padding-right:4.1rem}}@media (max-width: 375px){section[class*=mdl]{padding-left:2.7rem;padding-right:2.7rem}}section .mdl-container{width:100%;max-width:160rem;margin:0 auto}.readmoreinit{overflow:hidden}.readmoreinit{line-height:1.6!important}@media screen and (max-width: 1200px){.readmoreinit{line-height:1.6!important}}@media screen and (max-width: 600px){.readmoreinit{line-height:1.6!important}}.read-more{display:flex;flex-direction:column;font-family:var(--font-text);font-size:1.5rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.4;letter-spacing:normal;color:#e6411e;text-decoration:underline;cursor:pointer;margin-top:2rem}.read-more .less{display:none}.w100{font-weight:100}.w300{font-weight:300}.w400{font-weight:400}.w500{font-weight:medium}.w600{font-weight:600}.w700{font-weight:700}.w900{font-weight:900}.italic{font-style:italic}.row{display:flex;flex-direction:row}.col{display:flex;flex-direction:column}html{overflow-x:hidden}body{cursor:default;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{color:inherit;border:0;margin:0;padding:0}a{text-size-adjust:none;-webkit-text-size-adjust:none;text-decoration:none;cursor:pointer}ul{list-style-position:outside}li{padding-left:3rem;list-style:none;position:relative}li:before{content:\"\\25cf\";position:absolute;top:0;left:0}button,mark{background:none}button,label{cursor:pointer}:focus{outline:none!important}::-moz-focus-inner{border:0}summary::-webkit-details-marker{display:none}button,input[type=submit],input[type=text]{-webkit-appearance:none}h1,h2,h3,h4,h5,h6{text-transform:none}p{width:100%}img{width:auto;height:auto;object-fit:contain}@-webkit-keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}@keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}.fancybox__container{background-color:#fff}.fancybox__container .fancybox__slide{flex-direction:column-reverse}.fancybox__container .fancybox__backdrop,.fancybox__container .fancybox__counter{display:none}.fancybox__container .fancybox__caption{color:var(--cl_btn-link);text-align:center;font-family:var(--font-text);font-weight:400;font-size:1.8rem;line-height:3.9rem;padding:0rem 0 2rem}@media (max-width: 540px){.fancybox__container .fancybox__caption{font-size:1.5rem}}@media (max-width: 375px){.fancybox__container .fancybox__caption{font-size:1.3rem}}.fancybox__container .fancybox__thumbs{display:none}.fancybox__container .fancybox__nav .carousel__button{background-color:#ff4338;top:55%}.fancybox__container .fancybox__nav .carousel__button svg{stroke:#fff;stroke-width:.3rem}.fancybox__container .carousel__button.is-close svg{display:none}.fancybox__container .carousel__button.is-close{background:url(/assets/babylon/img/icons/closeRed.svg) no-repeat center;background-size:100%;width:4.2rem;height:4.2rem;top:-4.7rem;right:-5rem;transition:transform .3s ease;transform:rotate(0)}.fancybox__container .carousel__button.is-close:hover{transition:transform .3s ease;transform:rotate(180deg)}@media (max-width: 540px){.fancybox__container .carousel__button.is-close{width:3rem;height:3rem}}.fancybox__container .fancybox__toolbar{border-bottom:none;margin:0 0 0 auto;padding:1rem}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items button:not(.fancybox__button--close){display:none}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close{background-color:#ff4338}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close svg{width:40%}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close svg path{stroke:#fff;stroke-width:.3rem}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-background-clip:text;-webkit-text-fill-color:#ffffff;transition:background-color 5000s ease-in-out 0s;box-shadow:inset 0 0 20px 20px #23232329}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.mdl-md002{background-color:var(--cl_background_body)}.mdl-md002.p-top{margin-top:10rem}.mdl-md002 .mdl-container{display:flex;flex-direction:column;gap:4rem;align-items:center}.mdl-md002 .mdl-container .m-content-top{width:100%;display:flex;flex-direction:row;justify-content:space-between;align-items:flex-end}.mdl-md002 .mdl-container .m-content-top .m-title{font-family:var(--font-text);font-weight:300;font-size:4.4rem;line-height:5.8rem}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:3.6rem;line-height:4.8rem}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:3rem;line-height:4rem}}@media (max-width: 375px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:2.4rem;line-height:3rem}}.mdl-md002 .mdl-container .m-content-top .m-title{width:100%;max-width:54.4rem;color:var(--cl_btn-link);font-weight:400}.mdl-md002 .mdl-container .m-content-top .m-selects{display:inline-block;display:flex;gap:2.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single{display:flex;align-items:center;height:4.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single .m-checkbox-group{margin:0;align-items:center}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single .m-checkbox-group input[type=checkbox]{margin-right:1rem;width:2rem;height:2rem;flex-shrink:0;border:.1rem solid #d2d2d2;border-radius:.4rem!important;cursor:pointer}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single .m-checkbox-group input[type=checkbox]:checked{background-color:var(--cl_btn-link, #ff4338);border-color:var(--cl_btn-link, #ff4338);background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E\")!important;background-size:1.2rem;background-position:center;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single .m-checkbox-group label{margin:0;font-size:1.4rem;cursor:pointer;font-weight:500;color:var(--cl_btn-link);max-width:none}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter{position:relative}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-btn{display:flex;align-items:center;gap:.8rem;padding:.5rem 4rem .5rem 1rem;font-size:1.4rem;color:var(--cl_btn-link);border:.1rem solid var(--cl_btn-link);border-radius:.5rem;background-color:#fff;cursor:pointer;min-height:4.4rem;font-family:var(--font-text);font-weight:500;width:100%}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-btn svg{width:2rem;height:2rem;stroke:#ff4338}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:90;cursor:default}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown{position:absolute;top:110%;left:0;background:#fff;border:1px solid #e4e4e4;border-radius:.8rem;box-shadow:0 4px 12px #0000001a;z-index:100;min-width:25rem;max-height:35rem;display:flex;flex-direction:column}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-header{display:flex;justify-content:flex-end;padding:1rem 1.5rem;border-bottom:1px solid #e4e4e4}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-header .m-close{cursor:pointer;font-weight:700;font-size:1.6rem;color:#4a4a49}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content{padding:1.5rem;overflow-y:auto;display:flex;flex-direction:column;gap:1.2rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content .m-checkbox-group{display:flex;align-items:center;margin-bottom:0}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content .m-checkbox-group input[type=checkbox]{margin-right:1rem;width:2rem;height:2rem;flex-shrink:0;border:.1rem solid #d2d2d2;border-radius:.4rem!important;cursor:pointer}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content .m-checkbox-group input[type=checkbox]:checked{background-color:var(--cl_btn-link, #ff4338);border-color:var(--cl_btn-link, #ff4338);background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E\")!important;background-size:1.2rem;background-position:center;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content .m-checkbox-group label{margin:0;font-size:1.4rem;cursor:pointer;font-weight:400;color:var(--cl_btn-link);max-width:none}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select{position:relative}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select select{width:20rem;padding:.5rem 2rem .5rem 1rem;font-size:1rem;color:var(--cl_btn-link);border:.1rem solid var(--cl_btn-link);border-radius:.5rem;background-color:#fff;appearance:none;-webkit-appearance:none;-moz-appearance:none;font-family:var(--font-text);font-weight:500;font-size:1.5rem;line-height:100%;cursor:pointer;min-height:4.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select:after{content:\"\\276e\";position:absolute;right:2rem;top:1.5rem;transform:rotate(270deg);pointer-events:none;color:var(--cl_btn-link);font-weight:700;font-size:1.3rem}.mdl-md002 .mdl-container .m-cards-container{display:flex;align-items:start;flex-direction:row;gap:0 3rem;max-width:100%;display:grid;grid-template-columns:repeat(var(--maxColumns),1fr);width:100%}.mdl-md002 .mdl-container .m-cards-container .link-container{width:100%;height:100%}.mdl-md002 .mdl-container .m-cards-container .m-card{-webkit-tap-highlight-color:transparent;position:relative;display:flex;flex-direction:column;align-items:center;width:100%;cursor:pointer;aspect-ratio:378/486;max-width:38rem;padding-bottom:2rem;margin-inline:auto}@media (min-width: 1024px){.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-card-top{background-blend-mode:multiply}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-card-top:after{bottom:4rem}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content{transform:translateY(-20%)}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-logo{opacity:1;transform:translateY(-118%)}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-button-sm{opacity:1;transform:none;width:100%;max-width:26rem}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-but{opacity:1;transform:none}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top{position:relative;background-position:center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%;transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top:after{content:\"\";width:102%;transition:all .3s ease;height:13.8rem;left:-1px;bottom:-1px;position:absolute;background-image:url(/assets/babylon/svg/others/cards-footer-shape.svg);background-position:center;background-size:cover;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top:before{content:\"\";width:100%;height:8rem;background-color:#fff;position:absolute;bottom:0;left:0}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag{font-family:var(--font-text);font-weight:400;font-size:1.8rem;line-height:100%;position:absolute;background-color:#ed3b37;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:2.6rem;left:3rem;white-space:nowrap}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-left{font-family:var(--font-text);font-weight:400;font-size:1.8rem;line-height:100%;position:absolute;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:2.5rem;left:1.5rem;white-space:nowrap;display:flex;gap:.8rem;align-items:center}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-right{font-family:jokker,sans-serif;font-weight:400;font-size:1.3rem;line-height:100%;position:absolute;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:3rem;right:3rem;white-space:nowrap}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-right.left-mode{left:3rem;right:auto}@media (max-width: 540px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-right{left:3rem;right:auto!important;top:6rem!important}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon{background-position:center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%;transition:all .3s ease;height:31vw;max-height:56rem;background-color:#fff9f9;position:relative}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon:after{content:\"\";width:102%;height:13.8rem;left:-1px;bottom:-1px;position:absolute;background-image:url(/assets/babylon/svg/others/cards-footer-shape.svg);background-position:center;background-size:cover;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon img{height:22.1rem;position:absolute;top:30%;left:50%;transform:translate(-50%,-30%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-family:var(--font-text);font-weight:300;font-size:3.2rem;line-height:4.6rem}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.8rem;line-height:3.8rem}}@media (max-width: 1080px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:3.2rem;line-height:4.6rem}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.8rem;line-height:3.8rem}}@media (max-width: 375px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.2rem;line-height:3rem}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{padding:6rem 5rem;color:var(--cl_btn-link)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content{display:flex;flex-direction:column;align-items:center;margin-top:-7rem;z-index:1;text-align:center;width:100%;transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-logo{position:absolute;justify-self:anchor-center;align-self:anchor-center;opacity:0;transition:all .3s ease;filter:invert(100%) sepia(6%) saturate(3350%) hue-rotate(358deg) brightness(108%) contrast(116%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-button-sm{margin-top:1.6rem;opacity:0;transform:translateY(-118%);transition:all .3s ease;width:100%;max-width:26rem;min-width:20rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-but{margin:2rem 0 4rem;opacity:0;transform:translateY(-118%);transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{font-family:var(--font-text);font-weight:500;font-size:2.3rem;color:var(--cl_title)}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{font-size:2rem}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{margin-bottom:1rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-subtitle{font-family:var(--font-text);font-weight:400;font-size:1.6rem;line-height:2.8rem;color:var(--cl_btn-link)}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(3,1fr)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-card-icon{height:34vw}.mdl-md002 .mdl-container .m-title{max-width:66rem}.mdl-md002 .mdl-container .m-content-top{display:flex;flex-direction:column;align-items:flex-start}.mdl-md002 .mdl-container .m-content-top .m-selects{margin:3rem auto 0;flex-wrap:wrap;justify-content:center}}@media (max-width: 1280px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon img{height:17.1rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.4rem;line-height:3.5rem}}@media (max-width: 1080px){.mdl-md002{padding-top:7.5rem}.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(2,1fr)}.mdl-md002 .mdl-container .m-cards-container .cardempty{display:none}.mdl-md002 .mdl-container .m-cards-container .m-card{aspect-ratio:378/582}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-text{font-size:2.8rem;line-height:3.8rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag{left:50%;transform:translate(-50%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-button-sm,.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-but{opacity:1;transform:none}}@media (max-width: 768px){.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(1,1fr)}.mdl-md002 .mdl-container .m-cards-container .m-title{width:100%;max-width:none}.mdl-md002 .mdl-container .m-cards-container .m-cards-container .m-card .m-content .m-subtitle{font-size:2.8rem}.mdl-md002 .mdl-container .m-content-top .m-selects{flex-direction:column}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-content-top .m-selects{margin:0;flex-wrap:nowrap;flex-direction:column;width:100%;margin-top:2rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select,.mdl-md002 .mdl-container .m-content-top .m-selects .m-select select{width:100%}}.mdl-md002 .m-btn{--btn-primary: var(--cl_btn-box);--btn-hover: var(--cl_btn-box-hover);background:var(--btn-primary);border:1px solid var(--btn-primary);color:var(--cl_btn-call-text);display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.mdl-md002 .m-btn:hover{background:var(--btn-hover);border-color:var(--btn-hover)}.mdl-md002 .m-button-sm{border:0;background-color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-button-sm:hover{background-color:var(--btn-hover-dynamic, #ed3b37)!important}.mdl-md002 .m-but.m-underline{background:transparent;border:0}.mdl-md002 .m-but.m-underline span{color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-but.m-underline:after{background-color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-empty{font-family:var(--font-text);font-weight:300;font-size:4.4rem;line-height:5.8rem}@media (max-width: 1366px){.mdl-md002 .m-empty{font-size:3.6rem;line-height:4.8rem}}@media (max-width: 540px){.mdl-md002 .m-empty{font-size:3rem;line-height:4rem}}@media (max-width: 375px){.mdl-md002 .m-empty{font-size:2.4rem;line-height:3rem}}.mdl-md002 .m-empty{width:100%;max-width:54.4rem;color:var(--cl_btn-link);font-weight:400}\n"] }]
559
+ ], template: "@if (items?.length) {\n <section class=\"mdl-md002\">\n <div class=\"mdl-container\">\n <div class=\"m-content-top\">\n @if (texts?.title) {\n <lib-babylon-dynamic-heading\n [tag]=\"tags?.title || 'h2'\"\n cssClass=\"m-title\"\n [content]=\"texts?.title ?? ''\"\n [color]=\"textColors?.title\"\n ></lib-babylon-dynamic-heading>\n }\n @if (showFilters) {\n <div class=\"m-selects\">\n @if (hasActiveFilters && showCleanFilters) {\n <button\n type=\"button\"\n class=\"m-clear\"\n (click)=\"clearFilters()\"\n >\n {{ texts?.cleanFilters ?? 'Limpiar filtros' }}\n </button>\n }\n @if (\n !hideServicesFilter && availableServices.length > 0\n ) {\n @if (availableServices.length === 1) {\n <div\n class=\"m-services-single services-filter services-filter__single\"\n >\n <div class=\"m-checkbox-group\">\n <input\n type=\"checkbox\"\n id=\"single-srv-0\"\n [checked]=\"\n selectedServices.has(\n availableServices[0]\n )\n \"\n (change)=\"\n toggleService(\n availableServices[0]\n )\n \"\n />\n <label for=\"single-srv-0\">{{\n availableServices[0]\n }}</label>\n </div>\n </div>\n } @else {\n <div\n class=\"m-services-filter m-select services-filter services-filter__multi\"\n >\n <button\n type=\"button\"\n class=\"m-services-btn\"\n (click)=\"toggleServicesMenu()\"\n >\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 6H20M7 12H17M10 18H14\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n @if (\n texts?.servicestitle ||\n selectedServices.size > 0\n ) {\n <span>\n @if (texts?.servicestitle) {\n {{ texts?.servicestitle }}\n }\n @if (\n selectedServices.size > 0\n ) {\n ({{\n selectedServices.size\n }})\n }\n </span>\n }\n </button>\n\n @if (isServicesMenuOpen) {\n <div\n class=\"m-services-overlay\"\n (click)=\"toggleServicesMenu()\"\n ></div>\n\n <div class=\"m-services-dropdown\">\n <div class=\"m-dropdown-header\">\n <span\n class=\"m-close\"\n (click)=\"\n toggleServicesMenu()\n \"\n >\u2715</span\n >\n </div>\n <div class=\"m-dropdown-content\">\n @for (\n srv of availableServices;\n track $index\n ) {\n <div\n class=\"m-checkbox-group\"\n >\n <input\n type=\"checkbox\"\n [id]=\"\n 'srv-' + $index\n \"\n [checked]=\"\n selectedServices.has(\n srv\n )\n \"\n (change)=\"\n toggleService(\n srv\n )\n \"\n />\n <label\n [for]=\"\n 'srv-' + $index\n \"\n >{{ srv }}</label\n >\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n }\n <div class=\"m-select brand-filter\">\n <select\n #BrandSel\n [attr.aria-label]=\"texts?.marca ?? 'marca'\"\n [(ngModel)]=\"selectedBrand\"\n (ngModelChange)=\"onBrandChange($event)\"\n >\n <option value=\"\">\n {{ texts?.marca ?? 'All' }}\n </option>\n @for (opt of brandOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n @if (experienceOptions.length > 0) {\n <div class=\"m-select experience-filter\">\n <select\n #ExperienceSel\n aria-label=\"Experiencias\"\n [(ngModel)]=\"selectedExperience\"\n (ngModelChange)=\"onExperienceChange($event)\"\n >\n <option value=\"\">Experiencias</option>\n @for (\n opt of experienceOptions;\n track $index\n ) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n }\n @if (texts?.hotelType) {\n <div class=\"m-select hoteltype-filter\">\n <select\n #hotelTypeSel\n [attr.aria-label]=\"\n texts?.hotelType ?? 'hoteles'\n \"\n [(ngModel)]=\"selectedHotelType\"\n (ngModelChange)=\"onHotelTypeChange($event)\"\n >\n <option value=\"\">\n {{ texts?.hotelType }}\n </option>\n @for (\n opt of hotelTypeOptions;\n track $index\n ) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n }\n\n <div class=\"m-select destination-filter\">\n <select\n #Destination\n [attr.aria-label]=\"\n texts?.destinations ?? 'destinos'\n \"\n [(ngModel)]=\"selectedDestination\"\n (ngModelChange)=\"onDestinationChange($event)\"\n >\n <option value=\"\">\n {{ texts?.destinations }}\n </option>\n @for (opt of destinationOptions; track $index) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n </div>\n }\n </div>\n\n <div\n class=\"m-cards-container\"\n [style.--maxColumns]=\"maxColumns ?? 4\"\n >\n @if (filteredItems?.length) {\n @for (item of filteredItems; track $index) {\n <div\n class=\"m-card\"\n [ngClass]=\"{\n cardempty:\n !getFirstImageByTag(\n tagName,\n item?.images ??\n item?.multimedia?.imagenes ??\n []\n ) &&\n !(\n item.images?.[0] ??\n item?.multimedia?.imagenes?.[0] ??\n item?.img\n ),\n }\"\n >\n @if (getImageUrl(item); as img) {\n <a\n class=\"link-container\"\n [href]=\"item.links?.[0]?.url\"\n [linkType]=\"item.links?.[0]?.linkType\"\n [disablePointerNone]=\"true\"\n >\n <div\n class=\"m-card-top\"\n [style.background-image]=\"\n 'url(' + img + ')'\n \"\n >\n <div class=\"m-tag-left\">\n @if (item.hoteltype) {\n {{ item.hoteltype }}\n }\n <div class=\"m-keys\">\n @if (\n (item?.hoteltype ===\n 'Hotel' ||\n item?.hoteltype ===\n 'H\u00F4tel') &&\n item?.hotelcategory\n ) {\n <div class=\"category\">\n @for (\n item of getNumber(\n item?.hotelcategory ??\n ''\n );\n track $index\n ) {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n >\n <g\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g>\n <g>\n <g\n transform=\"translate(-1404.000000, -5922.000000) translate(191.000000, 5865.000000) translate(1109.000000, 57.000000)\"\n >\n <g>\n <path\n fill=\"#fff\"\n fill-opacity=\"1\"\n fill-rule=\"nonzero\"\n d=\"M10 0l2.294 7.104c.034.106.133.178.245.178L20 7.267l-6.046 4.374v.001c-.09.066-.128.182-.093.289l2.322 7.095-6.032-4.4c-.09-.065-.213-.065-.303 0l-6.029 4.4 2.322-7.095H6.14c.035-.107-.003-.223-.094-.289L0 7.268l7.461.015.001-.001c.112 0 .211-.072.245-.178L10 0z\"\n transform=\"translate(104.000000, 0.000000)\"\n />\n </g>\n </g>\n </g>\n </g>\n </g>\n </svg>\n }\n </div>\n }\n\n @if (\n (item?.hoteltype ===\n 'Apartamento' ||\n item?.hoteltype ===\n 'Appartement') &&\n item?.hotelcategory\n ) {\n <div class=\"category\">\n @for (\n item of getNumber(\n item?.hotelcategory ??\n ''\n );\n track $index\n ) {\n <svg\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.146296 4.26479L1.14015 2.01692C1.31289 1.62559 1.62559 1.31289 2.01692 1.14015L4.26479 0.146297C4.58174 0.00641826 4.93356 -0.0343944 5.27412 0.0292127C5.61467 0.0928198 5.92805 0.257876 6.17314 0.50273L7.9475 2.27839C8.1606 2.49155 8.31388 2.75701 8.39197 3.04813C8.47006 3.33925 8.4702 3.64578 8.39239 3.93698L7.93579 5.64109L12.866 10.5713C12.9085 10.6136 12.9422 10.6639 12.9652 10.7193C12.9882 10.7746 13 10.834 13 10.8939V12.5447C12.9993 12.6652 12.9511 12.7807 12.8659 12.8659C12.7807 12.9511 12.6652 12.9993 12.5447 13H10.8939C10.7926 12.9998 10.6942 12.9659 10.6142 12.9038C10.5341 12.8416 10.477 12.7547 10.4516 12.6566L10.2045 11.6796L9.3303 11.5131C9.24322 11.4968 9.16282 11.4553 9.09903 11.3938C9.03523 11.3323 8.99082 11.2535 8.97127 11.1671L8.73321 10.1173L7.89026 10.0367C7.78479 10.0274 7.68608 9.9808 7.61188 9.90528L5.64109 7.93579L3.93697 8.39239C3.6458 8.47047 3.33919 8.47046 3.04802 8.39236C2.75685 8.31426 2.4914 8.16082 2.27839 7.9475L0.502729 6.17314C0.257875 5.92805 0.0928202 5.61467 0.029213 5.27412C-0.0343943 4.93357 0.00641727 4.58174 0.146296 4.26479ZM3.6703 5.08953C3.81061 5.22968 3.98932 5.32508 4.18385 5.36369C4.37837 5.40229 4.57997 5.38236 4.76317 5.30641C4.94636 5.23047 5.10294 5.10191 5.21309 4.937C5.32324 4.7721 5.38203 4.57823 5.38203 4.37991C5.38203 4.1816 5.32324 3.98773 5.21309 3.82283C5.10294 3.65792 4.94636 3.52936 4.76317 3.45342C4.57997 3.37747 4.37837 3.35754 4.18385 3.39614C3.98932 3.43475 3.81061 3.53015 3.6703 3.6703C3.57689 3.76336 3.50277 3.87395 3.45219 3.99572C3.40162 4.1175 3.37558 4.24806 3.37558 4.37991C3.37558 4.51177 3.40162 4.64233 3.45219 4.76411C3.50277 4.88588 3.57689 4.99647 3.6703 5.08953Z\"\n fill=\"#fff\"\n fill-opacity=\"1\"\n />\n </svg>\n }\n </div>\n }\n </div>\n {{ showIfSup(item?.hotelcategory) }}\n </div>\n @if (item?.texts?.additional2) {\n <div\n class=\"m-tag-right\"\n [ngClass]=\"{\n 'left-mode':\n !item.hoteltype,\n }\"\n [style.backgroundColor]=\"\n item?.styles?.primary ??\n '#ff4338'\n \"\n >\n {{ item?.texts?.additional2 }}\n </div>\n }\n </div>\n </a>\n <div class=\"m-content\">\n @if (\n item.texts?.title || item.texts?.name\n ) {\n <div class=\"m-title\">\n {{\n item.texts?.title ??\n item.texts?.name\n }}\n </div>\n }\n\n <div class=\"m-subtitle\">\n @if (item.locality) {\n {{ item.locality }}\n }\n @if (item.locality && item.province) {\n -\n }\n @if (item.province) {\n {{ item.province }}\n }\n </div>\n\n @if (item.buttons?.length) {\n @for (\n btn of item.buttons;\n track $index\n ) {\n <a\n class=\"m-btn\"\n [ngClass]=\"{\n 'm-button-sm':\n $index % 2 === 0,\n 'm-but m-underline':\n $index % 2 !== 0,\n }\"\n [style.--btn-primary-dynamic]=\"\n item.styles?.primary\n \"\n [style.--btn-hover-dynamic]=\"\n item.styles?.primaryHover\n \"\n [href]=\"\n getButtonUrl(\n btn,\n item,\n $index\n )\n \"\n [attr.target]=\"\n btn.target || '_self'\n \"\n [linkType]=\"btn.linkType\"\n [attr.aria-label]=\"btn.label\"\n >\n <span>{{ btn.label }}</span>\n </a>\n }\n }\n </div>\n }\n </div>\n }\n } @else {\n <div class=\"m-empty\">\n {{\n texts?.notFound ??\n 'No se encontraron resultados con esos filtros.'\n }}\n </div>\n }\n </div>\n </div>\n </section>\n}\n", styles: ["@charset \"UTF-8\";.m-button-big{display:block;min-width:max-content;max-width:100%;width:33rem;text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;background-color:#ff4338;border-radius:.4rem;transition:.3s ease;height:4.8rem;cursor:pointer;position:relative;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button-big{font-size:1.6rem}}.m-button-big.red{background-color:#ff4338}@media (hover: hover){.m-button-big.red:hover{background-color:#ed3b37}}.m-button-big.blue{background-color:#5b87da}@media (hover: hover){.m-button-big.blue:hover{background-color:#446ecd}}.m-button-big.green{background-color:#3fd5ae}@media (hover: hover){.m-button-big.green:hover{background-color:#2ec99b}}.m-button-big.underline{color:#fff;border:.1rem solid white;background-color:transparent}@media (hover: hover){.m-button-big.underline:hover{border:.1rem solid #ed3b37;background-color:#ed3b37}}.m-button-big span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content}@media (hover: hover){.m-button-big:hover{background-color:#ed3b37}}.m-button-sm{display:block;min-width:max-content;width:100%;max-width:26rem;text-align:center;cursor:pointer;box-sizing:border-box;padding:1.1rem;color:#fff;border-radius:.4rem;transition:.3s ease;height:4.8rem;position:relative;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button-sm{font-size:1.6rem}}.m-button-sm span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content;color:var(--cl_btn-call-text-hover)}@media (hover: hover){.m-button-sm:hover{background-color:#ed3b37}.m-button-sm:hover span{color:var(--cl_btn-call-text-hover)}}.m-button-sm:focus{background-color:#ed3b37}.m-button-sm:focus span{color:var(--cl_btn-call-text-hover)}.m-underline{display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;color:var(--cl_title);font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline{font-size:1.6rem}}@media (hover: hover){.m-underline:hover:after,.m-underline.active:after{opacity:1;width:100%}}.m-underline:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;z-index:1}.m-underline:after{content:\"\";position:absolute;bottom:0rem;left:0;opacity:0;width:0%;height:.2rem;background-color:#ed3b37;transition:.3s ease;z-index:2}.m-underline-red{color:var(--cl_btn-link);display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-red{font-size:1.6rem}}.m-underline-red:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:var(--cl_btn-link);z-index:1}.m-underline-red:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#ed3b37;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-red:hover{color:#ed3b37}.m-underline-red:hover:after{width:100%}}.m-underline-blue{color:var(--cl_btn-link);display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-blue{font-size:1.6rem}}.m-underline-blue:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:var(--cl_btn-link);z-index:1}.m-underline-blue:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#446ecd;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-blue:hover{color:#446ecd}.m-underline-blue:hover:after{width:100%}}.m-underline-green{color:var(--cl_btn-link);display:block;width:max-content;position:relative;text-align:center;cursor:pointer;transition:.3s ease;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-underline-green{font-size:1.6rem}}.m-underline-green:before{content:\"\";position:absolute;bottom:-1rem;left:0;width:100%;height:.1rem;background-color:var(--cl_btn-link);z-index:1}.m-underline-green:after{content:\"\";position:absolute;bottom:-1rem;left:0;opacity:1;width:0%;height:.2rem;background-color:#2ec99b;transition:.3s ease;z-index:2}@media (hover: hover){.m-underline-green:hover{color:#2ec99b}.m-underline-green:hover:after{width:100%}}.m-swiper-button{width:4.8rem;height:4.8rem;background-color:#ff4338;transition:.3s ease;cursor:pointer;position:relative}.m-swiper-button.swiper-button-disabled{opacity:.7}.m-swiper-button svg{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.m-swiper-button.prev{border-top-left-radius:8rem;border-bottom-left-radius:8rem}.m-swiper-button.next{border-top-right-radius:8rem;border-bottom-right-radius:8rem}@media (hover: hover){.m-swiper-button:hover{background-color:#ed3b37}}@media (max-width: 768px){.m-swiper-button{width:3.8rem;height:3.8rem}}@media (max-width: 540px){.m-swiper-button{width:3.2rem;height:3.2rem}.m-swiper-button svg{width:.5rem}}.m-swiper-button-s{width:3rem;height:3rem;background-color:#ff4338;transition:.3s ease;cursor:pointer;position:relative;border-radius:100%}.m-swiper-button-s svg{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.m-swiper-button-s.prev svg{left:45%}.m-swiper-button-s.next svg{left:55%}@media (hover: hover){.m-swiper-button-s:hover{background-color:#ed3b37}}.m-button-close{background-color:#ff4338;width:4.4rem;height:4.4rem;border-radius:100%;transition:.3s ease;cursor:pointer;position:relative}.m-button-close svg{transition:transform .4s ease;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}@media (hover: hover){.m-button-close:hover{background-color:#ed3b37}.m-button-close:hover svg{transform:rotate(180deg)}}.m-button{display:block;width:max-content;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button{font-size:1.6rem}}.m-button{text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;background-color:#ff4338;border-radius:.4rem;transition:.3s ease}@media (hover: hover){.m-button:hover{background-color:#ed3b37}}@media (max-width: 540px){.m-button{min-width:unset;max-width:33rem;width:100%;font-size:1.6rem}}.m-button2{display:block;width:max-content;font-family:var(--font-text);font-weight:500;font-size:1.8rem}@media (max-width: 375px){.m-button2{font-size:1.6rem}}.m-button2{text-align:center;box-sizing:border-box;padding:1.1rem;color:#fff;border-radius:.4rem;transition:.3s ease;background-color:transparent;border:.1rem solid white}.m-button2.red{background-color:#ff4338}@media (hover: hover){.m-button2.red:hover{background-color:#ed3b37}}.m-button2.blue{background-color:#5b87da}@media (hover: hover){.m-button2.blue:hover{background-color:#446ecd}}.m-button2.green{background-color:#3fd5ae}@media (hover: hover){.m-button2.green:hover{background-color:#2ec99b}}.m-button2.underline{color:#fff;border:.1rem solid white;background-color:transparent}@media (hover: hover){.m-button2.underline:hover{border:.1rem solid #ed3b37;background-color:#ed3b37}}@media (hover: hover){.m-button2:hover{background-color:#ed3b37}}@media (max-width: 540px){.m-button2{min-width:unset;max-width:33rem;width:100%;font-size:1.6rem}}select.mini-arrow{position:relative;background-image:url(/assets/babylon/img/icons/icon-caret-down.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 0.8rem)\";background-position-y:50%;min-width:.8rem}.m-checkbox-group .m-checkbox:checked,.m-checkbox-group input:checked{background-color:#fff;background-image:url(/assets/babylon/img/icons/icon-check.svg);background-position:center;background-repeat:no-repeat;background-size:1.6rem;position:relative;left:0rem;top:0rem}.m-input.m-calendar{background-image:url(/assets/babylon/img/icons/icon-calendar-blue.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 2rem)\";background-position-y:50%}input[type=date]::-webkit-inner-spin-button,input[type=date]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none}input:not([type=radio]):not([type=checkbox]),textarea,select{background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::placeholder,textarea::placeholder,select::placeholder{font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-moz-placeholder,textarea::-moz-placeholder,select::-moz-placeholder{font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-ms-input-placeholder,textarea::-ms-input-placeholder,select::-ms-input-placeholder{font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:not([type=radio]):not([type=checkbox])::-webkit-input-placeholder,textarea::-webkit-input-placeholder,select::-webkit-input-placeholder{font-family:var(--font-text);font-size:1.4rem;font-weight:500}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px var(--cl_background_gray) inset!important;-webkit-text-fill-color:white!important;transition:background-color 5000s ease-in-out 0s}select{position:relative;cursor:pointer}select.mini-arrow{position:relative;background-image:url(/assets/babylon/img/icons/icon-caret-down.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 0.8rem)\";background-position-y:50%;min-width:.8rem}select option{font-family:var(--font-text);font-size:1.4rem;font-weight:var(--w_text);color:var(--cl_dropdown-text)}.m-checkbox-group{display:flex;flex-direction:row;align-items:flex-start}.m-checkbox-group .m-checkbox,.m-checkbox-group input{border-radius:0!important;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:2.8rem;height:2.8rem;border:.1rem solid #d2d2d2;background-color:transparent;padding:0;margin-right:2rem;border-radius:0;cursor:pointer;position:relative}.m-checkbox-group .m-checkbox:checked,.m-checkbox-group input:checked{background-color:#fff;background-image:url(/assets/babylon/img/icons/icon-check.svg);background-position:center;background-repeat:no-repeat;background-size:1.6rem;position:relative;left:0rem;top:0rem}.m-checkbox-group label{font-family:var(--font-text);font-size:1.3rem;font-weight:600;max-width:\"calc(100% - 5rem)\"}.m-radio-group{display:flex;flex-direction:row;align-items:center}.m-radio-group .m-radio{-webkit-appearance:none;width:2.8rem;height:2.8rem;border:.2rem solid #d2d2d2;background-color:transparent;border-radius:50%;padding:0;margin-right:2rem;cursor:pointer;position:relative}.m-radio-group .m-radio:checked{background-color:#fff!important}.m-radio-group .m-radio:checked:after{content:\" \";position:absolute;top:50%;left:50%;width:1.6rem;height:1.6rem;border-radius:50%;background-color:var(--cl_radio);transform:translate(-50%,-50%)}.m-radio-group label{font-family:var(--font-text);font-size:1.4rem;font-weight:500;max-width:\"calc(100% - 5rem)\"}.m-input.m-calendar{background-image:url(/assets/babylon/img/icons/icon-calendar-blue.svg);background-repeat:no-repeat;background-position-x:\"calc(100% - 2rem)\";background-position-y:50%}html{font-size:62.5%;overflow-x:hidden}html.overflow-hidden{overflow:hidden}html body{font:14px \"\"}@media (min-width: 1921px) and (max-height: 600px){html{font-size:55.5%}}html a{text-decoration:none}h1,h2,h3,h4,h5,h6{all:unset;display:revert}.fancybox__viewport{background-color:#fff}.fancybox__viewport.no-idiomas{background-color:red}section[class*=mdl]{padding-left:10rem;padding-right:10rem;box-sizing:border-box}@media (max-width: 1366px){section[class*=mdl]{padding-left:9rem;padding-right:9rem}}@media (max-width: 1280px){section[class*=mdl]{padding-left:8rem;padding-right:8rem}}@media (max-width: 1080px){section[class*=mdl]{padding-left:9.5rem;padding-right:9.5rem}}@media (max-width: 768px){section[class*=mdl]{padding-left:7.7rem;padding-right:7.7rem}}@media (max-width: 540px){section[class*=mdl]{padding-left:4.1rem;padding-right:4.1rem}}@media (max-width: 375px){section[class*=mdl]{padding-left:2.7rem;padding-right:2.7rem}}section .mdl-container{width:100%;max-width:160rem;margin:0 auto}.readmoreinit{overflow:hidden}.readmoreinit{line-height:1.6!important}@media screen and (max-width: 1200px){.readmoreinit{line-height:1.6!important}}@media screen and (max-width: 600px){.readmoreinit{line-height:1.6!important}}.read-more{display:flex;flex-direction:column;font-family:var(--font-text);font-size:1.5rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.4;letter-spacing:normal;color:#e6411e;text-decoration:underline;cursor:pointer;margin-top:2rem}.read-more .less{display:none}.w100{font-weight:100}.w300{font-weight:300}.w400{font-weight:400}.w500{font-weight:medium}.w600{font-weight:600}.w700{font-weight:700}.w900{font-weight:900}.italic{font-style:italic}.row{display:flex;flex-direction:row}.col{display:flex;flex-direction:column}html{overflow-x:hidden}body{cursor:default;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{color:inherit;border:0;margin:0;padding:0}a{text-size-adjust:none;-webkit-text-size-adjust:none;text-decoration:none;cursor:pointer}ul{list-style-position:outside}li{padding-left:3rem;list-style:none;position:relative}li:before{content:\"\\25cf\";position:absolute;top:0;left:0}button,mark{background:none}button,label{cursor:pointer}:focus{outline:none!important}::-moz-focus-inner{border:0}summary::-webkit-details-marker{display:none}button,input[type=submit],input[type=text]{-webkit-appearance:none}h1,h2,h3,h4,h5,h6{text-transform:none}p{width:100%}img{width:auto;height:auto;object-fit:contain}@-webkit-keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}@keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}.fancybox__container{background-color:#fff}.fancybox__container .fancybox__slide{flex-direction:column-reverse}.fancybox__container .fancybox__backdrop,.fancybox__container .fancybox__counter{display:none}.fancybox__container .fancybox__caption{color:var(--cl_btn-link);text-align:center;font-family:var(--font-text);font-weight:400;font-size:1.8rem;line-height:3.9rem;padding:0rem 0 2rem}@media (max-width: 540px){.fancybox__container .fancybox__caption{font-size:1.5rem}}@media (max-width: 375px){.fancybox__container .fancybox__caption{font-size:1.3rem}}.fancybox__container .fancybox__thumbs{display:none}.fancybox__container .fancybox__nav .carousel__button{background-color:#ff4338;top:55%}.fancybox__container .fancybox__nav .carousel__button svg{stroke:#fff;stroke-width:.3rem}.fancybox__container .carousel__button.is-close svg{display:none}.fancybox__container .carousel__button.is-close{background:url(/assets/babylon/img/icons/closeRed.svg) no-repeat center;background-size:100%;width:4.2rem;height:4.2rem;top:-4.7rem;right:-5rem;transition:transform .3s ease;transform:rotate(0)}.fancybox__container .carousel__button.is-close:hover{transition:transform .3s ease;transform:rotate(180deg)}@media (max-width: 540px){.fancybox__container .carousel__button.is-close{width:3rem;height:3rem}}.fancybox__container .fancybox__toolbar{border-bottom:none;margin:0 0 0 auto;padding:1rem}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items button:not(.fancybox__button--close){display:none}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close{background-color:#ff4338}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close svg{width:40%}.fancybox__container .fancybox__toolbar .fancybox__toolbar__items .fancybox__button--close svg path{stroke:#fff;stroke-width:.3rem}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-background-clip:text;-webkit-text-fill-color:#ffffff;transition:background-color 5000s ease-in-out 0s;box-shadow:inset 0 0 20px 20px #23232329}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.mdl-md002{background-color:var(--cl_background_body)}.mdl-md002.p-top{margin-top:10rem}.mdl-md002 .mdl-container{display:flex;flex-direction:column;gap:4rem;align-items:center}.mdl-md002 .mdl-container .m-content-top{width:100%;display:flex;flex-direction:row;justify-content:space-between;align-items:flex-end}.mdl-md002 .mdl-container .m-content-top .m-title{font-family:var(--font-text);font-weight:300;font-size:4.4rem;line-height:5.8rem}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:3.6rem;line-height:4.8rem}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:3rem;line-height:4rem}}@media (max-width: 375px){.mdl-md002 .mdl-container .m-content-top .m-title{font-size:2.4rem;line-height:3rem}}.mdl-md002 .mdl-container .m-content-top .m-title{width:100%;max-width:54.4rem;color:var(--cl_btn-link);font-weight:400}.mdl-md002 .mdl-container .m-content-top .m-selects{display:inline-block;display:flex;gap:2.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single{display:flex;align-items:center;height:4.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single .m-checkbox-group{margin:0;align-items:center}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single .m-checkbox-group input[type=checkbox]{margin-right:1rem;width:2rem;height:2rem;flex-shrink:0;border:.1rem solid #d2d2d2;border-radius:.4rem!important;cursor:pointer}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single .m-checkbox-group input[type=checkbox]:checked{background-color:var(--cl_btn-link, #ff4338);border-color:var(--cl_btn-link, #ff4338);background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E\")!important;background-size:1.2rem;background-position:center;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-single .m-checkbox-group label{margin:0;font-size:1.4rem;cursor:pointer;font-weight:500;color:var(--cl_btn-link);max-width:none}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter{position:relative}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-btn{display:flex;align-items:center;gap:.8rem;padding:.5rem 4rem .5rem 1rem;font-size:1.4rem;color:var(--cl_btn-link);border:.1rem solid var(--cl_btn-link);border-radius:.5rem;background-color:#fff;cursor:pointer;min-height:4.4rem;font-family:var(--font-text);font-weight:500;width:100%}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-btn svg{width:2rem;height:2rem;stroke:#ff4338}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:90;cursor:default}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown{position:absolute;top:110%;left:0;background:#fff;border:1px solid #e4e4e4;border-radius:.8rem;box-shadow:0 4px 12px #0000001a;z-index:100;min-width:25rem;max-height:35rem;display:flex;flex-direction:column}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-header{display:flex;justify-content:flex-end;padding:1rem 1.5rem;border-bottom:1px solid #e4e4e4}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-header .m-close{cursor:pointer;font-weight:700;font-size:1.6rem;color:#4a4a49}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content{padding:1.5rem;overflow-y:auto;display:flex;flex-direction:column;gap:1.2rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content .m-checkbox-group{display:flex;align-items:center;margin-bottom:0}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content .m-checkbox-group input[type=checkbox]{margin-right:1rem;width:2rem;height:2rem;flex-shrink:0;border:.1rem solid #d2d2d2;border-radius:.4rem!important;cursor:pointer}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content .m-checkbox-group input[type=checkbox]:checked{background-color:var(--cl_btn-link, #ff4338);border-color:var(--cl_btn-link, #ff4338);background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E\")!important;background-size:1.2rem;background-position:center;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-content-top .m-selects .m-services-filter .m-services-dropdown .m-dropdown-content .m-checkbox-group label{margin:0;font-size:1.4rem;cursor:pointer;font-weight:400;color:var(--cl_btn-link);max-width:none}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select{position:relative}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select select{width:20rem;padding:.5rem 2rem .5rem 1rem;font-size:1rem;color:var(--cl_btn-link);border:.1rem solid var(--cl_btn-link);border-radius:.5rem;background-color:#fff;appearance:none;-webkit-appearance:none;-moz-appearance:none;font-family:var(--font-text);font-weight:500;font-size:1.5rem;line-height:100%;cursor:pointer;min-height:4.4rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select:after{content:\"\\276e\";position:absolute;right:2rem;top:1.5rem;transform:rotate(270deg);pointer-events:none;color:var(--cl_btn-link);font-weight:700;font-size:1.3rem}.mdl-md002 .mdl-container .m-cards-container{display:flex;align-items:start;flex-direction:row;gap:0 3rem;max-width:100%;display:grid;grid-template-columns:repeat(var(--maxColumns, 4),1fr);width:100%}.mdl-md002 .mdl-container .m-cards-container .link-container{width:100%;height:100%}.mdl-md002 .mdl-container .m-cards-container .m-card{-webkit-tap-highlight-color:transparent;position:relative;display:flex;flex-direction:column;align-items:center;width:100%;cursor:pointer;aspect-ratio:378/486;max-width:38rem;padding-bottom:2rem;margin-inline:auto}@media (min-width: 1024px){.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-card-top{background-blend-mode:multiply}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-card-top:after{bottom:4rem}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content{transform:translateY(-20%)}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-logo{opacity:1;transform:translateY(-118%)}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-button-sm{opacity:1;transform:none;width:100%;max-width:26rem}.mdl-md002 .mdl-container .m-cards-container .m-card:hover .m-content .m-but{opacity:1;transform:none}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top{position:relative;background-position:center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%;transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top:after{content:\"\";width:102%;transition:all .3s ease;height:13.8rem;left:-1px;bottom:-1px;position:absolute;background-image:url(/assets/babylon/svg/others/cards-footer-shape.svg);background-position:center;background-size:cover;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top:before{content:\"\";width:100%;height:8rem;background-color:#fff;position:absolute;bottom:0;left:0}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag{font-family:var(--font-text);font-weight:400;font-size:1.8rem;line-height:100%;position:absolute;background-color:#ed3b37;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:2.6rem;left:3rem;white-space:nowrap}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-left{font-family:var(--font-text);font-weight:400;font-size:1.8rem;line-height:100%;position:absolute;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:2.5rem;left:1.5rem;white-space:nowrap;display:flex;gap:.8rem;align-items:center}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-right{font-family:jokker,sans-serif;font-weight:400;font-size:1.3rem;line-height:100%;position:absolute;width:auto;color:#fff;padding:.5rem 1.5rem;border-radius:20rem;top:3rem;right:3rem;white-space:nowrap}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-right.left-mode{left:3rem;right:auto}@media (max-width: 540px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag-right{left:3rem;right:auto!important;top:6rem!important}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon{background-position:center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%;transition:all .3s ease;height:31vw;max-height:56rem;background-color:#fff9f9;position:relative}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon:after{content:\"\";width:102%;height:13.8rem;left:-1px;bottom:-1px;position:absolute;background-image:url(/assets/babylon/svg/others/cards-footer-shape.svg);background-position:center;background-size:cover;background-repeat:no-repeat}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon img{height:22.1rem;position:absolute;top:30%;left:50%;transform:translate(-50%,-30%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-family:var(--font-text);font-weight:300;font-size:3.2rem;line-height:4.6rem}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.8rem;line-height:3.8rem}}@media (max-width: 1080px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:3.2rem;line-height:4.6rem}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.8rem;line-height:3.8rem}}@media (max-width: 375px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.2rem;line-height:3rem}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{padding:6rem 5rem;color:var(--cl_btn-link)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content{display:flex;flex-direction:column;align-items:center;margin-top:-7rem;z-index:1;text-align:center;width:100%;transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-logo{position:absolute;justify-self:anchor-center;align-self:anchor-center;opacity:0;transition:all .3s ease;filter:invert(100%) sepia(6%) saturate(3350%) hue-rotate(358deg) brightness(108%) contrast(116%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-button-sm{margin-top:1.6rem;opacity:0;transform:translateY(-118%);transition:all .3s ease;width:100%;max-width:26rem;min-width:20rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-but{margin:2rem 0 4rem;opacity:0;transform:translateY(-118%);transition:all .3s ease}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{font-family:var(--font-text);font-weight:500;font-size:2.3rem;color:var(--cl_title)}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{font-size:2rem}}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-title{margin-bottom:1rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-subtitle{font-family:var(--font-text);font-weight:400;font-size:1.6rem;line-height:2.8rem;color:var(--cl_btn-link)}@media (max-width: 1366px){.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(3,1fr)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-card-icon{height:34vw}.mdl-md002 .mdl-container .m-title{max-width:66rem}.mdl-md002 .mdl-container .m-content-top{display:flex;flex-direction:column;align-items:flex-start}.mdl-md002 .mdl-container .m-content-top .m-selects{margin:3rem auto 0;flex-wrap:wrap;justify-content:center}}@media (max-width: 1280px){.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon img{height:17.1rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-icon .m-text{font-size:2.4rem;line-height:3.5rem}}@media (max-width: 1080px){.mdl-md002{padding-top:7.5rem}.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(2,1fr)}.mdl-md002 .mdl-container .m-cards-container .cardempty{display:none}.mdl-md002 .mdl-container .m-cards-container .m-card{aspect-ratio:378/582}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-text{font-size:2.8rem;line-height:3.8rem}.mdl-md002 .mdl-container .m-cards-container .m-card .m-card-top .m-tag{left:50%;transform:translate(-50%)}.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-button-sm,.mdl-md002 .mdl-container .m-cards-container .m-card .m-content .m-but{opacity:1;transform:none}}@media (max-width: 768px){.mdl-md002 .mdl-container .m-cards-container{grid-template-columns:repeat(1,1fr)}.mdl-md002 .mdl-container .m-cards-container .m-title{width:100%;max-width:none}.mdl-md002 .mdl-container .m-cards-container .m-cards-container .m-card .m-content .m-subtitle{font-size:2.8rem}.mdl-md002 .mdl-container .m-content-top .m-selects{flex-direction:column}}@media (max-width: 540px){.mdl-md002 .mdl-container .m-content-top .m-selects{margin:0;flex-wrap:nowrap;flex-direction:column;width:100%;margin-top:2rem}.mdl-md002 .mdl-container .m-content-top .m-selects .m-select,.mdl-md002 .mdl-container .m-content-top .m-selects .m-select select{width:100%}}.mdl-md002 .m-btn{--btn-primary: var(--cl_btn-box);--btn-hover: var(--cl_btn-box-hover);background:var(--btn-primary);border:1px solid var(--btn-primary);color:var(--cl_btn-call-text);display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.mdl-md002 .m-btn:hover{background:var(--btn-hover);border-color:var(--btn-hover)}.mdl-md002 .m-button-sm{border:0;background-color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-button-sm:hover{background-color:var(--btn-hover-dynamic, #ed3b37)!important}.mdl-md002 .m-but.m-underline{background:transparent;border:0}.mdl-md002 .m-but.m-underline span{color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-but.m-underline:after{background-color:var(--btn-primary-dynamic, #ff4338)!important}.mdl-md002 .m-empty{font-family:var(--font-text);font-weight:300;font-size:4.4rem;line-height:5.8rem}@media (max-width: 1366px){.mdl-md002 .m-empty{font-size:3.6rem;line-height:4.8rem}}@media (max-width: 540px){.mdl-md002 .m-empty{font-size:3rem;line-height:4rem}}@media (max-width: 375px){.mdl-md002 .m-empty{font-size:2.4rem;line-height:3rem}}.mdl-md002 .m-empty{width:100%;max-width:54.4rem;color:var(--cl_btn-link);font-weight:400}\n"] }]
556
560
  }], propDecorators: { texts: [{
557
561
  type: Input
558
562
  }], items: [{
@@ -580,4 +584,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
580
584
  }], textColors: [{
581
585
  type: Input
582
586
  }] } });
583
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzLWM0LXR4dC1kZXMtY3RhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9jb21wb25lbnRzL2V4dGVybmFsL2NvcmUvbGlzLWM0LXR4dC1kZXMtY3RhL2xpcy1jNC10eHQtZGVzLWN0YS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL2xpcy1jNC10eHQtZGVzLWN0YS9saXMtYzQtdHh0LWRlcy1jdGEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBS0wsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBV2hHLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7OztBQWV6RixNQUFNLE9BQU8sdUJBQXVCO0lBYnBDO1FBaUJhLHlCQUFvQixHQUFhLEtBQUssQ0FBQztRQUN2QyxxQkFBZ0IsR0FBWSxJQUFJLENBQUM7UUFJakMscUJBQWdC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QUF3QixrS0FDeEIsV0FBVywwdkJBQ1gsOEJBQThCOzs0RkFLekIsdUJBQXVCO2tCQWJuQyxTQUFTOytCQUNJLG9CQUFvQixjQUNsQixJQUFJLGlCQUNELGlCQUFpQixDQUFDLElBQUksV0FDNUI7d0JBQ0wsWUFBWTt3QkFDWix3QkFBd0I7d0JBQ3hCLFdBQVc7d0JBQ1gsOEJBQThCO3FCQUNqQzs4QkFLUSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTGlzQzRUeHREZXNDdGFDb21wb25lbnRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqXG4gKiBDb21wb25lbnRlIGRlIGxpc3RhZG8gY29uIHNpc3RlbWEgZGUgZmlsdHJvcyBzaW5jcm9uaXphZG8gY29uIGxhIFVSTC5cbiAqXG4gKiBGSUxPU09Gw41BXG4gKiAtLS0tLS0tLS0tXG4gKiAtIEVsIGNvbXBvbmVudGUgZXMgQUdOw5NTVElDTyBhbCBkb21pbmlvIChubyBoYXJkY29kZWEgXCJob3RlbFwiLCBcImFwYXJ0YW1lbnRvXCIsIG1hcmNhcywgZXRjLikuXG4gKiAtIFRvZG8gbG8gcXVlIHNlIGZpbHRyYSBwcm92aWVuZSBkZSBTVFJJTkdTIGVudmlhZG9zIHBvciBiYWNrZW5kICh5YSB0cmFkdWNpZG9zKS5cbiAqIC0gTGEgVVJMIHNpZW1wcmUgdHJhYmFqYSBjb24gU0xVR1Mgbm9ybWFsaXphZG9zIChzaW4gdGlsZGVzLCBlc3BhY2lvcyBuaSBjYXJhY3RlcmVzIHJhcm9zKS5cbiAqXG4gKiBGSUxUUk9TIFNPUE9SVEFET1MgKGFjdHVhbGVzKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIC0gZmlsdGVyICAgICAgIC0+IHRpcG8gcHJpbmNpcGFsIChlajogaG90ZWxlcywgYXBhcnRhbWVudG9zLCB2aWxsYXMsIGV0Yy4pXG4gKiAtIGRlc3RpbmF0aW9uICAtPiBkZXN0aW5vIChwb3Igbm9tYnJlKVxuICogLSBicmFuZCAgICAgICAgLT4gbWFyY2EgLyBncnVwb1xuICogLSBleHBlcmllbmNlICAgLT4gZXhwZXJpZW5jaWEgYXNvY2lhZGFcbiAqIC0gc2VydmljZXMgICAgIC0+IHNlcnZpY2lvcyBkaXNwb25pYmxlc1xuICpcbiAqIEFDVFVBTElaQUNJw5NOOiBCw5pTUVVFREEgRkFDRVRBREEgKEZhY2V0ZWQgU2VhcmNoKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWhvcmEgZWwgY29tcG9uZW50ZSBhY3R1YWxpemEgZGluw6FtaWNhbWVudGUgbGFzIG9wY2lvbmVzIGRlIGxvcyBkZXNwbGVnYWJsZXMuXG4gKiBBbCBzZWxlY2Npb25hciB1biBmaWx0cm8sIGxvcyBkZW3DoXMgb2N1bHRhbiBsYXMgb3BjaW9uZXMgcXVlIG5vIHRlbmRyw61hbiByZXN1bHRhZG9zXG4gKiBjcnV6YWRvcyBjb24gbGEgc2VsZWNjacOzbiBhY3R1YWwuIFBhcmEgZXZpdGFyIGJsb3F1ZW9zLCBzaWVtcHJlIHNlIG1hbnRpZW5lIHZpc2libGVcbiAqIGxhIG9wY2nDs24gcXVlIGVzdMOpIGFjdHVhbG1lbnRlIHNlbGVjY2lvbmFkYS5cbiAqL1xuXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFieWxvbkxpbmtUeXBlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGlyZWN0aXZlcy9saW5rLXR5cGUvbGluay10eXBlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICAgIEJhYnlsb25CdXR0b25JLFxuICAgIEJhYnlsb25JbWFnZUksXG4gICAgQmFieWxvblRleHRJbmZvSSxcbiAgICBCYWJ5bG9uVGV4dHNDb2xvcnNJLFxufSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJhYnlsb25EZXN0aW5hdGlvbkkgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tZGVzdGluYXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25HbG9iYWxFeHBlcmllbmNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWdsb2JhbC1leHBlcmllbmNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uSG90ZWxHbG9iYWxJdGVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWhvdGVsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uVGFnc0kgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tdGFncy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBnZXRGaXJzdEltYWdlQnlUYWdGcm9tSW1hZ2VzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvbXV0aW1lZGlhLnV0aWxzJztcbmltcG9ydCB7IEJhYnlsb25EeW5hbWljSGVhZGluZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9iYWJ5bG9uLWR5bmFtaWMtaGVhZGluZyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGlzLWM0LXR4dC1kZXMtY3RhJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEJhYnlsb25MaW5rVHlwZURpcmVjdGl2ZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIEJhYnlsb25EeW5hbWljSGVhZGluZ0NvbXBvbmVudCxcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9saXMtYzQtdHh0LWRlcy1jdGEuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9saXMtYzQtdHh0LWRlcy1jdGEuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBMaXNDNFR4dERlc0N0YUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIHRleHRzPzogQmFieWxvblRleHRJbmZvSTtcbiAgICBASW5wdXQoKSBpdGVtcz86IEJhYnlsb25Ib3RlbEdsb2JhbEl0ZW1bXTtcbiAgICBASW5wdXQoKSBsaW5rcz86IEJhYnlsb25CdXR0b25JW107XG4gICAgQElucHV0KCkgYWRkaXRpb25hbDFMaWtlTWFyY2E/OiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgc2hvd0NsZWFuRmlsdGVyczogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBleHBlcmllbmNlcz86IEJhYnlsb25HbG9iYWxFeHBlcmllbmNlW107XG4gICAgQElucHV0KCkgZGVzdGluYXRpb25zPzogQmFieWxvbkRlc3RpbmF0aW9uSVtdO1xuICAgIEBJbnB1dCgpIHNob3dEZXN0aW5hdGlvbnM/OiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgc2hvd0ZpbHRlcnM/OiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBtYXhDb2x1bW5zPzogbnVtYmVyID0gNDtcbiAgICBASW5wdXQoKSBoaWRlU2VydmljZXNGaWx0ZXI/OiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgdGFncz86IEJhYnlsb25UYWdzSTtcbiAgICBASW5wdXQoKSB0ZXh0Q29sb3JzPzogQmFieWxvblRleHRzQ29sb3JzSTtcblxuICAgIHRhZ05hbWU6IHN0cmluZyA9ICdMaXNDNFR4dERlc0N0YSc7XG5cbiAgICAvLyBVSSBsYWJlbHMgc2VsZWNjaW9uYWRvcyAobG8gcXVlIHNlIG11ZXN0cmEgZW4gbG9zIHNlbGVjdHMpXG4gICAgc2VsZWN0ZWRIb3RlbFR5cGU6IHN0cmluZyA9ICcnO1xuICAgIHNlbGVjdGVkRGVzdGluYXRpb246IHN0cmluZyA9ICcnO1xuICAgIHNlbGVjdGVkQnJhbmQ6IHN0cmluZyA9ICcnO1xuICAgIHNlbGVjdGVkRXhwZXJpZW5jZTogc3RyaW5nID0gJyc7XG5cbiAgICAvLyBPcGNpb25lcyBEaW7DoW1pY2FzIChMYXMgcXVlIHNlIG11ZXN0cmFuIGVuIGVsIEhUTUwgeSBzZSBhY3R1YWxpemFuIGFsIGZpbHRyYXIpXG4gICAgaG90ZWxUeXBlT3B0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgICBkZXN0aW5hdGlvbk9wdGlvbnM6IHN0cmluZ1tdID0gW107XG4gICAgYnJhbmRPcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgIGV4cGVyaWVuY2VPcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgIGF2YWlsYWJsZVNlcnZpY2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLy8gT3BjaW9uZXMgQmFzZSAoTGlzdGFzIG1hZXN0cmFzIGdlbmVyYWRhcyBhbCBjYXJnYXIsIG51bmNhIHNlIHJlZHVjZW4pXG4gICAgcHJpdmF0ZSBiYXNlSG90ZWxUeXBlT3B0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIGJhc2VEZXN0aW5hdGlvbk9wdGlvbnM6IHN0cmluZ1tdID0gW107XG4gICAgcHJpdmF0ZSBiYXNlQnJhbmRPcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgIHByaXZhdGUgYmFzZUV4cGVyaWVuY2VPcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgIHByaXZhdGUgYmFzZUF2YWlsYWJsZVNlcnZpY2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBwZW5kaW5nRmlsdGVyU2x1Zzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBwZW5kaW5nRGVzdGluYXRpb25TbHVnOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHBlbmRpbmdCcmFuZFNsdWc6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcGVuZGluZ0V4cGVyaWVuY2VTbHVnOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8vIHNsdWcgLT4gbGFiZWwgKGhpZHJhdGFyIHNlbGVjdHMgZGVzZGUgVVJMKVxuICAgIHByaXZhdGUgZmlsdGVyU2x1Z1RvTGFiZWwgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIHByaXZhdGUgZGVzdGluYXRpb25TbHVnVG9MYWJlbCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSBicmFuZFNsdWdUb0xhYmVsID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICBwcml2YXRlIGV4cGVyaWVuY2VTbHVnVG9MYWJlbCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgICAvLyBsYWJlbCAtPiBzbHVnIChlc2NyaXR1cmEgZXN0YWJsZSlcbiAgICBwcml2YXRlIGZpbHRlckxhYmVsVG9TbHVnID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICBwcml2YXRlIGRlc3RpbmF0aW9uTGFiZWxUb1NsdWcgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIHByaXZhdGUgYnJhbmRMYWJlbFRvU2x1ZyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSBleHBlcmllbmNlTGFiZWxUb1NsdWcgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgICBwcml2YXRlIHFwU3ViPzogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIHByaXZhdGUgaXNTeW5jaW5nRnJvbVVybCA9IGZhbHNlO1xuXG4gICAgc2VsZWN0ZWRTZXJ2aWNlczogU2V0PHN0cmluZz4gPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBpc1NlcnZpY2VzTWVudU9wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnFwU3ViID0gdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzU3luY2luZ0Zyb21VcmwgPSB0cnVlO1xuXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJTbHVnID0gcGFyYW1zLmdldCgnZmlsdGVyJykgPz8gJyc7XG4gICAgICAgICAgICBjb25zdCBkZXN0aW5hdGlvblNsdWcgPSBwYXJhbXMuZ2V0KCdkZXN0aW5hdGlvbicpID8/ICcnO1xuICAgICAgICAgICAgY29uc3QgYnJhbmRTbHVnID0gcGFyYW1zLmdldCgnYnJhbmQnKSA/PyAnJztcbiAgICAgICAgICAgIGNvbnN0IGV4cGVyaWVuY2VTbHVnID0gcGFyYW1zLmdldCgnZXhwZXJpZW5jZScpID8/ICcnO1xuXG4gICAgICAgICAgICB0aGlzLnJlc29sdmVQZW5kaW5nRnJvbU1hcHMoKTtcblxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nRmlsdGVyU2x1ZyA9IHBhcmFtcy5nZXQoJ2ZpbHRlcicpO1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nRGVzdGluYXRpb25TbHVnID0gcGFyYW1zLmdldCgnZGVzdGluYXRpb24nKTtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0JyYW5kU2x1ZyA9IHBhcmFtcy5nZXQoJ2JyYW5kJyk7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdFeHBlcmllbmNlU2x1ZyA9IHBhcmFtcy5nZXQoJ2V4cGVyaWVuY2UnKTtcblxuICAgICAgICAgICAgdGhpcy5yZXNvbHZlUGVuZGluZ0Zyb21NYXBzKCk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZEhvdGVsVHlwZSAmJiBmaWx0ZXJTbHVnKVxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUgPSBmaWx0ZXJTbHVnO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24gJiYgZGVzdGluYXRpb25TbHVnKVxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uU2x1ZztcbiAgICAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZEJyYW5kICYmIGJyYW5kU2x1ZylcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQnJhbmQgPSBicmFuZFNsdWc7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRFeHBlcmllbmNlICYmIGV4cGVyaWVuY2VTbHVnKVxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFeHBlcmllbmNlID0gZXhwZXJpZW5jZVNsdWc7XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlRHluYW1pY09wdGlvbnMoKTsgLy8gQWN0dWFsaXphIGxvcyBsaXN0YWRvcyBkaW7DoW1pY29zIGNvbiBsYSBoaWRyYXRhY2nDs25cbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gKHRoaXMuaXNTeW5jaW5nRnJvbVVybCA9IGZhbHNlKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10pIHtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRGaWx0ZXJPcHRpb25zKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHFwID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwO1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyU2x1ZyA9IHFwLmdldCgnZmlsdGVyJykgPz8gJyc7XG4gICAgICAgICAgICBjb25zdCBkZXN0aW5hdGlvblNsdWcgPSBxcC5nZXQoJ2Rlc3RpbmF0aW9uJykgPz8gJyc7XG4gICAgICAgICAgICBjb25zdCBicmFuZFNsdWcgPSBxcC5nZXQoJ2JyYW5kJykgPz8gJyc7XG4gICAgICAgICAgICBjb25zdCBleHBlcmllbmNlU2x1ZyA9IHFwLmdldCgnZXhwZXJpZW5jZScpID8/ICcnO1xuXG4gICAgICAgICAgICB0aGlzLmlzU3luY2luZ0Zyb21VcmwgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSG90ZWxUeXBlID1cbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNsdWdUb0xhYmVsLmdldChmaWx0ZXJTbHVnKSA/PyAnJztcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbiA9XG4gICAgICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvblNsdWdUb0xhYmVsLmdldChkZXN0aW5hdGlvblNsdWcpID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEJyYW5kID0gdGhpcy5icmFuZFNsdWdUb0xhYmVsLmdldChicmFuZFNsdWcpID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEV4cGVyaWVuY2UgPVxuICAgICAgICAgICAgICAgIHRoaXMuZXhwZXJpZW5jZVNsdWdUb0xhYmVsLmdldChleHBlcmllbmNlU2x1ZykgPz8gJyc7XG5cbiAgICAgICAgICAgIHRoaXMuZm9yY2VPcHRpb25NYXRjaCgpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVEeW5hbWljT3B0aW9ucygpOyAvLyBWdWVsdmUgYSBmaWx0cmFyIGxhcyBvcGNpb25lcyBzZWfDum4gbGEgbnVldmEgaGlkcmF0YWNpw7NuXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+ICh0aGlzLmlzU3luY2luZ0Zyb21VcmwgPSBmYWxzZSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMucXBTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZEZpbHRlck9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtcyA/PyBbXTtcbiAgICAgICAgY29uc3QgZXhwZXJpZW5jZXMgPSB0aGlzLmV4cGVyaWVuY2VzID8/IFtdO1xuXG4gICAgICAgIC8vIExsZW5hbW9zIGxhcyBsaXN0YXMgTUFFU1RSQVNcbiAgICAgICAgdGhpcy5iYXNlSG90ZWxUeXBlT3B0aW9ucyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICBuZXcgU2V0KFxuICAgICAgICAgICAgICAgIGl0ZW1zXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGkpID0+IChpIGFzIGFueSk/LmhvdGVsdHlwZSlcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHY/LnRyaW0oKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKS5zb3J0KChhLCBiKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpO1xuXG4gICAgICAgIHRoaXMuYmFzZURlc3RpbmF0aW9uT3B0aW9ucyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICBuZXcgU2V0KFxuICAgICAgICAgICAgICAgIGl0ZW1zXG4gICAgICAgICAgICAgICAgICAgIC5mbGF0TWFwKChpKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKChpIGFzIGFueSk/LmRlc3RpbmF0aW9ucyA/PyBbXSkubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkOiBhbnkpID0+IGQ/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKHY6IHN0cmluZykgPT4gdj8udHJpbSgpKVxuICAgICAgICAgICAgKVxuICAgICAgICApLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSk7XG5cbiAgICAgICAgdGhpcy5iYXNlQnJhbmRPcHRpb25zID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgIG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiB0aGlzLmdldEl0ZW1CcmFuZChpKSkuZmlsdGVyKEJvb2xlYW4pKVxuICAgICAgICApLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSk7XG5cbiAgICAgICAgdGhpcy5iYXNlRXhwZXJpZW5jZU9wdGlvbnMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgbmV3IFNldChleHBlcmllbmNlcy5tYXAoKGUpID0+IGUubmFtZUlkZW50aWZpZXIpPy5maWx0ZXIoQm9vbGVhbikpXG4gICAgICAgICkuc29ydCgoYSwgYikgPT4gYS5sb2NhbGVDb21wYXJlKGIpKTtcblxuICAgICAgICAvLyBSZXNldCBtYXBzXG4gICAgICAgIHRoaXMuZmlsdGVyU2x1Z1RvTGFiZWwuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvblNsdWdUb0xhYmVsLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuYnJhbmRTbHVnVG9MYWJlbC5jbGVhcigpO1xuICAgICAgICB0aGlzLmV4cGVyaWVuY2VTbHVnVG9MYWJlbC5jbGVhcigpO1xuXG4gICAgICAgIHRoaXMuZmlsdGVyTGFiZWxUb1NsdWcuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvbkxhYmVsVG9TbHVnLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuYnJhbmRMYWJlbFRvU2x1Zy5jbGVhcigpO1xuICAgICAgICB0aGlzLmV4cGVyaWVuY2VMYWJlbFRvU2x1Zy5jbGVhcigpO1xuXG4gICAgICAgIGNvbnN0IHVzZWRGaWx0ZXIgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgY29uc3QgdXNlZERlc3QgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgY29uc3QgdXNlZEJyYW5kID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgIGNvbnN0IHVzZWRFeHBlcmllbmNlID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBsYWJlbCBvZiB0aGlzLmJhc2VIb3RlbFR5cGVPcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlID0gdGhpcy5jYW5vbmljYWxTbHVnKGxhYmVsKTtcbiAgICAgICAgICAgIGNvbnN0IHNsdWcgPSBVdGlscy51bmlxdWVTbHVnKGJhc2UsIHVzZWRGaWx0ZXIpO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJTbHVnVG9MYWJlbC5zZXQoc2x1ZywgbGFiZWwpO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJMYWJlbFRvU2x1Zy5zZXQobGFiZWwsIHNsdWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBsYWJlbCBvZiB0aGlzLmJhc2VEZXN0aW5hdGlvbk9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGJhc2UgPSBVdGlscy50b1NsdWcobGFiZWwpIHx8ICdkZXN0aW5hdGlvbic7XG4gICAgICAgICAgICBjb25zdCBzbHVnID0gVXRpbHMudW5pcXVlU2x1ZyhiYXNlLCB1c2VkRGVzdCk7XG4gICAgICAgICAgICB0aGlzLmRlc3RpbmF0aW9uU2x1Z1RvTGFiZWwuc2V0KHNsdWcsIGxhYmVsKTtcbiAgICAgICAgICAgIHRoaXMuZGVzdGluYXRpb25MYWJlbFRvU2x1Zy5zZXQobGFiZWwsIHNsdWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBsYWJlbCBvZiB0aGlzLmJhc2VCcmFuZE9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGJhc2UgPSBVdGlscy50b1NsdWcobGFiZWwpIHx8ICdicmFuZCc7XG4gICAgICAgICAgICBjb25zdCBzbHVnID0gVXRpbHMudW5pcXVlU2x1ZyhiYXNlLCB1c2VkQnJhbmQpO1xuICAgICAgICAgICAgdGhpcy5icmFuZFNsdWdUb0xhYmVsLnNldChzbHVnLCBsYWJlbCk7XG4gICAgICAgICAgICB0aGlzLmJyYW5kTGFiZWxUb1NsdWcuc2V0KGxhYmVsLCBzbHVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgbGFiZWwgb2YgdGhpcy5iYXNlRXhwZXJpZW5jZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGJhc2UgPSBVdGlscy50b1NsdWcobGFiZWwpIHx8ICdleHBlcmllbmNlJztcbiAgICAgICAgICAgIGNvbnN0IHNsdWcgPSBVdGlscy51bmlxdWVTbHVnKGJhc2UsIHVzZWRFeHBlcmllbmNlKTtcbiAgICAgICAgICAgIHRoaXMuZXhwZXJpZW5jZVNsdWdUb0xhYmVsLnNldChzbHVnLCBsYWJlbCk7XG4gICAgICAgICAgICB0aGlzLmV4cGVyaWVuY2VMYWJlbFRvU2x1Zy5zZXQobGFiZWwsIHNsdWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWxsU2VydmljZXNOYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZFNlcnZpY2VzTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgICBsZXQgcmVxdWVzdGVkQ2xhc3Nlczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgaWYgKHRoaXMudGV4dHM/LnNlcnZpY2VzT25GaWx0ZXIpIHtcbiAgICAgICAgICAgIHJlcXVlc3RlZENsYXNzZXMgPSB0aGlzLnRleHRzPy5zZXJ2aWNlc09uRmlsdGVyXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAubWFwKChzKSA9PiBzPy50cmltKCkudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcnZpY2VzID1cbiAgICAgICAgICAgICAgICAoaXQgYXMgYW55KT8uc2VydmljZXNTZXJ2aWNlIHx8IChpdCBhcyBhbnkpPy5zZXJ2aWNlc19zZXJ2aWNlO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2VydmljZXMpKSB7XG4gICAgICAgICAgICAgICAgc2VydmljZXMuZm9yRWFjaCgocykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocz8ubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IHMubmFtZT8udHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWxsU2VydmljZXNOYW1lcy5hZGQobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWVzdGVkQ2xhc3Nlcy5sZW5ndGggPiAwICYmIHMuY2xhc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZENsYXNzZXMuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNsYXNzPy50cmltKCkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkU2VydmljZXNOYW1lcy5hZGQobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCBmaW5hbFNlcnZpY2VzID0gQXJyYXkuZnJvbShmaWx0ZXJlZFNlcnZpY2VzTmFtZXMpO1xuICAgICAgICBpZiAocmVxdWVzdGVkQ2xhc3Nlcy5sZW5ndGggPT09IDAgfHwgZmluYWxTZXJ2aWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGZpbmFsU2VydmljZXMgPSBBcnJheS5mcm9tKGFsbFNlcnZpY2VzTmFtZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iYXNlQXZhaWxhYmxlU2VydmljZXMgPSBmaW5hbFNlcnZpY2VzLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICBhLmxvY2FsZUNvbXBhcmUoYilcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBJbmljaWFsaXphbW9zIGxhcyBvcGNpb25lcyBkZSBVSSBjb24gbGFzIG1hZXN0cmFzIHkgbHVlZ28gZmlsdHJhbW9zXG4gICAgICAgIHRoaXMuaG90ZWxUeXBlT3B0aW9ucyA9IFsuLi50aGlzLmJhc2VIb3RlbFR5cGVPcHRpb25zXTtcbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvbk9wdGlvbnMgPSBbLi4udGhpcy5iYXNlRGVzdGluYXRpb25PcHRpb25zXTtcbiAgICAgICAgdGhpcy5icmFuZE9wdGlvbnMgPSBbLi4udGhpcy5iYXNlQnJhbmRPcHRpb25zXTtcbiAgICAgICAgdGhpcy5leHBlcmllbmNlT3B0aW9ucyA9IFsuLi50aGlzLmJhc2VFeHBlcmllbmNlT3B0aW9uc107XG4gICAgICAgIHRoaXMuYXZhaWxhYmxlU2VydmljZXMgPSBbLi4udGhpcy5iYXNlQXZhaWxhYmxlU2VydmljZXNdO1xuXG4gICAgICAgIHRoaXMudXBkYXRlRHluYW1pY09wdGlvbnMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEl0ZW1CcmFuZChpdDogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuYWRkaXRpb25hbDFMaWtlTWFyY2EpXG4gICAgICAgICAgICByZXR1cm4gKGl0Py50ZXh0cz8uYWRkaXRpb25hbDEgPz8gJycpPy50cmltKCk7XG4gICAgICAgIHJldHVybiAoaXQ/Lm1hcmNhID8/IGl0Py5icmFuZCA/PyBpdD8uZ3JvdXAgPz8gJycpPy50cmltKCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEzDk0dJQ0EgREUgRklMVFJBRE8gQkFTRSAoRkFDRVRFRCBTRUFSQ0gpXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLyoqXG4gICAgICogT2J0aWVuZSBsb3MgaXRlbXMgY29pbmNpZGVudGVzIGV4Y2x1eWVuZG8gdW5vIGRlIGxvcyBmaWx0cm9zLlxuICAgICAqIEVzIGNsYXZlIHBhcmEgY2FsY3VsYXIgcXXDqSBvcGNpb25lcyBkZWJlbiBxdWVkYXIgZGlzcG9uaWJsZXMgZW4gdW4gZGVzcGxlZ2FibGVcbiAgICAgKiBzaW4gcXVlIHN1IHByb3BpYSBzZWxlY2Npw7NuIHByZXZpYSBsYXMgYm9ycmUgcG9yIGNvbXBsZXRvLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0SXRlbXNNYXRjaGluZyhcbiAgICAgICAgZXhjbHVkZUZpbHRlcjpcbiAgICAgICAgICAgIHwgJ2hvdGVsVHlwZSdcbiAgICAgICAgICAgIHwgJ2Rlc3RpbmF0aW9uJ1xuICAgICAgICAgICAgfCAnYnJhbmQnXG4gICAgICAgICAgICB8ICdleHBlcmllbmNlJ1xuICAgICAgICAgICAgfCAnc2VydmljZXMnXG4gICAgICAgICAgICB8ICdub25lJ1xuICAgICk6IEJhYnlsb25Ib3RlbEdsb2JhbEl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtcyA/PyBbXTtcbiAgICAgICAgaWYgKCF0aGlzLnNob3dGaWx0ZXJzKSByZXR1cm4gaXRlbXM7XG5cbiAgICAgICAgbGV0IHZhbGlkSG90ZWxJZHNGb3JFeHBlcmllbmNlOiBudW1iZXJbXSA9IFtdO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEV4cGVyaWVuY2UgJiYgdGhpcy5leHBlcmllbmNlcykge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0RXhwID0gdGhpcy5leHBlcmllbmNlcy5maW5kKFxuICAgICAgICAgICAgICAgIChlKSA9PiBlLm5hbWVJZGVudGlmaWVyID09PSB0aGlzLnNlbGVjdGVkRXhwZXJpZW5jZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICh0YXJnZXRFeHAgJiYgdGFyZ2V0RXhwLmhvdGVscykge1xuICAgICAgICAgICAgICAgIHZhbGlkSG90ZWxJZHNGb3JFeHBlcmllbmNlID0gdGFyZ2V0RXhwLmhvdGVscy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChoOiBhbnkpID0+IGguaWRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1Ib3RlbFR5cGUgPSAoaXQgYXMgYW55KT8uaG90ZWx0eXBlID8/ICcnO1xuICAgICAgICAgICAgY29uc3QgaXRlbUJyYW5kID0gdGhpcy5nZXRJdGVtQnJhbmQoaXQpO1xuICAgICAgICAgICAgY29uc3QgaXRlbUlkID0gKGl0IGFzIGFueSk/LmlkO1xuXG4gICAgICAgICAgICBjb25zdCBob3RlbFR5cGVPayA9XG4gICAgICAgICAgICAgICAgZXhjbHVkZUZpbHRlciA9PT0gJ2hvdGVsVHlwZScgfHxcbiAgICAgICAgICAgICAgICAhdGhpcy5zZWxlY3RlZEhvdGVsVHlwZSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuY2Fub25pY2FsU2x1ZyhpdGVtSG90ZWxUeXBlKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5vbmljYWxTbHVnKHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUpO1xuXG4gICAgICAgICAgICBjb25zdCBkZXN0aW5hdGlvbk9rID1cbiAgICAgICAgICAgICAgICBleGNsdWRlRmlsdGVyID09PSAnZGVzdGluYXRpb24nIHx8XG4gICAgICAgICAgICAgICAgIXRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbiB8fFxuICAgICAgICAgICAgICAgICgoKGl0IGFzIGFueSk/LmRlc3RpbmF0aW9ucyA/PyBbXSkgYXMgYW55W10pLnNvbWUoXG4gICAgICAgICAgICAgICAgICAgIChkKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMudG9TbHVnKGQ/Lm5hbWUgPz8gJycpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMudG9TbHVnKHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbilcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCBicmFuZE9rID1cbiAgICAgICAgICAgICAgICBleGNsdWRlRmlsdGVyID09PSAnYnJhbmQnIHx8XG4gICAgICAgICAgICAgICAgIXRoaXMuc2VsZWN0ZWRCcmFuZCB8fFxuICAgICAgICAgICAgICAgIFV0aWxzLnRvU2x1ZyhpdGVtQnJhbmQpID09PSBVdGlscy50b1NsdWcodGhpcy5zZWxlY3RlZEJyYW5kKTtcblxuICAgICAgICAgICAgY29uc3QgZXhwZXJpZW5jZU9rID1cbiAgICAgICAgICAgICAgICBleGNsdWRlRmlsdGVyID09PSAnZXhwZXJpZW5jZScgfHxcbiAgICAgICAgICAgICAgICAhdGhpcy5zZWxlY3RlZEV4cGVyaWVuY2UgfHxcbiAgICAgICAgICAgICAgICB2YWxpZEhvdGVsSWRzRm9yRXhwZXJpZW5jZS5pbmNsdWRlcyhpdGVtSWQpO1xuXG4gICAgICAgICAgICBjb25zdCBzZXJ2aWNlc09rID1cbiAgICAgICAgICAgICAgICBleGNsdWRlRmlsdGVyID09PSAnc2VydmljZXMnIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFNlcnZpY2VzLnNpemUgPT09IDAgfHxcbiAgICAgICAgICAgICAgICBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRTZXJ2aWNlcykuZXZlcnkoKHNlbGVjdGVkU3J2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1TZXJ2aWNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAoaXQgYXMgYW55KT8uc2VydmljZXNTZXJ2aWNlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoaXQgYXMgYW55KT8uc2VydmljZXNfc2VydmljZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW1TZXJ2aWNlcykpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1TZXJ2aWNlcy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHM6IGFueSkgPT4gcz8ubmFtZT8udHJpbSgpID09PSBzZWxlY3RlZFNydlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIGhvdGVsVHlwZU9rICYmXG4gICAgICAgICAgICAgICAgZGVzdGluYXRpb25PayAmJlxuICAgICAgICAgICAgICAgIGJyYW5kT2sgJiZcbiAgICAgICAgICAgICAgICBleHBlcmllbmNlT2sgJiZcbiAgICAgICAgICAgICAgICBzZXJ2aWNlc09rXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgZmlsdGVyZWRJdGVtcygpOiBCYWJ5bG9uSG90ZWxHbG9iYWxJdGVtW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtc01hdGNoaW5nKCdub25lJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWN0dWFsaXphIGxvcyBhcnJheXMgZGUgb3BjaW9uZXMgcGFyYSBvY3VsdGFyIGFxdWVsbGFzIHF1ZSBkZXZvbHZlcsOtYW4gMCByZXN1bHRhZG9zLlxuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlRHluYW1pY09wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pdGVtcyB8fCB0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgICAgIC8vIC0tIERlc3Rpbm9zIC0tXG4gICAgICAgIGNvbnN0IGl0ZW1zRm9yRGVzdCA9IHRoaXMuZ2V0SXRlbXNNYXRjaGluZygnZGVzdGluYXRpb24nKTtcbiAgICAgICAgY29uc3QgdmFsaWREZXN0cyA9IG5ldyBTZXQoXG4gICAgICAgICAgICBpdGVtc0ZvckRlc3RcbiAgICAgICAgICAgICAgICAuZmxhdE1hcCgoaSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKChpIGFzIGFueSk/LmRlc3RpbmF0aW9ucyA/PyBbXSkubWFwKChkOiBhbnkpID0+IGQ/Lm5hbWUpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHY/LnRyaW0oKSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvbk9wdGlvbnMgPSB0aGlzLmJhc2VEZXN0aW5hdGlvbk9wdGlvbnMuZmlsdGVyKFxuICAgICAgICAgICAgKG9wdCkgPT4gdmFsaWREZXN0cy5oYXMob3B0KSB8fCB0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24gPT09IG9wdFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIC0tIE1hcmNhcyAtLVxuICAgICAgICBjb25zdCBpdGVtc0ZvckJyYW5kID0gdGhpcy5nZXRJdGVtc01hdGNoaW5nKCdicmFuZCcpO1xuICAgICAgICBjb25zdCB2YWxpZEJyYW5kcyA9IG5ldyBTZXQoXG4gICAgICAgICAgICBpdGVtc0ZvckJyYW5kLm1hcCgoaSkgPT4gdGhpcy5nZXRJdGVtQnJhbmQoaSkpLmZpbHRlcihCb29sZWFuKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmJyYW5kT3B0aW9ucyA9IHRoaXMuYmFzZUJyYW5kT3B0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgICAob3B0KSA9PiB2YWxpZEJyYW5kcy5oYXMob3B0KSB8fCB0aGlzLnNlbGVjdGVkQnJhbmQgPT09IG9wdFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIC0tIFRpcG9zIGRlIEhvdGVsIC0tXG4gICAgICAgIGNvbnN0IGl0ZW1zRm9ySG90ZWxUeXBlID0gdGhpcy5nZXRJdGVtc01hdGNoaW5nKCdob3RlbFR5cGUnKTtcbiAgICAgICAgY29uc3QgdmFsaWRIb3RlbFR5cGVzID0gbmV3IFNldChcbiAgICAgICAgICAgIGl0ZW1zRm9ySG90ZWxUeXBlXG4gICAgICAgICAgICAgICAgLm1hcCgoaSkgPT4gKGkgYXMgYW55KT8uaG90ZWx0eXBlKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHY/LnRyaW0oKSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5ob3RlbFR5cGVPcHRpb25zID0gdGhpcy5iYXNlSG90ZWxUeXBlT3B0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgICAob3B0KSA9PiB2YWxpZEhvdGVsVHlwZXMuaGFzKG9wdCkgfHwgdGhpcy5zZWxlY3RlZEhvdGVsVHlwZSA9PT0gb3B0XG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gLS0gRXhwZXJpZW5jaWFzIC0tXG4gICAgICAgIGNvbnN0IGl0ZW1zRm9yRXhwID0gdGhpcy5nZXRJdGVtc01hdGNoaW5nKCdleHBlcmllbmNlJyk7XG4gICAgICAgIGNvbnN0IHZhbGlkRXhwSWRzID0gbmV3IFNldChpdGVtc0ZvckV4cC5tYXAoKGkpID0+IChpIGFzIGFueSk/LmlkKSk7XG4gICAgICAgIHRoaXMuZXhwZXJpZW5jZU9wdGlvbnMgPSB0aGlzLmJhc2VFeHBlcmllbmNlT3B0aW9ucy5maWx0ZXIoKG9wdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRFeHBlcmllbmNlID09PSBvcHQpIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0RXhwID0gdGhpcy5leHBlcmllbmNlcz8uZmluZChcbiAgICAgICAgICAgICAgICAoZSkgPT4gZS5uYW1lSWRlbnRpZmllciA9PT0gb3B0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCF0YXJnZXRFeHA/LmhvdGVscykgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldEV4cC5ob3RlbHMuc29tZSgoaDogYW55KSA9PiB2YWxpZEV4cElkcy5oYXMoaC5pZCkpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyAtLSBTZXJ2aWNpb3MgLS1cbiAgICAgICAgY29uc3QgaXRlbXNGb3JTZXJ2aWNlcyA9IHRoaXMuZ2V0SXRlbXNNYXRjaGluZygnc2VydmljZXMnKTtcbiAgICAgICAgY29uc3QgdmFsaWRTZXJ2aWNlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBpdGVtc0ZvclNlcnZpY2VzLmZvckVhY2goKGl0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXJ2aWNlcyA9XG4gICAgICAgICAgICAgICAgKGl0IGFzIGFueSk/LnNlcnZpY2VzU2VydmljZSB8fCAoaXQgYXMgYW55KT8uc2VydmljZXNfc2VydmljZTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNlcnZpY2VzKSkge1xuICAgICAgICAgICAgICAgIHNlcnZpY2VzLmZvckVhY2goKHMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM/Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkU2VydmljZXMuYWRkKHMubmFtZT8udHJpbSgpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hdmFpbGFibGVTZXJ2aWNlcyA9IHRoaXMuYmFzZUF2YWlsYWJsZVNlcnZpY2VzLmZpbHRlcihcbiAgICAgICAgICAgIChvcHQpID0+IHZhbGlkU2VydmljZXMuaGFzKG9wdCkgfHwgdGhpcy5zZWxlY3RlZFNlcnZpY2VzLmhhcyhvcHQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGhhc0FjdGl2ZUZpbHRlcnMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIShcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUgfHxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbiB8fFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEJyYW5kIHx8XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRXhwZXJpZW5jZSB8fFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFNlcnZpY2VzLnNpemUgPiAwXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEhBTkRMRVJTIFVJXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgb25Ib3RlbFR5cGVDaGFuZ2UodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSG90ZWxUeXBlID0gdmFsdWUgPz8gJyc7XG4gICAgICAgIHRoaXMudXBkYXRlRHluYW1pY09wdGlvbnMoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNTeW5jaW5nRnJvbVVybCkgcmV0dXJuO1xuICAgICAgICB0aGlzLnN5bmNRdWVyeVBhcmFtcygpO1xuICAgIH1cblxuICAgIG9uRGVzdGluYXRpb25DaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24gPSB2YWx1ZSA/PyAnJztcbiAgICAgICAgdGhpcy51cGRhdGVEeW5hbWljT3B0aW9ucygpO1xuICAgICAgICBpZiAodGhpcy5pc1N5bmNpbmdGcm9tVXJsKSByZXR1cm47XG4gICAgICAgIHRoaXMuc3luY1F1ZXJ5UGFyYW1zKCk7XG4gICAgfVxuXG4gICAgb25CcmFuZENoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRCcmFuZCA9IHZhbHVlID8/ICcnO1xuICAgICAgICB0aGlzLnVwZGF0ZUR5bmFtaWNPcHRpb25zKCk7XG4gICAgICAgIGlmICh0aGlzLmlzU3luY2luZ0Zyb21VcmwpIHJldHVybjtcbiAgICAgICAgdGhpcy5zeW5jUXVlcnlQYXJhbXMoKTtcbiAgICB9XG5cbiAgICBvbkV4cGVyaWVuY2VDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRXhwZXJpZW5jZSA9IHZhbHVlID8/ICcnO1xuICAgICAgICB0aGlzLnVwZGF0ZUR5bmFtaWNPcHRpb25zKCk7XG4gICAgICAgIGlmICh0aGlzLmlzU3luY2luZ0Zyb21VcmwpIHJldHVybjtcbiAgICAgICAgdGhpcy5zeW5jUXVlcnlQYXJhbXMoKTtcbiAgICB9XG5cbiAgICBjbGVhckZpbHRlcnMoKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUgPSAnJztcbiAgICAgICAgdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uID0gJyc7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRCcmFuZCA9ICcnO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRXhwZXJpZW5jZSA9ICcnO1xuICAgICAgICB0aGlzLnNlbGVjdGVkU2VydmljZXMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy51cGRhdGVEeW5hbWljT3B0aW9ucygpO1xuICAgICAgICB0aGlzLnN5bmNRdWVyeVBhcmFtcyh0cnVlKTtcbiAgICB9XG5cbiAgICB0b2dnbGVTZXJ2aWNlKHNlcnZpY2U6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZCA9IG5ldyBTZXQodGhpcy5zZWxlY3RlZFNlcnZpY2VzKTtcblxuICAgICAgICBpZiAobmV3U2VsZWN0ZWQuaGFzKHNlcnZpY2UpKSB7XG4gICAgICAgICAgICBuZXdTZWxlY3RlZC5kZWxldGUoc2VydmljZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdTZWxlY3RlZC5hZGQoc2VydmljZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkU2VydmljZXMgPSBuZXdTZWxlY3RlZDtcbiAgICAgICAgdGhpcy51cGRhdGVEeW5hbWljT3B0aW9ucygpO1xuICAgICAgICAvLyBOb3RhOiBTZXJ2aWNpb3Mgbm8gc2Ugc2luY2FuIGNvbiBVUkwgaGlzdMOzcmljYW1lbnRlLCBwZXJvIHJlLWV2YWx1YW1vcyBkaW7DoW1pY2FtZW50ZS5cbiAgICB9XG5cbiAgICB0b2dnbGVTZXJ2aWNlc01lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTZXJ2aWNlc01lbnVPcGVuID0gIXRoaXMuaXNTZXJ2aWNlc01lbnVPcGVuO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBVUkwgU1lOQyAoU0lFTVBSRSBTTFVHKVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByaXZhdGUgc3luY1F1ZXJ5UGFyYW1zKGNsZWFyQWxsID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgcXAgPSBjbGVhckFsbFxuICAgICAgICAgICAgPyB7IGZpbHRlcjogbnVsbCwgZGVzdGluYXRpb246IG51bGwsIGJyYW5kOiBudWxsLCBleHBlcmllbmNlOiBudWxsIH1cbiAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgZmlsdGVyOiB0aGlzLnNlbGVjdGVkSG90ZWxUeXBlXG4gICAgICAgICAgICAgICAgICAgICAgPyAodGhpcy5maWx0ZXJMYWJlbFRvU2x1Zy5nZXQodGhpcy5zZWxlY3RlZEhvdGVsVHlwZSkgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2Fub25pY2FsU2x1Zyh0aGlzLnNlbGVjdGVkSG90ZWxUeXBlKSlcbiAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG5cbiAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uOiB0aGlzLnNlbGVjdGVkRGVzdGluYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICA/ICh0aGlzLmRlc3RpbmF0aW9uTGFiZWxUb1NsdWcuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgKSA/PyBVdGlscy50b1NsdWcodGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uKSlcbiAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG5cbiAgICAgICAgICAgICAgICAgIGJyYW5kOiB0aGlzLnNlbGVjdGVkQnJhbmRcbiAgICAgICAgICAgICAgICAgICAgICA/ICh0aGlzLmJyYW5kTGFiZWxUb1NsdWcuZ2V0KHRoaXMuc2VsZWN0ZWRCcmFuZCkgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLnRvU2x1Zyh0aGlzLnNlbGVjdGVkQnJhbmQpKVxuICAgICAgICAgICAgICAgICAgICAgIDogbnVsbCxcblxuICAgICAgICAgICAgICAgICAgZXhwZXJpZW5jZTogdGhpcy5zZWxlY3RlZEV4cGVyaWVuY2VcbiAgICAgICAgICAgICAgICAgICAgICA/ICh0aGlzLmV4cGVyaWVuY2VMYWJlbFRvU2x1Zy5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEV4cGVyaWVuY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICkgPz8gVXRpbHMudG9TbHVnKHRoaXMuc2VsZWN0ZWRFeHBlcmllbmNlKSlcbiAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICAgICAgICBxdWVyeVBhcmFtczogcXAsXG4gICAgICAgICAgICByZXBsYWNlVXJsOiB0cnVlLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbm9uaWNhbFNsdWcodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBzID0gVXRpbHMudG9TbHVnKHZhbHVlKTtcbiAgICAgICAgaWYgKCFzKSByZXR1cm4gJyc7XG5cbiAgICAgICAgaWYgKHMubGVuZ3RoID4gMyAmJiBzLmVuZHNXaXRoKCdlcycpKSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlID0gcy5zbGljZSgwLCAtMik7XG4gICAgICAgICAgICBpZiAoYmFzZS5lbmRzV2l0aCgnYycpKSByZXR1cm4gYmFzZS5zbGljZSgwLCAtMSkgKyAneic7XG4gICAgICAgICAgICByZXR1cm4gYmFzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzLmxlbmd0aCA+IDMgJiYgcy5lbmRzV2l0aCgncycpKSByZXR1cm4gcy5zbGljZSgwLCAtMSk7XG5cbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxuXG4gICAgZ2V0S2V5c0FycmF5KGNvdW50OiBudW1iZXIgfCB1bmRlZmluZWQpOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiBjb3VudCA/IEFycmF5LmZyb20oeyBsZW5ndGg6IGNvdW50IH0pIDogW107XG4gICAgfVxuXG4gICAgdHJhY2tCeUluZGV4KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgZ2V0Rmlyc3RJbWFnZUJ5VGFnKHRhZ05hbWU6IHN0cmluZywgaW1hZ2VuZXM6IEJhYnlsb25JbWFnZUlbXSkge1xuICAgICAgICByZXR1cm4gZ2V0Rmlyc3RJbWFnZUJ5VGFnRnJvbUltYWdlcyhpbWFnZW5lcywgdGFnTmFtZSkgPz8gaW1hZ2VuZXM/LlswXTtcbiAgICB9XG5cbiAgICBnZXROdW1iZXIodGV4dDogc3RyaW5nKTogbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4gVXRpbHMuZXh0cmFjdE51bWJlclJhbmdlKHRleHQpO1xuICAgIH1cblxuICAgIHNob3dJZlN1cCh2YWx1ZT86IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCByZWdleCA9IC9cXGIoU1VQfHN1cGVyaW9yKVxcYi9pO1xuICAgICAgICByZXR1cm4gcmVnZXgudGVzdCh2YWx1ZSA/PyAnJykgPyAnU1VQJyA6ICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZVBlbmRpbmdGcm9tTWFwcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0ZpbHRlclNsdWcgIT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3Qgc2x1ZyA9IHRoaXMuY2Fub25pY2FsU2x1Zyh0aGlzLnBlbmRpbmdGaWx0ZXJTbHVnKTtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5maWx0ZXJTbHVnVG9MYWJlbC5nZXQoc2x1Zyk7XG4gICAgICAgICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSG90ZWxUeXBlID0gbGFiZWw7XG4gICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nRmlsdGVyU2x1ZyA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wZW5kaW5nRGVzdGluYXRpb25TbHVnICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHNsdWcgPSBVdGlscy50b1NsdWcodGhpcy5wZW5kaW5nRGVzdGluYXRpb25TbHVnKTtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5kZXN0aW5hdGlvblNsdWdUb0xhYmVsLmdldChzbHVnKTtcbiAgICAgICAgICAgIGlmIChsYWJlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbiA9IGxhYmVsO1xuICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0Rlc3RpbmF0aW9uU2x1ZyA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wZW5kaW5nQnJhbmRTbHVnICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHNsdWcgPSBVdGlscy50b1NsdWcodGhpcy5wZW5kaW5nQnJhbmRTbHVnKTtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5icmFuZFNsdWdUb0xhYmVsLmdldChzbHVnKTtcbiAgICAgICAgICAgIGlmIChsYWJlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRCcmFuZCA9IGxhYmVsO1xuICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0JyYW5kU2x1ZyA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wZW5kaW5nRXhwZXJpZW5jZVNsdWcgIT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3Qgc2x1ZyA9IFV0aWxzLnRvU2x1Zyh0aGlzLnBlbmRpbmdFeHBlcmllbmNlU2x1Zyk7XG4gICAgICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMuZXhwZXJpZW5jZVNsdWdUb0xhYmVsLmdldChzbHVnKTtcbiAgICAgICAgICAgIGlmIChsYWJlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFeHBlcmllbmNlID0gbGFiZWw7XG4gICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nRXhwZXJpZW5jZVNsdWcgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JjZU9wdGlvbk1hdGNoKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEhvdGVsVHlwZSkge1xuICAgICAgICAgICAgY29uc3Qgd2FudGVkID0gdGhpcy5jYW5vbmljYWxTbHVnKHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUpO1xuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLmJhc2VIb3RlbFR5cGVPcHRpb25zLmZpbmQoXG4gICAgICAgICAgICAgICAgKG8pID0+IHRoaXMuY2Fub25pY2FsU2x1ZyhvKSA9PT0gd2FudGVkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEhvdGVsVHlwZSA9IG1hdGNoID8/ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRCcmFuZCkge1xuICAgICAgICAgICAgY29uc3Qgd2FudGVkID0gVXRpbHMudG9TbHVnKHRoaXMuc2VsZWN0ZWRCcmFuZCk7XG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IHRoaXMuYmFzZUJyYW5kT3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAgIChvKSA9PiBVdGlscy50b1NsdWcobykgPT09IHdhbnRlZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRCcmFuZCA9IG1hdGNoID8/ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbikge1xuICAgICAgICAgICAgY29uc3Qgd2FudGVkID0gVXRpbHMudG9TbHVnKHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbik7XG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IHRoaXMuYmFzZURlc3RpbmF0aW9uT3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAgIChvKSA9PiBVdGlscy50b1NsdWcobykgPT09IHdhbnRlZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbiA9IG1hdGNoID8/ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRFeHBlcmllbmNlKSB7XG4gICAgICAgICAgICBjb25zdCB3YW50ZWQgPSBVdGlscy50b1NsdWcodGhpcy5zZWxlY3RlZEV4cGVyaWVuY2UpO1xuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLmJhc2VFeHBlcmllbmNlT3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAgIChvKSA9PiBVdGlscy50b1NsdWcobykgPT09IHdhbnRlZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFeHBlcmllbmNlID0gbWF0Y2ggPz8gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRCdXR0b25VcmwoYnRuOiBCYWJ5bG9uQnV0dG9uSSwgaXRlbTogYW55LCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdXJsQmFzZSA9IGJ0bi51cmwgfHwgJyc7XG5cbiAgICAgICAgaWYgKGluZGV4ICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdXJsQmFzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlkZW50aWZpZXIgPVxuICAgICAgICAgICAgaXRlbT8ubmFtZUlkZW50aWZpZXIgPz8gaXRlbT8ubmFtZV9pZGVudGlmaWVyID8/IGl0ZW0/Lm5hbWU7XG5cbiAgICAgICAgaWYgKCFpZGVudGlmaWVyKSB7XG4gICAgICAgICAgICByZXR1cm4gdXJsQmFzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHVybEJhc2UuaW5jbHVkZXMoJz8nKSA/ICcmJyA6ICc/JztcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBpdGVtPy50eXBlID09PSAnZXhwZXJpZW5jZScgfHxcbiAgICAgICAgICAgICghaXRlbT8udHlwZSAmJiAoaXRlbT8ubmFtZUlkZW50aWZpZXIgfHwgaXRlbT8ubmFtZV9pZGVudGlmaWVyKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7dXJsQmFzZX0ke3NlcGFyYXRvcn1leHBlcmllbmNlPSR7aWRlbnRpZmllcn1gO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0/LnR5cGUgPT09ICdkZXN0aW5hdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uU2x1ZyA9IFV0aWxzLnRvU2x1ZyhpZGVudGlmaWVyKTtcbiAgICAgICAgICAgIHJldHVybiBgJHt1cmxCYXNlfSR7c2VwYXJhdG9yfWRlc3RpbmF0aW9uPSR7ZGVzdGluYXRpb25TbHVnfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsQmFzZTtcbiAgICB9XG5cbiAgICBnZXRJbWFnZVVybChpdGVtOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCByZXNvbHZlZEltZyA9XG4gICAgICAgICAgICB0aGlzLmdldEZpcnN0SW1hZ2VCeVRhZyhcbiAgICAgICAgICAgICAgICB0aGlzLnRhZ05hbWUsXG4gICAgICAgICAgICAgICAgaXRlbS5pbWFnZXMgPz8gaXRlbT8ubXVsdGltZWRpYT8uaW1hZ2VuZXNcbiAgICAgICAgICAgICkgPz9cbiAgICAgICAgICAgIGl0ZW0uaW1hZ2VzPy5bMF0gPz9cbiAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICcvYXNzZXRzL2JhYnlsb24vc3ZnL2VtcHR5LnBuZyc7XG5cbiAgICAgICAgaWYgKHR5cGVvZiByZXNvbHZlZEltZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlZEltZz8uaW1nPy5zcmMgPz8gJy9hc3NldHMvYmFieWxvbi9zdmcvZW1wdHkucG5nJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXNvbHZlZEltZztcbiAgICB9XG59XG4iLCJAaWYgKGl0ZW1zPy5sZW5ndGgpIHtcbiAgICA8c2VjdGlvbiBjbGFzcz1cIm1kbC1tZDAwMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tY29udGVudC10b3BcIj5cbiAgICAgICAgICAgICAgICBAaWYgKHRleHRzPy50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICA8bGliLWJhYnlsb24tZHluYW1pYy1oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFnXT1cInRhZ3M/LnRpdGxlIHx8ICdoMidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M9XCJtLXRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cInRleHRzPy50aXRsZSA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwidGV4dENvbG9ycz8udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItYmFieWxvbi1keW5hbWljLWhlYWRpbmc+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoc2hvd0ZpbHRlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tc2VsZWN0c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChoYXNBY3RpdmVGaWx0ZXJzICYmIHNob3dDbGVhbkZpbHRlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tY2xlYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJGaWx0ZXJzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdGV4dHM/LmNsZWFuRmlsdGVycyA/PyAnTGltcGlhciBmaWx0cm9zJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaGlkZVNlcnZpY2VzRmlsdGVyICYmIGF2YWlsYWJsZVNlcnZpY2VzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYXZhaWxhYmxlU2VydmljZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1zZXJ2aWNlcy1zaW5nbGUgc2VydmljZXMtZmlsdGVyIHNlcnZpY2VzLWZpbHRlcl9fc2luZ2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tY2hlY2tib3gtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJzaW5nbGUtc3J2LTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkU2VydmljZXMuaGFzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZVNlcnZpY2VzWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVTZXJ2aWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZVNlcnZpY2VzWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic2luZ2xlLXNydi0wXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlU2VydmljZXNbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1zZXJ2aWNlcy1maWx0ZXIgbS1zZWxlY3Qgc2VydmljZXMtZmlsdGVyIHNlcnZpY2VzLWZpbHRlcl9fbXVsdGlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLXNlcnZpY2VzLWJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlcnZpY2VzTWVudSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNCA2SDIwTTcgMTJIMTdNMTAgMThIMTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM/LnNlcnZpY2VzdGl0bGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRTZXJ2aWNlcy5zaXplID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAodGV4dHM/LnNlcnZpY2VzdGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0cz8uc2VydmljZXN0aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFNlcnZpY2VzLnNpemUgPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRTZXJ2aWNlcy5zaXplXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpc1NlcnZpY2VzTWVudU9wZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1zZXJ2aWNlcy1vdmVybGF5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlcnZpY2VzTWVudSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1zZXJ2aWNlcy1kcm9wZG93blwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1kcm9wZG93bi1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLWNsb3NlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZVNlcnZpY2VzTWVudSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+4pyVPC9zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1kcm9wZG93bi1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcnYgb2YgYXZhaWxhYmxlU2VydmljZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1jaGVja2JveC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nydi0nICsgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRTZXJ2aWNlcy5oYXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNydlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZVNlcnZpY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNydlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcl09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3J2LScgKyAkaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgc3J2IH19PC9sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1zZWxlY3QgYnJhbmQtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjQnJhbmRTZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0cz8ubWFyY2EgPz8gJ21hcmNhJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRCcmFuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQnJhbmRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0cz8ubWFyY2EgPz8gJ0FsbCcgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKG9wdCBvZiBicmFuZE9wdGlvbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwib3B0XCI+e3sgb3B0IH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChleHBlcmllbmNlT3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tc2VsZWN0IGV4cGVyaWVuY2UtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNFeHBlcmllbmNlU2VsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRXhwZXJpZW5jaWFzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRFeHBlcmllbmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRXhwZXJpZW5jZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPkV4cGVyaWVuY2lhczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0IG9mIGV4cGVyaWVuY2VPcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrICRpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwib3B0XCI+e3sgb3B0IH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICh0ZXh0cz8uaG90ZWxUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tc2VsZWN0IGhvdGVsdHlwZS1maWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2hvdGVsVHlwZVNlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0cz8uaG90ZWxUeXBlID8/ICdob3RlbGVzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRIb3RlbFR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Ib3RlbFR5cGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0cz8uaG90ZWxUeXBlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdCBvZiBob3RlbFR5cGVPcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrICRpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwib3B0XCI+e3sgb3B0IH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1zZWxlY3QgZGVzdGluYXRpb24tZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjRGVzdGluYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzPy5kZXN0aW5hdGlvbnMgPz8gJ2Rlc3Rpbm9zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGVzdGluYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkRlc3RpbmF0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdGV4dHM/LmRlc3RpbmF0aW9ucyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAob3B0IG9mIGRlc3RpbmF0aW9uT3B0aW9uczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRcIj57eyBvcHQgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtLWNhcmRzLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLi0tbWF4Q29sdW1uc109XCJtYXhDb2x1bW5zID8/IDRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBpZiAoZmlsdGVyZWRJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZmlsdGVyZWRJdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLWNhcmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZGVtcHR5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWdldEZpcnN0SW1hZ2VCeVRhZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmltYWdlcyA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmltYWdlcz8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGdldEltYWdlVXJsKGl0ZW0pOyBhcyBpbWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGluay1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiaXRlbS5saW5rcz8uWzBdPy51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cIml0ZW0ubGlua3M/LlswXT8ubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVQb2ludGVyTm9uZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1jYXJkLXRvcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1cmwoJyArIGltZyArICcpJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tdGFnLWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmhvdGVsdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5ob3RlbHR5cGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1rZXlzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtPy5ob3RlbHR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdIb3RlbCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uaG90ZWx0eXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0jDtHRlbCcpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uaG90ZWxjYXRlZ29yeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3J5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSBvZiBnZXROdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uaG90ZWxjYXRlZ29yeSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrICRpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0xNDA0LjAwMDAwMCwgLTU5MjIuMDAwMDAwKSB0cmFuc2xhdGUoMTkxLjAwMDAwMCwgNTg2NS4wMDAwMDApIHRyYW5zbGF0ZSgxMTA5LjAwMDAwMCwgNTcuMDAwMDAwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNmZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwtcnVsZT1cIm5vbnplcm9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAgMGwyLjI5NCA3LjEwNGMuMDM0LjEwNi4xMzMuMTc4LjI0NS4xNzhMMjAgNy4yNjdsLTYuMDQ2IDQuMzc0di4wMDFjLS4wOS4wNjYtLjEyOC4xODItLjA5My4yODlsMi4zMjIgNy4wOTUtNi4wMzItNC40Yy0uMDktLjA2NS0uMjEzLS4wNjUtLjMwMyAwbC02LjAyOSA0LjQgMi4zMjItNy4wOTVINi4xNGMuMDM1LS4xMDctLjAwMy0uMjIzLS4wOTQtLjI4OUwwIDcuMjY4bDcuNDYxLjAxNS4wMDEtLjAwMWMuMTEyIDAgLjIxMS0uMDcyLjI0NS0uMTc4TDEwIDB6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTA0LjAwMDAwMCwgMC4wMDAwMDApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtPy5ob3RlbHR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBcGFydGFtZW50bycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uaG90ZWx0eXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FwcGFydGVtZW50JykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5ob3RlbGNhdGVnb3J5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtIG9mIGdldE51bWJlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5ob3RlbGNhdGVnb3J5ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjEzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEzIDEzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0wLjE0NjI5NiA0LjI2NDc5TDEuMTQwMTUgMi4wMTY5MkMxLjMxMjg5IDEuNjI1NTkgMS42MjU1OSAxLjMxMjg5IDIuMDE2OTIgMS4xNDAxNUw0LjI2NDc5IDAuMTQ2Mjk3QzQuNTgxNzQgMC4wMDY0MTgyNiA0LjkzMzU2IC0wLjAzNDM5NDQgNS4yNzQxMiAwLjAyOTIxMjdDNS42MTQ2NyAwLjA5MjgxOTggNS45MjgwNSAwLjI1Nzg3NiA2LjE3MzE0IDAuNTAyNzNMNy45NDc1IDIuMjc4MzlDOC4xNjA2IDIuNDkxNTUgOC4zMTM4OCAyLjc1NzAxIDguMzkxOTcgMy4wNDgxM0M4LjQ3MDA2IDMuMzM5MjUgOC40NzAyIDMuNjQ1NzggOC4zOTIzOSAzLjkzNjk4TDcuOTM1NzkgNS42NDEwOUwxMi44NjYgMTAuNTcxM0MxMi45MDg1IDEwLjYxMzYgMTIuOTQyMiAxMC42NjM5IDEyLjk2NTIgMTAuNzE5M0MxMi45ODgyIDEwLjc3NDYgMTMgMTAuODM0IDEzIDEwLjg5MzlWMTIuNTQ0N0MxMi45OTkzIDEyLjY2NTIgMTIuOTUxMSAxMi43ODA3IDEyLjg2NTkgMTIuODY1OUMxMi43ODA3IDEyLjk1MTEgMTIuNjY1MiAxMi45OTkzIDEyLjU0NDcgMTNIMTAuODkzOUMxMC43OTI2IDEyLjk5OTggMTAuNjk0MiAxMi45NjU5IDEwLjYxNDIgMTIuOTAzOEMxMC41MzQxIDEyLjg0MTYgMTAuNDc3IDEyLjc1NDcgMTAuNDUxNiAxMi42NTY2TDEwLjIwNDUgMTEuNjc5Nkw5LjMzMDMgMTEuNTEzMUM5LjI0MzIyIDExLjQ5NjggOS4xNjI4MiAxMS40NTUzIDkuMDk5MDMgMTEuMzkzOEM5LjAzNTIzIDExLjMzMjMgOC45OTA4MiAxMS4yNTM1IDguOTcxMjcgMTEuMTY3MUw4LjczMzIxIDEwLjExNzNMNy44OTAyNiAxMC4wMzY3QzcuNzg0NzkgMTAuMDI3NCA3LjY4NjA4IDkuOTgwOCA3LjYxMTg4IDkuOTA1MjhMNS42NDEwOSA3LjkzNTc5TDMuOTM2OTcgOC4zOTIzOUMzLjY0NTggOC40NzA0NyAzLjMzOTE5IDguNDcwNDYgMy4wNDgwMiA4LjM5MjM2QzIuNzU2ODUgOC4zMTQyNiAyLjQ5MTQgOC4xNjA4MiAyLjI3ODM5IDcuOTQ3NUwwLjUwMjcyOSA2LjE3MzE0QzAuMjU3ODc1IDUuOTI4MDUgMC4wOTI4MjAyIDUuNjE0NjcgMC4wMjkyMTMgNS4yNzQxMkMtMC4wMzQzOTQzIDQuOTMzNTcgMC4wMDY0MTcyNyA0LjU4MTc0IDAuMTQ2Mjk2IDQuMjY0NzlaTTMuNjcwMyA1LjA4OTUzQzMuODEwNjEgNS4yMjk2OCAzLjk4OTMyIDUuMzI1MDggNC4xODM4NSA1LjM2MzY5QzQuMzc4MzcgNS40MDIyOSA0LjU3OTk3IDUuMzgyMzYgNC43NjMxNyA1LjMwNjQxQzQuOTQ2MzYgNS4yMzA0NyA1LjEwMjk0IDUuMTAxOTEgNS4yMTMwOSA0LjkzN0M1LjMyMzI0IDQuNzcyMSA1LjM4MjAzIDQuNTc4MjMgNS4zODIwMyA0LjM3OTkxQzUuMzgyMDMgNC4xODE2IDUuMzIzMjQgMy45ODc3MyA1LjIxMzA5IDMuODIyODNDNS4xMDI5NCAzLjY1NzkyIDQuOTQ2MzYgMy41MjkzNiA0Ljc2MzE3IDMuNDUzNDJDNC41Nzk5NyAzLjM3NzQ3IDQuMzc4MzcgMy4zNTc1NCA0LjE4Mzg1IDMuMzk2MTRDMy45ODkzMiAzLjQzNDc1IDMuODEwNjEgMy41MzAxNSAzLjY3MDMgMy42NzAzQzMuNTc2ODkgMy43NjMzNiAzLjUwMjc3IDMuODczOTUgMy40NTIxOSAzLjk5NTcyQzMuNDAxNjIgNC4xMTc1IDMuMzc1NTggNC4yNDgwNiAzLjM3NTU4IDQuMzc5OTFDMy4zNzU1OCA0LjUxMTc3IDMuNDAxNjIgNC42NDIzMyAzLjQ1MjE5IDQuNzY0MTFDMy41MDI3NyA0Ljg4NTg4IDMuNTc2ODkgNC45OTY0NyAzLjY3MDMgNS4wODk1M1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI2ZmZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc2hvd0lmU3VwKGl0ZW0/LmhvdGVsY2F0ZWdvcnkpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLXRhZy1yaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xlZnQtbW9kZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpdGVtLmhvdGVsdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5zdHlsZXM/LnByaW1hcnkgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2ZmNDMzOCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udGV4dHM/LnRpdGxlIHx8IGl0ZW0udGV4dHM/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnRleHRzPy50aXRsZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udGV4dHM/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tc3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0ubG9jYWxpdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5sb2NhbGl0eSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0ubG9jYWxpdHkgJiYgaXRlbS5wcm92aW5jZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5wcm92aW5jZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnByb3ZpbmNlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5idXR0b25zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuIG9mIGl0ZW0uYnV0dG9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tYnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbS1idXR0b24tc20nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5kZXggJSAyID09PSAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtLWJ1dCBtLXVuZGVybGluZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbmRleCAlIDIgIT09IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLWJ0bi1wcmltYXJ5LWR5bmFtaWNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5zdHlsZXM/LnByaW1hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1idG4taG92ZXItZHluYW1pY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnN0eWxlcz8ucHJpbWFyeUhvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QnV0dG9uVXJsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidG4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YXJnZXRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuLnRhcmdldCB8fCAnX3NlbGYnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImJ0bi5saW5rVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ0bi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGJ0bi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZW1wdHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM/Lm5vdEZvdW5kID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdObyBzZSBlbmNvbnRyYXJvbiByZXN1bHRhZG9zIGNvbiBlc29zIGZpbHRyb3MuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbn1cbiJdfQ==
587
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzLWM0LXR4dC1kZXMtY3RhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9jb21wb25lbnRzL2V4dGVybmFsL2NvcmUvbGlzLWM0LXR4dC1kZXMtY3RhL2xpcy1jNC10eHQtZGVzLWN0YS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL2xpcy1jNC10eHQtZGVzLWN0YS9saXMtYzQtdHh0LWRlcy1jdGEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBS0wsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBV2hHLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7OztBQWV6RixNQUFNLE9BQU8sdUJBQXVCO0lBYnBDO1FBaUJhLHlCQUFvQixHQUFhLEtBQUssQ0FBQztRQUN2QyxxQkFBZ0IsR0FBWSxJQUFJLENBQUM7UUFJakMscUJBQWdC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T0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQzsrR0EzckJRLHVCQUF1QjttR0FBdkIsdUJBQXVCLDJkQ3ZFcEMscW0yQkF3YkEsMm1nQ0R6WFEsWUFBWSw2SEFDWix3QkFBd0Isa0tBQ3hCLFdBQVcsMHZCQUNYLDhCQUE4Qjs7NEZBS3pCLHVCQUF1QjtrQkFibkMsU0FBUzsrQkFDSSxvQkFBb0IsY0FDbEIsSUFBSSxpQkFDRCxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCO3dCQUNMLFlBQVk7d0JBQ1osd0JBQXdCO3dCQUN4QixXQUFXO3dCQUNYLDhCQUE4QjtxQkFDakM7OEJBS1EsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIExpc0M0VHh0RGVzQ3RhQ29tcG9uZW50XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKlxuICogQ29tcG9uZW50ZSBkZSBsaXN0YWRvIGNvbiBzaXN0ZW1hIGRlIGZpbHRyb3Mgc2luY3Jvbml6YWRvIGNvbiBsYSBVUkwuXG4gKlxuICogRklMT1NPRsONQVxuICogLS0tLS0tLS0tLVxuICogLSBFbCBjb21wb25lbnRlIGVzIEFHTsOTU1RJQ08gYWwgZG9taW5pbyAobm8gaGFyZGNvZGVhIFwiaG90ZWxcIiwgXCJhcGFydGFtZW50b1wiLCBtYXJjYXMsIGV0Yy4pLlxuICogLSBUb2RvIGxvIHF1ZSBzZSBmaWx0cmEgcHJvdmllbmUgZGUgU1RSSU5HUyBlbnZpYWRvcyBwb3IgYmFja2VuZCAoeWEgdHJhZHVjaWRvcykuXG4gKiAtIExhIFVSTCBzaWVtcHJlIHRyYWJhamEgY29uIFNMVUdTIG5vcm1hbGl6YWRvcyAoc2luIHRpbGRlcywgZXNwYWNpb3MgbmkgY2FyYWN0ZXJlcyByYXJvcykuXG4gKlxuICogRklMVFJPUyBTT1BPUlRBRE9TIChhY3R1YWxlcylcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAtIGZpbHRlciAgICAgICAtPiB0aXBvIHByaW5jaXBhbCAoZWo6IGhvdGVsZXMsIGFwYXJ0YW1lbnRvcywgdmlsbGFzLCBldGMuKVxuICogLSBkZXN0aW5hdGlvbiAgLT4gZGVzdGlubyAocG9yIG5vbWJyZSlcbiAqIC0gYnJhbmQgICAgICAgIC0+IG1hcmNhIC8gZ3J1cG9cbiAqIC0gZXhwZXJpZW5jZSAgIC0+IGV4cGVyaWVuY2lhIGFzb2NpYWRhXG4gKiAtIHNlcnZpY2VzICAgICAtPiBzZXJ2aWNpb3MgZGlzcG9uaWJsZXNcbiAqXG4gKiBBQ1RVQUxJWkFDScOTTjogQsOaU1FVRURBIEZBQ0VUQURBIChGYWNldGVkIFNlYXJjaClcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFob3JhIGVsIGNvbXBvbmVudGUgYWN0dWFsaXphIGRpbsOhbWljYW1lbnRlIGxhcyBvcGNpb25lcyBkZSBsb3MgZGVzcGxlZ2FibGVzLlxuICogQWwgc2VsZWNjaW9uYXIgdW4gZmlsdHJvLCBsb3MgZGVtw6FzIG9jdWx0YW4gbGFzIG9wY2lvbmVzIHF1ZSBubyB0ZW5kcsOtYW4gcmVzdWx0YWRvc1xuICogY3J1emFkb3MgY29uIGxhIHNlbGVjY2nDs24gYWN0dWFsLiBQYXJhIGV2aXRhciBibG9xdWVvcywgc2llbXByZSBzZSBtYW50aWVuZSB2aXNpYmxlXG4gKiBsYSBvcGNpw7NuIHF1ZSBlc3TDqSBhY3R1YWxtZW50ZSBzZWxlY2Npb25hZGEuXG4gKi9cblxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhYnlsb25MaW5rVHlwZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMvbGluay10eXBlL2xpbmstdHlwZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgICBCYWJ5bG9uQnV0dG9uSSxcbiAgICBCYWJ5bG9uSW1hZ2VJLFxuICAgIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgQmFieWxvblRleHRzQ29sb3JzSSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBCYWJ5bG9uRGVzdGluYXRpb25JIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWRlc3RpbmF0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uR2xvYmFsRXhwZXJpZW5jZSB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1nbG9iYWwtZXhwZXJpZW5jZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbkhvdGVsR2xvYmFsSXRlbSB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1ob3RlbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvblRhZ3NJIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLXRhZ3MuaW50ZXJmYWNlJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Rmlyc3RJbWFnZUJ5VGFnRnJvbUltYWdlcyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL211dGltZWRpYS51dGlscyc7XG5pbXBvcnQgeyBCYWJ5bG9uRHluYW1pY0hlYWRpbmdDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvYmFieWxvbi1keW5hbWljLWhlYWRpbmcnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpcy1jNC10eHQtZGVzLWN0YScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBCYWJ5bG9uTGlua1R5cGVEaXJlY3RpdmUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBCYWJ5bG9uRHluYW1pY0hlYWRpbmdDb21wb25lbnQsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbGlzLWM0LXR4dC1kZXMtY3RhLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vbGlzLWM0LXR4dC1kZXMtY3RhLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgTGlzQzRUeHREZXNDdGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSB0ZXh0cz86IEJhYnlsb25UZXh0SW5mb0k7XG4gICAgQElucHV0KCkgaXRlbXM/OiBCYWJ5bG9uSG90ZWxHbG9iYWxJdGVtW107XG4gICAgQElucHV0KCkgbGlua3M/OiBCYWJ5bG9uQnV0dG9uSVtdO1xuICAgIEBJbnB1dCgpIGFkZGl0aW9uYWwxTGlrZU1hcmNhPzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNob3dDbGVhbkZpbHRlcnM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgZXhwZXJpZW5jZXM/OiBCYWJ5bG9uR2xvYmFsRXhwZXJpZW5jZVtdO1xuICAgIEBJbnB1dCgpIGRlc3RpbmF0aW9ucz86IEJhYnlsb25EZXN0aW5hdGlvbklbXTtcbiAgICBASW5wdXQoKSBzaG93RGVzdGluYXRpb25zPzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNob3dGaWx0ZXJzPzogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgbWF4Q29sdW1ucz86IG51bWJlciA9IDQ7XG4gICAgQElucHV0KCkgaGlkZVNlcnZpY2VzRmlsdGVyPzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHRhZ3M/OiBCYWJ5bG9uVGFnc0k7XG4gICAgQElucHV0KCkgdGV4dENvbG9ycz86IEJhYnlsb25UZXh0c0NvbG9yc0k7XG5cbiAgICB0YWdOYW1lOiBzdHJpbmcgPSAnTGlzQzRUeHREZXNDdGEnO1xuXG4gICAgLy8gVUkgbGFiZWxzIHNlbGVjY2lvbmFkb3MgKGxvIHF1ZSBzZSBtdWVzdHJhIGVuIGxvcyBzZWxlY3RzKVxuICAgIHNlbGVjdGVkSG90ZWxUeXBlOiBzdHJpbmcgPSAnJztcbiAgICBzZWxlY3RlZERlc3RpbmF0aW9uOiBzdHJpbmcgPSAnJztcbiAgICBzZWxlY3RlZEJyYW5kOiBzdHJpbmcgPSAnJztcbiAgICBzZWxlY3RlZEV4cGVyaWVuY2U6IHN0cmluZyA9ICcnO1xuXG4gICAgLy8gT3BjaW9uZXMgRGluw6FtaWNhcyAoTGFzIHF1ZSBzZSBtdWVzdHJhbiBlbiBlbCBIVE1MIHkgc2UgYWN0dWFsaXphbiBhbCBmaWx0cmFyKVxuICAgIGhvdGVsVHlwZU9wdGlvbnM6IHN0cmluZ1tdID0gW107XG4gICAgZGVzdGluYXRpb25PcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgIGJyYW5kT3B0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgICBleHBlcmllbmNlT3B0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgICBhdmFpbGFibGVTZXJ2aWNlczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIE9wY2lvbmVzIEJhc2UgKExpc3RhcyBtYWVzdHJhcyBnZW5lcmFkYXMgYWwgY2FyZ2FyLCBudW5jYSBzZSByZWR1Y2VuKVxuICAgIHByaXZhdGUgYmFzZUhvdGVsVHlwZU9wdGlvbnM6IHN0cmluZ1tdID0gW107XG4gICAgcHJpdmF0ZSBiYXNlRGVzdGluYXRpb25PcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgIHByaXZhdGUgYmFzZUJyYW5kT3B0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIGJhc2VFeHBlcmllbmNlT3B0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIGJhc2VBdmFpbGFibGVTZXJ2aWNlczogc3RyaW5nW10gPSBbXTtcblxuICAgIHByaXZhdGUgcGVuZGluZ0ZpbHRlclNsdWc6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcGVuZGluZ0Rlc3RpbmF0aW9uU2x1Zzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBwZW5kaW5nQnJhbmRTbHVnOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHBlbmRpbmdFeHBlcmllbmNlU2x1Zzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvLyBzbHVnIC0+IGxhYmVsIChoaWRyYXRhciBzZWxlY3RzIGRlc2RlIFVSTClcbiAgICBwcml2YXRlIGZpbHRlclNsdWdUb0xhYmVsID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICBwcml2YXRlIGRlc3RpbmF0aW9uU2x1Z1RvTGFiZWwgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIHByaXZhdGUgYnJhbmRTbHVnVG9MYWJlbCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSBleHBlcmllbmNlU2x1Z1RvTGFiZWwgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gICAgLy8gbGFiZWwgLT4gc2x1ZyAoZXNjcml0dXJhIGVzdGFibGUpXG4gICAgcHJpdmF0ZSBmaWx0ZXJMYWJlbFRvU2x1ZyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSBkZXN0aW5hdGlvbkxhYmVsVG9TbHVnID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICBwcml2YXRlIGJyYW5kTGFiZWxUb1NsdWcgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIHByaXZhdGUgZXhwZXJpZW5jZUxhYmVsVG9TbHVnID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICAgcHJpdmF0ZSBxcFN1Yj86IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICBwcml2YXRlIGlzU3luY2luZ0Zyb21VcmwgPSBmYWxzZTtcblxuICAgIHNlbGVjdGVkU2VydmljZXM6IFNldDxzdHJpbmc+ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgaXNTZXJ2aWNlc01lbnVPcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5xcFN1YiA9IHRoaXMucm91dGUucXVlcnlQYXJhbU1hcC5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc1N5bmNpbmdGcm9tVXJsID0gdHJ1ZTtcblxuICAgICAgICAgICAgY29uc3QgZmlsdGVyU2x1ZyA9IHBhcmFtcy5nZXQoJ2ZpbHRlcicpID8/ICcnO1xuICAgICAgICAgICAgY29uc3QgZGVzdGluYXRpb25TbHVnID0gcGFyYW1zLmdldCgnZGVzdGluYXRpb24nKSA/PyAnJztcbiAgICAgICAgICAgIGNvbnN0IGJyYW5kU2x1ZyA9IHBhcmFtcy5nZXQoJ2JyYW5kJykgPz8gJyc7XG4gICAgICAgICAgICBjb25zdCBleHBlcmllbmNlU2x1ZyA9IHBhcmFtcy5nZXQoJ2V4cGVyaWVuY2UnKSA/PyAnJztcblxuICAgICAgICAgICAgdGhpcy5yZXNvbHZlUGVuZGluZ0Zyb21NYXBzKCk7XG5cbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbHRlclNsdWcgPSBwYXJhbXMuZ2V0KCdmaWx0ZXInKTtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0Rlc3RpbmF0aW9uU2x1ZyA9IHBhcmFtcy5nZXQoJ2Rlc3RpbmF0aW9uJyk7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdCcmFuZFNsdWcgPSBwYXJhbXMuZ2V0KCdicmFuZCcpO1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nRXhwZXJpZW5jZVNsdWcgPSBwYXJhbXMuZ2V0KCdleHBlcmllbmNlJyk7XG5cbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZVBlbmRpbmdGcm9tTWFwcygpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUgJiYgZmlsdGVyU2x1ZylcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSG90ZWxUeXBlID0gZmlsdGVyU2x1ZztcbiAgICAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uICYmIGRlc3RpbmF0aW9uU2x1ZylcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24gPSBkZXN0aW5hdGlvblNsdWc7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRCcmFuZCAmJiBicmFuZFNsdWcpXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEJyYW5kID0gYnJhbmRTbHVnO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkRXhwZXJpZW5jZSAmJiBleHBlcmllbmNlU2x1ZylcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRXhwZXJpZW5jZSA9IGV4cGVyaWVuY2VTbHVnO1xuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUR5bmFtaWNPcHRpb25zKCk7IC8vIEFjdHVhbGl6YSBsb3MgbGlzdGFkb3MgZGluw6FtaWNvcyBjb24gbGEgaGlkcmF0YWNpw7NuXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+ICh0aGlzLmlzU3luY2luZ0Zyb21VcmwgPSBmYWxzZSkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzWydpdGVtcyddKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkRmlsdGVyT3B0aW9ucygpO1xuXG4gICAgICAgICAgICBjb25zdCBxcCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcDtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlclNsdWcgPSBxcC5nZXQoJ2ZpbHRlcicpID8/ICcnO1xuICAgICAgICAgICAgY29uc3QgZGVzdGluYXRpb25TbHVnID0gcXAuZ2V0KCdkZXN0aW5hdGlvbicpID8/ICcnO1xuICAgICAgICAgICAgY29uc3QgYnJhbmRTbHVnID0gcXAuZ2V0KCdicmFuZCcpID8/ICcnO1xuICAgICAgICAgICAgY29uc3QgZXhwZXJpZW5jZVNsdWcgPSBxcC5nZXQoJ2V4cGVyaWVuY2UnKSA/PyAnJztcblxuICAgICAgICAgICAgdGhpcy5pc1N5bmNpbmdGcm9tVXJsID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEhvdGVsVHlwZSA9XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJTbHVnVG9MYWJlbC5nZXQoZmlsdGVyU2x1ZykgPz8gJyc7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24gPVxuICAgICAgICAgICAgICAgIHRoaXMuZGVzdGluYXRpb25TbHVnVG9MYWJlbC5nZXQoZGVzdGluYXRpb25TbHVnKSA/PyAnJztcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRCcmFuZCA9IHRoaXMuYnJhbmRTbHVnVG9MYWJlbC5nZXQoYnJhbmRTbHVnKSA/PyAnJztcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFeHBlcmllbmNlID1cbiAgICAgICAgICAgICAgICB0aGlzLmV4cGVyaWVuY2VTbHVnVG9MYWJlbC5nZXQoZXhwZXJpZW5jZVNsdWcpID8/ICcnO1xuXG4gICAgICAgICAgICB0aGlzLmZvcmNlT3B0aW9uTWF0Y2goKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRHluYW1pY09wdGlvbnMoKTsgLy8gVnVlbHZlIGEgZmlsdHJhciBsYXMgb3BjaW9uZXMgc2Vnw7puIGxhIG51ZXZhIGhpZHJhdGFjacOzblxuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiAodGhpcy5pc1N5bmNpbmdGcm9tVXJsID0gZmFsc2UpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnFwU3ViPy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRGaWx0ZXJPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbXMgPz8gW107XG4gICAgICAgIGNvbnN0IGV4cGVyaWVuY2VzID0gdGhpcy5leHBlcmllbmNlcyA/PyBbXTtcblxuICAgICAgICAvLyBMbGVuYW1vcyBsYXMgbGlzdGFzIE1BRVNUUkFTXG4gICAgICAgIHRoaXMuYmFzZUhvdGVsVHlwZU9wdGlvbnMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgbmV3IFNldChcbiAgICAgICAgICAgICAgICBpdGVtc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChpKSA9PiAoaSBhcyBhbnkpPy5ob3RlbHR5cGUpXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiB2Py50cmltKCkpXG4gICAgICAgICAgICApXG4gICAgICAgICkuc29ydCgoYSwgYikgPT4gYS5sb2NhbGVDb21wYXJlKGIpKTtcblxuICAgICAgICB0aGlzLmJhc2VEZXN0aW5hdGlvbk9wdGlvbnMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgbmV3IFNldChcbiAgICAgICAgICAgICAgICBpdGVtc1xuICAgICAgICAgICAgICAgICAgICAuZmxhdE1hcCgoaSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgoaSBhcyBhbnkpPy5kZXN0aW5hdGlvbnMgPz8gW10pLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZDogYW55KSA9PiBkPy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHY/LnRyaW0oKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKS5zb3J0KChhLCBiKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpO1xuXG4gICAgICAgIHRoaXMuYmFzZUJyYW5kT3B0aW9ucyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICBuZXcgU2V0KGl0ZW1zLm1hcCgoaSkgPT4gdGhpcy5nZXRJdGVtQnJhbmQoaSkpLmZpbHRlcihCb29sZWFuKSlcbiAgICAgICAgKS5zb3J0KChhLCBiKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpO1xuXG4gICAgICAgIHRoaXMuYmFzZUV4cGVyaWVuY2VPcHRpb25zID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgIG5ldyBTZXQoZXhwZXJpZW5jZXMubWFwKChlKSA9PiBlLm5hbWVJZGVudGlmaWVyKT8uZmlsdGVyKEJvb2xlYW4pKVxuICAgICAgICApLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSk7XG5cbiAgICAgICAgLy8gUmVzZXQgbWFwc1xuICAgICAgICB0aGlzLmZpbHRlclNsdWdUb0xhYmVsLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZGVzdGluYXRpb25TbHVnVG9MYWJlbC5jbGVhcigpO1xuICAgICAgICB0aGlzLmJyYW5kU2x1Z1RvTGFiZWwuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5leHBlcmllbmNlU2x1Z1RvTGFiZWwuY2xlYXIoKTtcblxuICAgICAgICB0aGlzLmZpbHRlckxhYmVsVG9TbHVnLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZGVzdGluYXRpb25MYWJlbFRvU2x1Zy5jbGVhcigpO1xuICAgICAgICB0aGlzLmJyYW5kTGFiZWxUb1NsdWcuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5leHBlcmllbmNlTGFiZWxUb1NsdWcuY2xlYXIoKTtcblxuICAgICAgICBjb25zdCB1c2VkRmlsdGVyID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgIGNvbnN0IHVzZWREZXN0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgIGNvbnN0IHVzZWRCcmFuZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBjb25zdCB1c2VkRXhwZXJpZW5jZSA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgIGZvciAoY29uc3QgbGFiZWwgb2YgdGhpcy5iYXNlSG90ZWxUeXBlT3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgYmFzZSA9IHRoaXMuY2Fub25pY2FsU2x1ZyhsYWJlbCk7XG4gICAgICAgICAgICBjb25zdCBzbHVnID0gVXRpbHMudW5pcXVlU2x1ZyhiYXNlLCB1c2VkRmlsdGVyKTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyU2x1Z1RvTGFiZWwuc2V0KHNsdWcsIGxhYmVsKTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyTGFiZWxUb1NsdWcuc2V0KGxhYmVsLCBzbHVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgbGFiZWwgb2YgdGhpcy5iYXNlRGVzdGluYXRpb25PcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlID0gVXRpbHMudG9TbHVnKGxhYmVsKSB8fCAnZGVzdGluYXRpb24nO1xuICAgICAgICAgICAgY29uc3Qgc2x1ZyA9IFV0aWxzLnVuaXF1ZVNsdWcoYmFzZSwgdXNlZERlc3QpO1xuICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvblNsdWdUb0xhYmVsLnNldChzbHVnLCBsYWJlbCk7XG4gICAgICAgICAgICB0aGlzLmRlc3RpbmF0aW9uTGFiZWxUb1NsdWcuc2V0KGxhYmVsLCBzbHVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgbGFiZWwgb2YgdGhpcy5iYXNlQnJhbmRPcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlID0gVXRpbHMudG9TbHVnKGxhYmVsKSB8fCAnYnJhbmQnO1xuICAgICAgICAgICAgY29uc3Qgc2x1ZyA9IFV0aWxzLnVuaXF1ZVNsdWcoYmFzZSwgdXNlZEJyYW5kKTtcbiAgICAgICAgICAgIHRoaXMuYnJhbmRTbHVnVG9MYWJlbC5zZXQoc2x1ZywgbGFiZWwpO1xuICAgICAgICAgICAgdGhpcy5icmFuZExhYmVsVG9TbHVnLnNldChsYWJlbCwgc2x1Zyk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGxhYmVsIG9mIHRoaXMuYmFzZUV4cGVyaWVuY2VPcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlID0gVXRpbHMudG9TbHVnKGxhYmVsKSB8fCAnZXhwZXJpZW5jZSc7XG4gICAgICAgICAgICBjb25zdCBzbHVnID0gVXRpbHMudW5pcXVlU2x1ZyhiYXNlLCB1c2VkRXhwZXJpZW5jZSk7XG4gICAgICAgICAgICB0aGlzLmV4cGVyaWVuY2VTbHVnVG9MYWJlbC5zZXQoc2x1ZywgbGFiZWwpO1xuICAgICAgICAgICAgdGhpcy5leHBlcmllbmNlTGFiZWxUb1NsdWcuc2V0KGxhYmVsLCBzbHVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFsbFNlcnZpY2VzTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRTZXJ2aWNlc05hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICAgICAgbGV0IHJlcXVlc3RlZENsYXNzZXM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGlmICh0aGlzLnRleHRzPy5zZXJ2aWNlc09uRmlsdGVyKSB7XG4gICAgICAgICAgICByZXF1ZXN0ZWRDbGFzc2VzID0gdGhpcy50ZXh0cz8uc2VydmljZXNPbkZpbHRlclxuICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgLm1hcCgocykgPT4gcz8udHJpbSgpLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGl0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXJ2aWNlcyA9XG4gICAgICAgICAgICAgICAgKGl0IGFzIGFueSk/LnNlcnZpY2VzU2VydmljZSB8fCAoaXQgYXMgYW55KT8uc2VydmljZXNfc2VydmljZTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNlcnZpY2VzKSkge1xuICAgICAgICAgICAgICAgIHNlcnZpY2VzLmZvckVhY2goKHMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM/Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBzLm5hbWU/LnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbFNlcnZpY2VzTmFtZXMuYWRkKG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVlc3RlZENsYXNzZXMubGVuZ3RoID4gMCAmJiBzLmNsYXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRDbGFzc2VzLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5jbGFzcz8udHJpbSgpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZFNlcnZpY2VzTmFtZXMuYWRkKG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgZmluYWxTZXJ2aWNlcyA9IEFycmF5LmZyb20oZmlsdGVyZWRTZXJ2aWNlc05hbWVzKTtcbiAgICAgICAgaWYgKHJlcXVlc3RlZENsYXNzZXMubGVuZ3RoID09PSAwIHx8IGZpbmFsU2VydmljZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBmaW5hbFNlcnZpY2VzID0gQXJyYXkuZnJvbShhbGxTZXJ2aWNlc05hbWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYmFzZUF2YWlsYWJsZVNlcnZpY2VzID0gZmluYWxTZXJ2aWNlcy5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgYS5sb2NhbGVDb21wYXJlKGIpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gSW5pY2lhbGl6YW1vcyBsYXMgb3BjaW9uZXMgZGUgVUkgY29uIGxhcyBtYWVzdHJhcyB5IGx1ZWdvIGZpbHRyYW1vc1xuICAgICAgICB0aGlzLmhvdGVsVHlwZU9wdGlvbnMgPSBbLi4udGhpcy5iYXNlSG90ZWxUeXBlT3B0aW9uc107XG4gICAgICAgIHRoaXMuZGVzdGluYXRpb25PcHRpb25zID0gWy4uLnRoaXMuYmFzZURlc3RpbmF0aW9uT3B0aW9uc107XG4gICAgICAgIHRoaXMuYnJhbmRPcHRpb25zID0gWy4uLnRoaXMuYmFzZUJyYW5kT3B0aW9uc107XG4gICAgICAgIHRoaXMuZXhwZXJpZW5jZU9wdGlvbnMgPSBbLi4udGhpcy5iYXNlRXhwZXJpZW5jZU9wdGlvbnNdO1xuICAgICAgICB0aGlzLmF2YWlsYWJsZVNlcnZpY2VzID0gWy4uLnRoaXMuYmFzZUF2YWlsYWJsZVNlcnZpY2VzXTtcblxuICAgICAgICB0aGlzLnVwZGF0ZUR5bmFtaWNPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRJdGVtQnJhbmQoaXQ6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmFkZGl0aW9uYWwxTGlrZU1hcmNhKVxuICAgICAgICAgICAgcmV0dXJuIChpdD8udGV4dHM/LmFkZGl0aW9uYWwxID8/ICcnKT8udHJpbSgpO1xuICAgICAgICByZXR1cm4gKGl0Py5tYXJjYSA/PyBpdD8uYnJhbmQgPz8gaXQ/Lmdyb3VwID8/ICcnKT8udHJpbSgpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBMw5NHSUNBIERFIEZJTFRSQURPIEJBU0UgKEZBQ0VURUQgU0VBUkNIKVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8qKlxuICAgICAqIE9idGllbmUgbG9zIGl0ZW1zIGNvaW5jaWRlbnRlcyBleGNsdXllbmRvIHVubyBkZSBsb3MgZmlsdHJvcy5cbiAgICAgKiBFcyBjbGF2ZSBwYXJhIGNhbGN1bGFyIHF1w6kgb3BjaW9uZXMgZGViZW4gcXVlZGFyIGRpc3BvbmlibGVzIGVuIHVuIGRlc3BsZWdhYmxlXG4gICAgICogc2luIHF1ZSBzdSBwcm9waWEgc2VsZWNjacOzbiBwcmV2aWEgbGFzIGJvcnJlIHBvciBjb21wbGV0by5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldEl0ZW1zTWF0Y2hpbmcoXG4gICAgICAgIGV4Y2x1ZGVGaWx0ZXI6XG4gICAgICAgICAgICB8ICdob3RlbFR5cGUnXG4gICAgICAgICAgICB8ICdkZXN0aW5hdGlvbidcbiAgICAgICAgICAgIHwgJ2JyYW5kJ1xuICAgICAgICAgICAgfCAnZXhwZXJpZW5jZSdcbiAgICAgICAgICAgIHwgJ3NlcnZpY2VzJ1xuICAgICAgICAgICAgfCAnbm9uZSdcbiAgICApOiBCYWJ5bG9uSG90ZWxHbG9iYWxJdGVtW10ge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbXMgPz8gW107XG4gICAgICAgIGlmICghdGhpcy5zaG93RmlsdGVycykgcmV0dXJuIGl0ZW1zO1xuXG4gICAgICAgIGxldCB2YWxpZEhvdGVsSWRzRm9yRXhwZXJpZW5jZTogbnVtYmVyW10gPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRFeHBlcmllbmNlICYmIHRoaXMuZXhwZXJpZW5jZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldEV4cCA9IHRoaXMuZXhwZXJpZW5jZXMuZmluZChcbiAgICAgICAgICAgICAgICAoZSkgPT4gZS5uYW1lSWRlbnRpZmllciA9PT0gdGhpcy5zZWxlY3RlZEV4cGVyaWVuY2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAodGFyZ2V0RXhwICYmIHRhcmdldEV4cC5ob3RlbHMpIHtcbiAgICAgICAgICAgICAgICB2YWxpZEhvdGVsSWRzRm9yRXhwZXJpZW5jZSA9IHRhcmdldEV4cC5ob3RlbHMubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaDogYW55KSA9PiBoLmlkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGl0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpdGVtSG90ZWxUeXBlID0gKGl0IGFzIGFueSk/LmhvdGVsdHlwZSA/PyAnJztcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1CcmFuZCA9IHRoaXMuZ2V0SXRlbUJyYW5kKGl0KTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JZCA9IChpdCBhcyBhbnkpPy5pZDtcblxuICAgICAgICAgICAgY29uc3QgaG90ZWxUeXBlT2sgPVxuICAgICAgICAgICAgICAgIGV4Y2x1ZGVGaWx0ZXIgPT09ICdob3RlbFR5cGUnIHx8XG4gICAgICAgICAgICAgICAgIXRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUgfHxcbiAgICAgICAgICAgICAgICB0aGlzLmNhbm9uaWNhbFNsdWcoaXRlbUhvdGVsVHlwZSkgPT09XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2Fub25pY2FsU2x1Zyh0aGlzLnNlbGVjdGVkSG90ZWxUeXBlKTtcblxuICAgICAgICAgICAgY29uc3QgZGVzdGluYXRpb25PayA9XG4gICAgICAgICAgICAgICAgZXhjbHVkZUZpbHRlciA9PT0gJ2Rlc3RpbmF0aW9uJyB8fFxuICAgICAgICAgICAgICAgICF0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24gfHxcbiAgICAgICAgICAgICAgICAoKChpdCBhcyBhbnkpPy5kZXN0aW5hdGlvbnMgPz8gW10pIGFzIGFueVtdKS5zb21lKFxuICAgICAgICAgICAgICAgICAgICAoZCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLnRvU2x1ZyhkPy5uYW1lID8/ICcnKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLnRvU2x1Zyh0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24pXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgYnJhbmRPayA9XG4gICAgICAgICAgICAgICAgZXhjbHVkZUZpbHRlciA9PT0gJ2JyYW5kJyB8fFxuICAgICAgICAgICAgICAgICF0aGlzLnNlbGVjdGVkQnJhbmQgfHxcbiAgICAgICAgICAgICAgICBVdGlscy50b1NsdWcoaXRlbUJyYW5kKSA9PT0gVXRpbHMudG9TbHVnKHRoaXMuc2VsZWN0ZWRCcmFuZCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGV4cGVyaWVuY2VPayA9XG4gICAgICAgICAgICAgICAgZXhjbHVkZUZpbHRlciA9PT0gJ2V4cGVyaWVuY2UnIHx8XG4gICAgICAgICAgICAgICAgIXRoaXMuc2VsZWN0ZWRFeHBlcmllbmNlIHx8XG4gICAgICAgICAgICAgICAgdmFsaWRIb3RlbElkc0ZvckV4cGVyaWVuY2UuaW5jbHVkZXMoaXRlbUlkKTtcblxuICAgICAgICAgICAgY29uc3Qgc2VydmljZXNPayA9XG4gICAgICAgICAgICAgICAgZXhjbHVkZUZpbHRlciA9PT0gJ3NlcnZpY2VzJyB8fFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlcy5zaXplID09PSAwIHx8XG4gICAgICAgICAgICAgICAgQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkU2VydmljZXMpLmV2ZXJ5KChzZWxlY3RlZFNydikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtU2VydmljZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgKGl0IGFzIGFueSk/LnNlcnZpY2VzU2VydmljZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKGl0IGFzIGFueSk/LnNlcnZpY2VzX3NlcnZpY2U7XG4gICAgICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtU2VydmljZXMpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtU2VydmljZXMuc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgIChzOiBhbnkpID0+IHM/Lm5hbWU/LnRyaW0oKSA9PT0gc2VsZWN0ZWRTcnZcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBob3RlbFR5cGVPayAmJlxuICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uT2sgJiZcbiAgICAgICAgICAgICAgICBicmFuZE9rICYmXG4gICAgICAgICAgICAgICAgZXhwZXJpZW5jZU9rICYmXG4gICAgICAgICAgICAgICAgc2VydmljZXNPa1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IGZpbHRlcmVkSXRlbXMoKTogQmFieWxvbkhvdGVsR2xvYmFsSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbXNNYXRjaGluZygnbm9uZScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFjdHVhbGl6YSBsb3MgYXJyYXlzIGRlIG9wY2lvbmVzIHBhcmEgb2N1bHRhciBhcXVlbGxhcyBxdWUgZGV2b2x2ZXLDrWFuIDAgcmVzdWx0YWRvcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZUR5bmFtaWNPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXRlbXMgfHwgdGhpcy5pdGVtcy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgICAgICAvLyAtLSBEZXN0aW5vcyAtLVxuICAgICAgICBjb25zdCBpdGVtc0ZvckRlc3QgPSB0aGlzLmdldEl0ZW1zTWF0Y2hpbmcoJ2Rlc3RpbmF0aW9uJyk7XG4gICAgICAgIGNvbnN0IHZhbGlkRGVzdHMgPSBuZXcgU2V0KFxuICAgICAgICAgICAgaXRlbXNGb3JEZXN0XG4gICAgICAgICAgICAgICAgLmZsYXRNYXAoKGkpID0+XG4gICAgICAgICAgICAgICAgICAgICgoaSBhcyBhbnkpPy5kZXN0aW5hdGlvbnMgPz8gW10pLm1hcCgoZDogYW55KSA9PiBkPy5uYW1lKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiB2Py50cmltKCkpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZGVzdGluYXRpb25PcHRpb25zID0gdGhpcy5iYXNlRGVzdGluYXRpb25PcHRpb25zLmZpbHRlcihcbiAgICAgICAgICAgIChvcHQpID0+IHZhbGlkRGVzdHMuaGFzKG9wdCkgfHwgdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uID09PSBvcHRcbiAgICAgICAgKTtcblxuICAgICAgICAvLyAtLSBNYXJjYXMgLS1cbiAgICAgICAgY29uc3QgaXRlbXNGb3JCcmFuZCA9IHRoaXMuZ2V0SXRlbXNNYXRjaGluZygnYnJhbmQnKTtcbiAgICAgICAgY29uc3QgdmFsaWRCcmFuZHMgPSBuZXcgU2V0KFxuICAgICAgICAgICAgaXRlbXNGb3JCcmFuZC5tYXAoKGkpID0+IHRoaXMuZ2V0SXRlbUJyYW5kKGkpKS5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5icmFuZE9wdGlvbnMgPSB0aGlzLmJhc2VCcmFuZE9wdGlvbnMuZmlsdGVyKFxuICAgICAgICAgICAgKG9wdCkgPT4gdmFsaWRCcmFuZHMuaGFzKG9wdCkgfHwgdGhpcy5zZWxlY3RlZEJyYW5kID09PSBvcHRcbiAgICAgICAgKTtcblxuICAgICAgICAvLyAtLSBUaXBvcyBkZSBIb3RlbCAtLVxuICAgICAgICBjb25zdCBpdGVtc0ZvckhvdGVsVHlwZSA9IHRoaXMuZ2V0SXRlbXNNYXRjaGluZygnaG90ZWxUeXBlJyk7XG4gICAgICAgIGNvbnN0IHZhbGlkSG90ZWxUeXBlcyA9IG5ldyBTZXQoXG4gICAgICAgICAgICBpdGVtc0ZvckhvdGVsVHlwZVxuICAgICAgICAgICAgICAgIC5tYXAoKGkpID0+IChpIGFzIGFueSk/LmhvdGVsdHlwZSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiB2Py50cmltKCkpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuaG90ZWxUeXBlT3B0aW9ucyA9IHRoaXMuYmFzZUhvdGVsVHlwZU9wdGlvbnMuZmlsdGVyKFxuICAgICAgICAgICAgKG9wdCkgPT4gdmFsaWRIb3RlbFR5cGVzLmhhcyhvcHQpIHx8IHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUgPT09IG9wdFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIC0tIEV4cGVyaWVuY2lhcyAtLVxuICAgICAgICBjb25zdCBpdGVtc0ZvckV4cCA9IHRoaXMuZ2V0SXRlbXNNYXRjaGluZygnZXhwZXJpZW5jZScpO1xuICAgICAgICBjb25zdCB2YWxpZEV4cElkcyA9IG5ldyBTZXQoaXRlbXNGb3JFeHAubWFwKChpKSA9PiAoaSBhcyBhbnkpPy5pZCkpO1xuICAgICAgICB0aGlzLmV4cGVyaWVuY2VPcHRpb25zID0gdGhpcy5iYXNlRXhwZXJpZW5jZU9wdGlvbnMuZmlsdGVyKChvcHQpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRXhwZXJpZW5jZSA9PT0gb3B0KSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldEV4cCA9IHRoaXMuZXhwZXJpZW5jZXM/LmZpbmQoXG4gICAgICAgICAgICAgICAgKGUpID0+IGUubmFtZUlkZW50aWZpZXIgPT09IG9wdFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghdGFyZ2V0RXhwPy5ob3RlbHMpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXRFeHAuaG90ZWxzLnNvbWUoKGg6IGFueSkgPT4gdmFsaWRFeHBJZHMuaGFzKGguaWQpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gLS0gU2VydmljaW9zIC0tXG4gICAgICAgIGNvbnN0IGl0ZW1zRm9yU2VydmljZXMgPSB0aGlzLmdldEl0ZW1zTWF0Y2hpbmcoJ3NlcnZpY2VzJyk7XG4gICAgICAgIGNvbnN0IHZhbGlkU2VydmljZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgaXRlbXNGb3JTZXJ2aWNlcy5mb3JFYWNoKChpdCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VydmljZXMgPVxuICAgICAgICAgICAgICAgIChpdCBhcyBhbnkpPy5zZXJ2aWNlc1NlcnZpY2UgfHwgKGl0IGFzIGFueSk/LnNlcnZpY2VzX3NlcnZpY2U7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzZXJ2aWNlcykpIHtcbiAgICAgICAgICAgICAgICBzZXJ2aWNlcy5mb3JFYWNoKChzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzPy5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZFNlcnZpY2VzLmFkZChzLm5hbWU/LnRyaW0oKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYXZhaWxhYmxlU2VydmljZXMgPSB0aGlzLmJhc2VBdmFpbGFibGVTZXJ2aWNlcy5maWx0ZXIoXG4gICAgICAgICAgICAob3B0KSA9PiB2YWxpZFNlcnZpY2VzLmhhcyhvcHQpIHx8IHRoaXMuc2VsZWN0ZWRTZXJ2aWNlcy5oYXMob3B0KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBoYXNBY3RpdmVGaWx0ZXJzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSG90ZWxUeXBlIHx8XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24gfHxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRCcmFuZCB8fFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEV4cGVyaWVuY2UgfHxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlcy5zaXplID4gMFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBIQU5ETEVSUyBVSVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIG9uSG90ZWxUeXBlQ2hhbmdlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEhvdGVsVHlwZSA9IHZhbHVlID8/ICcnO1xuICAgICAgICB0aGlzLnVwZGF0ZUR5bmFtaWNPcHRpb25zKCk7XG4gICAgICAgIGlmICh0aGlzLmlzU3luY2luZ0Zyb21VcmwpIHJldHVybjtcbiAgICAgICAgdGhpcy5zeW5jUXVlcnlQYXJhbXMoKTtcbiAgICB9XG5cbiAgICBvbkRlc3RpbmF0aW9uQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uID0gdmFsdWUgPz8gJyc7XG4gICAgICAgIHRoaXMudXBkYXRlRHluYW1pY09wdGlvbnMoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNTeW5jaW5nRnJvbVVybCkgcmV0dXJuO1xuICAgICAgICB0aGlzLnN5bmNRdWVyeVBhcmFtcygpO1xuICAgIH1cblxuICAgIG9uQnJhbmRDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQnJhbmQgPSB2YWx1ZSA/PyAnJztcbiAgICAgICAgdGhpcy51cGRhdGVEeW5hbWljT3B0aW9ucygpO1xuICAgICAgICBpZiAodGhpcy5pc1N5bmNpbmdGcm9tVXJsKSByZXR1cm47XG4gICAgICAgIHRoaXMuc3luY1F1ZXJ5UGFyYW1zKCk7XG4gICAgfVxuXG4gICAgb25FeHBlcmllbmNlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEV4cGVyaWVuY2UgPSB2YWx1ZSA/PyAnJztcbiAgICAgICAgdGhpcy51cGRhdGVEeW5hbWljT3B0aW9ucygpO1xuICAgICAgICBpZiAodGhpcy5pc1N5bmNpbmdGcm9tVXJsKSByZXR1cm47XG4gICAgICAgIHRoaXMuc3luY1F1ZXJ5UGFyYW1zKCk7XG4gICAgfVxuXG4gICAgY2xlYXJGaWx0ZXJzKCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSG90ZWxUeXBlID0gJyc7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbiA9ICcnO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQnJhbmQgPSAnJztcbiAgICAgICAgdGhpcy5zZWxlY3RlZEV4cGVyaWVuY2UgPSAnJztcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNlcnZpY2VzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMudXBkYXRlRHluYW1pY09wdGlvbnMoKTtcbiAgICAgICAgdGhpcy5zeW5jUXVlcnlQYXJhbXModHJ1ZSk7XG4gICAgfVxuXG4gICAgdG9nZ2xlU2VydmljZShzZXJ2aWNlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWQgPSBuZXcgU2V0KHRoaXMuc2VsZWN0ZWRTZXJ2aWNlcyk7XG5cbiAgICAgICAgaWYgKG5ld1NlbGVjdGVkLmhhcyhzZXJ2aWNlKSkge1xuICAgICAgICAgICAgbmV3U2VsZWN0ZWQuZGVsZXRlKHNlcnZpY2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3U2VsZWN0ZWQuYWRkKHNlcnZpY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZFNlcnZpY2VzID0gbmV3U2VsZWN0ZWQ7XG4gICAgICAgIHRoaXMudXBkYXRlRHluYW1pY09wdGlvbnMoKTtcbiAgICAgICAgLy8gTm90YTogU2VydmljaW9zIG5vIHNlIHNpbmNhbiBjb24gVVJMIGhpc3TDs3JpY2FtZW50ZSwgcGVybyByZS1ldmFsdWFtb3MgZGluw6FtaWNhbWVudGUuXG4gICAgfVxuXG4gICAgdG9nZ2xlU2VydmljZXNNZW51KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzU2VydmljZXNNZW51T3BlbiA9ICF0aGlzLmlzU2VydmljZXNNZW51T3BlbjtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gVVJMIFNZTkMgKFNJRU1QUkUgU0xVRylcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcml2YXRlIHN5bmNRdWVyeVBhcmFtcyhjbGVhckFsbCA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHFwID0gY2xlYXJBbGxcbiAgICAgICAgICAgID8geyBmaWx0ZXI6IG51bGwsIGRlc3RpbmF0aW9uOiBudWxsLCBicmFuZDogbnVsbCwgZXhwZXJpZW5jZTogbnVsbCB9XG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgIGZpbHRlcjogdGhpcy5zZWxlY3RlZEhvdGVsVHlwZVxuICAgICAgICAgICAgICAgICAgICAgID8gKHRoaXMuZmlsdGVyTGFiZWxUb1NsdWcuZ2V0KHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUpID8/XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbm9uaWNhbFNsdWcodGhpcy5zZWxlY3RlZEhvdGVsVHlwZSkpXG4gICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuXG4gICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbjogdGhpcy5zZWxlY3RlZERlc3RpbmF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgPyAodGhpcy5kZXN0aW5hdGlvbkxhYmVsVG9TbHVnLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGVzdGluYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICkgPz8gVXRpbHMudG9TbHVnKHRoaXMuc2VsZWN0ZWREZXN0aW5hdGlvbikpXG4gICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuXG4gICAgICAgICAgICAgICAgICBicmFuZDogdGhpcy5zZWxlY3RlZEJyYW5kXG4gICAgICAgICAgICAgICAgICAgICAgPyAodGhpcy5icmFuZExhYmVsVG9TbHVnLmdldCh0aGlzLnNlbGVjdGVkQnJhbmQpID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBVdGlscy50b1NsdWcodGhpcy5zZWxlY3RlZEJyYW5kKSlcbiAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG5cbiAgICAgICAgICAgICAgICAgIGV4cGVyaWVuY2U6IHRoaXMuc2VsZWN0ZWRFeHBlcmllbmNlXG4gICAgICAgICAgICAgICAgICAgICAgPyAodGhpcy5leHBlcmllbmNlTGFiZWxUb1NsdWcuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFeHBlcmllbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICApID8/IFV0aWxzLnRvU2x1Zyh0aGlzLnNlbGVjdGVkRXhwZXJpZW5jZSkpXG4gICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHFwLFxuICAgICAgICAgICAgcmVwbGFjZVVybDogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYW5vbmljYWxTbHVnKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBsZXQgcyA9IFV0aWxzLnRvU2x1Zyh2YWx1ZSk7XG4gICAgICAgIGlmICghcykgcmV0dXJuICcnO1xuXG4gICAgICAgIGlmIChzLmxlbmd0aCA+IDMgJiYgcy5lbmRzV2l0aCgnZXMnKSkge1xuICAgICAgICAgICAgY29uc3QgYmFzZSA9IHMuc2xpY2UoMCwgLTIpO1xuICAgICAgICAgICAgaWYgKGJhc2UuZW5kc1dpdGgoJ2MnKSkgcmV0dXJuIGJhc2Uuc2xpY2UoMCwgLTEpICsgJ3onO1xuICAgICAgICAgICAgcmV0dXJuIGJhc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocy5sZW5ndGggPiAzICYmIHMuZW5kc1dpdGgoJ3MnKSkgcmV0dXJuIHMuc2xpY2UoMCwgLTEpO1xuXG4gICAgICAgIHJldHVybiBzO1xuICAgIH1cblxuICAgIGdldEtleXNBcnJheShjb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkKTogbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4gY291bnQgPyBBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb3VudCB9KSA6IFtdO1xuICAgIH1cblxuICAgIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIGdldEZpcnN0SW1hZ2VCeVRhZyh0YWdOYW1lOiBzdHJpbmcsIGltYWdlbmVzOiBCYWJ5bG9uSW1hZ2VJW10pIHtcbiAgICAgICAgcmV0dXJuIGdldEZpcnN0SW1hZ2VCeVRhZ0Zyb21JbWFnZXMoaW1hZ2VuZXMsIHRhZ05hbWUpID8/IGltYWdlbmVzPy5bMF07XG4gICAgfVxuXG4gICAgZ2V0TnVtYmVyKHRleHQ6IHN0cmluZyk6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIFV0aWxzLmV4dHJhY3ROdW1iZXJSYW5nZSh0ZXh0KTtcbiAgICB9XG5cbiAgICBzaG93SWZTdXAodmFsdWU/OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmVnZXggPSAvXFxiKFNVUHxzdXBlcmlvcilcXGIvaTtcbiAgICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QodmFsdWUgPz8gJycpID8gJ1NVUCcgOiAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc29sdmVQZW5kaW5nRnJvbU1hcHMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBlbmRpbmdGaWx0ZXJTbHVnICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHNsdWcgPSB0aGlzLmNhbm9uaWNhbFNsdWcodGhpcy5wZW5kaW5nRmlsdGVyU2x1Zyk7XG4gICAgICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMuZmlsdGVyU2x1Z1RvTGFiZWwuZ2V0KHNsdWcpO1xuICAgICAgICAgICAgaWYgKGxhYmVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEhvdGVsVHlwZSA9IGxhYmVsO1xuICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbHRlclNsdWcgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0Rlc3RpbmF0aW9uU2x1ZyAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBzbHVnID0gVXRpbHMudG9TbHVnKHRoaXMucGVuZGluZ0Rlc3RpbmF0aW9uU2x1Zyk7XG4gICAgICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMuZGVzdGluYXRpb25TbHVnVG9MYWJlbC5nZXQoc2x1Zyk7XG4gICAgICAgICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24gPSBsYWJlbDtcbiAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdEZXN0aW5hdGlvblNsdWcgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0JyYW5kU2x1ZyAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBzbHVnID0gVXRpbHMudG9TbHVnKHRoaXMucGVuZGluZ0JyYW5kU2x1Zyk7XG4gICAgICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMuYnJhbmRTbHVnVG9MYWJlbC5nZXQoc2x1Zyk7XG4gICAgICAgICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQnJhbmQgPSBsYWJlbDtcbiAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdCcmFuZFNsdWcgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0V4cGVyaWVuY2VTbHVnICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHNsdWcgPSBVdGlscy50b1NsdWcodGhpcy5wZW5kaW5nRXhwZXJpZW5jZVNsdWcpO1xuICAgICAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLmV4cGVyaWVuY2VTbHVnVG9MYWJlbC5nZXQoc2x1Zyk7XG4gICAgICAgICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRXhwZXJpZW5jZSA9IGxhYmVsO1xuICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0V4cGVyaWVuY2VTbHVnID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZm9yY2VPcHRpb25NYXRjaCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHdhbnRlZCA9IHRoaXMuY2Fub25pY2FsU2x1Zyh0aGlzLnNlbGVjdGVkSG90ZWxUeXBlKTtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gdGhpcy5iYXNlSG90ZWxUeXBlT3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAgIChvKSA9PiB0aGlzLmNhbm9uaWNhbFNsdWcobykgPT09IHdhbnRlZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRIb3RlbFR5cGUgPSBtYXRjaCA/PyAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQnJhbmQpIHtcbiAgICAgICAgICAgIGNvbnN0IHdhbnRlZCA9IFV0aWxzLnRvU2x1Zyh0aGlzLnNlbGVjdGVkQnJhbmQpO1xuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLmJhc2VCcmFuZE9wdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgICAobykgPT4gVXRpbHMudG9TbHVnKG8pID09PSB3YW50ZWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQnJhbmQgPSBtYXRjaCA/PyAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IHdhbnRlZCA9IFV0aWxzLnRvU2x1Zyh0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24pO1xuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLmJhc2VEZXN0aW5hdGlvbk9wdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgICAobykgPT4gVXRpbHMudG9TbHVnKG8pID09PSB3YW50ZWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGVzdGluYXRpb24gPSBtYXRjaCA/PyAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRXhwZXJpZW5jZSkge1xuICAgICAgICAgICAgY29uc3Qgd2FudGVkID0gVXRpbHMudG9TbHVnKHRoaXMuc2VsZWN0ZWRFeHBlcmllbmNlKTtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gdGhpcy5iYXNlRXhwZXJpZW5jZU9wdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgICAobykgPT4gVXRpbHMudG9TbHVnKG8pID09PSB3YW50ZWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRXhwZXJpZW5jZSA9IG1hdGNoID8/ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0QnV0dG9uVXJsKGJ0bjogQmFieWxvbkJ1dHRvbkksIGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHVybEJhc2UgPSBidG4udXJsIHx8ICcnO1xuXG4gICAgICAgIGlmIChpbmRleCAhPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVybEJhc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpZGVudGlmaWVyID1cbiAgICAgICAgICAgIGl0ZW0/Lm5hbWVJZGVudGlmaWVyID8/IGl0ZW0/Lm5hbWVfaWRlbnRpZmllciA/PyBpdGVtPy5uYW1lO1xuXG4gICAgICAgIGlmICghaWRlbnRpZmllcikge1xuICAgICAgICAgICAgcmV0dXJuIHVybEJhc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSB1cmxCYXNlLmluY2x1ZGVzKCc/JykgPyAnJicgOiAnPyc7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXRlbT8udHlwZSA9PT0gJ2V4cGVyaWVuY2UnIHx8XG4gICAgICAgICAgICAoIWl0ZW0/LnR5cGUgJiYgKGl0ZW0/Lm5hbWVJZGVudGlmaWVyIHx8IGl0ZW0/Lm5hbWVfaWRlbnRpZmllcikpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGAke3VybEJhc2V9JHtzZXBhcmF0b3J9ZXhwZXJpZW5jZT0ke2lkZW50aWZpZXJ9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtPy50eXBlID09PSAnZGVzdGluYXRpb24nKSB7XG4gICAgICAgICAgICBjb25zdCBkZXN0aW5hdGlvblNsdWcgPSBVdGlscy50b1NsdWcoaWRlbnRpZmllcik7XG4gICAgICAgICAgICByZXR1cm4gYCR7dXJsQmFzZX0ke3NlcGFyYXRvcn1kZXN0aW5hdGlvbj0ke2Rlc3RpbmF0aW9uU2x1Z31gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybEJhc2U7XG4gICAgfVxuXG4gICAgZ2V0SW1hZ2VVcmwoaXRlbTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRJbWcgPVxuICAgICAgICAgICAgdGhpcy5nZXRGaXJzdEltYWdlQnlUYWcoXG4gICAgICAgICAgICAgICAgdGhpcy50YWdOYW1lLFxuICAgICAgICAgICAgICAgIGl0ZW0uaW1hZ2VzID8/IGl0ZW0/Lm11bHRpbWVkaWE/LmltYWdlbmVzXG4gICAgICAgICAgICApID8/XG4gICAgICAgICAgICBpdGVtLmltYWdlcz8uWzBdID8/XG4gICAgICAgICAgICBpdGVtPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/XG4gICAgICAgICAgICBpdGVtPy5pbWc/LlswXSA/P1xuICAgICAgICAgICAgaXRlbT8uaW1nID8/XG4gICAgICAgICAgICAnL2Fzc2V0cy9iYWJ5bG9uL3N2Zy9lbXB0eS5wbmcnO1xuXG4gICAgICAgIGlmICh0eXBlb2YgcmVzb2x2ZWRJbWcgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHJlc29sdmVkSW1nPy5pbWc/LnNyYyA/P1xuICAgICAgICAgICAgICAgIHJlc29sdmVkSW1nPy5zcmMgPz9cbiAgICAgICAgICAgICAgICAnL2Fzc2V0cy9iYWJ5bG9uL3N2Zy9lbXB0eS5wbmcnXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc29sdmVkSW1nO1xuICAgIH1cbn1cbiIsIkBpZiAoaXRlbXM/Lmxlbmd0aCkge1xuICAgIDxzZWN0aW9uIGNsYXNzPVwibWRsLW1kMDAyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1jb250ZW50LXRvcFwiPlxuICAgICAgICAgICAgICAgIEBpZiAodGV4dHM/LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxsaWItYmFieWxvbi1keW5hbWljLWhlYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0YWddPVwidGFncz8udGl0bGUgfHwgJ2gyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzcz1cIm0tdGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwidGV4dHM/LnRpdGxlID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJ0ZXh0Q29sb3JzPy50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgID48L2xpYi1iYWJ5bG9uLWR5bmFtaWMtaGVhZGluZz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChzaG93RmlsdGVycykge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1zZWxlY3RzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGhhc0FjdGl2ZUZpbHRlcnMgJiYgc2hvd0NsZWFuRmlsdGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1jbGVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckZpbHRlcnMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0cz8uY2xlYW5GaWx0ZXJzID8/ICdMaW1waWFyIGZpbHRyb3MnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFoaWRlU2VydmljZXNGaWx0ZXIgJiYgYXZhaWxhYmxlU2VydmljZXMubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhdmFpbGFibGVTZXJ2aWNlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLXNlcnZpY2VzLXNpbmdsZSBzZXJ2aWNlcy1maWx0ZXIgc2VydmljZXMtZmlsdGVyX19zaW5nbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1jaGVja2JveC1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInNpbmdsZS1zcnYtMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRTZXJ2aWNlcy5oYXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlU2VydmljZXNbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZVNlcnZpY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlU2VydmljZXNbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzaW5nbGUtc3J2LTBcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVTZXJ2aWNlc1swXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLXNlcnZpY2VzLWZpbHRlciBtLXNlbGVjdCBzZXJ2aWNlcy1maWx0ZXIgc2VydmljZXMtZmlsdGVyX19tdWx0aVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tc2VydmljZXMtYnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2VydmljZXNNZW51KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00IDZIMjBNNyAxMkgxN00xMCAxOEgxNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0cz8uc2VydmljZXN0aXRsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFNlcnZpY2VzLnNpemUgPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICh0ZXh0cz8uc2VydmljZXN0aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRleHRzPy5zZXJ2aWNlc3RpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkU2VydmljZXMuc2l6ZSA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFNlcnZpY2VzLnNpemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGlzU2VydmljZXNNZW51T3Blbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLXNlcnZpY2VzLW92ZXJsYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2VydmljZXNNZW51KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXNlcnZpY2VzLWRyb3Bkb3duXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWRyb3Bkb3duLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tY2xvc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlU2VydmljZXNNZW51KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID7inJU8L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWRyb3Bkb3duLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNydiBvZiBhdmFpbGFibGVTZXJ2aWNlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayAkaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLWNoZWNrYm94LWdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3J2LScgKyAkaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFNlcnZpY2VzLmhhcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3J2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlU2VydmljZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3J2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9yXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcnYtJyArICRpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBzcnYgfX08L2xhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXNlbGVjdCBicmFuZC1maWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNCcmFuZFNlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHRzPy5tYXJjYSA/PyAnbWFyY2EnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEJyYW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25CcmFuZENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRleHRzPy5tYXJjYSA/PyAnQWxsJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAob3B0IG9mIGJyYW5kT3B0aW9uczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRcIj57eyBvcHQgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGV4cGVyaWVuY2VPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1zZWxlY3QgZXhwZXJpZW5jZS1maWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI0V4cGVyaWVuY2VTZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJFeHBlcmllbmNpYXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEV4cGVyaWVuY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25FeHBlcmllbmNlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+RXhwZXJpZW5jaWFzPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHQgb2YgZXhwZXJpZW5jZU9wdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRcIj57eyBvcHQgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHRleHRzPy5ob3RlbFR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1zZWxlY3QgaG90ZWx0eXBlLWZpbHRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaG90ZWxUeXBlU2VsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzPy5ob3RlbFR5cGUgPz8gJ2hvdGVsZXMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEhvdGVsVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkhvdGVsVHlwZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRleHRzPy5ob3RlbFR5cGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0IG9mIGhvdGVsVHlwZU9wdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRcIj57eyBvcHQgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXNlbGVjdCBkZXN0aW5hdGlvbi1maWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNEZXN0aW5hdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM/LmRlc3RpbmF0aW9ucyA/PyAnZGVzdGlub3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWREZXN0aW5hdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRGVzdGluYXRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0cz8uZGVzdGluYXRpb25zIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChvcHQgb2YgZGVzdGluYXRpb25PcHRpb25zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdFwiPnt7IG9wdCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm0tY2FyZHMtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuLS1tYXhDb2x1bW5zXT1cIm1heENvbHVtbnMgPz8gNFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGlmIChmaWx0ZXJlZEl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBmaWx0ZXJlZEl0ZW1zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tY2FyZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkZW1wdHk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhZ2V0Rmlyc3RJbWFnZUJ5VGFnKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uaW1hZ2VzID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmltYWdlbmVzID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaW1hZ2VzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uaW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZ2V0SW1hZ2VVcmwoaXRlbSk7IGFzIGltZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaW5rLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJpdGVtLmxpbmtzPy5bMF0/LnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlua1R5cGVdPVwiaXRlbS5saW5rcz8uWzBdPy5saW5rVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZVBvaW50ZXJOb25lXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLWNhcmQtdG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1pbWFnZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VybCgnICsgaW1nICsgJyknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS10YWctbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaG90ZWx0eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmhvdGVsdHlwZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWtleXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW0/LmhvdGVsdHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0hvdGVsJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5ob3RlbHR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSMO0dGVsJykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5ob3RlbGNhdGVnb3J5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtIG9mIGdldE51bWJlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5ob3RlbGNhdGVnb3J5ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTE0MDQuMDAwMDAwLCAtNTkyMi4wMDAwMDApIHRyYW5zbGF0ZSgxOTEuMDAwMDAwLCA1ODY1LjAwMDAwMCkgdHJhbnNsYXRlKDExMDkuMDAwMDAwLCA1Ny4wMDAwMDApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI2ZmZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbC1vcGFjaXR5PVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbC1ydWxlPVwibm9uemVyb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMCAwbDIuMjk0IDcuMTA0Yy4wMzQuMTA2LjEzMy4xNzguMjQ1LjE3OEwyMCA3LjI2N2wtNi4wNDYgNC4zNzR2LjAwMWMtLjA5LjA2Ni0uMTI4LjE4Mi0uMDkzLjI4OWwyLjMyMiA3LjA5NS02LjAzMi00LjRjLS4wOS0uMDY1LS4yMTMtLjA2NS0uMzAzIDBsLTYuMDI5IDQuNCAyLjMyMi03LjA5NUg2LjE0Yy4wMzUtLjEwNy0uMDAzLS4yMjMtLjA5NC0uMjg5TDAgNy4yNjhsNy40NjEuMDE1LjAwMS0uMDAxYy4xMTIgMCAuMjExLS4wNzIuMjQ1LS4xNzhMMTAgMHpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxMDQuMDAwMDAwLCAwLjAwMDAwMClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW0/LmhvdGVsdHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FwYXJ0YW1lbnRvJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5ob3RlbHR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQXBwYXJ0ZW1lbnQnKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmhvdGVsY2F0ZWdvcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gb2YgZ2V0TnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmhvdGVsY2F0ZWdvcnkgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayAkaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTMgMTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTAuMTQ2Mjk2IDQuMjY0NzlMMS4xNDAxNSAyLjAxNjkyQzEuMzEyODkgMS42MjU1OSAxLjYyNTU5IDEuMzEyODkgMi4wMTY5MiAxLjE0MDE1TDQuMjY0NzkgMC4xNDYyOTdDNC41ODE3NCAwLjAwNjQxODI2IDQuOTMzNTYgLTAuMDM0Mzk0NCA1LjI3NDEyIDAuMDI5MjEyN0M1LjYxNDY3IDAuMDkyODE5OCA1LjkyODA1IDAuMjU3ODc2IDYuMTczMTQgMC41MDI3M0w3Ljk0NzUgMi4yNzgzOUM4LjE2MDYgMi40OTE1NSA4LjMxMzg4IDIuNzU3MDEgOC4zOTE5NyAzLjA0ODEzQzguNDcwMDYgMy4zMzkyNSA4LjQ3MDIgMy42NDU3OCA4LjM5MjM5IDMuOTM2OThMNy45MzU3OSA1LjY0MTA5TDEyLjg2NiAxMC41NzEzQzEyLjkwODUgMTAuNjEzNiAxMi45NDIyIDEwLjY2MzkgMTIuOTY1MiAxMC43MTkzQzEyLjk4ODIgMTAuNzc0NiAxMyAxMC44MzQgMTMgMTAuODkzOVYxMi41NDQ3QzEyLjk5OTMgMTIuNjY1MiAxMi45NTExIDEyLjc4MDcgMTIuODY1OSAxMi44NjU5QzEyLjc4MDcgMTIuOTUxMSAxMi42NjUyIDEyLjk5OTMgMTIuNTQ0NyAxM0gxMC44OTM5QzEwLjc5MjYgMTIuOTk5OCAxMC42OTQyIDEyLjk2NTkgMTAuNjE0MiAxMi45MDM4QzEwLjUzNDEgMTIuODQxNiAxMC40NzcgMTIuNzU0NyAxMC40NTE2IDEyLjY1NjZMMTAuMjA0NSAxMS42Nzk2TDkuMzMwMyAxMS41MTMxQzkuMjQzMjIgMTEuNDk2OCA5LjE2MjgyIDExLjQ1NTMgOS4wOTkwMyAxMS4zOTM4QzkuMDM1MjMgMTEuMzMyMyA4Ljk5MDgyIDExLjI1MzUgOC45NzEyNyAxMS4xNjcxTDguNzMzMjEgMTAuMTE3M0w3Ljg5MDI2IDEwLjAzNjdDNy43ODQ3OSAxMC4wMjc0IDcuNjg2MDggOS45ODA4IDcuNjExODggOS45MDUyOEw1LjY0MTA5IDcuOTM1NzlMMy45MzY5NyA4LjM5MjM5QzMuNjQ1OCA4LjQ3MDQ3IDMuMzM5MTkgOC40NzA0NiAzLjA0ODAyIDguMzkyMzZDMi43NTY4NSA4LjMxNDI2IDIuNDkxNCA4LjE2MDgyIDIuMjc4MzkgNy45NDc1TDAuNTAyNzI5IDYuMTczMTRDMC4yNTc4NzUgNS45MjgwNSAwLjA5MjgyMDIgNS42MTQ2NyAwLjAyOTIxMyA1LjI3NDEyQy0wLjAzNDM5NDMgNC45MzM1NyAwLjAwNjQxNzI3IDQuNTgxNzQgMC4xNDYyOTYgNC4yNjQ3OVpNMy42NzAzIDUuMDg5NTNDMy44MTA2MSA1LjIyOTY4IDMuOTg5MzIgNS4zMjUwOCA0LjE4Mzg1IDUuMzYzNjlDNC4zNzgzNyA1LjQwMjI5IDQuNTc5OTcgNS4zODIzNiA0Ljc2MzE3IDUuMzA2NDFDNC45NDYzNiA1LjIzMDQ3IDUuMTAyOTQgNS4xMDE5MSA1LjIxMzA5IDQuOTM3QzUuMzIzMjQgNC43NzIxIDUuMzgyMDMgNC41NzgyMyA1LjM4MjAzIDQuMzc5OTFDNS4zODIwMyA0LjE4MTYgNS4zMjMyNCAzLjk4NzczIDUuMjEzMDkgMy44MjI4M0M1LjEwMjk0IDMuNjU3OTIgNC45NDYzNiAzLjUyOTM2IDQuNzYzMTcgMy40NTM0MkM0LjU3OTk3IDMuMzc3NDcgNC4zNzgzNyAzLjM1NzU0IDQuMTgzODUgMy4zOTYxNEMzLjk4OTMyIDMuNDM0NzUgMy44MTA2MSAzLjUzMDE1IDMuNjcwMyAzLjY3MDNDMy41NzY4OSAzLjc2MzM2IDMuNTAyNzcgMy44NzM5NSAzLjQ1MjE5IDMuOTk1NzJDMy40MDE2MiA0LjExNzUgMy4zNzU1OCA0LjI0ODA2IDMuMzc1NTggNC4zNzk5MUMzLjM3NTU4IDQuNTExNzcgMy40MDE2MiA0LjY0MjMzIDMuNDUyMTkgNC43NjQxMUMzLjUwMjc3IDQuODg1ODggMy41NzY4OSA0Ljk5NjQ3IDMuNjcwMyA1LjA4OTUzWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjZmZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbC1vcGFjaXR5PVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzaG93SWZTdXAoaXRlbT8uaG90ZWxjYXRlZ29yeSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tdGFnLXJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGVmdC1tb2RlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWl0ZW0uaG90ZWx0eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnN0eWxlcz8ucHJpbWFyeSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZmY0MzM4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS50ZXh0cz8udGl0bGUgfHwgaXRlbS50ZXh0cz8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udGV4dHM/LnRpdGxlID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS50ZXh0cz8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1zdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5sb2NhbGl0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmxvY2FsaXR5IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5sb2NhbGl0eSAmJiBpdGVtLnByb3ZpbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLnByb3ZpbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ucHJvdmluY2UgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmJ1dHRvbnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidG4gb2YgaXRlbS5idXR0b25zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayAkaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1idG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtLWJ1dHRvbi1zbSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbmRleCAlIDIgPT09IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ20tYnV0IG0tdW5kZXJsaW5lJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZGV4ICUgMiAhPT0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tYnRuLXByaW1hcnktZHluYW1pY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnN0eWxlcz8ucHJpbWFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLWJ0bi1ob3Zlci1keW5hbWljXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc3R5bGVzPy5wcmltYXJ5SG92ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRCdXR0b25VcmwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0bixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhcmdldF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidG4udGFyZ2V0IHx8ICdfc2VsZidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlua1R5cGVdPVwiYnRuLmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnRuLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYnRuLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1lbXB0eVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0cz8ubm90Rm91bmQgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05vIHNlIGVuY29udHJhcm9uIHJlc3VsdGFkb3MgY29uIGVzb3MgZmlsdHJvcy4nXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxufVxuIl19