ctt-puro 0.68.3 → 0.68.4

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.
@@ -4,12 +4,12 @@ import { PuroLinkTypeDirective, PuroResizeZoomDirective } from '../../directives
4
4
  import * as i0 from "@angular/core";
5
5
  export class PuroFooterBeachsComponent {
6
6
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroFooterBeachsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroFooterBeachsComponent, isStandalone: true, selector: "lib-puro-footer-beachs", inputs: { items: "items" }, ngImport: i0, template: "<footer class=\"footer footer__bg--1\">\n <div class=\"footer__hotels\" resizeZoom>\n <ul class=\"footer__hotelsList\">\n <li class=\"footer__logo \">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"180\"\n height=\"20\"\n class=\"footer__logo--img\"\n >\n <use href=\"#purobeach-logo\"></use>\n >\n </svg>\n </li>\n\n @for (item of items || []; track $index) {\n @if (item) {\n <li class=\"footer__hotelsItem\">\n <a\n [href]=\"item.link?.url\"\n [linkType]=\"item.link?.linkType\"\n class=\"footer__hotelsItem--inner\"\n [attr.aria-label]=\"item.link?.label ?? 'Item link'\"\n >\n @if (item.title) {\n <h3 class=\"footer__hotelsItem--heading\">\n {{ item.title }}\n </h3>\n }\n @if (item.subtitle) {\n <p class=\"footer__hotelsItem--text\">\n {{ item.subtitle }}\n </p>\n }\n </a>\n </li>\n }\n }\n </ul>\n </div>\n</footer>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }, { kind: "directive", type: PuroResizeZoomDirective, selector: "[resizeZoom]" }] }); }
7
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroFooterBeachsComponent, isStandalone: true, selector: "lib-puro-footer-beachs", inputs: { items: "items" }, ngImport: i0, template: "<footer class=\"footer footer__bg--1\">\n <div class=\"footer__hotels\" resizeZoom>\n <ul class=\"footer__hotelsList\">\n <li class=\"footer__logo \">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"180\"\n height=\"20\"\n class=\"footer__logo--img \"\n \n >\n <use href=\"#purobeach-logo\"></use>\n >\n </svg>\n </li>\n\n @for (item of items || []; track $index) {\n @if (item) {\n <li class=\"footer__hotelsItem\">\n <a\n [href]=\"item.link?.url\"\n [linkType]=\"item.link?.linkType\"\n class=\"footer__hotelsItem--inner\"\n [attr.aria-label]=\"item.link?.label ?? 'Item link'\"\n >\n @if (item.title) {\n <h3 class=\"footer__hotelsItem--heading\">\n {{ item.title }}\n </h3>\n }\n @if (item.subtitle) {\n <p class=\"footer__hotelsItem--text\">\n {{ item.subtitle }}\n </p>\n }\n </a>\n </li>\n }\n }\n </ul>\n </div>\n</footer>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }, { kind: "directive", type: PuroResizeZoomDirective, selector: "[resizeZoom]" }] }); }
8
8
  }
9
9
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroFooterBeachsComponent, decorators: [{
10
10
  type: Component,
11
- args: [{ selector: 'lib-puro-footer-beachs', standalone: true, imports: [CommonModule, PuroLinkTypeDirective, PuroResizeZoomDirective], template: "<footer class=\"footer footer__bg--1\">\n <div class=\"footer__hotels\" resizeZoom>\n <ul class=\"footer__hotelsList\">\n <li class=\"footer__logo \">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"180\"\n height=\"20\"\n class=\"footer__logo--img\"\n >\n <use href=\"#purobeach-logo\"></use>\n >\n </svg>\n </li>\n\n @for (item of items || []; track $index) {\n @if (item) {\n <li class=\"footer__hotelsItem\">\n <a\n [href]=\"item.link?.url\"\n [linkType]=\"item.link?.linkType\"\n class=\"footer__hotelsItem--inner\"\n [attr.aria-label]=\"item.link?.label ?? 'Item link'\"\n >\n @if (item.title) {\n <h3 class=\"footer__hotelsItem--heading\">\n {{ item.title }}\n </h3>\n }\n @if (item.subtitle) {\n <p class=\"footer__hotelsItem--text\">\n {{ item.subtitle }}\n </p>\n }\n </a>\n </li>\n }\n }\n </ul>\n </div>\n</footer>\n" }]
11
+ args: [{ selector: 'lib-puro-footer-beachs', standalone: true, imports: [CommonModule, PuroLinkTypeDirective, PuroResizeZoomDirective], template: "<footer class=\"footer footer__bg--1\">\n <div class=\"footer__hotels\" resizeZoom>\n <ul class=\"footer__hotelsList\">\n <li class=\"footer__logo \">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"180\"\n height=\"20\"\n class=\"footer__logo--img \"\n \n >\n <use href=\"#purobeach-logo\"></use>\n >\n </svg>\n </li>\n\n @for (item of items || []; track $index) {\n @if (item) {\n <li class=\"footer__hotelsItem\">\n <a\n [href]=\"item.link?.url\"\n [linkType]=\"item.link?.linkType\"\n class=\"footer__hotelsItem--inner\"\n [attr.aria-label]=\"item.link?.label ?? 'Item link'\"\n >\n @if (item.title) {\n <h3 class=\"footer__hotelsItem--heading\">\n {{ item.title }}\n </h3>\n }\n @if (item.subtitle) {\n <p class=\"footer__hotelsItem--text\">\n {{ item.subtitle }}\n </p>\n }\n </a>\n </li>\n }\n }\n </ul>\n </div>\n</footer>\n" }]
12
12
  }], propDecorators: { items: [{
13
13
  type: Input
14
14
  }] } });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1mb290ZXItYmVhY2hzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3B1cm8vc3JjL2xpYi9jb21wb25lbnRzL3B1cm8tZm9vdGVyLWJlYWNocy9wdXJvLWZvb3Rlci1iZWFjaHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1mb290ZXItYmVhY2hzL3B1cm8tZm9vdGVyLWJlYWNocy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBVWxGLE1BQU0sT0FBTyx5QkFBeUI7K0dBQXpCLHlCQUF5QjttR0FBekIseUJBQXlCLDhHQ1p0QyxpbURBMENBLHlERGxDYyxZQUFZLCtCQUFFLHFCQUFxQiw0SUFBRSx1QkFBdUI7OzRGQUk3RCx5QkFBeUI7a0JBUHJDLFNBQVM7K0JBQ0ksd0JBQXdCLGNBQ3RCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxxQkFBcUIsRUFBRSx1QkFBdUIsQ0FBQzs4QkFLOUQsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFB1cm9MaW5rVHlwZURpcmVjdGl2ZSwgUHVyb1Jlc2l6ZVpvb21EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFB1cm9CdXR0b25JIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLXB1cm8tZm9vdGVyLWJlYWNocycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBQdXJvTGlua1R5cGVEaXJlY3RpdmUsIFB1cm9SZXNpemVab29tRGlyZWN0aXZlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHVyby1mb290ZXItYmVhY2hzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcHVyby1mb290ZXItYmVhY2hzLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgUHVyb0Zvb3RlckJlYWNoc0NvbXBvbmVudCB7XG4gICAgQElucHV0KCkgaXRlbXM/OiBQdXJvRm9vdGVyQmVhY2hzSXRlbVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cm9Gb290ZXJCZWFjaHNJdGVtIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICBsaW5rPzogUHVyb0J1dHRvbkk7XG59XG4iLCI8Zm9vdGVyIGNsYXNzPVwiZm9vdGVyIGZvb3Rlcl9fYmctLTFcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyX19ob3RlbHNcIiByZXNpemVab29tPlxuICAgICAgICA8dWwgY2xhc3M9XCJmb290ZXJfX2hvdGVsc0xpc3RcIj5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cImZvb3Rlcl9fbG9nbyBcIj5cbiAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxODBcIlxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9vdGVyX19sb2dvLS1pbWdcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI3B1cm9iZWFjaC1sb2dvXCI+PC91c2U+XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvbGk+XG5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXMgfHwgW107IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIEBpZiAoaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJmb290ZXJfX2hvdGVsc0l0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiaXRlbS5saW5rPy51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJpdGVtLmxpbms/LmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvb3Rlcl9faG90ZWxzSXRlbS0taW5uZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiaXRlbS5saW5rPy5sYWJlbCA/PyAnSXRlbSBsaW5rJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImZvb3Rlcl9faG90ZWxzSXRlbS0taGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uc3VidGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmb290ZXJfX2hvdGVsc0l0ZW0tLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uc3VidGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG48L2Zvb3Rlcj5cbiJdfQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1mb290ZXItYmVhY2hzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3B1cm8vc3JjL2xpYi9jb21wb25lbnRzL3B1cm8tZm9vdGVyLWJlYWNocy9wdXJvLWZvb3Rlci1iZWFjaHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1mb290ZXItYmVhY2hzL3B1cm8tZm9vdGVyLWJlYWNocy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBVWxGLE1BQU0sT0FBTyx5QkFBeUI7K0dBQXpCLHlCQUF5QjttR0FBekIseUJBQXlCLDhHQ1p0Qyx3bkRBMkNBLHlERG5DYyxZQUFZLCtCQUFFLHFCQUFxQiw0SUFBRSx1QkFBdUI7OzRGQUk3RCx5QkFBeUI7a0JBUHJDLFNBQVM7K0JBQ0ksd0JBQXdCLGNBQ3RCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxxQkFBcUIsRUFBRSx1QkFBdUIsQ0FBQzs4QkFLOUQsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFB1cm9MaW5rVHlwZURpcmVjdGl2ZSwgUHVyb1Jlc2l6ZVpvb21EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFB1cm9CdXR0b25JIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLXB1cm8tZm9vdGVyLWJlYWNocycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBQdXJvTGlua1R5cGVEaXJlY3RpdmUsIFB1cm9SZXNpemVab29tRGlyZWN0aXZlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHVyby1mb290ZXItYmVhY2hzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcHVyby1mb290ZXItYmVhY2hzLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgUHVyb0Zvb3RlckJlYWNoc0NvbXBvbmVudCB7XG4gICAgQElucHV0KCkgaXRlbXM/OiBQdXJvRm9vdGVyQmVhY2hzSXRlbVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cm9Gb290ZXJCZWFjaHNJdGVtIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICBsaW5rPzogUHVyb0J1dHRvbkk7XG59XG4iLCI8Zm9vdGVyIGNsYXNzPVwiZm9vdGVyIGZvb3Rlcl9fYmctLTFcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyX19ob3RlbHNcIiByZXNpemVab29tPlxuICAgICAgICA8dWwgY2xhc3M9XCJmb290ZXJfX2hvdGVsc0xpc3RcIj5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cImZvb3Rlcl9fbG9nbyBcIj5cbiAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxODBcIlxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9vdGVyX19sb2dvLS1pbWcgXCJcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8dXNlIGhyZWY9XCIjcHVyb2JlYWNoLWxvZ29cIj48L3VzZT5cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpdGVtcyB8fCBbXTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImZvb3Rlcl9faG90ZWxzSXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJpdGVtLmxpbms/LnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cIml0ZW0ubGluaz8ubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9vdGVyX19ob3RlbHNJdGVtLS1pbm5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpdGVtLmxpbms/LmxhYmVsID8/ICdJdGVtIGxpbmsnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0udGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiZm9vdGVyX19ob3RlbHNJdGVtLS1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5zdWJ0aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZvb3Rlcl9faG90ZWxzSXRlbS0tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5zdWJ0aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbjwvZm9vdGVyPlxuIl19
@@ -29,7 +29,7 @@ export class PuroVerticalInfoComponent {
29
29
  return `https://www.linkedin.com/sharing/share-offsite/?url=${url}`;
30
30
  }
31
31
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroVerticalInfoComponent, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
32
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroVerticalInfoComponent, isStandalone: true, selector: "lib-puro-vertical-info", inputs: { pretitle: "pretitle", tag: "tag", title: "title", subtitle: "subtitle", price: "price", from: "from", to: "to", discount: "discount", currency: "currency", img: "img", socialTitle: "socialTitle", contactTitle: "contactTitle", extraTitle: "extraTitle", extraDescription: "extraDescription", fileTitle: "fileTitle", location: "location", intro: "intro", infoList: "infoList", imgList: "imgList", ndInfoList: "ndInfoList", infoButton: "infoButton", contactLinks: "contactLinks", buttonBook: "buttonBook", buttonGuests: "buttonGuests", pdfLink: "pdfLink", buttonSubscribe: "buttonSubscribe", buttonBack: "buttonBack", socialMedia: "socialMedia", hotelName: "hotelName" }, outputs: { btnBookClick: "btnBookClick" }, ngImport: i0, template: "<section class=\"vertical-info generalMargin\">\n <div class=\"vertical-info__header\">\n @if (pretitle) {\n <p class=\"vertical-info__pretitle\">{{ pretitle }}</p>\n }\n @if (buttonBack) {\n <a\n [href]=\"buttonBack.url\"\n class=\"btn btn__primary--outline vertical-info__btn-back\"\n [attr.aria-label]=\"buttonBack.label\"\n >{{ buttonBack.label }}</a\n >\n }\n </div>\n <div class=\"vertical-info__content\">\n <div class=\"vertical-info__left\">\n <div class=\"vertical-info__main\">\n <div>\n @if (tag) {\n <span class=\"vertical-info__tag\">{{ tag }}</span>\n }\n @if (title) {\n <h2 class=\"vertical-info__title\">{{ title }}</h2>\n }\n @if (subtitle) {\n <div\n class=\"vertical-info__subtitle\"\n [innerHTML]=\"subtitle\"\n ></div>\n }\n </div>\n <!-- TODO: add discount -->\n <div class=\"vertical-info__boxes\">\n <div class=\"vertical-info__box\">\n @if (from) {\n <p class=\"vertical-info__from\">\n {{ from }}\n </p>\n }\n @if (price) {\n <p class=\"vertical-info__price\">\n {{ price }}{{ currency || '\u20AC' }}\n </p>\n <p class=\"vertical-info__pp\">Por persona</p>\n } @else {\n @if (discount) {\n <p class=\"vertical-info__price\">\n {{ discount }}%\n </p>\n }\n }\n </div>\n @if (buttonSubscribe) {\n <a\n [href]=\"buttonSubscribe.url\"\n class=\"vertical-info__btn btn btn__primary--outline\"\n [attr.aria-label]=\"buttonSubscribe.label\"\n >\n {{ buttonSubscribe.label }}\n </a>\n }\n </div>\n </div>\n\n @if (img) {\n <img\n class=\"vertical-info__image\"\n [src]=\"img.src\"\n [alt]=\"img.alt\"\n width=\"431\"\n height=\"531\"\n loading=\"lazy\"\n />\n }\n </div>\n\n <div class=\"vertical-info__right\">\n @if (intro) {\n <div class=\"vertical-info__data\">\n @for (item of intro; track $index) {\n <div>\n @if (item.title) {\n <p class=\"vertical-info__small-title\">\n {{ item.title }}\n </p>\n }\n @if (item.description) {\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"item.description\"\n ></div>\n }\n </div>\n }\n </div>\n }\n\n @if (infoList) {\n <div class=\"vertical-info__separator\"></div>\n <div class=\"vertical-info__info-description\">\n <p class=\"vertical-info__title\">{{ infoList.title }}</p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"infoList.description\"\n ></div>\n <ul class=\"vertical-info__list\">\n @for (item of infoList.items; track $index) {\n <li>{{ item }}</li>\n }\n </ul>\n </div>\n }\n @if (imgList) {\n <div class=\"vertical-info__schedule\">\n <p class=\"vertical-info__title\">{{ imgList.title }}</p>\n <ul class=\"vertical-info__img-list\">\n @for (item of imgList.items; track $index) {\n <li>\n @if (item.image) {\n <img\n class=\"vertical-info__performance-img\"\n [src]=\"item.image.src\"\n [alt]=\"item.image.alt\"\n width=\"77\"\n height=\"77\"\n loading=\"lazy\"\n />\n }\n <div>\n <p class=\"vertical-info__small-title\">\n {{ item.title }}\n </p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"item.description\"\n ></div>\n </div>\n </li>\n }\n </ul>\n </div>\n }\n @if (ndInfoList) {\n <div class=\"vertical-info__info-description\">\n <p class=\"vertical-info__title\">{{ ndInfoList.title }}</p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"ndInfoList.description\"\n ></div>\n <ul class=\"vertical-info__list\">\n @for (item of ndInfoList.items; track $index) {\n <li>\n {{ item.title }}\n <span class=\"vertical-info__price\"\n >{{ item.price\n }}{{ item.currency || '\u20AC' }}</span\n >\n </li>\n }\n </ul>\n </div>\n }\n @if (infoButton) {\n <div class=\"vertical-info__book\">\n @if (infoButton.title) {\n <p class=\"vertical-info__title\">\n {{ infoButton.title }}\n </p>\n }\n @if (infoButton.description) {\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"infoButton.description\"\n ></div>\n }\n @if (infoButton.button) {\n <button\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"infoButton.button.label\"\n >\n {{ infoButton.button.label }}\n </button>\n }\n </div>\n }\n <div class=\"vertical-info__separator\"></div>\n @if (socialTitle) {\n <div class=\"vertical-info__social\">\n <p class=\"vertical-info__small-title\">{{ socialTitle }}</p>\n <div class=\"vertical-info__media\">\n <a\n [href]=\"facebookShareUrl\"\n target=\"_blank\"\n rel=\"noopener\"\n aria-label=\"Compartir en Facebook\"\n class=\"share-facebook\"\n >\n <i class=\"icon-5\"></i>\n </a>\n <a\n [href]=\"twitterShareUrl\"\n target=\"_blank\"\n rel=\"noopener\"\n aria-label=\"Compartir en X\"\n class=\"share-twitter\"\n >\n <i class=\"icon-4\"></i>\n </a>\n <a\n [href]=\"linkedinShareUrl\"\n target=\"_blank\"\n rel=\"noopener\"\n aria-label=\"Compartir en LinkedIn\"\n class=\"share-linkedin\"\n >\n <i class=\"icon-2\"></i>\n </a>\n </div>\n </div>\n }\n @if (contactTitle && contactLinks) {\n <div\n class=\"vertical-info__additional vertical-info__additional--contact\"\n >\n <p class=\"vertical-info__small-title\">{{ contactTitle }}</p>\n\n <div class=\"vertical-info__links\">\n @for (link of contactLinks; track $index) {\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n }\n </div>\n </div>\n }\n @if (extraTitle && extraDescription) {\n <div class=\"vertical-info__additional\">\n <p class=\"vertical-info__small-title\">{{ extraTitle }}</p>\n\n <div>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"extraDescription\"\n ></div>\n </div>\n </div>\n }\n @if (location) {\n <div\n class=\"vertical-info__additional vertical-info__additional--location\"\n >\n <p class=\"vertical-info__small-title\">\n {{ location.title }}\n </p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"location.description\"\n ></div>\n </div>\n\n @if (location.button) {\n <a\n [href]=\"location.button.url\"\n [linkType]=\"location.button.linkType\"\n class=\"btn btn__primary--outline vertical-info__btn-map\"\n [attr.aria-label]=\"location.button.label\"\n >{{ location.button.label }}</a\n >\n }\n }\n @if (pdfLink) {\n <div\n class=\"vertical-info__additional vertical-info__additional--location\"\n >\n @if (fileTitle) {\n <p class=\"vertical-info__small-title\">\n {{ fileTitle }}\n </p>\n }\n </div>\n\n <a\n [href]=\"pdfLink.url\"\n linkType=\"external\"\n class=\"btn__link\"\n [attr.aria-label]=\"pdfLink.label\"\n >{{ pdfLink.label }}</a\n >\n }\n @if (buttonGuests) {\n <a\n [href]=\"buttonGuests.url\"\n class=\"btn btn__primary--outline vertical-info__btn-full\"\n [attr.aria-label]=\"buttonGuests.label\"\n >{{ buttonGuests.label }}</a\n >\n }\n @if (buttonBook) {\n @if (buttonBook.linkType == 'component_link') {\n <a\n (click)=\"btnBookClick.emit(hotelName)\"\n class=\"btn btn__primary vertical-info__btn-full\"\n [attr.aria-label]=\"buttonBook.label\"\n >{{ buttonBook.label }}</a\n >\n }\n @if (buttonBook.linkType != 'component_link') {\n <a\n [href]=\"buttonBook.url\"\n class=\"btn btn__primary vertical-info__btn-full\"\n [attr.aria-label]=\"buttonBook.label\"\n >{{ buttonBook.label }}</a\n >\n }\n }\n </div>\n </div>\n</section>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: AutoImageZoomWrapperDirective, selector: "img[src]" }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
32
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroVerticalInfoComponent, isStandalone: true, selector: "lib-puro-vertical-info", inputs: { pretitle: "pretitle", tag: "tag", title: "title", subtitle: "subtitle", price: "price", from: "from", to: "to", discount: "discount", currency: "currency", img: "img", socialTitle: "socialTitle", contactTitle: "contactTitle", extraTitle: "extraTitle", extraDescription: "extraDescription", fileTitle: "fileTitle", location: "location", intro: "intro", infoList: "infoList", imgList: "imgList", ndInfoList: "ndInfoList", infoButton: "infoButton", contactLinks: "contactLinks", buttonBook: "buttonBook", buttonGuests: "buttonGuests", pdfLink: "pdfLink", buttonSubscribe: "buttonSubscribe", buttonBack: "buttonBack", socialMedia: "socialMedia", hotelName: "hotelName" }, outputs: { btnBookClick: "btnBookClick" }, ngImport: i0, template: "<section class=\"vertical-info generalMargin\">\n <div class=\"vertical-info__header\">\n @if (pretitle) {\n <p class=\"vertical-info__pretitle\">{{ pretitle }}</p>\n }\n @if (buttonBack) {\n <a\n [href]=\"buttonBack.url\"\n class=\"btn btn__primary--outline vertical-info__btn-back\"\n [attr.aria-label]=\"buttonBack.label\"\n >{{ buttonBack.label }}</a\n >\n }\n </div>\n <div class=\"vertical-info__content\">\n <div class=\"vertical-info__left\">\n <div class=\"vertical-info__main\">\n <div>\n @if (tag) {\n <span class=\"vertical-info__tag\">{{ tag }}</span>\n }\n @if (title) {\n <h2 class=\"vertical-info__title\">{{ title }}</h2>\n }\n @if (subtitle) {\n <div\n class=\"vertical-info__subtitle\"\n [innerHTML]=\"subtitle\"\n ></div>\n }\n </div>\n <!-- TODO: add discount -->\n <div class=\"vertical-info__boxes\">\n <div class=\"vertical-info__box\">\n @if (from) {\n <p class=\"vertical-info__from\">\n {{ from }}\n </p>\n }\n @if (price) {\n <p class=\"vertical-info__price\">\n {{ price }}{{ currency || '\u20AC' }}\n </p>\n <p class=\"vertical-info__pp\">Por persona</p>\n } @else {\n @if (discount) {\n <p class=\"vertical-info__price\">\n {{ discount }}%\n </p>\n }\n }\n </div>\n @if (buttonSubscribe) {\n <a\n [href]=\"buttonSubscribe.url\"\n class=\"vertical-info__btn btn btn__primary--outline\"\n [attr.aria-label]=\"buttonSubscribe.label\"\n >\n {{ buttonSubscribe.label }}\n </a>\n }\n </div>\n </div>\n\n @if (img) {\n <img\n class=\"vertical-info__image\"\n [src]=\"img.src\"\n [alt]=\"img.alt\"\n width=\"431\"\n height=\"531\"\n loading=\"lazy\"\n />\n }\n </div>\n\n <div class=\"vertical-info__right\">\n @if (intro) {\n <div class=\"vertical-info__data\">\n @for (item of intro; track $index) {\n <div>\n @if (item.title) {\n <p class=\"vertical-info__small-title\">\n {{ item.title }}\n </p>\n }\n @if (item.description) {\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"item.description\"\n ></div>\n }\n </div>\n }\n </div>\n }\n\n @if (infoList) {\n <div class=\"vertical-info__separator\"></div>\n <div class=\"vertical-info__info-description\">\n <p class=\"vertical-info__title\">{{ infoList.title }}</p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"infoList.description\"\n ></div>\n <ul class=\"vertical-info__list\">\n @for (item of infoList.items; track $index) {\n <li>{{ item }}</li>\n }\n </ul>\n </div>\n }\n @if (imgList) {\n <div class=\"vertical-info__schedule\">\n <p class=\"vertical-info__title\">{{ imgList.title }}</p>\n <ul class=\"vertical-info__img-list\">\n @for (item of imgList.items; track $index) {\n <li>\n @if (item.image) {\n <img\n class=\"vertical-info__performance-img\"\n [src]=\"item.image.src\"\n [alt]=\"item.image.alt\"\n width=\"77\"\n height=\"77\"\n loading=\"lazy\"\n />\n }\n <div>\n <p class=\"vertical-info__small-title\">\n {{ item.title }}\n </p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"item.description\"\n ></div>\n </div>\n </li>\n }\n </ul>\n </div>\n }\n @if (ndInfoList) {\n <div class=\"vertical-info__info-description\">\n <p class=\"vertical-info__title\">{{ ndInfoList.title }}</p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"ndInfoList.description\"\n ></div>\n <ul class=\"vertical-info__list\">\n @for (item of ndInfoList.items; track $index) {\n <li>\n {{ item.title || item.name || 'no hay datos' }}\n <span class=\"vertical-info__price\"\n >{{ item.price\n }}{{ item.currency || '\u20AC' }}</span\n >\n </li>\n }\n </ul>\n </div>\n }\n @if (infoButton) {\n <div class=\"vertical-info__book\">\n @if (infoButton.title) {\n <p class=\"vertical-info__title\">\n {{ infoButton.title }}\n </p>\n }\n @if (infoButton.description) {\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"infoButton.description\"\n ></div>\n }\n @if (infoButton.button) {\n <button\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"infoButton.button.label\"\n >\n {{ infoButton.button.label }}\n </button>\n }\n </div>\n }\n <div class=\"vertical-info__separator\"></div>\n @if (socialTitle) {\n <div class=\"vertical-info__social\">\n <p class=\"vertical-info__small-title\">{{ socialTitle }}</p>\n <div class=\"vertical-info__media\">\n <a\n [href]=\"facebookShareUrl\"\n target=\"_blank\"\n rel=\"noopener\"\n aria-label=\"Compartir en Facebook\"\n class=\"share-facebook\"\n >\n <i class=\"icon-5\"></i>\n </a>\n <a\n [href]=\"twitterShareUrl\"\n target=\"_blank\"\n rel=\"noopener\"\n aria-label=\"Compartir en X\"\n class=\"share-twitter\"\n >\n <i class=\"icon-4\"></i>\n </a>\n <a\n [href]=\"linkedinShareUrl\"\n target=\"_blank\"\n rel=\"noopener\"\n aria-label=\"Compartir en LinkedIn\"\n class=\"share-linkedin\"\n >\n <i class=\"icon-2\"></i>\n </a>\n </div>\n </div>\n }\n @if (contactTitle && contactLinks) {\n <div\n class=\"vertical-info__additional vertical-info__additional--contact\"\n >\n <p class=\"vertical-info__small-title\">{{ contactTitle }}</p>\n\n <div class=\"vertical-info__links\">\n @for (link of contactLinks; track $index) {\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n }\n </div>\n </div>\n }\n @if (extraTitle && extraDescription) {\n <div class=\"vertical-info__additional\">\n <p class=\"vertical-info__small-title\">{{ extraTitle }}</p>\n\n <div>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"extraDescription\"\n ></div>\n </div>\n </div>\n }\n @if (location) {\n <div\n class=\"vertical-info__additional vertical-info__additional--location\"\n >\n <p class=\"vertical-info__small-title\">\n {{ location.title }}\n </p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"location.description\"\n ></div>\n </div>\n\n @if (location.button) {\n <a\n [href]=\"location.button.url\"\n [linkType]=\"location.button.linkType\"\n class=\"btn btn__primary--outline vertical-info__btn-map\"\n [attr.aria-label]=\"location.button.label\"\n >{{ location.button.label }}</a\n >\n }\n }\n @if (pdfLink) {\n <div\n class=\"vertical-info__additional vertical-info__additional--location\"\n >\n @if (fileTitle) {\n <p class=\"vertical-info__small-title\">\n {{ fileTitle }}\n </p>\n }\n </div>\n\n <a\n [href]=\"pdfLink.url\"\n linkType=\"external\"\n class=\"btn__link\"\n [attr.aria-label]=\"pdfLink.label\"\n >{{ pdfLink.label }}</a\n >\n }\n @if (buttonGuests) {\n <a\n [href]=\"buttonGuests.url\"\n class=\"btn btn__primary--outline vertical-info__btn-full\"\n [attr.aria-label]=\"buttonGuests.label\"\n >{{ buttonGuests.label }}</a\n >\n }\n @if (buttonBook) {\n @if (buttonBook.linkType == 'component_link') {\n <a\n (click)=\"btnBookClick.emit(hotelName)\"\n class=\"btn btn__primary vertical-info__btn-full\"\n [attr.aria-label]=\"buttonBook.label\"\n >{{ buttonBook.label }}</a\n >\n }\n @if (buttonBook.linkType != 'component_link') {\n <a\n [href]=\"buttonBook.url\"\n class=\"btn btn__primary vertical-info__btn-full\"\n [attr.aria-label]=\"buttonBook.label\"\n >{{ buttonBook.label }}</a\n >\n }\n }\n </div>\n </div>\n</section>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: AutoImageZoomWrapperDirective, selector: "img[src]" }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33
33
  }
34
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroVerticalInfoComponent, decorators: [{
35
35
  type: Component,
@@ -37,7 +37,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
37
37
  CommonModule,
38
38
  AutoImageZoomWrapperDirective,
39
39
  PuroLinkTypeDirective,
40
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"vertical-info generalMargin\">\n <div class=\"vertical-info__header\">\n @if (pretitle) {\n <p class=\"vertical-info__pretitle\">{{ pretitle }}</p>\n }\n @if (buttonBack) {\n <a\n [href]=\"buttonBack.url\"\n class=\"btn btn__primary--outline vertical-info__btn-back\"\n [attr.aria-label]=\"buttonBack.label\"\n >{{ buttonBack.label }}</a\n >\n }\n </div>\n <div class=\"vertical-info__content\">\n <div class=\"vertical-info__left\">\n <div class=\"vertical-info__main\">\n <div>\n @if (tag) {\n <span class=\"vertical-info__tag\">{{ tag }}</span>\n }\n @if (title) {\n <h2 class=\"vertical-info__title\">{{ title }}</h2>\n }\n @if (subtitle) {\n <div\n class=\"vertical-info__subtitle\"\n [innerHTML]=\"subtitle\"\n ></div>\n }\n </div>\n <!-- TODO: add discount -->\n <div class=\"vertical-info__boxes\">\n <div class=\"vertical-info__box\">\n @if (from) {\n <p class=\"vertical-info__from\">\n {{ from }}\n </p>\n }\n @if (price) {\n <p class=\"vertical-info__price\">\n {{ price }}{{ currency || '\u20AC' }}\n </p>\n <p class=\"vertical-info__pp\">Por persona</p>\n } @else {\n @if (discount) {\n <p class=\"vertical-info__price\">\n {{ discount }}%\n </p>\n }\n }\n </div>\n @if (buttonSubscribe) {\n <a\n [href]=\"buttonSubscribe.url\"\n class=\"vertical-info__btn btn btn__primary--outline\"\n [attr.aria-label]=\"buttonSubscribe.label\"\n >\n {{ buttonSubscribe.label }}\n </a>\n }\n </div>\n </div>\n\n @if (img) {\n <img\n class=\"vertical-info__image\"\n [src]=\"img.src\"\n [alt]=\"img.alt\"\n width=\"431\"\n height=\"531\"\n loading=\"lazy\"\n />\n }\n </div>\n\n <div class=\"vertical-info__right\">\n @if (intro) {\n <div class=\"vertical-info__data\">\n @for (item of intro; track $index) {\n <div>\n @if (item.title) {\n <p class=\"vertical-info__small-title\">\n {{ item.title }}\n </p>\n }\n @if (item.description) {\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"item.description\"\n ></div>\n }\n </div>\n }\n </div>\n }\n\n @if (infoList) {\n <div class=\"vertical-info__separator\"></div>\n <div class=\"vertical-info__info-description\">\n <p class=\"vertical-info__title\">{{ infoList.title }}</p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"infoList.description\"\n ></div>\n <ul class=\"vertical-info__list\">\n @for (item of infoList.items; track $index) {\n <li>{{ item }}</li>\n }\n </ul>\n </div>\n }\n @if (imgList) {\n <div class=\"vertical-info__schedule\">\n <p class=\"vertical-info__title\">{{ imgList.title }}</p>\n <ul class=\"vertical-info__img-list\">\n @for (item of imgList.items; track $index) {\n <li>\n @if (item.image) {\n <img\n class=\"vertical-info__performance-img\"\n [src]=\"item.image.src\"\n [alt]=\"item.image.alt\"\n width=\"77\"\n height=\"77\"\n loading=\"lazy\"\n />\n }\n <div>\n <p class=\"vertical-info__small-title\">\n {{ item.title }}\n </p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"item.description\"\n ></div>\n </div>\n </li>\n }\n </ul>\n </div>\n }\n @if (ndInfoList) {\n <div class=\"vertical-info__info-description\">\n <p class=\"vertical-info__title\">{{ ndInfoList.title }}</p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"ndInfoList.description\"\n ></div>\n <ul class=\"vertical-info__list\">\n @for (item of ndInfoList.items; track $index) {\n <li>\n {{ item.title }}\n <span class=\"vertical-info__price\"\n >{{ item.price\n }}{{ item.currency || '\u20AC' }}</span\n >\n </li>\n }\n </ul>\n </div>\n }\n @if (infoButton) {\n <div class=\"vertical-info__book\">\n @if (infoButton.title) {\n <p class=\"vertical-info__title\">\n {{ infoButton.title }}\n </p>\n }\n @if (infoButton.description) {\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"infoButton.description\"\n ></div>\n }\n @if (infoButton.button) {\n <button\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"infoButton.button.label\"\n >\n {{ infoButton.button.label }}\n </button>\n }\n </div>\n }\n <div class=\"vertical-info__separator\"></div>\n @if (socialTitle) {\n <div class=\"vertical-info__social\">\n <p class=\"vertical-info__small-title\">{{ socialTitle }}</p>\n <div class=\"vertical-info__media\">\n <a\n [href]=\"facebookShareUrl\"\n target=\"_blank\"\n rel=\"noopener\"\n aria-label=\"Compartir en Facebook\"\n class=\"share-facebook\"\n >\n <i class=\"icon-5\"></i>\n </a>\n <a\n [href]=\"twitterShareUrl\"\n target=\"_blank\"\n rel=\"noopener\"\n aria-label=\"Compartir en X\"\n class=\"share-twitter\"\n >\n <i class=\"icon-4\"></i>\n </a>\n <a\n [href]=\"linkedinShareUrl\"\n target=\"_blank\"\n rel=\"noopener\"\n aria-label=\"Compartir en LinkedIn\"\n class=\"share-linkedin\"\n >\n <i class=\"icon-2\"></i>\n </a>\n </div>\n </div>\n }\n @if (contactTitle && contactLinks) {\n <div\n class=\"vertical-info__additional vertical-info__additional--contact\"\n >\n <p class=\"vertical-info__small-title\">{{ contactTitle }}</p>\n\n <div class=\"vertical-info__links\">\n @for (link of contactLinks; track $index) {\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n }\n </div>\n </div>\n }\n @if (extraTitle && extraDescription) {\n <div class=\"vertical-info__additional\">\n <p class=\"vertical-info__small-title\">{{ extraTitle }}</p>\n\n <div>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"extraDescription\"\n ></div>\n </div>\n </div>\n }\n @if (location) {\n <div\n class=\"vertical-info__additional vertical-info__additional--location\"\n >\n <p class=\"vertical-info__small-title\">\n {{ location.title }}\n </p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"location.description\"\n ></div>\n </div>\n\n @if (location.button) {\n <a\n [href]=\"location.button.url\"\n [linkType]=\"location.button.linkType\"\n class=\"btn btn__primary--outline vertical-info__btn-map\"\n [attr.aria-label]=\"location.button.label\"\n >{{ location.button.label }}</a\n >\n }\n }\n @if (pdfLink) {\n <div\n class=\"vertical-info__additional vertical-info__additional--location\"\n >\n @if (fileTitle) {\n <p class=\"vertical-info__small-title\">\n {{ fileTitle }}\n </p>\n }\n </div>\n\n <a\n [href]=\"pdfLink.url\"\n linkType=\"external\"\n class=\"btn__link\"\n [attr.aria-label]=\"pdfLink.label\"\n >{{ pdfLink.label }}</a\n >\n }\n @if (buttonGuests) {\n <a\n [href]=\"buttonGuests.url\"\n class=\"btn btn__primary--outline vertical-info__btn-full\"\n [attr.aria-label]=\"buttonGuests.label\"\n >{{ buttonGuests.label }}</a\n >\n }\n @if (buttonBook) {\n @if (buttonBook.linkType == 'component_link') {\n <a\n (click)=\"btnBookClick.emit(hotelName)\"\n class=\"btn btn__primary vertical-info__btn-full\"\n [attr.aria-label]=\"buttonBook.label\"\n >{{ buttonBook.label }}</a\n >\n }\n @if (buttonBook.linkType != 'component_link') {\n <a\n [href]=\"buttonBook.url\"\n class=\"btn btn__primary vertical-info__btn-full\"\n [attr.aria-label]=\"buttonBook.label\"\n >{{ buttonBook.label }}</a\n >\n }\n }\n </div>\n </div>\n</section>\n" }]
40
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"vertical-info generalMargin\">\n <div class=\"vertical-info__header\">\n @if (pretitle) {\n <p class=\"vertical-info__pretitle\">{{ pretitle }}</p>\n }\n @if (buttonBack) {\n <a\n [href]=\"buttonBack.url\"\n class=\"btn btn__primary--outline vertical-info__btn-back\"\n [attr.aria-label]=\"buttonBack.label\"\n >{{ buttonBack.label }}</a\n >\n }\n </div>\n <div class=\"vertical-info__content\">\n <div class=\"vertical-info__left\">\n <div class=\"vertical-info__main\">\n <div>\n @if (tag) {\n <span class=\"vertical-info__tag\">{{ tag }}</span>\n }\n @if (title) {\n <h2 class=\"vertical-info__title\">{{ title }}</h2>\n }\n @if (subtitle) {\n <div\n class=\"vertical-info__subtitle\"\n [innerHTML]=\"subtitle\"\n ></div>\n }\n </div>\n <!-- TODO: add discount -->\n <div class=\"vertical-info__boxes\">\n <div class=\"vertical-info__box\">\n @if (from) {\n <p class=\"vertical-info__from\">\n {{ from }}\n </p>\n }\n @if (price) {\n <p class=\"vertical-info__price\">\n {{ price }}{{ currency || '\u20AC' }}\n </p>\n <p class=\"vertical-info__pp\">Por persona</p>\n } @else {\n @if (discount) {\n <p class=\"vertical-info__price\">\n {{ discount }}%\n </p>\n }\n }\n </div>\n @if (buttonSubscribe) {\n <a\n [href]=\"buttonSubscribe.url\"\n class=\"vertical-info__btn btn btn__primary--outline\"\n [attr.aria-label]=\"buttonSubscribe.label\"\n >\n {{ buttonSubscribe.label }}\n </a>\n }\n </div>\n </div>\n\n @if (img) {\n <img\n class=\"vertical-info__image\"\n [src]=\"img.src\"\n [alt]=\"img.alt\"\n width=\"431\"\n height=\"531\"\n loading=\"lazy\"\n />\n }\n </div>\n\n <div class=\"vertical-info__right\">\n @if (intro) {\n <div class=\"vertical-info__data\">\n @for (item of intro; track $index) {\n <div>\n @if (item.title) {\n <p class=\"vertical-info__small-title\">\n {{ item.title }}\n </p>\n }\n @if (item.description) {\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"item.description\"\n ></div>\n }\n </div>\n }\n </div>\n }\n\n @if (infoList) {\n <div class=\"vertical-info__separator\"></div>\n <div class=\"vertical-info__info-description\">\n <p class=\"vertical-info__title\">{{ infoList.title }}</p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"infoList.description\"\n ></div>\n <ul class=\"vertical-info__list\">\n @for (item of infoList.items; track $index) {\n <li>{{ item }}</li>\n }\n </ul>\n </div>\n }\n @if (imgList) {\n <div class=\"vertical-info__schedule\">\n <p class=\"vertical-info__title\">{{ imgList.title }}</p>\n <ul class=\"vertical-info__img-list\">\n @for (item of imgList.items; track $index) {\n <li>\n @if (item.image) {\n <img\n class=\"vertical-info__performance-img\"\n [src]=\"item.image.src\"\n [alt]=\"item.image.alt\"\n width=\"77\"\n height=\"77\"\n loading=\"lazy\"\n />\n }\n <div>\n <p class=\"vertical-info__small-title\">\n {{ item.title }}\n </p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"item.description\"\n ></div>\n </div>\n </li>\n }\n </ul>\n </div>\n }\n @if (ndInfoList) {\n <div class=\"vertical-info__info-description\">\n <p class=\"vertical-info__title\">{{ ndInfoList.title }}</p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"ndInfoList.description\"\n ></div>\n <ul class=\"vertical-info__list\">\n @for (item of ndInfoList.items; track $index) {\n <li>\n {{ item.title || item.name || 'no hay datos' }}\n <span class=\"vertical-info__price\"\n >{{ item.price\n }}{{ item.currency || '\u20AC' }}</span\n >\n </li>\n }\n </ul>\n </div>\n }\n @if (infoButton) {\n <div class=\"vertical-info__book\">\n @if (infoButton.title) {\n <p class=\"vertical-info__title\">\n {{ infoButton.title }}\n </p>\n }\n @if (infoButton.description) {\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"infoButton.description\"\n ></div>\n }\n @if (infoButton.button) {\n <button\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"infoButton.button.label\"\n >\n {{ infoButton.button.label }}\n </button>\n }\n </div>\n }\n <div class=\"vertical-info__separator\"></div>\n @if (socialTitle) {\n <div class=\"vertical-info__social\">\n <p class=\"vertical-info__small-title\">{{ socialTitle }}</p>\n <div class=\"vertical-info__media\">\n <a\n [href]=\"facebookShareUrl\"\n target=\"_blank\"\n rel=\"noopener\"\n aria-label=\"Compartir en Facebook\"\n class=\"share-facebook\"\n >\n <i class=\"icon-5\"></i>\n </a>\n <a\n [href]=\"twitterShareUrl\"\n target=\"_blank\"\n rel=\"noopener\"\n aria-label=\"Compartir en X\"\n class=\"share-twitter\"\n >\n <i class=\"icon-4\"></i>\n </a>\n <a\n [href]=\"linkedinShareUrl\"\n target=\"_blank\"\n rel=\"noopener\"\n aria-label=\"Compartir en LinkedIn\"\n class=\"share-linkedin\"\n >\n <i class=\"icon-2\"></i>\n </a>\n </div>\n </div>\n }\n @if (contactTitle && contactLinks) {\n <div\n class=\"vertical-info__additional vertical-info__additional--contact\"\n >\n <p class=\"vertical-info__small-title\">{{ contactTitle }}</p>\n\n <div class=\"vertical-info__links\">\n @for (link of contactLinks; track $index) {\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n }\n </div>\n </div>\n }\n @if (extraTitle && extraDescription) {\n <div class=\"vertical-info__additional\">\n <p class=\"vertical-info__small-title\">{{ extraTitle }}</p>\n\n <div>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"extraDescription\"\n ></div>\n </div>\n </div>\n }\n @if (location) {\n <div\n class=\"vertical-info__additional vertical-info__additional--location\"\n >\n <p class=\"vertical-info__small-title\">\n {{ location.title }}\n </p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"location.description\"\n ></div>\n </div>\n\n @if (location.button) {\n <a\n [href]=\"location.button.url\"\n [linkType]=\"location.button.linkType\"\n class=\"btn btn__primary--outline vertical-info__btn-map\"\n [attr.aria-label]=\"location.button.label\"\n >{{ location.button.label }}</a\n >\n }\n }\n @if (pdfLink) {\n <div\n class=\"vertical-info__additional vertical-info__additional--location\"\n >\n @if (fileTitle) {\n <p class=\"vertical-info__small-title\">\n {{ fileTitle }}\n </p>\n }\n </div>\n\n <a\n [href]=\"pdfLink.url\"\n linkType=\"external\"\n class=\"btn__link\"\n [attr.aria-label]=\"pdfLink.label\"\n >{{ pdfLink.label }}</a\n >\n }\n @if (buttonGuests) {\n <a\n [href]=\"buttonGuests.url\"\n class=\"btn btn__primary--outline vertical-info__btn-full\"\n [attr.aria-label]=\"buttonGuests.label\"\n >{{ buttonGuests.label }}</a\n >\n }\n @if (buttonBook) {\n @if (buttonBook.linkType == 'component_link') {\n <a\n (click)=\"btnBookClick.emit(hotelName)\"\n class=\"btn btn__primary vertical-info__btn-full\"\n [attr.aria-label]=\"buttonBook.label\"\n >{{ buttonBook.label }}</a\n >\n }\n @if (buttonBook.linkType != 'component_link') {\n <a\n [href]=\"buttonBook.url\"\n class=\"btn btn__primary vertical-info__btn-full\"\n [attr.aria-label]=\"buttonBook.label\"\n >{{ buttonBook.label }}</a\n >\n }\n }\n </div>\n </div>\n</section>\n" }]
41
41
  }], ctorParameters: () => [{ type: Object, decorators: [{
42
42
  type: Inject,
43
43
  args: [PLATFORM_ID]
@@ -102,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
102
102
  }], btnBookClick: [{
103
103
  type: Output
104
104
  }] } });
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby12ZXJ0aWNhbC1pbmZvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3B1cm8vc3JjL2xpYi9jb21wb25lbnRzL3B1cm8tdmVydGljYWwtaW5mby9wdXJvLXZlcnRpY2FsLWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby12ZXJ0aWNhbC1pbmZvL3B1cm8tdmVydGljYWwtaW5mby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsR0FDZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsNkJBQTZCLEVBQzdCLHFCQUFxQixHQUN4QixNQUFNLGtCQUFrQixDQUFDOztBQWUxQixNQUFNLE9BQU8seUJBQXlCO0lBaUNsQyxZQUF5QyxVQUFrQjtRQUFsQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBRmpELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUVrQixDQUFDO0lBRS9ELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDbkQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDaEIsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2QyxPQUFPLGdEQUFnRCxHQUFHLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2YsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEQsT0FBTyx3Q0FBd0MsR0FBRyxTQUFTLElBQUksRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNoQixNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sdURBQXVELEdBQUcsRUFBRSxDQUFDO0lBQ3hFLENBQUM7K0dBMURRLHlCQUF5QixrQkFpQ2QsV0FBVzttR0FqQ3RCLHlCQUF5QixteUJDNUJ0Qyx5eGFBaVVBLHlERDdTUSxZQUFZLCtCQUNaLDZCQUE2QixxREFDN0IscUJBQXFCOzs0RkFNaEIseUJBQXlCO2tCQVpyQyxTQUFTOytCQUNJLHdCQUF3QixjQUN0QixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWiw2QkFBNkI7d0JBQzdCLHFCQUFxQjtxQkFDeEIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU07OzBCQW1DbEMsTUFBTTsyQkFBQyxXQUFXO3lDQWhDdEIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBdXRvSW1hZ2Vab29tV3JhcHBlckRpcmVjdGl2ZSxcbiAgICBQdXJvTGlua1R5cGVEaXJlY3RpdmUsXG59IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgUHVyb0J1dHRvbkksIFB1cm9JbWFnZUkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItcHVyby12ZXJ0aWNhbC1pbmZvJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBBdXRvSW1hZ2Vab29tV3JhcHBlckRpcmVjdGl2ZSxcbiAgICAgICAgUHVyb0xpbmtUeXBlRGlyZWN0aXZlLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3B1cm8tdmVydGljYWwtaW5mby5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3B1cm8tdmVydGljYWwtaW5mby5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFB1cm9WZXJ0aWNhbEluZm9Db21wb25lbnQge1xuICAgIEBJbnB1dCgpIHByZXRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHRhZz86IHN0cmluZztcbiAgICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBzdWJ0aXRsZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBwcmljZT86IG51bWJlcjtcbiAgICBASW5wdXQoKSBmcm9tPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHRvPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRpc2NvdW50PzogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGN1cnJlbmN5Pzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGltZz86IFB1cm9JbWFnZUk7XG4gICAgQElucHV0KCkgc29jaWFsVGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgY29udGFjdFRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGV4dHJhVGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgZXh0cmFEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBASW5wdXQoKSBmaWxlVGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgbG9jYXRpb24/OiBQdXJvVmVydGljYWxJbmZvTG9jYXRpb247XG4gICAgQElucHV0KCkgaW50cm8/OiBQdXJvVmVydGljYWxJbmZvSW50cm9bXTtcbiAgICBASW5wdXQoKSBpbmZvTGlzdD86IFB1cm9WZXJ0aWNhbEluZm9MaXN0O1xuICAgIEBJbnB1dCgpIGltZ0xpc3Q/OiBQdXJvVmVydGljYWxJbmZvSW1hZ2VMaXN0O1xuICAgIEBJbnB1dCgpIG5kSW5mb0xpc3Q/OiBQdXJvVmVydGljYWxJbmZvTmRMaXN0O1xuICAgIEBJbnB1dCgpIGluZm9CdXR0b24/OiBQdXJvVmVydGljYWxJbmZvV2l0aEJ1dHRvbjtcbiAgICBASW5wdXQoKSBjb250YWN0TGlua3M/OiBQdXJvQnV0dG9uSVtdO1xuICAgIEBJbnB1dCgpIGJ1dHRvbkJvb2s/OiBQdXJvQnV0dG9uSTtcbiAgICBASW5wdXQoKSBidXR0b25HdWVzdHM/OiBQdXJvQnV0dG9uSTtcbiAgICBASW5wdXQoKSBwZGZMaW5rPzogUHVyb0J1dHRvbkk7XG4gICAgQElucHV0KCkgYnV0dG9uU3Vic2NyaWJlPzogUHVyb0J1dHRvbkk7XG4gICAgQElucHV0KCkgYnV0dG9uQmFjaz86IFB1cm9CdXR0b25JO1xuICAgIEBJbnB1dCgpIHNvY2lhbE1lZGlhPzogUHVyb1ZlcnRpY2FsSW5mb1NvY2lhbE1lZGlhSXRlbVtdO1xuICAgIEBJbnB1dCgpIGhvdGVsTmFtZT86IHN0cmluZztcblxuICAgIEBPdXRwdXQoKSBidG5Cb29rQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCkge31cblxuICAgIGdldCBzaGFyZVRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGl0bGUgPz8gJyc7XG4gICAgfVxuXG4gICAgZ2V0IGN1cnJlbnRVcmwoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm4gJyc7XG4gICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICB9XG5cbiAgICBnZXQgZmFjZWJvb2tTaGFyZVVybCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB1cmwgPSBlbmNvZGVVUkkodGhpcy5jdXJyZW50VXJsKTtcbiAgICAgICAgcmV0dXJuIGBodHRwczovL3d3dy5mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA/dT0ke3VybH1gO1xuICAgIH1cblxuICAgIGdldCB0d2l0dGVyU2hhcmVVcmwoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdXJsID0gZW5jb2RlVVJJKHRoaXMuY3VycmVudFVybCk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBlbmNvZGVVUklDb21wb25lbnQodGhpcy5zaGFyZVRleHQpO1xuICAgICAgICByZXR1cm4gYGh0dHBzOi8vdHdpdHRlci5jb20vaW50ZW50L3R3ZWV0P3VybD0ke3VybH0mdGV4dD0ke3RleHR9YDtcbiAgICB9XG5cbiAgICBnZXQgbGlua2VkaW5TaGFyZVVybCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB1cmwgPSBlbmNvZGVVUkkodGhpcy5jdXJyZW50VXJsKTtcbiAgICAgICAgcmV0dXJuIGBodHRwczovL3d3dy5saW5rZWRpbi5jb20vc2hhcmluZy9zaGFyZS1vZmZzaXRlLz91cmw9JHt1cmx9YDtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0xvY2F0aW9uIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBidXR0b24/OiBQdXJvQnV0dG9uSTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0ludHJvIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0xpc3Qge1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGl0ZW1zPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0ltYWdlTGlzdCB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgaXRlbXM/OiBQdXJvVmVydGljYWxJbmZvSW1hZ2VbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0ltYWdlIHtcbiAgICBpbWFnZT86IFB1cm9JbWFnZUk7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb05kTGlzdCB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgaXRlbXM/OiBQdXJvVmVydGljYWxJbmZvTmRbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb05kIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBwcmljZT86IG51bWJlcjtcbiAgICBjdXJyZW5jeT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdXJvVmVydGljYWxJbmZvV2l0aEJ1dHRvbiB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgYnV0dG9uPzogUHVyb0J1dHRvbkk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb1NvY2lhbE1lZGlhSXRlbSB7XG4gICAgaWNvbj86IHN0cmluZztcbiAgICB1cmw/OiBzdHJpbmc7XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cInZlcnRpY2FsLWluZm8gZ2VuZXJhbE1hcmdpblwiPlxuICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19oZWFkZXJcIj5cbiAgICAgICAgQGlmIChwcmV0aXRsZSkge1xuICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19wcmV0aXRsZVwiPnt7IHByZXRpdGxlIH19PC9wPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoYnV0dG9uQmFjaykge1xuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBbaHJlZl09XCJidXR0b25CYWNrLnVybFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5LS1vdXRsaW5lIHZlcnRpY2FsLWluZm9fX2J0bi1iYWNrXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvbkJhY2subGFiZWxcIlxuICAgICAgICAgICAgICAgID57eyBidXR0b25CYWNrLmxhYmVsIH19PC9hXG4gICAgICAgICAgICA+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19fY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19fbGVmdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX21haW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHRhZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX190YWdcIj57eyB0YWcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmICh0aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwidmVydGljYWwtaW5mb19fdGl0bGVcIj57eyB0aXRsZSB9fTwvaDI+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChzdWJ0aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fc3VidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwic3VidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLSBUT0RPOiBhZGQgZGlzY291bnQgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2JveGVzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19ib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZnJvbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidmVydGljYWwtaW5mb19fZnJvbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmcm9tIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwcmljZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidmVydGljYWwtaW5mb19fcHJpY2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHJpY2UgfX17eyBjdXJyZW5jeSB8fCAn4oKsJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3BwXCI+UG9yIHBlcnNvbmE8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGRpc2NvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidmVydGljYWwtaW5mb19fcHJpY2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRpc2NvdW50IH19JVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChidXR0b25TdWJzY3JpYmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiYnV0dG9uU3Vic2NyaWJlLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19idG4gYnRuIGJ0bl9fcHJpbWFyeS0tb3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidXR0b25TdWJzY3JpYmUubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGJ1dHRvblN1YnNjcmliZS5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgQGlmIChpbWcpIHtcbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19faW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltZy5zcmNcIlxuICAgICAgICAgICAgICAgICAgICBbYWx0XT1cImltZy5hbHRcIlxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjQzMVwiXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjUzMVwiXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19fcmlnaHRcIj5cbiAgICAgICAgICAgIEBpZiAoaW50cm8pIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19fZGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGludHJvOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidmVydGljYWwtaW5mb19fc21hbGwtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIml0ZW0uZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmIChpbmZvTGlzdCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19zZXBhcmF0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19faW5mby1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3RpdGxlXCI+e3sgaW5mb0xpc3QudGl0bGUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJpbmZvTGlzdC5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwidmVydGljYWwtaW5mb19fbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpbmZvTGlzdC5pdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPnt7IGl0ZW0gfX08L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChpbWdMaXN0KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3NjaGVkdWxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidmVydGljYWwtaW5mb19fdGl0bGVcIj57eyBpbWdMaXN0LnRpdGxlIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19pbWctbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpbWdMaXN0Lml0ZW1zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5pbWFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fcGVyZm9ybWFuY2UtaW1nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIml0ZW0uaW1hZ2Uuc3JjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0uaW1hZ2UuYWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjc3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI3N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19zbWFsbC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2Rlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIml0ZW0uZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChuZEluZm9MaXN0KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2luZm8tZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX190aXRsZVwiPnt7IG5kSW5mb0xpc3QudGl0bGUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJuZEluZm9MaXN0LmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIG5kSW5mb0xpc3QuaXRlbXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3ByaWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBpdGVtLnByaWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fXt7IGl0ZW0uY3VycmVuY3kgfHwgJ+KCrCcgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGluZm9CdXR0b24pIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19fYm9va1wiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGluZm9CdXR0b24udGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidmVydGljYWwtaW5mb19fdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpbmZvQnV0dG9uLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChpbmZvQnV0dG9uLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJpbmZvQnV0dG9uLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGluZm9CdXR0b24uYnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5LS1vdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImluZm9CdXR0b24uYnV0dG9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpbmZvQnV0dG9uLmJ1dHRvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19zZXBhcmF0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoc29jaWFsVGl0bGUpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19fc29jaWFsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidmVydGljYWwtaW5mb19fc21hbGwtdGl0bGVcIj57eyBzb2NpYWxUaXRsZSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX21lZGlhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImZhY2Vib29rU2hhcmVVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDb21wYXJ0aXIgZW4gRmFjZWJvb2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2hhcmUtZmFjZWJvb2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbi01XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJ0d2l0dGVyU2hhcmVVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDb21wYXJ0aXIgZW4gWFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaGFyZS10d2l0dGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24tNFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwibGlua2VkaW5TaGFyZVVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNvbXBhcnRpciBlbiBMaW5rZWRJblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaGFyZS1saW5rZWRpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLTJcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChjb250YWN0VGl0bGUgJiYgY29udGFjdExpbmtzKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2FkZGl0aW9uYWwgdmVydGljYWwtaW5mb19fYWRkaXRpb25hbC0tY29udGFjdFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3NtYWxsLXRpdGxlXCI+e3sgY29udGFjdFRpdGxlIH19PC9wPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19saW5rc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAobGluayBvZiBjb250YWN0TGlua3M7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImxpbmsudXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImxpbmsubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxpbmsubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgbGluay5sYWJlbCB9fTwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGV4dHJhVGl0bGUgJiYgZXh0cmFEZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19hZGRpdGlvbmFsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidmVydGljYWwtaW5mb19fc21hbGwtdGl0bGVcIj57eyBleHRyYVRpdGxlIH19PC9wPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJleHRyYURlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGxvY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2FkZGl0aW9uYWwgdmVydGljYWwtaW5mb19fYWRkaXRpb25hbC0tbG9jYXRpb25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19zbWFsbC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9jYXRpb24udGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2Rlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwibG9jYXRpb24uZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICBAaWYgKGxvY2F0aW9uLmJ1dHRvbikge1xuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwibG9jYXRpb24uYnV0dG9uLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGlua1R5cGVdPVwibG9jYXRpb24uYnV0dG9uLmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9fcHJpbWFyeS0tb3V0bGluZSB2ZXJ0aWNhbC1pbmZvX19idG4tbWFwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibG9jYXRpb24uYnV0dG9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID57eyBsb2NhdGlvbi5idXR0b24ubGFiZWwgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAocGRmTGluaykge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19hZGRpdGlvbmFsIHZlcnRpY2FsLWluZm9fX2FkZGl0aW9uYWwtLWxvY2F0aW9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZmlsZVRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3NtYWxsLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmlsZVRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIFtocmVmXT1cInBkZkxpbmsudXJsXCJcbiAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU9XCJleHRlcm5hbFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuX19saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJwZGZMaW5rLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPnt7IHBkZkxpbmsubGFiZWwgfX08L2FcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGJ1dHRvbkd1ZXN0cykge1xuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImJ1dHRvbkd1ZXN0cy51cmxcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fX3ByaW1hcnktLW91dGxpbmUgdmVydGljYWwtaW5mb19fYnRuLWZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvbkd1ZXN0cy5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID57eyBidXR0b25HdWVzdHMubGFiZWwgfX08L2FcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGJ1dHRvbkJvb2spIHtcbiAgICAgICAgICAgICAgICBAaWYgKGJ1dHRvbkJvb2subGlua1R5cGUgPT0gJ2NvbXBvbmVudF9saW5rJykge1xuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJ0bkJvb2tDbGljay5lbWl0KGhvdGVsTmFtZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5IHZlcnRpY2FsLWluZm9fX2J0bi1mdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uQm9vay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+e3sgYnV0dG9uQm9vay5sYWJlbCB9fTwvYVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoYnV0dG9uQm9vay5saW5rVHlwZSAhPSAnY29tcG9uZW50X2xpbmsnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJidXR0b25Cb29rLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fX3ByaW1hcnkgdmVydGljYWwtaW5mb19fYnRuLWZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidXR0b25Cb29rLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID57eyBidXR0b25Cb29rLmxhYmVsIH19PC9hXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby12ZXJ0aWNhbC1pbmZvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3B1cm8vc3JjL2xpYi9jb21wb25lbnRzL3B1cm8tdmVydGljYWwtaW5mby9wdXJvLXZlcnRpY2FsLWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby12ZXJ0aWNhbC1pbmZvL3B1cm8tdmVydGljYWwtaW5mby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsR0FDZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsNkJBQTZCLEVBQzdCLHFCQUFxQixHQUN4QixNQUFNLGtCQUFrQixDQUFDOztBQWUxQixNQUFNLE9BQU8seUJBQXlCO0lBaUNsQyxZQUF5QyxVQUFrQjtRQUFsQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBRmpELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUVrQixDQUFDO0lBRS9ELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDbkQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDaEIsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2QyxPQUFPLGdEQUFnRCxHQUFHLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2YsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEQsT0FBTyx3Q0FBd0MsR0FBRyxTQUFTLElBQUksRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNoQixNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sdURBQXVELEdBQUcsRUFBRSxDQUFDO0lBQ3hFLENBQUM7K0dBMURRLHlCQUF5QixrQkFpQ2QsV0FBVzttR0FqQ3RCLHlCQUF5QixteUJDNUJ0Qyx3emFBaVVBLHlERDdTUSxZQUFZLCtCQUNaLDZCQUE2QixxREFDN0IscUJBQXFCOzs0RkFNaEIseUJBQXlCO2tCQVpyQyxTQUFTOytCQUNJLHdCQUF3QixjQUN0QixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWiw2QkFBNkI7d0JBQzdCLHFCQUFxQjtxQkFDeEIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU07OzBCQW1DbEMsTUFBTTsyQkFBQyxXQUFXO3lDQWhDdEIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBdXRvSW1hZ2Vab29tV3JhcHBlckRpcmVjdGl2ZSxcbiAgICBQdXJvTGlua1R5cGVEaXJlY3RpdmUsXG59IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgUHVyb0J1dHRvbkksIFB1cm9JbWFnZUkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItcHVyby12ZXJ0aWNhbC1pbmZvJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBBdXRvSW1hZ2Vab29tV3JhcHBlckRpcmVjdGl2ZSxcbiAgICAgICAgUHVyb0xpbmtUeXBlRGlyZWN0aXZlLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3B1cm8tdmVydGljYWwtaW5mby5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3B1cm8tdmVydGljYWwtaW5mby5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFB1cm9WZXJ0aWNhbEluZm9Db21wb25lbnQge1xuICAgIEBJbnB1dCgpIHByZXRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHRhZz86IHN0cmluZztcbiAgICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBzdWJ0aXRsZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBwcmljZT86IG51bWJlcjtcbiAgICBASW5wdXQoKSBmcm9tPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHRvPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRpc2NvdW50PzogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGN1cnJlbmN5Pzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGltZz86IFB1cm9JbWFnZUk7XG4gICAgQElucHV0KCkgc29jaWFsVGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgY29udGFjdFRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGV4dHJhVGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgZXh0cmFEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBASW5wdXQoKSBmaWxlVGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgbG9jYXRpb24/OiBQdXJvVmVydGljYWxJbmZvTG9jYXRpb247XG4gICAgQElucHV0KCkgaW50cm8/OiBQdXJvVmVydGljYWxJbmZvSW50cm9bXTtcbiAgICBASW5wdXQoKSBpbmZvTGlzdD86IFB1cm9WZXJ0aWNhbEluZm9MaXN0O1xuICAgIEBJbnB1dCgpIGltZ0xpc3Q/OiBQdXJvVmVydGljYWxJbmZvSW1hZ2VMaXN0O1xuICAgIEBJbnB1dCgpIG5kSW5mb0xpc3Q/OiBQdXJvVmVydGljYWxJbmZvTmRMaXN0O1xuICAgIEBJbnB1dCgpIGluZm9CdXR0b24/OiBQdXJvVmVydGljYWxJbmZvV2l0aEJ1dHRvbjtcbiAgICBASW5wdXQoKSBjb250YWN0TGlua3M/OiBQdXJvQnV0dG9uSVtdO1xuICAgIEBJbnB1dCgpIGJ1dHRvbkJvb2s/OiBQdXJvQnV0dG9uSTtcbiAgICBASW5wdXQoKSBidXR0b25HdWVzdHM/OiBQdXJvQnV0dG9uSTtcbiAgICBASW5wdXQoKSBwZGZMaW5rPzogUHVyb0J1dHRvbkk7XG4gICAgQElucHV0KCkgYnV0dG9uU3Vic2NyaWJlPzogUHVyb0J1dHRvbkk7XG4gICAgQElucHV0KCkgYnV0dG9uQmFjaz86IFB1cm9CdXR0b25JO1xuICAgIEBJbnB1dCgpIHNvY2lhbE1lZGlhPzogUHVyb1ZlcnRpY2FsSW5mb1NvY2lhbE1lZGlhSXRlbVtdO1xuICAgIEBJbnB1dCgpIGhvdGVsTmFtZT86IHN0cmluZztcblxuICAgIEBPdXRwdXQoKSBidG5Cb29rQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCkge31cblxuICAgIGdldCBzaGFyZVRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGl0bGUgPz8gJyc7XG4gICAgfVxuXG4gICAgZ2V0IGN1cnJlbnRVcmwoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm4gJyc7XG4gICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICB9XG5cbiAgICBnZXQgZmFjZWJvb2tTaGFyZVVybCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB1cmwgPSBlbmNvZGVVUkkodGhpcy5jdXJyZW50VXJsKTtcbiAgICAgICAgcmV0dXJuIGBodHRwczovL3d3dy5mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA/dT0ke3VybH1gO1xuICAgIH1cblxuICAgIGdldCB0d2l0dGVyU2hhcmVVcmwoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdXJsID0gZW5jb2RlVVJJKHRoaXMuY3VycmVudFVybCk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBlbmNvZGVVUklDb21wb25lbnQodGhpcy5zaGFyZVRleHQpO1xuICAgICAgICByZXR1cm4gYGh0dHBzOi8vdHdpdHRlci5jb20vaW50ZW50L3R3ZWV0P3VybD0ke3VybH0mdGV4dD0ke3RleHR9YDtcbiAgICB9XG5cbiAgICBnZXQgbGlua2VkaW5TaGFyZVVybCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB1cmwgPSBlbmNvZGVVUkkodGhpcy5jdXJyZW50VXJsKTtcbiAgICAgICAgcmV0dXJuIGBodHRwczovL3d3dy5saW5rZWRpbi5jb20vc2hhcmluZy9zaGFyZS1vZmZzaXRlLz91cmw9JHt1cmx9YDtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0xvY2F0aW9uIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBidXR0b24/OiBQdXJvQnV0dG9uSTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0ludHJvIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0xpc3Qge1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGl0ZW1zPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0ltYWdlTGlzdCB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgaXRlbXM/OiBQdXJvVmVydGljYWxJbmZvSW1hZ2VbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0ltYWdlIHtcbiAgICBpbWFnZT86IFB1cm9JbWFnZUk7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb05kTGlzdCB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgaXRlbXM/OiBQdXJvVmVydGljYWxJbmZvTmRbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb05kIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHByaWNlPzogbnVtYmVyO1xuICAgIGN1cnJlbmN5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cm9WZXJ0aWNhbEluZm9XaXRoQnV0dG9uIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBidXR0b24/OiBQdXJvQnV0dG9uSTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdXJvVmVydGljYWxJbmZvU29jaWFsTWVkaWFJdGVtIHtcbiAgICBpY29uPzogc3RyaW5nO1xuICAgIHVybD86IHN0cmluZztcbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwidmVydGljYWwtaW5mbyBnZW5lcmFsTWFyZ2luXCI+XG4gICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2hlYWRlclwiPlxuICAgICAgICBAaWYgKHByZXRpdGxlKSB7XG4gICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3ByZXRpdGxlXCI+e3sgcHJldGl0bGUgfX08L3A+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChidXR0b25CYWNrKSB7XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIFtocmVmXT1cImJ1dHRvbkJhY2sudXJsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fX3ByaW1hcnktLW91dGxpbmUgdmVydGljYWwtaW5mb19fYnRuLWJhY2tcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uQmFjay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgPnt7IGJ1dHRvbkJhY2subGFiZWwgfX08L2FcbiAgICAgICAgICAgID5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19jb250ZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19sZWZ0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19fbWFpblwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAodGFnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3RhZ1wiPnt7IHRhZyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX190aXRsZVwiPnt7IHRpdGxlIH19PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKHN1YnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19zdWJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJzdWJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIFRPRE86IGFkZCBkaXNjb3VudCAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19fYm94ZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2JveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChmcm9tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19mcm9tXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZyb20gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHByaWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19wcmljZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwcmljZSB9fXt7IGN1cnJlbmN5IHx8ICfigqwnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidmVydGljYWwtaW5mb19fcHBcIj5Qb3IgcGVyc29uYTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZGlzY291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19wcmljZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGlzY291bnQgfX0lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGJ1dHRvblN1YnNjcmliZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJidXR0b25TdWJzY3JpYmUudXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2J0biBidG4gYnRuX19wcmltYXJ5LS1vdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvblN1YnNjcmliZS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYnV0dG9uU3Vic2NyaWJlLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICBAaWYgKGltZykge1xuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19pbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW1nLnNyY1wiXG4gICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaW1nLmFsdFwiXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiNDMxXCJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiNTMxXCJcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19yaWdodFwiPlxuICAgICAgICAgICAgQGlmIChpbnRybykge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19kYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaW50cm87IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0udGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19zbWFsbC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2Rlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiaXRlbS5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKGluZm9MaXN0KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3NlcGFyYXRvclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19pbmZvLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidmVydGljYWwtaW5mb19fdGl0bGVcIj57eyBpbmZvTGlzdC50aXRsZSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImluZm9MaXN0LmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGluZm9MaXN0Lml0ZW1zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+e3sgaXRlbSB9fTwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGltZ0xpc3QpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19fc2NoZWR1bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX190aXRsZVwiPnt7IGltZ0xpc3QudGl0bGUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2ltZy1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGltZ0xpc3QuaXRlbXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmltYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19wZXJmb3JtYW5jZS1pbWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaXRlbS5pbWFnZS5zcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaXRlbS5pbWFnZS5hbHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiNzdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjc3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3NtYWxsLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiaXRlbS5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKG5kSW5mb0xpc3QpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19faW5mby1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3RpdGxlXCI+e3sgbmRJbmZvTGlzdC50aXRsZSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIm5kSW5mb0xpc3QuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2xpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgbmRJbmZvTGlzdC5pdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnRpdGxlIHx8IGl0ZW0ubmFtZSB8fCAnbm8gaGF5IGRhdG9zJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3ByaWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBpdGVtLnByaWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fXt7IGl0ZW0uY3VycmVuY3kgfHwgJ+KCrCcgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGluZm9CdXR0b24pIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19fYm9va1wiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGluZm9CdXR0b24udGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidmVydGljYWwtaW5mb19fdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpbmZvQnV0dG9uLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChpbmZvQnV0dG9uLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJpbmZvQnV0dG9uLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGluZm9CdXR0b24uYnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5LS1vdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImluZm9CdXR0b24uYnV0dG9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpbmZvQnV0dG9uLmJ1dHRvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19zZXBhcmF0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoc29jaWFsVGl0bGUpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19fc29jaWFsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidmVydGljYWwtaW5mb19fc21hbGwtdGl0bGVcIj57eyBzb2NpYWxUaXRsZSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX21lZGlhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImZhY2Vib29rU2hhcmVVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDb21wYXJ0aXIgZW4gRmFjZWJvb2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2hhcmUtZmFjZWJvb2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbi01XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJ0d2l0dGVyU2hhcmVVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDb21wYXJ0aXIgZW4gWFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaGFyZS10d2l0dGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24tNFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwibGlua2VkaW5TaGFyZVVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNvbXBhcnRpciBlbiBMaW5rZWRJblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaGFyZS1saW5rZWRpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLTJcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChjb250YWN0VGl0bGUgJiYgY29udGFjdExpbmtzKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2FkZGl0aW9uYWwgdmVydGljYWwtaW5mb19fYWRkaXRpb25hbC0tY29udGFjdFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3NtYWxsLXRpdGxlXCI+e3sgY29udGFjdFRpdGxlIH19PC9wPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19saW5rc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAobGluayBvZiBjb250YWN0TGlua3M7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImxpbmsudXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImxpbmsubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxpbmsubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgbGluay5sYWJlbCB9fTwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGV4dHJhVGl0bGUgJiYgZXh0cmFEZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19hZGRpdGlvbmFsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidmVydGljYWwtaW5mb19fc21hbGwtdGl0bGVcIj57eyBleHRyYVRpdGxlIH19PC9wPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJleHRyYURlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGxvY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2FkZGl0aW9uYWwgdmVydGljYWwtaW5mb19fYWRkaXRpb25hbC0tbG9jYXRpb25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19zbWFsbC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9jYXRpb24udGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2Rlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwibG9jYXRpb24uZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICBAaWYgKGxvY2F0aW9uLmJ1dHRvbikge1xuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwibG9jYXRpb24uYnV0dG9uLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGlua1R5cGVdPVwibG9jYXRpb24uYnV0dG9uLmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9fcHJpbWFyeS0tb3V0bGluZSB2ZXJ0aWNhbC1pbmZvX19idG4tbWFwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibG9jYXRpb24uYnV0dG9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID57eyBsb2NhdGlvbi5idXR0b24ubGFiZWwgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAocGRmTGluaykge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19hZGRpdGlvbmFsIHZlcnRpY2FsLWluZm9fX2FkZGl0aW9uYWwtLWxvY2F0aW9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZmlsZVRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3NtYWxsLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmlsZVRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIFtocmVmXT1cInBkZkxpbmsudXJsXCJcbiAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU9XCJleHRlcm5hbFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuX19saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJwZGZMaW5rLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPnt7IHBkZkxpbmsubGFiZWwgfX08L2FcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGJ1dHRvbkd1ZXN0cykge1xuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImJ1dHRvbkd1ZXN0cy51cmxcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fX3ByaW1hcnktLW91dGxpbmUgdmVydGljYWwtaW5mb19fYnRuLWZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvbkd1ZXN0cy5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID57eyBidXR0b25HdWVzdHMubGFiZWwgfX08L2FcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGJ1dHRvbkJvb2spIHtcbiAgICAgICAgICAgICAgICBAaWYgKGJ1dHRvbkJvb2subGlua1R5cGUgPT0gJ2NvbXBvbmVudF9saW5rJykge1xuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJ0bkJvb2tDbGljay5lbWl0KGhvdGVsTmFtZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5IHZlcnRpY2FsLWluZm9fX2J0bi1mdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uQm9vay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+e3sgYnV0dG9uQm9vay5sYWJlbCB9fTwvYVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoYnV0dG9uQm9vay5saW5rVHlwZSAhPSAnY29tcG9uZW50X2xpbmsnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJidXR0b25Cb29rLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fX3ByaW1hcnkgdmVydGljYWwtaW5mb19fYnRuLWZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidXR0b25Cb29rLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID57eyBidXR0b25Cb29rLmxhYmVsIH19PC9hXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19