ctt-puro 0.17.7 → 0.17.8

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 { PuroSliderDirective } from '../../directives';
4
4
  import * as i0 from "@angular/core";
5
5
  export class PuroAdvantagesSmallComponent {
6
6
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroAdvantagesSmallComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroAdvantagesSmallComponent, isStandalone: true, selector: "lib-puro-advantages-small", inputs: { items: "items" }, ngImport: i0, template: "<section\r\n class=\"advantages js-active-slider\"\r\n \u00E7\r\n [puroSlider]=\"items\"\r\n data-slides_infinite=\"true\"\r\n data-slider_name=\"js-advantages-slider\"\r\n data-slider_showbtns=\"true\"\r\n data-slider_showdots=\"false\"\r\n data-slider_fade=\"false\"\r\n data-slider_autoplay=\"false\"\r\n data-slides_pc=\"1\"\r\n>\r\n <div class=\"advantages__inner relative\">\r\n <div class=\"advantages__container\">\r\n <div class=\"js-advantages-slider advantages__slider\">\r\n @for (item of items || []; track $index) {\r\n <div>\r\n @if (item) {\r\n <div class=\"advantages__item\">\r\n @if (item.title) {\r\n <div class=\"advantages__heading\">\r\n {{ item.title }}\r\n </div>\r\n }\r\n @if (item.icon) {\r\n <div class=\"advantages__icon\">\r\n <i class=\"{{ item.icon }}\"></i>\r\n </div>\r\n }\r\n @if (item.description) {\r\n <span class=\"advantages__text\">{{\r\n item.description\r\n }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"js-slider-arrows\"></div>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: [".advantages_icon i{width:47px;height:47px;background-color:var(--grey)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: PuroSliderDirective, selector: "[puroSlider]", inputs: ["puroSlider"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroAdvantagesSmallComponent, isStandalone: true, selector: "lib-puro-advantages-small", inputs: { items: "items" }, ngImport: i0, template: "<section\r\n class=\"advantages js-active-slider\"\r\n \u00E7\r\n [puroSlider]=\"items\"\r\n data-slides_infinite=\"true\"\r\n data-slider_name=\"js-advantages-slider\"\r\n data-slider_showbtns=\"true\"\r\n data-slider_showdots=\"false\"\r\n data-slider_fade=\"false\"\r\n data-slider_autoplay=\"false\"\r\n data-slides_pc=\"1\"\r\n>\r\n <div class=\"advantages__inner relative\">\r\n <div class=\"advantages__container\">\r\n <div class=\"js-advantages-slider advantages__slider\">\r\n @for (item of items || []; track $index) {\r\n <div>\r\n @if (item) {\r\n <div class=\"advantages__item\">\r\n @if (item.title) {\r\n <div class=\"advantages__heading\">\r\n {{ item.title }}\r\n </div>\r\n }\r\n @if (item.icon) {\r\n <div class=\"advantages__icon\">\r\n <i class=\"{{ item.icon }}\"></i>\r\n </div>\r\n }\r\n @if (item.description) {\r\n <span class=\"advantages__text\">{{\r\n item.description\r\n }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"js-slider-arrows\"></div>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: [".advantages__icon i{width:47px;height:47px;background-color:var(--grey)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: PuroSliderDirective, selector: "[puroSlider]", inputs: ["puroSlider"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8
8
  }
9
9
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroAdvantagesSmallComponent, decorators: [{
10
10
  type: Component,
11
- args: [{ selector: 'lib-puro-advantages-small', standalone: true, imports: [CommonModule, PuroSliderDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section\r\n class=\"advantages js-active-slider\"\r\n \u00E7\r\n [puroSlider]=\"items\"\r\n data-slides_infinite=\"true\"\r\n data-slider_name=\"js-advantages-slider\"\r\n data-slider_showbtns=\"true\"\r\n data-slider_showdots=\"false\"\r\n data-slider_fade=\"false\"\r\n data-slider_autoplay=\"false\"\r\n data-slides_pc=\"1\"\r\n>\r\n <div class=\"advantages__inner relative\">\r\n <div class=\"advantages__container\">\r\n <div class=\"js-advantages-slider advantages__slider\">\r\n @for (item of items || []; track $index) {\r\n <div>\r\n @if (item) {\r\n <div class=\"advantages__item\">\r\n @if (item.title) {\r\n <div class=\"advantages__heading\">\r\n {{ item.title }}\r\n </div>\r\n }\r\n @if (item.icon) {\r\n <div class=\"advantages__icon\">\r\n <i class=\"{{ item.icon }}\"></i>\r\n </div>\r\n }\r\n @if (item.description) {\r\n <span class=\"advantages__text\">{{\r\n item.description\r\n }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"js-slider-arrows\"></div>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: [".advantages_icon i{width:47px;height:47px;background-color:var(--grey)}\n"] }]
11
+ args: [{ selector: 'lib-puro-advantages-small', standalone: true, imports: [CommonModule, PuroSliderDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section\r\n class=\"advantages js-active-slider\"\r\n \u00E7\r\n [puroSlider]=\"items\"\r\n data-slides_infinite=\"true\"\r\n data-slider_name=\"js-advantages-slider\"\r\n data-slider_showbtns=\"true\"\r\n data-slider_showdots=\"false\"\r\n data-slider_fade=\"false\"\r\n data-slider_autoplay=\"false\"\r\n data-slides_pc=\"1\"\r\n>\r\n <div class=\"advantages__inner relative\">\r\n <div class=\"advantages__container\">\r\n <div class=\"js-advantages-slider advantages__slider\">\r\n @for (item of items || []; track $index) {\r\n <div>\r\n @if (item) {\r\n <div class=\"advantages__item\">\r\n @if (item.title) {\r\n <div class=\"advantages__heading\">\r\n {{ item.title }}\r\n </div>\r\n }\r\n @if (item.icon) {\r\n <div class=\"advantages__icon\">\r\n <i class=\"{{ item.icon }}\"></i>\r\n </div>\r\n }\r\n @if (item.description) {\r\n <span class=\"advantages__text\">{{\r\n item.description\r\n }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"js-slider-arrows\"></div>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: [".advantages__icon i{width:47px;height:47px;background-color:var(--grey)}\n"] }]
12
12
  }], propDecorators: { items: [{
13
13
  type: Input
14
14
  }] } });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1hZHZhbnRhZ2VzLXNtYWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3B1cm8vc3JjL2xpYi9jb21wb25lbnRzL3B1cm8tYWR2YW50YWdlcy1zbWFsbC9wdXJvLWFkdmFudGFnZXMtc21hbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1hZHZhbnRhZ2VzLXNtYWxsL3B1cm8tYWR2YW50YWdlcy1zbWFsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBVXZELE1BQU0sT0FBTyw0QkFBNEI7K0dBQTVCLDRCQUE0QjttR0FBNUIsNEJBQTRCLGlIQ1p6QyxveERBMkNBLGtJRHBDYyxZQUFZLCtCQUFFLG1CQUFtQjs7NEZBS2xDLDRCQUE0QjtrQkFSeEMsU0FBUzsrQkFDSSwyQkFBMkIsY0FDekIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDLG1CQUczQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQdXJvU2xpZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLXB1cm8tYWR2YW50YWdlcy1zbWFsbCcsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUHVyb1NsaWRlckRpcmVjdGl2ZV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHVyby1hZHZhbnRhZ2VzLXNtYWxsLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsOiAnLi9wdXJvLWFkdmFudGFnZXMtc21hbGwuY29tcG9uZW50LnNjc3MnLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQdXJvQWR2YW50YWdlc1NtYWxsQ29tcG9uZW50IHtcclxuICAgIEBJbnB1dCgpIGl0ZW1zPzogUHVyb0FkdmFudGFnZXNTbWFsbEl0ZW1bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQdXJvQWR2YW50YWdlc1NtYWxsSXRlbSB7XHJcbiAgICB0aXRsZT86IHN0cmluZztcclxuICAgIGljb24/OiBzdHJpbmc7XHJcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcclxufVxyXG4iLCI8c2VjdGlvblxyXG4gICAgY2xhc3M9XCJhZHZhbnRhZ2VzIGpzLWFjdGl2ZS1zbGlkZXJcIlxyXG4gICAgw6dcclxuICAgIFtwdXJvU2xpZGVyXT1cIml0ZW1zXCJcclxuICAgIGRhdGEtc2xpZGVzX2luZmluaXRlPVwidHJ1ZVwiXHJcbiAgICBkYXRhLXNsaWRlcl9uYW1lPVwianMtYWR2YW50YWdlcy1zbGlkZXJcIlxyXG4gICAgZGF0YS1zbGlkZXJfc2hvd2J0bnM9XCJ0cnVlXCJcclxuICAgIGRhdGEtc2xpZGVyX3Nob3dkb3RzPVwiZmFsc2VcIlxyXG4gICAgZGF0YS1zbGlkZXJfZmFkZT1cImZhbHNlXCJcclxuICAgIGRhdGEtc2xpZGVyX2F1dG9wbGF5PVwiZmFsc2VcIlxyXG4gICAgZGF0YS1zbGlkZXNfcGM9XCIxXCJcclxuPlxyXG4gICAgPGRpdiBjbGFzcz1cImFkdmFudGFnZXNfX2lubmVyIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFkdmFudGFnZXNfX2NvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwianMtYWR2YW50YWdlcy1zbGlkZXIgYWR2YW50YWdlc19fc2xpZGVyXCI+XHJcbiAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGl0ZW1zIHx8IFtdOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZHZhbnRhZ2VzX19pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLnRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZHZhbnRhZ2VzX19oZWFkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnRpdGxlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaWNvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWR2YW50YWdlc19faWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7eyBpdGVtLmljb24gfX1cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uZGVzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZHZhbnRhZ2VzX190ZXh0XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZGVzY3JpcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJqcy1zbGlkZXItYXJyb3dzXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG4iXX0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1hZHZhbnRhZ2VzLXNtYWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3B1cm8vc3JjL2xpYi9jb21wb25lbnRzL3B1cm8tYWR2YW50YWdlcy1zbWFsbC9wdXJvLWFkdmFudGFnZXMtc21hbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1hZHZhbnRhZ2VzLXNtYWxsL3B1cm8tYWR2YW50YWdlcy1zbWFsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBVXZELE1BQU0sT0FBTyw0QkFBNEI7K0dBQTVCLDRCQUE0QjttR0FBNUIsNEJBQTRCLGlIQ1p6QyxveERBMkNBLG1JRHBDYyxZQUFZLCtCQUFFLG1CQUFtQjs7NEZBS2xDLDRCQUE0QjtrQkFSeEMsU0FBUzsrQkFDSSwyQkFBMkIsY0FDekIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDLG1CQUczQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQdXJvU2xpZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLXB1cm8tYWR2YW50YWdlcy1zbWFsbCcsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUHVyb1NsaWRlckRpcmVjdGl2ZV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHVyby1hZHZhbnRhZ2VzLXNtYWxsLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsOiAnLi9wdXJvLWFkdmFudGFnZXMtc21hbGwuY29tcG9uZW50LnNjc3MnLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQdXJvQWR2YW50YWdlc1NtYWxsQ29tcG9uZW50IHtcclxuICAgIEBJbnB1dCgpIGl0ZW1zPzogUHVyb0FkdmFudGFnZXNTbWFsbEl0ZW1bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQdXJvQWR2YW50YWdlc1NtYWxsSXRlbSB7XHJcbiAgICB0aXRsZT86IHN0cmluZztcclxuICAgIGljb24/OiBzdHJpbmc7XHJcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcclxufVxyXG4iLCI8c2VjdGlvblxyXG4gICAgY2xhc3M9XCJhZHZhbnRhZ2VzIGpzLWFjdGl2ZS1zbGlkZXJcIlxyXG4gICAgw6dcclxuICAgIFtwdXJvU2xpZGVyXT1cIml0ZW1zXCJcclxuICAgIGRhdGEtc2xpZGVzX2luZmluaXRlPVwidHJ1ZVwiXHJcbiAgICBkYXRhLXNsaWRlcl9uYW1lPVwianMtYWR2YW50YWdlcy1zbGlkZXJcIlxyXG4gICAgZGF0YS1zbGlkZXJfc2hvd2J0bnM9XCJ0cnVlXCJcclxuICAgIGRhdGEtc2xpZGVyX3Nob3dkb3RzPVwiZmFsc2VcIlxyXG4gICAgZGF0YS1zbGlkZXJfZmFkZT1cImZhbHNlXCJcclxuICAgIGRhdGEtc2xpZGVyX2F1dG9wbGF5PVwiZmFsc2VcIlxyXG4gICAgZGF0YS1zbGlkZXNfcGM9XCIxXCJcclxuPlxyXG4gICAgPGRpdiBjbGFzcz1cImFkdmFudGFnZXNfX2lubmVyIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFkdmFudGFnZXNfX2NvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwianMtYWR2YW50YWdlcy1zbGlkZXIgYWR2YW50YWdlc19fc2xpZGVyXCI+XHJcbiAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGl0ZW1zIHx8IFtdOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZHZhbnRhZ2VzX19pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLnRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZHZhbnRhZ2VzX19oZWFkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnRpdGxlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaWNvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWR2YW50YWdlc19faWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7eyBpdGVtLmljb24gfX1cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uZGVzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZHZhbnRhZ2VzX190ZXh0XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZGVzY3JpcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJqcy1zbGlkZXItYXJyb3dzXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG4iXX0=
@@ -793,8 +793,11 @@ export class MapperService {
793
793
  };
794
794
  }
795
795
  mapInfoSlider(props, reverse) {
796
+ if (!props)
797
+ return undefined;
798
+ const { multimedia } = props;
796
799
  return {
797
- items: props?.multimedia?.images?.map((img) => ({
800
+ items: (multimedia?.images || multimedia?.multimedia)?.map((img) => ({
798
801
  img: this.getImageResponsive(img),
799
802
  title: img.title,
800
803
  subtitle: img.subtitle,
@@ -882,4 +885,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
882
885
  providedIn: 'root',
883
886
  }]
884
887
  }] });
885
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBeUU1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBS25FLE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBSXFCLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBSzFELGtCQUFhLEdBQUcsTUFBTSxDQUFxQyxTQUFTLENBQUMsQ0FBQztRQUV0RSxXQUFNLEdBQW1CLFFBQVEsQ0FDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQzlDLENBQUM7S0F5b0NMO0lBanBDRyxJQUFJLHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBUUQsa0JBQWtCLENBQ2QsS0FBZ0M7UUFFaEMsSUFBSSxhQUFhLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQ3BDLGFBQWEsR0FBRyxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxD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Q0FBQyxLQUFzQjtRQUM5QixPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDaEQsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ3RELEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUMzQyxDQUFDLENBQUM7U0FDVyxDQUFDO0lBQ3ZCLENBQUM7K0dBbnBDUSxhQUFhO21IQUFiLGFBQWEsY0FGVixNQUFNOzs0RkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBpbmplY3QsIEluamVjdGFibGUsIFNpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgUHVybzQwNEksXHJcbiAgICBQdXJvQWR2YW50YWdlc0ksXHJcbiAgICBQdXJvQWR2YW50YWdlc0l0ZW0sXHJcbiAgICBQdXJvQWR2YW50YWdlc1NtYWxsSSxcclxuICAgIFB1cm9BZHZhbnRhZ2VzU21hbGxJdGVtLFxyXG4gICAgUHVyb0Jhbm5lcjRDb2xJLFxyXG4gICAgUHVyb0JyZWFkY3J1bWJJLFxyXG4gICAgUHVyb0NvbnRhY3RGb3JtSSxcclxuICAgIFB1cm9FbmdpbmVJLFxyXG4gICAgUHVyb0Zvb3RlckJlYWNoc0ksXHJcbiAgICBQdXJvRm9vdGVyQmVhY2hzSXRlbSxcclxuICAgIFB1cm9Gb290ZXJIb3RlbHNJLFxyXG4gICAgUHVyb0Zvb3RlckhvdGVsc0l0ZW0sXHJcbiAgICBQdXJvRm9vdGVySW5mb0ksXHJcbiAgICBQdXJvRm9vdGVySW5mb1NvY2lhbE1lZGlhSW5mbyxcclxuICAgIFB1cm9Gb290ZXJMaW5rc0ksXHJcbiAgICBQdXJvR2FsbGVyeUksXHJcbiAgICBQdXJvR2FsbGVyeUl0ZW0sXHJcbiAgICBQdXJvR3JpZDNDb2xGaWx0ZXJJLFxyXG4gICAgUHVyb0dyaWQzQ29sRmlsdGVySXRlbSxcclxuICAgIFB1cm9HcmlkM2NvbFNsaWRlckksXHJcbiAgICBQdXJvR3JpZDNjb2xTbGlkZXJJdGVtLFxyXG4gICAgUHVyb0dyaWQ0aXRlbXNJLFxyXG4gICAgUHVyb0dyaWQ0aXRlbXNJdGVtLFxyXG4gICAgUHVyb0dyaWQ1aXRlbXNJLFxyXG4gICAgUHVyb0dyaWQ1aXRlbXNJdGVtLFxyXG4gICAgUHVyb0dyaWQ2aXRlbXNJLFxyXG4gICAgUHVyb0hlYWRlckksXHJcbiAgICBQdXJvSW5mb0Jhbm5lckksXHJcbiAgICBQdXJvSW5mb0Jhbm5lckl0ZW0sXHJcbiAgICBQdXJvSW5mb0JpZ0ksXHJcbiAgICBQdXJvSW5mb0dhbGxlcnlJLFxyXG4gICAgUHVyb0luZm9JbnRyb0ksXHJcbiAgICBQdXJvSW5mb0xpc3RJLFxyXG4gICAgUHVyb0luZm9TZXJ2aWNlc0ksXHJcbiAgICBQdXJvSW5mb1NlcnZpY2VzSXRlbSxcclxuICAgIFB1cm9JbmZvU2xpZGVySSxcclxuICAgIFB1cm9JbmZvU2xpZGVySXRlbSxcclxuICAgIFB1cm9JbmZvVmlkZW9JLFxyXG4gICAgUHVyb0xhbmd1YWdlc01vZGFsSSxcclxuICAgIFB1cm9MYW5ndWFnZXNNb2RhbEl0ZW0sXHJcbiAgICBQdXJvTGlzdEdlbmVyYWxJLFxyXG4gICAgUHVyb0xpc3RHZW5lcmFsSXRlbSxcclxuICAgIFB1cm9NYXBMaXN0SSxcclxuICAgIFB1cm9NYXBMaXN0SXRlbSxcclxuICAgIFB1cm9PZmZlcixcclxuICAgIFB1cm9PZmZlckJhbm5lckksXHJcbiAgICBQdXJvUGhvdG9TbGlkZXJJLFxyXG4gICAgUHVyb1NjaGVkdWxlSSxcclxuICAgIFB1cm9TY2hlZHVsZUl0ZW0sXHJcbiAgICBQdXJvU2xpZGVyMWNvbEksXHJcbiAgICBQdXJvU2xpZGVyMWNvbEl0ZW0sXHJcbiAgICBQdXJvU2xpZGVyMmNvbEksXHJcbiAgICBQdXJvU2xpZGVyM2NvbEksXHJcbiAgICBQdXJvU2xpZGVyM0NvbEl0ZW0sXHJcbiAgICBQdXJvU2xpZGVyM0NvbFJvdW5kSSxcclxuICAgIFB1cm9TbGlkZXIzQ29sUm91bmRJdGVtLFxyXG4gICAgUHVyb1RoYW5rc0ksXHJcbiAgICBQdXJvVG9wU2xpZGVySSxcclxuICAgIFB1cm9XZWJtYXBJLFxyXG4gICAgUHVyb1ppZ1phZzJjb2xJLFxyXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBQdXJvSW5mbzJDb2xJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9wdXJvLWluZm8yY29sL3B1cm8taW5mbzJjb2wuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtcclxuICAgIEJvZHlDb21wb25lbnQsXHJcbiAgICBQdXJvQnV0dG9uSSxcclxuICAgIFB1cm9JbWFnZUksXHJcbiAgICBQdXJvSW5wdXRJLFxyXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBEcm9wZG93bk9wdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcHVyby1kcm9wZG93bi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcclxuaW1wb3J0IHsgU2NyZWVuU2l6ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2NyZWVuLXNpemVyJztcclxuaW1wb3J0IHsgU0lURV9DT05GSUdfU0VSVklDRV9UT0tFTiB9IGZyb20gJy4vbWFwcGVyLnNlcnZpY2UudG9rZW4nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFwcGVyU2VydmljZSB7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNpdGVTdmMgPSBpbmplY3QoU0lURV9DT05GSUdfU0VSVklDRV9UT0tFTik7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcmVlblNpemVyID0gaW5qZWN0KFNjcmVlblNpemVyU2VydmljZSk7XHJcbiAgICBnZXQgaXNNaW5GdWxsVGFibGV0SW5zdGFudCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zY3JlZW5TaXplci5taW5GdWxsVGFibGV0SW5zdGFudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGhlYWRlckJ1dHRvbnMgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHJcbiAgICBzaXRlSWQ6IFNpZ25hbDxudW1iZXI+ID0gY29tcHV0ZWQoXHJcbiAgICAgICAgKCkgPT4gdGhpcy5zaXRlU3ZjLndlYkNvbmZpZ0luc3RhbnQ/LnNpdGVJRFxyXG4gICAgKTtcclxuXHJcbiAgICBnZXRJbWFnZVJlc3BvbnNpdmUoXHJcbiAgICAgICAgaW1hZ2U6IEltYWdlUmVzcG9uc2UgfCB1bmRlZmluZWRcclxuICAgICk6IFB1cm9JbWFnZUkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGxldCBzZWxlY3RlZEltYWdlO1xyXG4gICAgICAgIGlmICh0aGlzLnNjcmVlblNpemVyLmlzTW9iaWxlSW5zdGFudCgpKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzM3NV0/LndlYnA7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzU21hbGxUYWJsZXRJbnN0YW50KCkpIHtcclxuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bNTQwXT8ud2VicDtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNNZWRpdW1UYWJsZXRJbnN0YW50KCkpIHtcclxuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bNzY4XT8ud2VicDtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNGdWxsVGFibGV0SW5zdGFudCgpKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzEwMjRdPy53ZWJwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5taW5GdWxsRGVza3RvcCgpKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8ucGF0aD8ud2VicDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlsxMjgwXT8ud2VicDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgc3JjOiBgJHt0aGlzLnNpdGVTdmMuY2RuSW1hZ2VzSW5zdGFudH0ke3NlbGVjdGVkSW1hZ2V9YCxcclxuICAgICAgICAgICAgYWx0OiBpbWFnZT8uYWx0LFxyXG4gICAgICAgIH0gYXMgUHVyb0ltYWdlSTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcclxuICAgICAgICBpbWFnZXM6IEltYWdlUmVzcG9uc2VbXSB8IHVuZGVmaW5lZFxyXG4gICAgKTogUHVyb0ltYWdlSVtdIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gaW1hZ2VzPy5tYXAoKGltZykgPT4gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSEpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVBZ2VzT3B0aW9ucyhtYXhMZW5ndGg6IG51bWJlciwgbWluTGVuZ3RoID0gMCk6IGFueVtdIHtcclxuICAgICAgICBjb25zdCBvcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBtaW5MZW5ndGg7IGkgPD0gbWF4TGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgb3B0aW9ucy5wdXNoKHsgY29kZTogaSwgbmFtZTogaSA8IDEwID8gYDAke2l9YCA6IGAke2l9YCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwQ29tcG9uZW50czxUPihcclxuICAgICAgICBib2R5OiBhbnlbXSxcclxuICAgICAgICBhZGRvbnM/OiBDb21wb25lbnRzQWRkb25zXHJcbiAgICApOiBCb2R5Q29tcG9uZW50PFQ+W10ge1xyXG4gICAgICAgIGNvbnN0IGJvZHlNYXBwZWQ6IEJvZHlDb21wb25lbnQ8VD5bXSA9IGJvZHkubWFwKChjb21wb25lbnQpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+ID0ge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCksXHJcbiAgICAgICAgICAgICAgICBvcmRlcjogY29tcG9uZW50Lm9yZGVyLFxyXG4gICAgICAgICAgICAgICAgcHJvcHM6IGNvbXBvbmVudC5wcm9wcyxcclxuICAgICAgICAgICAgfSBhcyBCb2R5Q29tcG9uZW50PFQ+O1xyXG5cclxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dhbGxlcnknOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHYWxsZXJ5KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQzY29sZmlsdGVyJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDNjb2xGaWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2JpZyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9CaWcoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMWNvbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlcjFjb2woXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyYmVhY2hzJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVyQmVhY2hzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmluZm8nOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJJbmZvKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmhvdGVscyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckhvdGVscyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJsaW5rcyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckxpbmtzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3dlYm1hcCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFdlYm1hcChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUb3BTbGlkZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyQnV0dG9ucygpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWR2YW50YWdlc3NtYWxsJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQWR2YW50YWdlc1NtYWxsKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9saXN0JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0xpc3QoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyM2NvbHJvdW5kJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM0NvbFJvdW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbnRybyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9JbnRybyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzY29sJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM2NvbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIyY29sJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyMmNvbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNWl0ZW1zJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDVpdGVtcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNml0ZW1zJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDZpdGVtcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvdmlkZW9yaWdodCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm92aWRlb2xlZnQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvVmlkZW8oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5uYW1lLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXN0b2ZmZXJzJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdG5ld3MnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXN0cm9vbXMnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXN0cmVzdGF1cmFudHMnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0R2VuZXJhbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICc0MDQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXA0MDQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndGhhbmtzJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVGhhbmtzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3Rmb3JtJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ29udGFjdEZvcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29uc3VsdFR5cGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNzbGlkZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlcnNTbGlkZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3NlcnZpY2VzJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb1NlcnZpY2VzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9iYW5uZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvQmFubmVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NjaGVkdWxlJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2NoZWR1bGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWR2YW50YWdlcyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEFkdmFudGFnZXMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3JpZDRpdGVtcyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQ0aXRlbXMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnemlnemFnMmNvbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFppZ3phZzJjb2woXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3JpZDNjb2xzbGlkZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHcmlkM2NvbFNsaWRlcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvc2xpZGVybGVmdCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9zbGlkZXJyaWdodCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9TbGlkZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpID09PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5mb3NsaWRlcmxlZnQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncGhvdG9zbGlkZXJsZWZ0JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncGhvdG9zbGlkZXJyaWdodCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFBob3RvU2xpZGVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bob3Rvc2xpZGVycmlnaHQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyNGNvbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lcjRDb2woXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2dhbGxlcnknOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvR2FsbGVyeShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmNvbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm8yQ29sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21hcGxpc3QnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNYXBMaXN0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xhbmd1YWdlc21vZGFsJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGFuZ3VhZ2VzTW9kYWwoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJiYW5uZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlckJhbm5lcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihjb21wb25lbnRNYXBwZWQubmFtZSwgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRNYXBwZWQ7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBib2R5TWFwcGVkO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEdyaWQzY29sU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDNjb2xTbGlkZXJJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IGhvdGVscyB9ID0gcHJvcHM7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaXRlbXM6IGhvdGVscz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsPy5idXR0b25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBob3RlbC5ob3RlbFRyYW5zbGF0aW9ucz8uWzBdPy5wcmV0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhvdGVsLmhvdGVsVHJhbnNsYXRpb25zPy5bMF0/LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG90ZWwubXVsdGltZWRpYT8uZmluZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PiBpbWcuY292ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR3JpZDNjb2xTbGlkZXJJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfSBhcyBQdXJvR3JpZDNjb2xTbGlkZXJJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEdhbGxlcnkocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HYWxsZXJ5SSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbXVsdGltZWRpYSwgZmlsdGVycyB9ID0gcHJvcHM7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZmlsdGVyOiB7XHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGV4dHM/Lm5hbWVGaWx0ZXIsXHJcbiAgICAgICAgICAgICAgICBvcHRpb246IGZpbHRlcnMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGUsXHJcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcclxuICAgICAgICAgICAgaXRlbXM6IG11bHRpbWVkaWE/LmltYWdlcz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dhbGxlcnlJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfSBhcyBQdXJvR2FsbGVyeUk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwTWFwTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb01hcExpc3RJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBtYXBJbWFnZTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBpdGVtczogbXVsdGltZWRpYT8uaW1hZ2VzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcEltYWdlOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb01hcExpc3RJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfSBhcyBQdXJvTWFwTGlzdEk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwT2ZmZXJCYW5uZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9PZmZlckJhbm5lckkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmIChwcm9wcykge1xyXG4gICAgICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcclxuICAgICAgICAgICAgLy9UT0RPOmJhY2tcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcclxuICAgICAgICAgICAgICAgIGN1cnJlbmN5OiAnJyxcclxuICAgICAgICAgICAgICAgIGZyb206IHRleHRzPy5mcm9tLFxyXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHByaWNlOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICB9IGFzIFB1cm9PZmZlckJhbm5lckk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcExhbmd1YWdlc01vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTGFuZ3VhZ2VzTW9kYWxJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IHRleHRzLCBsYW5ndWFnZXMgfSA9IHByb3BzO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiBsYW5ndWFnZXMgYXMgUHVyb0xhbmd1YWdlc01vZGFsSXRlbVtdLFxyXG4gICAgICAgICAgICBzZWxlY3RlZDogbGFuZ3VhZ2VzLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAoaXRlbTogUHVyb0xhbmd1YWdlc01vZGFsSXRlbSkgPT5cclxuICAgICAgICAgICAgICAgICAgICBpdGVtLmlkID09PSB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmlkXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgfSBhcyBQdXJvTGFuZ3VhZ2VzTW9kYWxJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEhlYWRlcihcclxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxyXG4gICAgICAgIG1lbnU6IGFueSB8IHVuZGVmaW5lZFxyXG4gICAgKTogUHVyb0hlYWRlckkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IHsgbmF2TGlua3MgfSA9IHByb3BzO1xyXG4gICAgICAgIGNvbnN0IHsgdGV4dHMgfSA9IHByb3BzPy5oZWFkZXJCdXR0b25zPy5wcm9wcyA/PyB7fTtcclxuICAgICAgICBjb25zdCB7IGJvdHRvbUxpbmtzIH0gPSBtZW51Py5saW5rcyA/PyB7fTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZU1lbnU6IHRleHRzPy5tZW51LFxyXG4gICAgICAgICAgICB0aXRsZUxhbmc6IHRleHRzPy5sYW5ndWFnZSxcclxuICAgICAgICAgICAgYnRuQm9vazogdGV4dHM/LmJvb2tub3csXHJcbiAgICAgICAgICAgIG5hdkxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcclxuICAgICAgICAgICAgICAgIG5hdkxpbmtzXHJcbiAgICAgICAgICAgICAgICAgICAgPy5tYXAoKGxpbms6IGFueSkgPT4gKHsgLi4ubGluaywgbGFiZWw6IGxpbms/Lm5hbWUgfSkpXHJcbiAgICAgICAgICAgICAgICAgICAgPy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gYT8ub3JkZXIgLSBiPy5vcmRlcilcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgYm90dG9tTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYm90dG9tTGlua3MpLFxyXG4gICAgICAgIH0gYXMgUHVyb0hlYWRlckk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSW5mb0JpZyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9CaWdJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXHJcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VzPy5bMF0pLFxyXG4gICAgICAgIH0gYXMgUHVyb0luZm9CaWdJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcFNsaWRlcjFjb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TbGlkZXIxY29sSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgeyBtdWx0aW1lZGlhLCBidXR0b25zLCB0ZXh0cyB9ID0gcHJvcHM7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBpdGVtczogbXVsdGltZWRpYT8uaW1hZ2VzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NsaWRlcjFjb2xJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyMWNvbEk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwQWR2YW50YWdlcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0FkdmFudGFnZXNJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IEFkdmFudGFnZXMgfSA9IHByb3BzO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiBBZHZhbnRhZ2VzLm1hcChcclxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogaXRlbS5pY29uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvQWR2YW50YWdlc0l0ZW1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICB9IGFzIFB1cm9BZHZhbnRhZ2VzSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBaaWd6YWcyY29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvWmlnWmFnMmNvbEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmIChwcm9wcykge1xyXG4gICAgICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICBuZFRpdGxlOiB0ZXh0cz8ubmRUaXRsZSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5bMF0pLFxyXG4gICAgICAgICAgICB9IGFzIFB1cm9aaWdaYWcyY29sSTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwR3JpZDRpdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQ0aXRlbXNJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAoIXByb3BzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGl0ZW1zOiAoQXJyYXkuaXNBcnJheShtdWx0aW1lZGlhKVxyXG4gICAgICAgICAgICAgICAgPyBtdWx0aW1lZGlhXHJcbiAgICAgICAgICAgICAgICA6IG11bHRpbWVkaWEubXVsdGltZWRpYVxyXG4gICAgICAgICAgICApPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGltZz8ubGlua3MpWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nPy5zdWJ0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9HcmlkNGl0ZW1zSXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXHJcbiAgICAgICAgfSBhcyBQdXJvR3JpZDRpdGVtc0k7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSW5mb1ZpZGVvKFxyXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXHJcbiAgICAgICAgbmFtZTogJ2luZm92aWRlb3JpZ2h0JyB8ICdpbmZvdmlkZW9sZWZ0J1xyXG4gICAgKTogUHVyb0luZm9WaWRlb0kgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXHJcbiAgICAgICAgICAgIHJldmVyc2U6IG5hbWUuaW5jbHVkZXMoJ3JpZ2h0JyksXHJcbiAgICAgICAgICAgIHZpZGVvOiB7XHJcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHByb3BzLnZpZGVvPy5zcmMsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcy52aWRlbz8udHlwZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9IGFzIFB1cm9JbmZvVmlkZW9JO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEJyZWFkY3J1bWJzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQnJlYWRjcnVtYkkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGxpbmtzOiAocHJvcHM/Lml0ZW1zIGFzIGFueVtdKVxyXG4gICAgICAgICAgICAgICAgPy5zb3J0KChhLCBiKSA9PiBhIC0gYilcclxuICAgICAgICAgICAgICAgID8ubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0/LmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0/LnVybFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5jaGFyQXQoaXRlbT8udXJsPy5sZW5ndGggLSAxKSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0/LnVybD8uc2xpY2UoMCwgLTEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbT8udXJsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9CdXR0b25JXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb0JyZWFkY3J1bWJJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEZvb3RlckluZm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJJbmZvSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSBwcm9wcz8uYWRkcmVzc1swXTtcclxuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbGlua3MsIHNvY2lhbE1lZGlhLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGFkZHJlc3NJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZUFkZHJlc3MsXHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogYCR7YWRkcmVzcz8uYWRkcmVzcyA/PyAnJ30sICR7YWRkcmVzcz8uY2l0eSA/PyAnJ30sICR7YWRkcmVzcz8uY3AgPz8gJyd9ICR7YWRkcmVzcy5wcm92aW5jZSA/PyAnJ31gLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcclxuICAgICAgICAgICAgICAgIGNvbnRhY3RJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzPy5jb250YWN0TGlua3M/LlswXVxyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlQ29udGFjdCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5sb2dvPy5bMF0pLFxyXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZT8uWzBdKSxcclxuICAgICAgICAgICAgICAgIG5ld3NsZXR0ZXJJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZU5ld3NsZXR0ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucz8uWzFdXHJcbiAgICAgICAgICAgICAgICAgICAgKVswXSxcclxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zTGluazogdGV4dHM/Lm5ld3NsZXR0ZXJDb25kaXRpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgIGlucHV0UGxhY2Vob2xkZXI6IHRleHRzPy5uZXdzbGV0dGVyUGxhY2Vob2xkZXIsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc29jaWFsTWVkaWE6IHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlU29jaWFsTWVkaWEsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IHNvY2lhbE1lZGlhPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8ubmFtZT8udG9Mb3dlckNhc2UoKX1gLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pKSxcclxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb0Zvb3RlckluZm9Tb2NpYWxNZWRpYUluZm8sXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICB9IGFzIFB1cm9Gb290ZXJJbmZvSTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwU2xpZGVyM2NvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjNjb2xJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXM/Lm1hcChcclxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LmJ1dHRvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgKVswXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGltZz8ubGlua3MpWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TbGlkZXIzQ29sSXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxyXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNjb2xJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcFNsaWRlcjJjb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TbGlkZXIyY29sSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ucm9vbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLm11bHRpbWVkaWE/LlswXSksXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50ZXh0cz8ubmFtZSxcclxuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnRleHRzPy5kZXNjcml0aW9uLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5idXR0b25zKSxcclxuICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjJjb2xJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEdyaWQ1aXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HcmlkNWl0ZW1zSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgY29tYmluZWRJbWFnZXM6IEltYWdlUmVzcG9uc2VbXSA9IFtdO1xyXG4gICAgICAgIGxldCBpID0gMDtcclxuICAgICAgICBsZXQgaiA9IDA7XHJcblxyXG4gICAgICAgIHdoaWxlIChcclxuICAgICAgICAgICAgaSA8IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXM/Lmxlbmd0aCB8fFxyXG4gICAgICAgICAgICBqIDwgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlc21hbGw/Lmxlbmd0aFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcz8uW2ldKSB7XHJcbiAgICAgICAgICAgICAgICBjb21iaW5lZEltYWdlcy5wdXNoKHByb3BzLm11bHRpbWVkaWEuaW1hZ2VzW2ldKTtcclxuICAgICAgICAgICAgICAgIGkrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlc21hbGw/LltqXSkge1xyXG4gICAgICAgICAgICAgICAgY29tYmluZWRJbWFnZXMucHVzaChwcm9wcy5tdWx0aW1lZGlhLmltYWdlc21hbGxbal0pO1xyXG4gICAgICAgICAgICAgICAgaisrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgaXRlbXM6IGNvbWJpbmVkSW1hZ2VzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGltZy5zdWJ0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR3JpZDVpdGVtc0l0ZW1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcclxuICAgICAgICB9IGFzIFB1cm9HcmlkNWl0ZW1zSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBHcmlkNml0ZW1zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDZpdGVtc0kgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBpdGVtczogW10sXHJcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXHJcbiAgICAgICAgfSBhcyBQdXJvR3JpZDZpdGVtc0k7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwQWR2YW50YWdlc1NtYWxsKFxyXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcclxuICAgICk6IFB1cm9BZHZhbnRhZ2VzU21hbGxJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAoIXByb3BzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcy5zZXJ2aWNlc0FkdmFudGFnZXM/Lm1hcChcclxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIGl0ZW0uY2xhc3MsXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0FkdmFudGFnZXNTbWFsbEl0ZW1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICB9IGFzIFB1cm9BZHZhbnRhZ2VzU21hbGxJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEdyaWQzY29sRmlsdGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDNDb2xGaWx0ZXJJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCBkZXN0aW5hdGlvbnMgPSBBcnJheShwcm9wcz8uZGVzdGluYXRpb25zKT8uZmxhdCgyKTtcclxuICAgICAgICBjb25zdCBob3RlbHMgPSBkZXN0aW5hdGlvbnNcclxuICAgICAgICAgICAgPy5yZWR1Y2UoKGFjYzogYW55W10sIGRlc3RpbmF0aW9uOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhY2MuY29uY2F0KGRlc3RpbmF0aW9uLmhvdGVscyk7XHJcbiAgICAgICAgICAgIH0sIFtdKVxyXG4gICAgICAgICAgICA/Lm1hcChcclxuICAgICAgICAgICAgICAgIChob3RlbDogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBob3RlbD8uaG90ZWxUcmFuc2xhdGlvbnM/LlswXT8ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmRUaXRsZTogJycsIC8vVE9ETzogcGVuZGllbnRlIGRlIHNhYmVyIHF1ZSBjYW1wbyBlcyBlbiBiYWNrLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGhvdGVsPy5waXZvdD8uZGVzdGluYXRpb25JZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaG90ZWw/LmxpbmtzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR3JpZDNDb2xGaWx0ZXJJdGVtXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICBpdGVtczogaG90ZWxzIHx8IFtdLFxyXG4gICAgICAgICAgICBmaWx0ZXI6IHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnM6XHJcbiAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25zPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkZXN0OiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGRlc3QuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZGVzdC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cclxuICAgICAgICAgICAgICAgICAgICApIHx8IFtdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKSxcclxuICAgICAgICB9IGFzIFB1cm9HcmlkM0NvbEZpbHRlckk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwRm9vdGVySG90ZWxzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRm9vdGVySG90ZWxzSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5ob3RlbHM/Lm1hcChcclxuICAgICAgICAgICAgICAgIChob3RlbDogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaG90ZWwubGlua3MpWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaG90ZWw/LnRleHRzPy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaG90ZWw/LnRleHRzPy5sb2NhdGlvbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9Gb290ZXJIb3RlbHNJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfSBhcyBQdXJvRm9vdGVySG90ZWxzSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBGb290ZXJMaW5rcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Zvb3RlckxpbmtzSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzLm11bHRpbWVkaWE/LmltYWdlPy5bMF0pLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzLnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgICAgIG1lbWJlclRpdGxlOiBwcm9wcy50ZXh0cz8ubWVtYmVyVGl0bGUsXHJcbiAgICAgICAgICAgICAgICBtZW1iZXJQcmV0aXRsZTogcHJvcHMudGV4dHM/Lm1lbWJlclByZXRpdGxlLFxyXG4gICAgICAgICAgICAgICAgY29weXJpZ2h0OiBwcm9wcy50ZXh0cz8uY29weXJpZ2h0LFxyXG4gICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHMubGlua3MpLFxyXG4gICAgICAgICAgICB9IGFzIFB1cm9Gb290ZXJMaW5rc0k7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEZvb3RlckJlYWNocyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Zvb3RlckJlYWNoc0kgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaG90ZWxzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKCcvcHVyb2JlYWNoJywgaG90ZWwubGlua3MpWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaG90ZWw/LnRleHRzPy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaG90ZWw/LnRleHRzPy5sb2NhdGlvbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9Gb290ZXJCZWFjaHNJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfSBhcyBQdXJvRm9vdGVyQmVhY2hzSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBJbmZvTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9MaXN0SSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgbXVsdGltZWRpYSwgQWR2YW50YWdlcyB9ID0gcHJvcHM7XHJcbiAgICAgICAgY29uc3QgeyBiYWNrZ3JvdW5kaW1hZ2UsIGltYWdlLCBzbWFsbGltYWdlIH0gPSBtdWx0aW1lZGlhO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIGl0ZW1zOiBBcnJheSguLi4oQWR2YW50YWdlcyB8fCBbXSkpPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRpdGxlIGFzIHN0cmluZ1xyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltYWdlPy5bMF0pLFxyXG4gICAgICAgICAgICBzbWFsbEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoc21hbGxpbWFnZT8uWzBdKSxcclxuICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoYmFja2dyb3VuZGltYWdlPy5bMF0pLFxyXG4gICAgICAgIH0gYXMgUHVyb0luZm9MaXN0STtcclxuICAgIH1cclxuXHJcbiAgICBtYXBTbGlkZXIzQ29sUm91bmQoXHJcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxyXG4gICAgKTogUHVyb1NsaWRlcjNDb2xSb3VuZEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIHN1YnRpdGxlOiB0ZXh0cz8uc3VidGl0bGUsXHJcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcclxuICAgICAgICAgICAgaXRlbXM6IG11bHRpbWVkaWE/LmltYWdlcz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8ubGlua3MgfHwgW11cclxuICAgICAgICAgICAgICAgICAgICAgICAgKVswXSxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU2xpZGVyM0NvbFJvdW5kSXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNDb2xSb3VuZEk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSW5mb0ludHJvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0ludHJvSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZSxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICB9IGFzIFB1cm9JbmZvSW50cm9JO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcFRvcFNsaWRlcihcclxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxyXG4gICAgICAgIGFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWRcclxuICAgICk6IFB1cm9Ub3BTbGlkZXJJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxyXG4gICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICBzcG90aWZ5OiAnJyxcclxuICAgICAgICAgICAgZmlkZWxpdHk6IGFjdGlvbnM/LlsnZmlkZWxpdHknXSxcclxuICAgICAgICAgICAgbmV3c2xldHRlcjogYWN0aW9ucz8uWyduZXdzbGV0dGVyJ10sXHJcbiAgICAgICAgICAgIGxhbmd1YWdlczogYWN0aW9ucz8uWydsYW5ndWFnZSddLFxyXG4gICAgICAgICAgICBzZWxlY3RlZExhbmd1YWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlU3ZjLnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5sb2NhdGU/LnRvTG9jYWxlVXBwZXJDYXNlKCksXHJcbiAgICAgICAgICAgIHZpZGVvOiB1bmRlZmluZWQsIC8vVE9ETzogQkFDS1xyXG4gICAgICAgICAgICBtYWluVGl0bGU6IHRleHRzPy5tYWluVGl0bGUsIC8vVE9ETzogQkFDS1xyXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXHJcbiAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPy5pbWFnZXMgfHwgbXVsdGltZWRpYT8ubXVsdGltZWRpYVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb1RvcFNsaWRlckk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSW5mb0Jhbm5lcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9CYW5uZXJJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAocHJvcHMpIHtcclxuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgbXVsdGltZWRpYSB9ID0gcHJvcHM7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgaXRlbXM6IG11bHRpbWVkaWE/LmltYWdlPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy5idXR0b25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0luZm9CYW5uZXJJdGVtXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB9IGFzIFB1cm9JbmZvQmFubmVySTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBtYXBTY2hlZHVsZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NjaGVkdWxlSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIEFkdmFudGFnZXMgfSA9IHByb3BzO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgICAgIGl0ZW1zOiBBcnJheSguLi4oQWR2YW50YWdlcyB8fCBbXSkpPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uaWNvbn1gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TY2hlZHVsZUl0ZW1cclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIH0gYXMgUHVyb1NjaGVkdWxlSTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBtYXBJbmZvU2VydmljZXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvU2VydmljZXNJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IHRleHRzLCBBZHZhbnRhZ2VzLCBtdWx0aW1lZGlhLCBidXR0b25zIH0gPSBwcm9wcztcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXHJcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZXMgfHwgW10pLFxyXG4gICAgICAgICAgICBpdGVtczogQWR2YW50YWdlcz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy50ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0/Lmljb259YCxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb1NlcnZpY2VzSXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb0luZm9TZXJ2aWNlc0k7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwTGlzdEdlbmVyYWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvTGlzdEdlbmVyYWxJdGVtW10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKHByb3BzPy5vZmZlcnMpIHtcclxuICAgICAgICAgICAgaXRlbXMgPSBwcm9wcz8ub2ZmZXJzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAob2ZmZXI6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9mZmVyPy50ZXh0cz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyLm11bHRpbWVkaWEgfHwgW11cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8ubGlua3MpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8uYnV0dG9ucyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RHZW5lcmFsSXRlbVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocHJvcHM/Lm11bHRpbWVkaWEpIHtcclxuICAgICAgICAgICAgaXRlbXMgPSBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubG9nbyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVxdWlwbWVudDogaXRlbT8uQWR2YW50YWdlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBbdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSldLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbT8uYnV0dG9ucyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RHZW5lcmFsSXRlbVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgaXRlbXMsXHJcbiAgICAgICAgfSBhcyBQdXJvTGlzdEdlbmVyYWxJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEVuZ2luZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0VuZ2luZUkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGJ1dHRvbjogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvclN1Ym1pdCwgdXJsOiBwcm9wcz8udXJsIH0sXHJcbiAgICAgICAgICAgIGRhdGVwaWNrZXJJbjoge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JEYXRlVGl0bGU/LnNwbGl0KCctJyk/LlswXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGF0ZXBpY2tlck91dDoge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JEYXRlVGl0bGU/LnNwbGl0KCctJyk/LlsxXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZ3Vlc3RzSW5wdXQ6IHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yR3Vlc3RzSW5wdXRIb2xkZXIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHByb21vSW5wdXQ6IHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yUHJvbW9Ib2xkZXIsXHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBidG5BcHBseTogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvckFwcGx5IH0sXHJcbiAgICAgICAgICAgIGFkdWx0c0Ryb3Bkb3duOiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckFkdWx0c1RpdGxlLFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKHByb3BzPy5tYXhBZHVsdHMsIDEpLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBraWRzRHJvcGRvd246IHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yS2lkc1RpdGxlLFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKHByb3BzPy5tYXhDaGlsZHJlbiksXHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvclRpdGxlLFxyXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvclN1YnRpdGxlLFxyXG4gICAgICAgICAgICB1cmw6IHByb3BzPy51cmwsXHJcbiAgICAgICAgICAgIGhvdGVsOiBwcm9wcz8uaG90ZWxzPy5bMF0sXHJcbiAgICAgICAgfSBhcyBQdXJvRW5naW5lSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBXZWJtYXAocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9XZWJtYXBJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBsaW5rczogcHJvcHM/LnBhZ2VzXHJcbiAgICAgICAgICAgICAgICAuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBQdXJvQnV0dG9uSSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGluay51cmw/LnNwbGl0KCcvJylbMV0gPT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8ubG9jYXRlXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICA/Lm1hcChcclxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbmsubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogVXRpbHMudXJsVmFsaWRhdGlvbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLnVybCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJuYWwnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0J1dHRvbklcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxyXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF1cclxuICAgICAgICAgICAgKSBhcyBQdXJvSW1hZ2VJLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgbWFwUGhvdG9TbGlkZXIoXHJcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcclxuICAgICAgICByZXZlcnNlOiBib29sZWFuXHJcbiAgICApOiBQdXJvUGhvdG9TbGlkZXJJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcyB8fCBbXSksXHJcbiAgICAgICAgICAgIHJldmVyc2UsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBCYW5uZXI0Q29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQmFubmVyNENvbEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwY2lvbixcclxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcclxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxyXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcyB8fCBbXVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb0Jhbm5lcjRDb2xJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcENvbnRhY3RGb3JtKFxyXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXHJcbiAgICAgICAgbmRQcm9wc0NvbnN1bHQ6IGFueSB8IHVuZGVmaW5lZFxyXG4gICAgKTogUHVyb0NvbnRhY3RGb3JtSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICB0ZXh0YXJlYToge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlUGxhY2VIb2xkZXIsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9ucyxcclxuICAgICAgICAgICAgcHJvbW90aW9uczogcHJvcHM/LnRleHRzPy5wcm9tb3Rpb25zLFxyXG4gICAgICAgICAgICBkcm9wZG93bjoge1xyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZHJvcGRvd24sXHJcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uaG90ZWxzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcC5pZCwgbmFtZTogcHJvcC5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBuZERyb3Bkb3duOiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5kcm9wZG93blRpdGxlLFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uczogbmRQcm9wc0NvbnN1bHQ/Lm1hcChcclxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wLmlkLCBuYW1lOiBwcm9wLm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHByZWZpeDoge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LnByZWZpeGVzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgKHByZWZpeDogc3RyaW5nKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogQXJyYXkocHJvcHM/LnByZWZpeGVzKS5pbmRleE9mKHByZWZpeCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcmVmaXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgaW5wdXRzOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LmlucHV0TmFtZSksXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0U3VybmFtZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LmlucHV0U3VybmFtZXMpLFxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0U3VybmFtZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCksXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dFBob25lKSxcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JScXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF0gYXMgUHVyb0lucHV0SVtdLFxyXG4gICAgICAgIH0gYXMgUHVyb0NvbnRhY3RGb3JtSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBJbmZvU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQsIHJldmVyc2U6IGJvb2xlYW4pOiBhbnkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSBhcyBQdXJvSW1hZ2VJLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nLnN1YnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGltZy5idXR0b25zKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGltZy5wcmV0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb1NsaWRlckl0ZW1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgcmV2ZXJzZSxcclxuICAgICAgICB9IGFzIFB1cm9JbmZvU2xpZGVySTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBPZmZlcnNTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ub2ZmZXJzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAob2ZmZXI6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IG9mZmVyPy50ZXh0cz8uc3VidGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZzogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8ubGlua3MpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8uYnV0dG9ucyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUob2ZmZXIubXVsdGltZWRpYVswXSksXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb09mZmVyXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBUaGFua3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9UaGFua3NJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXHJcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXVxyXG4gICAgICAgICAgICApIGFzIFB1cm9JbWFnZUksXHJcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXHJcbiAgICAgICAgfSBhcyBQdXJvVGhhbmtzSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXA0MDQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm80MDRJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCBhZGRyZXNzID0gcHJvcHM/LmFkZHJlc3M/LlswXTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHMudGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHMudGV4dHM/LnN1YnRpdGxlLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMudGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcclxuICAgICAgICAgICAgYWRkcmVzczoge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogYCR7YWRkcmVzcy5hZGRyZXNzfTwvYnI+JHthZGRyZXNzLmNpdHl9ICwke2FkZHJlc3MuY3B9ICR7YWRkcmVzcy5wcm92aW5jZX1gLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmxpbmtzPy5hZGRyZXNzPy5bMF1cclxuICAgICAgICAgICAgICAgIClbMF0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbnRhY3Q6IHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZSxcclxuICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmxpbmtzPy5Db250YWN0Py5bMF1cclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBidXR0b246IHt9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0gYXMgUHVybzQwNEk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSW5mb0dhbGxlcnkocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBtb3JlaW5mbzogcHJvcHM/LnRleHRzPy5hZGRpdGlvbmFsMSxcclxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxyXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcyB8fCBbXVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKSxcclxuICAgICAgICAgICAgYWR2YW50YWdlczogcHJvcHM/LkFkdmFudGFnZXM/Lm1hcChcclxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0/Lmljb259YCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NjaGVkdWxlSXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb0luZm9HYWxsZXJ5STtcclxuICAgIH1cclxuXHJcbiAgICBtYXBJbmZvMkNvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm8yQ29sSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXHJcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS5zdWJ0aXRsZSxcclxuICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbS5saW5rKSxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbS5idXR0b25zKSxcclxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbS5pbWFnZSksXHJcbiAgICAgICAgICAgIH0pKSxcclxuICAgICAgICB9IGFzIFB1cm9JbmZvMkNvbEk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VSZXNwb25zZSB7XHJcbiAgICBwYXRoOiBJbWFnZVJlc3BvbnNlUGF0aDtcclxuICAgIHRodW1ibmFpbHM6IHtcclxuICAgICAgICAzNzU6IEltYWdlUmVzcG9uc2VQYXRoO1xyXG4gICAgICAgIDU0MDogSW1hZ2VSZXNwb25zZVBhdGg7XHJcbiAgICAgICAgNzY4OiBJbWFnZVJlc3BvbnNlUGF0aDtcclxuICAgICAgICA4MDA6IEltYWdlUmVzcG9uc2VQYXRoO1xyXG4gICAgICAgIDEwMjQ6IEltYWdlUmVzcG9uc2VQYXRoO1xyXG4gICAgICAgIDEyODA6IEltYWdlUmVzcG9uc2VQYXRoO1xyXG4gICAgfTtcclxuICAgIGNvdmVyOiBudW1iZXI7XHJcbiAgICB0YWdzPzogYW55W107XHJcbiAgICB0aXRsZT86IHN0cmluZztcclxuICAgIHByZXRpdGxlPzogc3RyaW5nO1xyXG4gICAgc3VidGl0bGU/OiBzdHJpbmc7XHJcbiAgICBuZFRpdGxlPzogc3RyaW5nO1xyXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgICBsaW5rcz86IGFueVtdO1xyXG4gICAgYnV0dG9ucz86IGFueVtdO1xyXG4gICAgYWx0Pzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlUmVzcG9uc2VQYXRoIHtcclxuICAgIG9yaWdpbmFsOiBzdHJpbmc7XHJcbiAgICB3ZWJwOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50c0FkZG9ucyB7XHJcbiAgICBjb250YWN0T2ZmaWNlPzogYW55O1xyXG4gICAgY29uc3VsdFR5cGU/OiBDb25zdWx0VHlwZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJPcHRpb24ge1xyXG4gICAgaWQ/OiBudW1iZXI7XHJcbiAgICBuYW1lPzogc3RyaW5nO1xyXG4gICAgY2hpbGRyZW4/OiBGaWx0ZXJPcHRpb247XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBDb25zdWx0VHlwZSB7XHJcbiAgICBjb25zdWx0VHlwZUlkPzogbnVtYmVyO1xyXG4gICAgSWQ/OiBudW1iZXI7XHJcbiAgICBsYW5ndWFnZUlkPzogbnVtYmVyO1xyXG4gICAgbmFtZT86IHN0cmluZztcclxufVxyXG4iXX0=
888
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBeUU1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBS25FLE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBSXFCLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBSzFELGtCQUFhLEdBQUcsTUFBTSxDQUFxQyxTQUFTLENBQUMsQ0FBQztRQUV0RSxXQUFNLEdBQW1CLFFBQVEsQ0FDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQzlDLENBQUM7S0Eyb0NMO0lBbnBDRyxJQUFJLHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBUUQsa0JBQWtCLENBQ2QsS0FBZ0M7UUFFaEMsSUFBSSxhQUFhLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQ3BDLGFBQWEsR0FBRyxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxD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SUFBSSxFQUFFLElBQUksRUFBRTtnQkFDMUIsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJO2FBQzFCLENBQXFCLENBQzdCO1NBQ2dCLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFzQjtRQUM5QixPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDaEQsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ3RELEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUMzQyxDQUFDLENBQUM7U0FDVyxDQUFDO0lBQ3ZCLENBQUM7K0dBcnBDUSxhQUFhO21IQUFiLGFBQWEsY0FGVixNQUFNOzs0RkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBpbmplY3QsIEluamVjdGFibGUsIFNpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgUHVybzQwNEksXHJcbiAgICBQdXJvQWR2YW50YWdlc0ksXHJcbiAgICBQdXJvQWR2YW50YWdlc0l0ZW0sXHJcbiAgICBQdXJvQWR2YW50YWdlc1NtYWxsSSxcclxuICAgIFB1cm9BZHZhbnRhZ2VzU21hbGxJdGVtLFxyXG4gICAgUHVyb0Jhbm5lcjRDb2xJLFxyXG4gICAgUHVyb0JyZWFkY3J1bWJJLFxyXG4gICAgUHVyb0NvbnRhY3RGb3JtSSxcclxuICAgIFB1cm9FbmdpbmVJLFxyXG4gICAgUHVyb0Zvb3RlckJlYWNoc0ksXHJcbiAgICBQdXJvRm9vdGVyQmVhY2hzSXRlbSxcclxuICAgIFB1cm9Gb290ZXJIb3RlbHNJLFxyXG4gICAgUHVyb0Zvb3RlckhvdGVsc0l0ZW0sXHJcbiAgICBQdXJvRm9vdGVySW5mb0ksXHJcbiAgICBQdXJvRm9vdGVySW5mb1NvY2lhbE1lZGlhSW5mbyxcclxuICAgIFB1cm9Gb290ZXJMaW5rc0ksXHJcbiAgICBQdXJvR2FsbGVyeUksXHJcbiAgICBQdXJvR2FsbGVyeUl0ZW0sXHJcbiAgICBQdXJvR3JpZDNDb2xGaWx0ZXJJLFxyXG4gICAgUHVyb0dyaWQzQ29sRmlsdGVySXRlbSxcclxuICAgIFB1cm9HcmlkM2NvbFNsaWRlckksXHJcbiAgICBQdXJvR3JpZDNjb2xTbGlkZXJJdGVtLFxyXG4gICAgUHVyb0dyaWQ0aXRlbXNJLFxyXG4gICAgUHVyb0dyaWQ0aXRlbXNJdGVtLFxyXG4gICAgUHVyb0dyaWQ1aXRlbXNJLFxyXG4gICAgUHVyb0dyaWQ1aXRlbXNJdGVtLFxyXG4gICAgUHVyb0dyaWQ2aXRlbXNJLFxyXG4gICAgUHVyb0hlYWRlckksXHJcbiAgICBQdXJvSW5mb0Jhbm5lckksXHJcbiAgICBQdXJvSW5mb0Jhbm5lckl0ZW0sXHJcbiAgICBQdXJvSW5mb0JpZ0ksXHJcbiAgICBQdXJvSW5mb0dhbGxlcnlJLFxyXG4gICAgUHVyb0luZm9JbnRyb0ksXHJcbiAgICBQdXJvSW5mb0xpc3RJLFxyXG4gICAgUHVyb0luZm9TZXJ2aWNlc0ksXHJcbiAgICBQdXJvSW5mb1NlcnZpY2VzSXRlbSxcclxuICAgIFB1cm9JbmZvU2xpZGVySSxcclxuICAgIFB1cm9JbmZvU2xpZGVySXRlbSxcclxuICAgIFB1cm9JbmZvVmlkZW9JLFxyXG4gICAgUHVyb0xhbmd1YWdlc01vZGFsSSxcclxuICAgIFB1cm9MYW5ndWFnZXNNb2RhbEl0ZW0sXHJcbiAgICBQdXJvTGlzdEdlbmVyYWxJLFxyXG4gICAgUHVyb0xpc3RHZW5lcmFsSXRlbSxcclxuICAgIFB1cm9NYXBMaXN0SSxcclxuICAgIFB1cm9NYXBMaXN0SXRlbSxcclxuICAgIFB1cm9PZmZlcixcclxuICAgIFB1cm9PZmZlckJhbm5lckksXHJcbiAgICBQdXJvUGhvdG9TbGlkZXJJLFxyXG4gICAgUHVyb1NjaGVkdWxlSSxcclxuICAgIFB1cm9TY2hlZHVsZUl0ZW0sXHJcbiAgICBQdXJvU2xpZGVyMWNvbEksXHJcbiAgICBQdXJvU2xpZGVyMWNvbEl0ZW0sXHJcbiAgICBQdXJvU2xpZGVyMmNvbEksXHJcbiAgICBQdXJvU2xpZGVyM2NvbEksXHJcbiAgICBQdXJvU2xpZGVyM0NvbEl0ZW0sXHJcbiAgICBQdXJvU2xpZGVyM0NvbFJvdW5kSSxcclxuICAgIFB1cm9TbGlkZXIzQ29sUm91bmRJdGVtLFxyXG4gICAgUHVyb1RoYW5rc0ksXHJcbiAgICBQdXJvVG9wU2xpZGVySSxcclxuICAgIFB1cm9XZWJtYXBJLFxyXG4gICAgUHVyb1ppZ1phZzJjb2xJLFxyXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBQdXJvSW5mbzJDb2xJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9wdXJvLWluZm8yY29sL3B1cm8taW5mbzJjb2wuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtcclxuICAgIEJvZHlDb21wb25lbnQsXHJcbiAgICBQdXJvQnV0dG9uSSxcclxuICAgIFB1cm9JbWFnZUksXHJcbiAgICBQdXJvSW5wdXRJLFxyXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBEcm9wZG93bk9wdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcHVyby1kcm9wZG93bi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcclxuaW1wb3J0IHsgU2NyZWVuU2l6ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2NyZWVuLXNpemVyJztcclxuaW1wb3J0IHsgU0lURV9DT05GSUdfU0VSVklDRV9UT0tFTiB9IGZyb20gJy4vbWFwcGVyLnNlcnZpY2UudG9rZW4nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFwcGVyU2VydmljZSB7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNpdGVTdmMgPSBpbmplY3QoU0lURV9DT05GSUdfU0VSVklDRV9UT0tFTik7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcmVlblNpemVyID0gaW5qZWN0KFNjcmVlblNpemVyU2VydmljZSk7XHJcbiAgICBnZXQgaXNNaW5GdWxsVGFibGV0SW5zdGFudCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zY3JlZW5TaXplci5taW5GdWxsVGFibGV0SW5zdGFudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGhlYWRlckJ1dHRvbnMgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHJcbiAgICBzaXRlSWQ6IFNpZ25hbDxudW1iZXI+ID0gY29tcHV0ZWQoXHJcbiAgICAgICAgKCkgPT4gdGhpcy5zaXRlU3ZjLndlYkNvbmZpZ0luc3RhbnQ/LnNpdGVJRFxyXG4gICAgKTtcclxuXHJcbiAgICBnZXRJbWFnZVJlc3BvbnNpdmUoXHJcbiAgICAgICAgaW1hZ2U6IEltYWdlUmVzcG9uc2UgfCB1bmRlZmluZWRcclxuICAgICk6IFB1cm9JbWFnZUkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGxldCBzZWxlY3RlZEltYWdlO1xyXG4gICAgICAgIGlmICh0aGlzLnNjcmVlblNpemVyLmlzTW9iaWxlSW5zdGFudCgpKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzM3NV0/LndlYnA7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzU21hbGxUYWJsZXRJbnN0YW50KCkpIHtcclxuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bNTQwXT8ud2VicDtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNNZWRpdW1UYWJsZXRJbnN0YW50KCkpIHtcclxuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bNzY4XT8ud2VicDtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNGdWxsVGFibGV0SW5zdGFudCgpKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzEwMjRdPy53ZWJwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5taW5GdWxsRGVza3RvcCgpKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8ucGF0aD8ud2VicDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlsxMjgwXT8ud2VicDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgc3JjOiBgJHt0aGlzLnNpdGVTdmMuY2RuSW1hZ2VzSW5zdGFudH0ke3NlbGVjdGVkSW1hZ2V9YCxcclxuICAgICAgICAgICAgYWx0OiBpbWFnZT8uYWx0LFxyXG4gICAgICAgIH0gYXMgUHVyb0ltYWdlSTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcclxuICAgICAgICBpbWFnZXM6IEltYWdlUmVzcG9uc2VbXSB8IHVuZGVmaW5lZFxyXG4gICAgKTogUHVyb0ltYWdlSVtdIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gaW1hZ2VzPy5tYXAoKGltZykgPT4gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSEpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVBZ2VzT3B0aW9ucyhtYXhMZW5ndGg6IG51bWJlciwgbWluTGVuZ3RoID0gMCk6IGFueVtdIHtcclxuICAgICAgICBjb25zdCBvcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBtaW5MZW5ndGg7IGkgPD0gbWF4TGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgb3B0aW9ucy5wdXNoKHsgY29kZTogaSwgbmFtZTogaSA8IDEwID8gYDAke2l9YCA6IGAke2l9YCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwQ29tcG9uZW50czxUPihcclxuICAgICAgICBib2R5OiBhbnlbXSxcclxuICAgICAgICBhZGRvbnM/OiBDb21wb25lbnRzQWRkb25zXHJcbiAgICApOiBCb2R5Q29tcG9uZW50PFQ+W10ge1xyXG4gICAgICAgIGNvbnN0IGJvZHlNYXBwZWQ6IEJvZHlDb21wb25lbnQ8VD5bXSA9IGJvZHkubWFwKChjb21wb25lbnQpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+ID0ge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCksXHJcbiAgICAgICAgICAgICAgICBvcmRlcjogY29tcG9uZW50Lm9yZGVyLFxyXG4gICAgICAgICAgICAgICAgcHJvcHM6IGNvbXBvbmVudC5wcm9wcyxcclxuICAgICAgICAgICAgfSBhcyBCb2R5Q29tcG9uZW50PFQ+O1xyXG5cclxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dhbGxlcnknOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHYWxsZXJ5KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQzY29sZmlsdGVyJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDNjb2xGaWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2JpZyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9CaWcoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMWNvbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlcjFjb2woXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyYmVhY2hzJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVyQmVhY2hzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmluZm8nOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJJbmZvKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmhvdGVscyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckhvdGVscyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJsaW5rcyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckxpbmtzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3dlYm1hcCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFdlYm1hcChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUb3BTbGlkZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyQnV0dG9ucygpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWR2YW50YWdlc3NtYWxsJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQWR2YW50YWdlc1NtYWxsKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9saXN0JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0xpc3QoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyM2NvbHJvdW5kJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM0NvbFJvdW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbnRybyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9JbnRybyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzY29sJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM2NvbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIyY29sJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyMmNvbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNWl0ZW1zJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDVpdGVtcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNml0ZW1zJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDZpdGVtcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvdmlkZW9yaWdodCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm92aWRlb2xlZnQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvVmlkZW8oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5uYW1lLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXN0b2ZmZXJzJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdG5ld3MnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXN0cm9vbXMnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXN0cmVzdGF1cmFudHMnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0R2VuZXJhbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICc0MDQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXA0MDQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndGhhbmtzJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVGhhbmtzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3Rmb3JtJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ29udGFjdEZvcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29uc3VsdFR5cGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNzbGlkZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlcnNTbGlkZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3NlcnZpY2VzJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb1NlcnZpY2VzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9iYW5uZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvQmFubmVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NjaGVkdWxlJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2NoZWR1bGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWR2YW50YWdlcyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEFkdmFudGFnZXMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3JpZDRpdGVtcyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQ0aXRlbXMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnemlnemFnMmNvbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFppZ3phZzJjb2woXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3JpZDNjb2xzbGlkZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHcmlkM2NvbFNsaWRlcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvc2xpZGVybGVmdCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9zbGlkZXJyaWdodCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9TbGlkZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpID09PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5mb3NsaWRlcmxlZnQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncGhvdG9zbGlkZXJsZWZ0JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncGhvdG9zbGlkZXJyaWdodCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFBob3RvU2xpZGVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bob3Rvc2xpZGVycmlnaHQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyNGNvbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lcjRDb2woXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2dhbGxlcnknOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvR2FsbGVyeShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmNvbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm8yQ29sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21hcGxpc3QnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNYXBMaXN0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xhbmd1YWdlc21vZGFsJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGFuZ3VhZ2VzTW9kYWwoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJiYW5uZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlckJhbm5lcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihjb21wb25lbnRNYXBwZWQubmFtZSwgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRNYXBwZWQ7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBib2R5TWFwcGVkO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEdyaWQzY29sU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDNjb2xTbGlkZXJJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IGhvdGVscyB9ID0gcHJvcHM7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaXRlbXM6IGhvdGVscz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsPy5idXR0b25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBob3RlbC5ob3RlbFRyYW5zbGF0aW9ucz8uWzBdPy5wcmV0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhvdGVsLmhvdGVsVHJhbnNsYXRpb25zPy5bMF0/LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG90ZWwubXVsdGltZWRpYT8uZmluZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PiBpbWcuY292ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR3JpZDNjb2xTbGlkZXJJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfSBhcyBQdXJvR3JpZDNjb2xTbGlkZXJJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEdhbGxlcnkocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HYWxsZXJ5SSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbXVsdGltZWRpYSwgZmlsdGVycyB9ID0gcHJvcHM7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZmlsdGVyOiB7XHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGV4dHM/Lm5hbWVGaWx0ZXIsXHJcbiAgICAgICAgICAgICAgICBvcHRpb246IGZpbHRlcnMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGUsXHJcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcclxuICAgICAgICAgICAgaXRlbXM6IG11bHRpbWVkaWE/LmltYWdlcz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dhbGxlcnlJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfSBhcyBQdXJvR2FsbGVyeUk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwTWFwTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb01hcExpc3RJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBtYXBJbWFnZTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBpdGVtczogbXVsdGltZWRpYT8uaW1hZ2VzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcEltYWdlOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb01hcExpc3RJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfSBhcyBQdXJvTWFwTGlzdEk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwT2ZmZXJCYW5uZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9PZmZlckJhbm5lckkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmIChwcm9wcykge1xyXG4gICAgICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcclxuICAgICAgICAgICAgLy9UT0RPOmJhY2tcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcclxuICAgICAgICAgICAgICAgIGN1cnJlbmN5OiAnJyxcclxuICAgICAgICAgICAgICAgIGZyb206IHRleHRzPy5mcm9tLFxyXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHByaWNlOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICB9IGFzIFB1cm9PZmZlckJhbm5lckk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcExhbmd1YWdlc01vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTGFuZ3VhZ2VzTW9kYWxJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IHRleHRzLCBsYW5ndWFnZXMgfSA9IHByb3BzO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiBsYW5ndWFnZXMgYXMgUHVyb0xhbmd1YWdlc01vZGFsSXRlbVtdLFxyXG4gICAgICAgICAgICBzZWxlY3RlZDogbGFuZ3VhZ2VzLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAoaXRlbTogUHVyb0xhbmd1YWdlc01vZGFsSXRlbSkgPT5cclxuICAgICAgICAgICAgICAgICAgICBpdGVtLmlkID09PSB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmlkXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgfSBhcyBQdXJvTGFuZ3VhZ2VzTW9kYWxJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEhlYWRlcihcclxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxyXG4gICAgICAgIG1lbnU6IGFueSB8IHVuZGVmaW5lZFxyXG4gICAgKTogUHVyb0hlYWRlckkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IHsgbmF2TGlua3MgfSA9IHByb3BzO1xyXG4gICAgICAgIGNvbnN0IHsgdGV4dHMgfSA9IHByb3BzPy5oZWFkZXJCdXR0b25zPy5wcm9wcyA/PyB7fTtcclxuICAgICAgICBjb25zdCB7IGJvdHRvbUxpbmtzIH0gPSBtZW51Py5saW5rcyA/PyB7fTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZU1lbnU6IHRleHRzPy5tZW51LFxyXG4gICAgICAgICAgICB0aXRsZUxhbmc6IHRleHRzPy5sYW5ndWFnZSxcclxuICAgICAgICAgICAgYnRuQm9vazogdGV4dHM/LmJvb2tub3csXHJcbiAgICAgICAgICAgIG5hdkxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcclxuICAgICAgICAgICAgICAgIG5hdkxpbmtzXHJcbiAgICAgICAgICAgICAgICAgICAgPy5tYXAoKGxpbms6IGFueSkgPT4gKHsgLi4ubGluaywgbGFiZWw6IGxpbms/Lm5hbWUgfSkpXHJcbiAgICAgICAgICAgICAgICAgICAgPy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gYT8ub3JkZXIgLSBiPy5vcmRlcilcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgYm90dG9tTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYm90dG9tTGlua3MpLFxyXG4gICAgICAgIH0gYXMgUHVyb0hlYWRlckk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSW5mb0JpZyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9CaWdJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXHJcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VzPy5bMF0pLFxyXG4gICAgICAgIH0gYXMgUHVyb0luZm9CaWdJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcFNsaWRlcjFjb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TbGlkZXIxY29sSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgeyBtdWx0aW1lZGlhLCBidXR0b25zLCB0ZXh0cyB9ID0gcHJvcHM7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBpdGVtczogbXVsdGltZWRpYT8uaW1hZ2VzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NsaWRlcjFjb2xJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyMWNvbEk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwQWR2YW50YWdlcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0FkdmFudGFnZXNJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IEFkdmFudGFnZXMgfSA9IHByb3BzO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiBBZHZhbnRhZ2VzLm1hcChcclxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogaXRlbS5pY29uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvQWR2YW50YWdlc0l0ZW1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICB9IGFzIFB1cm9BZHZhbnRhZ2VzSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBaaWd6YWcyY29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvWmlnWmFnMmNvbEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmIChwcm9wcykge1xyXG4gICAgICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICBuZFRpdGxlOiB0ZXh0cz8ubmRUaXRsZSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5bMF0pLFxyXG4gICAgICAgICAgICB9IGFzIFB1cm9aaWdaYWcyY29sSTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwR3JpZDRpdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQ0aXRlbXNJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAoIXByb3BzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGl0ZW1zOiAoQXJyYXkuaXNBcnJheShtdWx0aW1lZGlhKVxyXG4gICAgICAgICAgICAgICAgPyBtdWx0aW1lZGlhXHJcbiAgICAgICAgICAgICAgICA6IG11bHRpbWVkaWEubXVsdGltZWRpYVxyXG4gICAgICAgICAgICApPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGltZz8ubGlua3MpWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nPy5zdWJ0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9HcmlkNGl0ZW1zSXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXHJcbiAgICAgICAgfSBhcyBQdXJvR3JpZDRpdGVtc0k7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSW5mb1ZpZGVvKFxyXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXHJcbiAgICAgICAgbmFtZTogJ2luZm92aWRlb3JpZ2h0JyB8ICdpbmZvdmlkZW9sZWZ0J1xyXG4gICAgKTogUHVyb0luZm9WaWRlb0kgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXHJcbiAgICAgICAgICAgIHJldmVyc2U6IG5hbWUuaW5jbHVkZXMoJ3JpZ2h0JyksXHJcbiAgICAgICAgICAgIHZpZGVvOiB7XHJcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHByb3BzLnZpZGVvPy5zcmMsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcy52aWRlbz8udHlwZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9IGFzIFB1cm9JbmZvVmlkZW9JO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEJyZWFkY3J1bWJzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQnJlYWRjcnVtYkkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGxpbmtzOiAocHJvcHM/Lml0ZW1zIGFzIGFueVtdKVxyXG4gICAgICAgICAgICAgICAgPy5zb3J0KChhLCBiKSA9PiBhIC0gYilcclxuICAgICAgICAgICAgICAgID8ubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0/LmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0/LnVybFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5jaGFyQXQoaXRlbT8udXJsPy5sZW5ndGggLSAxKSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0/LnVybD8uc2xpY2UoMCwgLTEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbT8udXJsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9CdXR0b25JXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb0JyZWFkY3J1bWJJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEZvb3RlckluZm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJJbmZvSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSBwcm9wcz8uYWRkcmVzc1swXTtcclxuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbGlua3MsIHNvY2lhbE1lZGlhLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGFkZHJlc3NJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZUFkZHJlc3MsXHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogYCR7YWRkcmVzcz8uYWRkcmVzcyA/PyAnJ30sICR7YWRkcmVzcz8uY2l0eSA/PyAnJ30sICR7YWRkcmVzcz8uY3AgPz8gJyd9ICR7YWRkcmVzcy5wcm92aW5jZSA/PyAnJ31gLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcclxuICAgICAgICAgICAgICAgIGNvbnRhY3RJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzPy5jb250YWN0TGlua3M/LlswXVxyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlQ29udGFjdCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5sb2dvPy5bMF0pLFxyXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZT8uWzBdKSxcclxuICAgICAgICAgICAgICAgIG5ld3NsZXR0ZXJJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZU5ld3NsZXR0ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucz8uWzFdXHJcbiAgICAgICAgICAgICAgICAgICAgKVswXSxcclxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zTGluazogdGV4dHM/Lm5ld3NsZXR0ZXJDb25kaXRpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgIGlucHV0UGxhY2Vob2xkZXI6IHRleHRzPy5uZXdzbGV0dGVyUGxhY2Vob2xkZXIsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc29jaWFsTWVkaWE6IHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlU29jaWFsTWVkaWEsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IHNvY2lhbE1lZGlhPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8ubmFtZT8udG9Mb3dlckNhc2UoKX1gLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pKSxcclxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb0Zvb3RlckluZm9Tb2NpYWxNZWRpYUluZm8sXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICB9IGFzIFB1cm9Gb290ZXJJbmZvSTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwU2xpZGVyM2NvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjNjb2xJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXM/Lm1hcChcclxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LmJ1dHRvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgKVswXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGltZz8ubGlua3MpWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TbGlkZXIzQ29sSXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxyXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNjb2xJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcFNsaWRlcjJjb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TbGlkZXIyY29sSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ucm9vbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLm11bHRpbWVkaWE/LlswXSksXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50ZXh0cz8ubmFtZSxcclxuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnRleHRzPy5kZXNjcml0aW9uLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5idXR0b25zKSxcclxuICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjJjb2xJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEdyaWQ1aXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HcmlkNWl0ZW1zSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgY29tYmluZWRJbWFnZXM6IEltYWdlUmVzcG9uc2VbXSA9IFtdO1xyXG4gICAgICAgIGxldCBpID0gMDtcclxuICAgICAgICBsZXQgaiA9IDA7XHJcblxyXG4gICAgICAgIHdoaWxlIChcclxuICAgICAgICAgICAgaSA8IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXM/Lmxlbmd0aCB8fFxyXG4gICAgICAgICAgICBqIDwgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlc21hbGw/Lmxlbmd0aFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcz8uW2ldKSB7XHJcbiAgICAgICAgICAgICAgICBjb21iaW5lZEltYWdlcy5wdXNoKHByb3BzLm11bHRpbWVkaWEuaW1hZ2VzW2ldKTtcclxuICAgICAgICAgICAgICAgIGkrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlc21hbGw/LltqXSkge1xyXG4gICAgICAgICAgICAgICAgY29tYmluZWRJbWFnZXMucHVzaChwcm9wcy5tdWx0aW1lZGlhLmltYWdlc21hbGxbal0pO1xyXG4gICAgICAgICAgICAgICAgaisrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgaXRlbXM6IGNvbWJpbmVkSW1hZ2VzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGltZy5zdWJ0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR3JpZDVpdGVtc0l0ZW1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcclxuICAgICAgICB9IGFzIFB1cm9HcmlkNWl0ZW1zSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBHcmlkNml0ZW1zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDZpdGVtc0kgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBpdGVtczogW10sXHJcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXHJcbiAgICAgICAgfSBhcyBQdXJvR3JpZDZpdGVtc0k7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwQWR2YW50YWdlc1NtYWxsKFxyXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcclxuICAgICk6IFB1cm9BZHZhbnRhZ2VzU21hbGxJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAoIXByb3BzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcy5zZXJ2aWNlc0FkdmFudGFnZXM/Lm1hcChcclxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIGl0ZW0uY2xhc3MsXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0FkdmFudGFnZXNTbWFsbEl0ZW1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICB9IGFzIFB1cm9BZHZhbnRhZ2VzU21hbGxJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEdyaWQzY29sRmlsdGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDNDb2xGaWx0ZXJJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCBkZXN0aW5hdGlvbnMgPSBBcnJheShwcm9wcz8uZGVzdGluYXRpb25zKT8uZmxhdCgyKTtcclxuICAgICAgICBjb25zdCBob3RlbHMgPSBkZXN0aW5hdGlvbnNcclxuICAgICAgICAgICAgPy5yZWR1Y2UoKGFjYzogYW55W10sIGRlc3RpbmF0aW9uOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhY2MuY29uY2F0KGRlc3RpbmF0aW9uLmhvdGVscyk7XHJcbiAgICAgICAgICAgIH0sIFtdKVxyXG4gICAgICAgICAgICA/Lm1hcChcclxuICAgICAgICAgICAgICAgIChob3RlbDogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBob3RlbD8uaG90ZWxUcmFuc2xhdGlvbnM/LlswXT8ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmRUaXRsZTogJycsIC8vVE9ETzogcGVuZGllbnRlIGRlIHNhYmVyIHF1ZSBjYW1wbyBlcyBlbiBiYWNrLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGhvdGVsPy5waXZvdD8uZGVzdGluYXRpb25JZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaG90ZWw/LmxpbmtzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR3JpZDNDb2xGaWx0ZXJJdGVtXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICBpdGVtczogaG90ZWxzIHx8IFtdLFxyXG4gICAgICAgICAgICBmaWx0ZXI6IHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnM6XHJcbiAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25zPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkZXN0OiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGRlc3QuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZGVzdC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cclxuICAgICAgICAgICAgICAgICAgICApIHx8IFtdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKSxcclxuICAgICAgICB9IGFzIFB1cm9HcmlkM0NvbEZpbHRlckk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwRm9vdGVySG90ZWxzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRm9vdGVySG90ZWxzSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5ob3RlbHM/Lm1hcChcclxuICAgICAgICAgICAgICAgIChob3RlbDogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaG90ZWwubGlua3MpWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaG90ZWw/LnRleHRzPy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaG90ZWw/LnRleHRzPy5sb2NhdGlvbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9Gb290ZXJIb3RlbHNJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfSBhcyBQdXJvRm9vdGVySG90ZWxzSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBGb290ZXJMaW5rcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Zvb3RlckxpbmtzSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzLm11bHRpbWVkaWE/LmltYWdlPy5bMF0pLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzLnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgICAgIG1lbWJlclRpdGxlOiBwcm9wcy50ZXh0cz8ubWVtYmVyVGl0bGUsXHJcbiAgICAgICAgICAgICAgICBtZW1iZXJQcmV0aXRsZTogcHJvcHMudGV4dHM/Lm1lbWJlclByZXRpdGxlLFxyXG4gICAgICAgICAgICAgICAgY29weXJpZ2h0OiBwcm9wcy50ZXh0cz8uY29weXJpZ2h0LFxyXG4gICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHMubGlua3MpLFxyXG4gICAgICAgICAgICB9IGFzIFB1cm9Gb290ZXJMaW5rc0k7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEZvb3RlckJlYWNocyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Zvb3RlckJlYWNoc0kgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaG90ZWxzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKCcvcHVyb2JlYWNoJywgaG90ZWwubGlua3MpWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaG90ZWw/LnRleHRzPy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaG90ZWw/LnRleHRzPy5sb2NhdGlvbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9Gb290ZXJCZWFjaHNJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfSBhcyBQdXJvRm9vdGVyQmVhY2hzSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBJbmZvTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9MaXN0SSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgbXVsdGltZWRpYSwgQWR2YW50YWdlcyB9ID0gcHJvcHM7XHJcbiAgICAgICAgY29uc3QgeyBiYWNrZ3JvdW5kaW1hZ2UsIGltYWdlLCBzbWFsbGltYWdlIH0gPSBtdWx0aW1lZGlhO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIGl0ZW1zOiBBcnJheSguLi4oQWR2YW50YWdlcyB8fCBbXSkpPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRpdGxlIGFzIHN0cmluZ1xyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltYWdlPy5bMF0pLFxyXG4gICAgICAgICAgICBzbWFsbEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoc21hbGxpbWFnZT8uWzBdKSxcclxuICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoYmFja2dyb3VuZGltYWdlPy5bMF0pLFxyXG4gICAgICAgIH0gYXMgUHVyb0luZm9MaXN0STtcclxuICAgIH1cclxuXHJcbiAgICBtYXBTbGlkZXIzQ29sUm91bmQoXHJcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxyXG4gICAgKTogUHVyb1NsaWRlcjNDb2xSb3VuZEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIHN1YnRpdGxlOiB0ZXh0cz8uc3VidGl0bGUsXHJcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcclxuICAgICAgICAgICAgaXRlbXM6IG11bHRpbWVkaWE/LmltYWdlcz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8ubGlua3MgfHwgW11cclxuICAgICAgICAgICAgICAgICAgICAgICAgKVswXSxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU2xpZGVyM0NvbFJvdW5kSXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNDb2xSb3VuZEk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSW5mb0ludHJvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0ludHJvSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZSxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICB9IGFzIFB1cm9JbmZvSW50cm9JO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcFRvcFNsaWRlcihcclxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxyXG4gICAgICAgIGFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWRcclxuICAgICk6IFB1cm9Ub3BTbGlkZXJJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxyXG4gICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICBzcG90aWZ5OiAnJyxcclxuICAgICAgICAgICAgZmlkZWxpdHk6IGFjdGlvbnM/LlsnZmlkZWxpdHknXSxcclxuICAgICAgICAgICAgbmV3c2xldHRlcjogYWN0aW9ucz8uWyduZXdzbGV0dGVyJ10sXHJcbiAgICAgICAgICAgIGxhbmd1YWdlczogYWN0aW9ucz8uWydsYW5ndWFnZSddLFxyXG4gICAgICAgICAgICBzZWxlY3RlZExhbmd1YWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlU3ZjLnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5sb2NhdGU/LnRvTG9jYWxlVXBwZXJDYXNlKCksXHJcbiAgICAgICAgICAgIHZpZGVvOiB1bmRlZmluZWQsIC8vVE9ETzogQkFDS1xyXG4gICAgICAgICAgICBtYWluVGl0bGU6IHRleHRzPy5tYWluVGl0bGUsIC8vVE9ETzogQkFDS1xyXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXHJcbiAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPy5pbWFnZXMgfHwgbXVsdGltZWRpYT8ubXVsdGltZWRpYVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb1RvcFNsaWRlckk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSW5mb0Jhbm5lcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9CYW5uZXJJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAocHJvcHMpIHtcclxuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgbXVsdGltZWRpYSB9ID0gcHJvcHM7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgaXRlbXM6IG11bHRpbWVkaWE/LmltYWdlPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy5idXR0b25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0luZm9CYW5uZXJJdGVtXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB9IGFzIFB1cm9JbmZvQmFubmVySTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBtYXBTY2hlZHVsZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NjaGVkdWxlSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIEFkdmFudGFnZXMgfSA9IHByb3BzO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgICAgIGl0ZW1zOiBBcnJheSguLi4oQWR2YW50YWdlcyB8fCBbXSkpPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uaWNvbn1gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TY2hlZHVsZUl0ZW1cclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIH0gYXMgUHVyb1NjaGVkdWxlSTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBtYXBJbmZvU2VydmljZXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvU2VydmljZXNJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IHRleHRzLCBBZHZhbnRhZ2VzLCBtdWx0aW1lZGlhLCBidXR0b25zIH0gPSBwcm9wcztcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXHJcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZXMgfHwgW10pLFxyXG4gICAgICAgICAgICBpdGVtczogQWR2YW50YWdlcz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy50ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0/Lmljb259YCxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb1NlcnZpY2VzSXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb0luZm9TZXJ2aWNlc0k7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwTGlzdEdlbmVyYWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvTGlzdEdlbmVyYWxJdGVtW10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKHByb3BzPy5vZmZlcnMpIHtcclxuICAgICAgICAgICAgaXRlbXMgPSBwcm9wcz8ub2ZmZXJzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAob2ZmZXI6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9mZmVyPy50ZXh0cz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyLm11bHRpbWVkaWEgfHwgW11cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8ubGlua3MpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8uYnV0dG9ucyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RHZW5lcmFsSXRlbVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocHJvcHM/Lm11bHRpbWVkaWEpIHtcclxuICAgICAgICAgICAgaXRlbXMgPSBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubG9nbyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVxdWlwbWVudDogaXRlbT8uQWR2YW50YWdlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBbdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSldLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbT8uYnV0dG9ucyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RHZW5lcmFsSXRlbVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgaXRlbXMsXHJcbiAgICAgICAgfSBhcyBQdXJvTGlzdEdlbmVyYWxJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEVuZ2luZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0VuZ2luZUkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGJ1dHRvbjogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvclN1Ym1pdCwgdXJsOiBwcm9wcz8udXJsIH0sXHJcbiAgICAgICAgICAgIGRhdGVwaWNrZXJJbjoge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JEYXRlVGl0bGU/LnNwbGl0KCctJyk/LlswXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGF0ZXBpY2tlck91dDoge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JEYXRlVGl0bGU/LnNwbGl0KCctJyk/LlsxXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZ3Vlc3RzSW5wdXQ6IHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yR3Vlc3RzSW5wdXRIb2xkZXIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHByb21vSW5wdXQ6IHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yUHJvbW9Ib2xkZXIsXHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBidG5BcHBseTogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvckFwcGx5IH0sXHJcbiAgICAgICAgICAgIGFkdWx0c0Ryb3Bkb3duOiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckFkdWx0c1RpdGxlLFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKHByb3BzPy5tYXhBZHVsdHMsIDEpLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBraWRzRHJvcGRvd246IHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yS2lkc1RpdGxlLFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKHByb3BzPy5tYXhDaGlsZHJlbiksXHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvclRpdGxlLFxyXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvclN1YnRpdGxlLFxyXG4gICAgICAgICAgICB1cmw6IHByb3BzPy51cmwsXHJcbiAgICAgICAgICAgIGhvdGVsOiBwcm9wcz8uaG90ZWxzPy5bMF0sXHJcbiAgICAgICAgfSBhcyBQdXJvRW5naW5lSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBXZWJtYXAocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9XZWJtYXBJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBsaW5rczogcHJvcHM/LnBhZ2VzXHJcbiAgICAgICAgICAgICAgICAuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBQdXJvQnV0dG9uSSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGluay51cmw/LnNwbGl0KCcvJylbMV0gPT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8ubG9jYXRlXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICA/Lm1hcChcclxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbmsubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogVXRpbHMudXJsVmFsaWRhdGlvbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLnVybCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJuYWwnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0J1dHRvbklcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxyXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF1cclxuICAgICAgICAgICAgKSBhcyBQdXJvSW1hZ2VJLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgbWFwUGhvdG9TbGlkZXIoXHJcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcclxuICAgICAgICByZXZlcnNlOiBib29sZWFuXHJcbiAgICApOiBQdXJvUGhvdG9TbGlkZXJJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcyB8fCBbXSksXHJcbiAgICAgICAgICAgIHJldmVyc2UsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBCYW5uZXI0Q29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQmFubmVyNENvbEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwY2lvbixcclxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcclxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxyXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcyB8fCBbXVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb0Jhbm5lcjRDb2xJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcENvbnRhY3RGb3JtKFxyXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXHJcbiAgICAgICAgbmRQcm9wc0NvbnN1bHQ6IGFueSB8IHVuZGVmaW5lZFxyXG4gICAgKTogUHVyb0NvbnRhY3RGb3JtSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICB0ZXh0YXJlYToge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlUGxhY2VIb2xkZXIsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9ucyxcclxuICAgICAgICAgICAgcHJvbW90aW9uczogcHJvcHM/LnRleHRzPy5wcm9tb3Rpb25zLFxyXG4gICAgICAgICAgICBkcm9wZG93bjoge1xyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZHJvcGRvd24sXHJcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uaG90ZWxzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcC5pZCwgbmFtZTogcHJvcC5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBuZERyb3Bkb3duOiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5kcm9wZG93blRpdGxlLFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uczogbmRQcm9wc0NvbnN1bHQ/Lm1hcChcclxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wLmlkLCBuYW1lOiBwcm9wLm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHByZWZpeDoge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LnByZWZpeGVzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgKHByZWZpeDogc3RyaW5nKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogQXJyYXkocHJvcHM/LnByZWZpeGVzKS5pbmRleE9mKHByZWZpeCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcmVmaXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgaW5wdXRzOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LmlucHV0TmFtZSksXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0U3VybmFtZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LmlucHV0U3VybmFtZXMpLFxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0U3VybmFtZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCksXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dFBob25lKSxcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JScXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF0gYXMgUHVyb0lucHV0SVtdLFxyXG4gICAgICAgIH0gYXMgUHVyb0NvbnRhY3RGb3JtSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBJbmZvU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQsIHJldmVyc2U6IGJvb2xlYW4pOiBhbnkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmICghcHJvcHMpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgY29uc3QgeyBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpdGVtczogKG11bHRpbWVkaWE/LmltYWdlcyB8fCBtdWx0aW1lZGlhPy5tdWx0aW1lZGlhKT8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZykgYXMgUHVyb0ltYWdlSSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGltZy5zdWJ0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpbWcuYnV0dG9ucyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWcucHJldGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0luZm9TbGlkZXJJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHJldmVyc2UsXHJcbiAgICAgICAgfSBhcyBQdXJvSW5mb1NsaWRlckk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwT2ZmZXJzU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBhbnkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm9mZmVycz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKG9mZmVyOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG9mZmVyPy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBvZmZlcj8udGV4dHM/LnN1YnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWc6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgb2ZmZXI/LmxpbmtzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgb2ZmZXI/LmJ1dHRvbnMpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG9mZmVyLm11bHRpbWVkaWFbMF0pLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9PZmZlclxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgbWFwVGhhbmtzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvVGhhbmtzSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxyXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF1cclxuICAgICAgICAgICAgKSBhcyBQdXJvSW1hZ2VJLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxyXG4gICAgICAgIH0gYXMgUHVyb1RoYW5rc0k7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwNDA0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvNDA0SSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgYWRkcmVzcyA9IHByb3BzPy5hZGRyZXNzPy5bMF07XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IHByb3BzLnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzLnRleHRzPy5zdWJ0aXRsZSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLnRleHRzPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXHJcbiAgICAgICAgICAgIGFkZHJlc3M6IHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZSxcclxuICAgICAgICAgICAgICAgIHRleHQ6IGAke2FkZHJlc3MuYWRkcmVzc308L2JyPiR7YWRkcmVzcy5jaXR5fSAsJHthZGRyZXNzLmNwfSAke2FkZHJlc3MucHJvdmluY2V9YCxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5saW5rcz8uYWRkcmVzcz8uWzBdXHJcbiAgICAgICAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb250YWN0OiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGUsXHJcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5saW5rcz8uQ29udGFjdD8uWzBdXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uOiB7fSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9IGFzIFB1cm80MDRJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEluZm9HYWxsZXJ5KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBhbnkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgbW9yZWluZm86IHByb3BzPy50ZXh0cz8uYWRkaXRpb25hbDEsXHJcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcclxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXMgfHwgW11cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucyksXHJcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IHByb3BzPy5BZHZhbnRhZ2VzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtPy5pY29ufWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TY2hlZHVsZUl0ZW1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICB9IGFzIFB1cm9JbmZvR2FsbGVyeUk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSW5mbzJDb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvMkNvbEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lml0ZW1zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0uc3VidGl0bGUsXHJcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0ubGluayksXHJcbiAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0uYnV0dG9ucyksXHJcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0uaW1hZ2UpLFxyXG4gICAgICAgICAgICB9KSksXHJcbiAgICAgICAgfSBhcyBQdXJvSW5mbzJDb2xJO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlUmVzcG9uc2Uge1xyXG4gICAgcGF0aDogSW1hZ2VSZXNwb25zZVBhdGg7XHJcbiAgICB0aHVtYm5haWxzOiB7XHJcbiAgICAgICAgMzc1OiBJbWFnZVJlc3BvbnNlUGF0aDtcclxuICAgICAgICA1NDA6IEltYWdlUmVzcG9uc2VQYXRoO1xyXG4gICAgICAgIDc2ODogSW1hZ2VSZXNwb25zZVBhdGg7XHJcbiAgICAgICAgODAwOiBJbWFnZVJlc3BvbnNlUGF0aDtcclxuICAgICAgICAxMDI0OiBJbWFnZVJlc3BvbnNlUGF0aDtcclxuICAgICAgICAxMjgwOiBJbWFnZVJlc3BvbnNlUGF0aDtcclxuICAgIH07XHJcbiAgICBjb3ZlcjogbnVtYmVyO1xyXG4gICAgdGFncz86IGFueVtdO1xyXG4gICAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgICBwcmV0aXRsZT86IHN0cmluZztcclxuICAgIHN1YnRpdGxlPzogc3RyaW5nO1xyXG4gICAgbmRUaXRsZT86IHN0cmluZztcclxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG4gICAgbGlua3M/OiBhbnlbXTtcclxuICAgIGJ1dHRvbnM/OiBhbnlbXTtcclxuICAgIGFsdD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbWFnZVJlc3BvbnNlUGF0aCB7XHJcbiAgICBvcmlnaW5hbDogc3RyaW5nO1xyXG4gICAgd2VicDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudHNBZGRvbnMge1xyXG4gICAgY29udGFjdE9mZmljZT86IGFueTtcclxuICAgIGNvbnN1bHRUeXBlPzogQ29uc3VsdFR5cGU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyT3B0aW9uIHtcclxuICAgIGlkPzogbnVtYmVyO1xyXG4gICAgbmFtZT86IHN0cmluZztcclxuICAgIGNoaWxkcmVuPzogRmlsdGVyT3B0aW9uO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3VsdFR5cGUge1xyXG4gICAgY29uc3VsdFR5cGVJZD86IG51bWJlcjtcclxuICAgIElkPzogbnVtYmVyO1xyXG4gICAgbGFuZ3VhZ2VJZD86IG51bWJlcjtcclxuICAgIG5hbWU/OiBzdHJpbmc7XHJcbn1cclxuIl19