ctt-babylon 0.26.23 → 0.26.25

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.
@@ -9,11 +9,11 @@ export class BabylonAiBadgeComponent {
9
9
  this.additionalClasses = '';
10
10
  }
11
11
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BabylonAiBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BabylonAiBadgeComponent, isStandalone: true, selector: "lib-babylon-ai-badge", inputs: { badges: "badges", position: "position", additionalClasses: "additionalClasses", top: "top", bottom: "bottom", left: "left", right: "right" }, ngImport: i0, template: "<div\n class=\"ai-badge-container\"\n [ngClass]=\"'badge-' + position + ' ' + additionalClasses\"\n [style.top]=\"top\"\n [style.bottom]=\"bottom\"\n [style.left]=\"left\"\n [style.right]=\"right\"\n>\n <div *ngFor=\"let badge of badges\" [id]=\"badge.id\" class=\"ai-badge\">\n <span class=\"ai-badge__text\">{{ badge.name }}</span>\n </div>\n</div>\n", styles: [".ai-badge-container{position:absolute;z-index:10;pointer-events:none;display:flex;flex-direction:column;gap:8px}.ai-badge-container.badge-top-right{top:15px;right:15px}.ai-badge-container.badge-top-left{top:15px;left:15px}.ai-badge-container.badge-bottom-right{bottom:15px;right:15px}.ai-badge-container.badge-bottom-left{bottom:15px;left:15px}.ai-badge-container.top--100{top:100px}.ai-badge{padding:0 12px;background-color:#2828289e;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:25px;box-shadow:0 2px 8px #00000040}.ai-badge__text{font-family:inherit;font-size:11px;font-weight:700!important;letter-spacing:.08em;color:#fff;text-transform:uppercase;text-align:center;width:100%;display:block}.ai-badge#render{background-color:var(--cl_btn-box)!important}.ai-badge#render .ai-badge__text{color:#000;font-weight:700!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BabylonAiBadgeComponent, isStandalone: true, selector: "lib-babylon-ai-badge", inputs: { badges: "badges", position: "position", additionalClasses: "additionalClasses", top: "top", bottom: "bottom", left: "left", right: "right" }, ngImport: i0, template: "<div\n class=\"ai-badge-container\"\n [ngClass]=\"'badge-' + position + ' ' + additionalClasses\"\n [style.top]=\"top\"\n [style.bottom]=\"bottom\"\n [style.left]=\"left\"\n [style.right]=\"right\"\n>\n <div *ngFor=\"let badge of badges\" [id]=\"badge.id\" class=\"ai-badge\">\n <span class=\"ai-badge__text\">{{ badge.name }}</span>\n </div>\n</div>\n", styles: [".ai-badge-container{position:absolute;z-index:10;pointer-events:none;display:flex;flex-direction:column;gap:8px}.ai-badge-container.badge-top-right{top:15px;right:15px}.ai-badge-container.badge-top-left{top:15px;left:15px}.ai-badge-container.badge-bottom-right{bottom:15px;right:15px}.ai-badge-container.badge-bottom-left{bottom:15px;left:15px}.ai-badge-container.top--100{top:100px}.ai-badge{padding:5px 12px;background-color:#2828289e;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:25px;box-shadow:0 2px 8px #00000040}.ai-badge__text{font-family:inherit;font-size:11px;font-weight:700!important;letter-spacing:.08em;color:#fff;text-transform:uppercase;text-align:center;width:100%;display:block}.ai-badge#render{background-color:var(--cl_btn-box)!important}.ai-badge#render .ai-badge__text{color:#000;font-weight:700!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13
13
  }
14
14
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BabylonAiBadgeComponent, decorators: [{
15
15
  type: Component,
16
- args: [{ selector: 'lib-babylon-ai-badge', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"ai-badge-container\"\n [ngClass]=\"'badge-' + position + ' ' + additionalClasses\"\n [style.top]=\"top\"\n [style.bottom]=\"bottom\"\n [style.left]=\"left\"\n [style.right]=\"right\"\n>\n <div *ngFor=\"let badge of badges\" [id]=\"badge.id\" class=\"ai-badge\">\n <span class=\"ai-badge__text\">{{ badge.name }}</span>\n </div>\n</div>\n", styles: [".ai-badge-container{position:absolute;z-index:10;pointer-events:none;display:flex;flex-direction:column;gap:8px}.ai-badge-container.badge-top-right{top:15px;right:15px}.ai-badge-container.badge-top-left{top:15px;left:15px}.ai-badge-container.badge-bottom-right{bottom:15px;right:15px}.ai-badge-container.badge-bottom-left{bottom:15px;left:15px}.ai-badge-container.top--100{top:100px}.ai-badge{padding:0 12px;background-color:#2828289e;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:25px;box-shadow:0 2px 8px #00000040}.ai-badge__text{font-family:inherit;font-size:11px;font-weight:700!important;letter-spacing:.08em;color:#fff;text-transform:uppercase;text-align:center;width:100%;display:block}.ai-badge#render{background-color:var(--cl_btn-box)!important}.ai-badge#render .ai-badge__text{color:#000;font-weight:700!important}\n"] }]
16
+ args: [{ selector: 'lib-babylon-ai-badge', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"ai-badge-container\"\n [ngClass]=\"'badge-' + position + ' ' + additionalClasses\"\n [style.top]=\"top\"\n [style.bottom]=\"bottom\"\n [style.left]=\"left\"\n [style.right]=\"right\"\n>\n <div *ngFor=\"let badge of badges\" [id]=\"badge.id\" class=\"ai-badge\">\n <span class=\"ai-badge__text\">{{ badge.name }}</span>\n </div>\n</div>\n", styles: [".ai-badge-container{position:absolute;z-index:10;pointer-events:none;display:flex;flex-direction:column;gap:8px}.ai-badge-container.badge-top-right{top:15px;right:15px}.ai-badge-container.badge-top-left{top:15px;left:15px}.ai-badge-container.badge-bottom-right{bottom:15px;right:15px}.ai-badge-container.badge-bottom-left{bottom:15px;left:15px}.ai-badge-container.top--100{top:100px}.ai-badge{padding:5px 12px;background-color:#2828289e;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:25px;box-shadow:0 2px 8px #00000040}.ai-badge__text{font-family:inherit;font-size:11px;font-weight:700!important;letter-spacing:.08em;color:#fff;text-transform:uppercase;text-align:center;width:100%;display:block}.ai-badge#render{background-color:var(--cl_btn-box)!important}.ai-badge#render .ai-badge__text{color:#000;font-weight:700!important}\n"] }]
17
17
  }], propDecorators: { badges: [{
18
18
  type: Input
19
19
  }], position: [{
@@ -29,4 +29,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
29
29
  }], right: [{
30
30
  type: Input
31
31
  }] } });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1haS1iYWRnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2JhYnlsb24tYWktYmFkZ2UvYmFieWxvbi1haS1iYWRnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2JhYnlsb24tYWktYmFkZ2UvYmFieWxvbi1haS1iYWRnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQWUxRSxNQUFNLE9BQU8sdUJBQXVCO0lBUnBDO1FBU2EsV0FBTSxHQUFjLEVBQUUsQ0FBQyxDQUFDLDRCQUE0QjtRQUNwRCxhQUFRLEdBQytDLFdBQVcsQ0FBQztRQUNuRSxzQkFBaUIsR0FBVyxFQUFFLENBQUM7S0FNM0M7K0dBVlksdUJBQXVCO21HQUF2Qix1QkFBdUIsd09DaEJwQyxpWUFZQSxtNUJERGMsWUFBWTs7NEZBS2IsdUJBQXVCO2tCQVJuQyxTQUFTOytCQUNJLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBR04sdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFpQmFkZ2Uge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1iYWJ5bG9uLWFpLWJhZGdlJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYWJ5bG9uLWFpLWJhZGdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vYmFieWxvbi1haS1iYWRnZS5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEJhYnlsb25BaUJhZGdlQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBiYWRnZXM6IEFpQmFkZ2VbXSA9IFtdOyAvLyBSZWNpYmUgZWwgYXJyYXkgZGUgYmFkZ2VzXG4gICAgQElucHV0KCkgcG9zaXRpb246XG4gICAgICAgICd0b3AtcmlnaHQnIHwgJ3RvcC1sZWZ0JyB8ICdib3R0b20tcmlnaHQnIHwgJ2JvdHRvbS1sZWZ0JyA9ICd0b3AtcmlnaHQnO1xuICAgIEBJbnB1dCgpIGFkZGl0aW9uYWxDbGFzc2VzOiBzdHJpbmcgPSAnJztcblxuICAgIEBJbnB1dCgpIHRvcD86IHN0cmluZztcbiAgICBASW5wdXQoKSBib3R0b20/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgbGVmdD86IHN0cmluZztcbiAgICBASW5wdXQoKSByaWdodD86IHN0cmluZztcbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImFpLWJhZGdlLWNvbnRhaW5lclwiXG4gICAgW25nQ2xhc3NdPVwiJ2JhZGdlLScgKyBwb3NpdGlvbiArICcgJyArIGFkZGl0aW9uYWxDbGFzc2VzXCJcbiAgICBbc3R5bGUudG9wXT1cInRvcFwiXG4gICAgW3N0eWxlLmJvdHRvbV09XCJib3R0b21cIlxuICAgIFtzdHlsZS5sZWZ0XT1cImxlZnRcIlxuICAgIFtzdHlsZS5yaWdodF09XCJyaWdodFwiXG4+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgYmFkZ2Ugb2YgYmFkZ2VzXCIgW2lkXT1cImJhZGdlLmlkXCIgY2xhc3M9XCJhaS1iYWRnZVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWJhZGdlX190ZXh0XCI+e3sgYmFkZ2UubmFtZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1haS1iYWRnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2JhYnlsb24tYWktYmFkZ2UvYmFieWxvbi1haS1iYWRnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2JhYnlsb24tYWktYmFkZ2UvYmFieWxvbi1haS1iYWRnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQWUxRSxNQUFNLE9BQU8sdUJBQXVCO0lBUnBDO1FBU2EsV0FBTSxHQUFjLEVBQUUsQ0FBQyxDQUFDLDRCQUE0QjtRQUNwRCxhQUFRLEdBQytDLFdBQVcsQ0FBQztRQUNuRSxzQkFBaUIsR0FBVyxFQUFFLENBQUM7S0FNM0M7K0dBVlksdUJBQXVCO21HQUF2Qix1QkFBdUIsd09DaEJwQyxpWUFZQSxxNUJERGMsWUFBWTs7NEZBS2IsdUJBQXVCO2tCQVJuQyxTQUFTOytCQUNJLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBR04sdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFpQmFkZ2Uge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1iYWJ5bG9uLWFpLWJhZGdlJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYWJ5bG9uLWFpLWJhZGdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vYmFieWxvbi1haS1iYWRnZS5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEJhYnlsb25BaUJhZGdlQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBiYWRnZXM6IEFpQmFkZ2VbXSA9IFtdOyAvLyBSZWNpYmUgZWwgYXJyYXkgZGUgYmFkZ2VzXG4gICAgQElucHV0KCkgcG9zaXRpb246XG4gICAgICAgICd0b3AtcmlnaHQnIHwgJ3RvcC1sZWZ0JyB8ICdib3R0b20tcmlnaHQnIHwgJ2JvdHRvbS1sZWZ0JyA9ICd0b3AtcmlnaHQnO1xuICAgIEBJbnB1dCgpIGFkZGl0aW9uYWxDbGFzc2VzOiBzdHJpbmcgPSAnJztcblxuICAgIEBJbnB1dCgpIHRvcD86IHN0cmluZztcbiAgICBASW5wdXQoKSBib3R0b20/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgbGVmdD86IHN0cmluZztcbiAgICBASW5wdXQoKSByaWdodD86IHN0cmluZztcbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImFpLWJhZGdlLWNvbnRhaW5lclwiXG4gICAgW25nQ2xhc3NdPVwiJ2JhZGdlLScgKyBwb3NpdGlvbiArICcgJyArIGFkZGl0aW9uYWxDbGFzc2VzXCJcbiAgICBbc3R5bGUudG9wXT1cInRvcFwiXG4gICAgW3N0eWxlLmJvdHRvbV09XCJib3R0b21cIlxuICAgIFtzdHlsZS5sZWZ0XT1cImxlZnRcIlxuICAgIFtzdHlsZS5yaWdodF09XCJyaWdodFwiXG4+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgYmFkZ2Ugb2YgYmFkZ2VzXCIgW2lkXT1cImJhZGdlLmlkXCIgY2xhc3M9XCJhaS1iYWRnZVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWJhZGdlX190ZXh0XCI+e3sgYmFkZ2UubmFtZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -39,6 +39,7 @@ export class BabylonEngineMewsComponent {
39
39
  this.showingEngineModal = false;
40
40
  //TODO
41
41
  this.hotelsValue = null;
42
+ this.hotelsId = [];
42
43
  this.datepickerValue = '';
43
44
  this.minDate = new Date();
44
45
  this.hotelError = false;
@@ -124,9 +125,38 @@ export class BabylonEngineMewsComponent {
124
125
  this.form.get('guests')?.setValue(this.guestsValue);
125
126
  this.toggleShowingGuests();
126
127
  }
128
+ getAllHotelsLabel() {
129
+ const lang = this.getLanguageFromUrl();
130
+ const labels = {
131
+ 'es-ES': 'Todos los hoteles',
132
+ 'en-US': 'All properties',
133
+ 'pt-PT': 'Todos as propriedades',
134
+ 'de-DE': 'Alle Hotels',
135
+ 'fr-FR': 'Tous les hôtels',
136
+ 'it-IT': 'Tutti gli hotel',
137
+ };
138
+ return labels[lang] || 'Todos los hoteles';
139
+ }
140
+ getOtherLabel() {
141
+ const lang = this.getLanguageFromUrl();
142
+ const labels = {
143
+ 'es-ES': 'Otros',
144
+ 'en-US': 'Others',
145
+ 'pt-PT': 'Outras',
146
+ };
147
+ return labels[lang] || 'Others';
148
+ }
127
149
  groupHotels(apiHotels) {
128
150
  const groupsMap = {};
129
151
  const ungroupedHotels = [];
152
+ // Expresión regular para validar el formato UUID de Mews (8-4-4-4-12 caracteres hexadecimales)
153
+ const mewsIdRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
154
+ const allHotelsOption = {
155
+ name: this.getAllHotelsLabel(),
156
+ configurationId: '',
157
+ id: undefined,
158
+ disabled: false,
159
+ };
130
160
  apiHotels.forEach((hotel) => {
131
161
  // Busca la categoría por la propiedad 'location' o por el mapa estático
132
162
  const category = hotel.location || hotelCategoryMap[hotel.name];
@@ -137,6 +167,11 @@ export class BabylonEngineMewsComponent {
137
167
  location: hotel.location,
138
168
  disabled: false,
139
169
  };
170
+ if (hotel.url ||
171
+ (hotel.configurationId &&
172
+ mewsIdRegex.test(hotel.url || hotel.configurationId))) {
173
+ this.hotelsId.push(hotel.url || hotel.configurationId);
174
+ }
140
175
  // Si no tiene categoría, los separamos para mostrarlos sin agrupar
141
176
  if (!category) {
142
177
  ungroupedHotels.push(hotelOption);
@@ -151,18 +186,24 @@ export class BabylonEngineMewsComponent {
151
186
  const groupKeys = Object.keys(groupsMap);
152
187
  // Si ningún hotel tiene categoría, devolvemos la lista completamente plana
153
188
  if (groupKeys.length === 0) {
189
+ ungroupedHotels.unshift(allHotelsOption);
154
190
  return ungroupedHotels;
155
191
  }
156
- // Si hay mezcla (algunos con categoría y otros sin ella),
157
- // podemos meter los huérfanos en un grupo sin categoría o devolver un formato compatible.
158
- const resultGroups = groupKeys.map((category) => ({
159
- label: category,
160
- items: groupsMap[category],
161
- }));
192
+ // Si hay grupos, añadimos la opción global al principio en su propio grupo o encabezado
193
+ const resultGroups = [
194
+ {
195
+ label: '',
196
+ items: [allHotelsOption],
197
+ },
198
+ ...groupKeys.map((category) => ({
199
+ label: category,
200
+ items: groupsMap[category],
201
+ })),
202
+ ];
162
203
  // Opcional: Si quieres que los que no tienen categoría aparezcan en un grupo llamado "Otros" o similar:
163
204
  if (ungroupedHotels.length > 0) {
164
205
  resultGroups.push({
165
- label: 'Otros',
206
+ label: this.getOtherLabel(),
166
207
  items: ungroupedHotels,
167
208
  });
168
209
  }
@@ -173,10 +214,6 @@ export class BabylonEngineMewsComponent {
173
214
  */
174
215
  openMewsEngine(event) {
175
216
  event.preventDefault();
176
- if (this.form.invalid) {
177
- this.handleDisabledClick(event);
178
- return;
179
- }
180
217
  if (!isPlatformBrowser(this.platformId) ||
181
218
  typeof Mews === 'undefined') {
182
219
  console.warn('El script de Mews no está disponible.');
@@ -206,10 +243,19 @@ export class BabylonEngineMewsComponent {
206
243
  console.warn('El script de Mews no está disponible.');
207
244
  return;
208
245
  }
209
- const mewsOptions = {
210
- configurationIds: [configId],
211
- language: this.getLanguageFromUrl(),
212
- };
246
+ let mewsOptions;
247
+ if (configId) {
248
+ mewsOptions = {
249
+ configurationIds: [configId],
250
+ language: this.getLanguageFromUrl(),
251
+ };
252
+ }
253
+ else {
254
+ mewsOptions = {
255
+ configurationIds: this.hotelsId,
256
+ language: this.getLanguageFromUrl(),
257
+ };
258
+ }
213
259
  if (formValues.promo) {
214
260
  mewsOptions.mewsVoucherCode = formValues.promo;
215
261
  }
@@ -335,4 +381,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
335
381
  }], close: [{
336
382
  type: Output
337
383
  }] } });
338
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1lbmdpbmUtbWV3cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2JhYnlsb24tZW5naW5lLW1ld3MvYmFieWxvbi1lbmdpbmUtbWV3cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2JhYnlsb24tZW5naW5lLW1ld3MvYmFieWxvbi1lbmdpbmUtbWV3cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFZLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQVksY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFDSCwyQkFBMkIsR0FFOUIsTUFBTSx3REFBd0QsQ0FBQzs7Ozs7Ozs7QUFJaEUsTUFBTSxnQkFBZ0IsR0FBOEI7SUFDaEQsd0JBQXdCLEVBQUUsUUFBUTtJQUNsQyxvQkFBb0IsRUFBRSxP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QixDQUFDLE1BQU07OEJBR3RCLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDeUIsY0FBYztzQkFBN0QsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRXJDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFBMQVRGT1JNX0lELFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEZvcm1Db250cm9sLFxuICAgIEZvcm1Hcm91cCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENhbGVuZGFyLCBDYWxlbmRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xuaW1wb3J0IHsgRHJvcGRvd24sIERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYWJ5bG9uQnV0dG9uSSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1idXR0b24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25JbnB1dEkgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24taW5wdXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtcbiAgICBCYWJ5bG9uR3Vlc3RzUG9wdXBDb21wb25lbnQsXG4gICAgZ3Vlc3RzVmFsdWUsXG59IGZyb20gJy4uL2JhYnlsb24tZ3Vlc3RzLXBvcHVwL2JhYnlsb24tZ3Vlc3RzLXBvcHVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYWJ5bG9uR3Vlc3RzUG9wdXBJIH0gZnJvbSAnLi4vYmFieWxvbi1ndWVzdHMtcG9wdXAvYmFieWxvbi1ndWVzdHMtcG9wdXAuaW50ZXJmYWNlJztcblxuZGVjbGFyZSBjb25zdCBNZXdzOiBhbnk7XG5jb25zdCBob3RlbENhdGVnb3J5TWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICdEdW5hIFBhcnF1ZSBCZWFjaCBDbHViJzogJ1Jlc29ydCcsXG4gICAgJ0hTIE1pbGZvbnRlcyBCZWFjaCc6ICdIb3RlbCcsXG4gICAgJ1F1aW50YSBQZWRhZ8OzZ2ljYSBkYSBTYW1vcXVlaXJpbmhhJzogJ0NvdW50cnkgSG91c2VzJyxcbiAgICAnTW9pbmhvIGRhIEFzbmVpcmEnOiAnQ291bnRyeSBIb3VzZXMnLFxuICAgICdNaWxmb250ZXMgR3Vlc3QgSG91c2UnOiAnR3Vlc3QgSG91c2UnLFxuICAgICdNaWxmb250ZXMgUHJpdmF0ZSBIb21lcyc6ICdSb29tcyAmIEFwYXJ0bWVudHMnLFxuICAgICdCbHVlIEJhbWJvbyBIb3RlbCc6ICdIb3RlbCcsXG4gICAgQ29ya29vbjogJ0hvdGVsJyxcbiAgICAnTGF6eSBEYXlzJzogJ1Jvb21zJyxcbiAgICAnQXBhcnRhbWVudG9zIGRhIFZpbGEnOiAnUm9vbXMgJiBBcGFydG1lbnRzJyxcbiAgICAnUMOhdGlvcyBkYSBWaWxhJzogJ0FwYXJ0bWVudHMnLFxuICAgICdRdWFydG9zIGRhIFZpbGEnOiAnUm9vbXMnLFxuICAgICdSaXZlciBJbm4nOiAnUm9vbXMnLFxuICAgICdRdWludGEgZG8gTW9pbmhvIGRlIFZlbnRvJzogJ1Jvb21zICYgQXBhcnRtZW50cycsXG4gICAgJ05hdHVyYXJ0ZSBDYW1wbyc6ICdDb3VudHJ5IEhvdXNlcycsXG4gICAgJ05hdHVyYXJ0ZSBSaW8nOiAnQ291bnRyeSBIb3VzZXMnLFxuICAgICdCdWxsZG9nIElubic6ICdSb29tcycsXG59O1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItYmFieWxvbi1lbmdpbmUtbWV3cycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBDYWxlbmRhck1vZHVsZSxcbiAgICAgICAgQmFieWxvbkd1ZXN0c1BvcHVwQ29tcG9uZW50LFxuICAgICAgICBEaWFsb2dNb2R1bGUsXG4gICAgICAgIERyb3Bkb3duTW9kdWxlLFxuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFieWxvbi1lbmdpbmUtbWV3cy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2JhYnlsb24tZW5naW5lLW1ld3MuY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBCYWJ5bG9uRW5naW5lTWV3c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZCgnZGF0ZXBpY2tlcicpIGRhdGVwaWNrZXIhOiBDYWxlbmRhcjtcbiAgICBAVmlld0NoaWxkKCdob3RlbHNEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBob3RlbHNEcm9wZG93biE6IERyb3Bkb3duO1xuXG4gICAgQElucHV0KCkgbW9kYWw/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGRhdGVwaWNrZXJEYXRhPzogQmFieWxvbklucHV0STtcbiAgICBASW5wdXQoKSBndWVzdHNJbnB1dD86IEJhYnlsb25JbnB1dEk7XG4gICAgQElucHV0KCkgcHJvbW9JbnB1dD86IEJhYnlsb25JbnB1dEk7XG4gICAgQElucHV0KCkgZ3Vlc3RzPzogQmFieWxvbkd1ZXN0c1BvcHVwSTtcbiAgICBASW5wdXQoKSBidXR0b24/OiBCYWJ5bG9uQnV0dG9uSTtcbiAgICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBzdWJ0aXRsZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBkZWZhdWx0Q29uZmlndXJhdGlvbklkPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG9ubHlBZHVsdHM/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNob3dBZ2VzID0gZmFsc2U7XG4gICAgQElucHV0KCkgZGVmYXVsdEJ1dHRvbj86IEJhYnlsb25CdXR0b25JO1xuICAgIEBJbnB1dCgpIGhvdGVsc0lucHV0PzogQmFieWxvbklucHV0STtcbiAgICBASW5wdXQoKSBob3RlbHM/OiBNZXdzSG90ZWxzRHJvcGRvd25JO1xuICAgIEBJbnB1dCgpIGhvdGVsc1BsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRlZmF1bHRQcm9tb0NvZGU/OiBzdHJpbmc7XG5cbiAgICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIHNob3dpbmdFbmdpbmVNb2RhbDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8vVE9ET1xuXG4gICAgaG90ZWxzVmFsdWU6IE1ld3NIb3RlbE9wdGlvbiB8IG51bGwgPSBudWxsO1xuICAgIGRhdGVwaWNrZXJWYWx1ZSA9ICcnO1xuICAgIG1pbkRhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGhvdGVsRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblxuICAgIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgaG90ZWxzOiBuZXcgRm9ybUNvbnRyb2w8TWV3c0hvdGVsT3B0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIFtcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgIF0pLFxuICAgICAgICBkYXRlczogbmV3IEZvcm1Db250cm9sKHRoaXMuZGF0ZXBpY2tlclZhbHVlKSxcbiAgICAgICAgZ3Vlc3RzOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICAgIHByb21vOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgIH0pO1xuXG4gICAgZ3Vlc3RzVmFsdWUgPSAnMDInO1xuICAgIGd1ZXN0c1ZhbHVlU2VwYXJhdGVzID0ge1xuICAgICAgICBhZHVsdHM6IDIsXG4gICAgICAgIGp1bmlvcnM6IDAsXG4gICAgICAgIGtpZHM6IDAsXG4gICAgICAgIGluZmFudHM6IDAsXG4gICAgfTtcbiAgICBzaG93aW5nR3Vlc3RzID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICAgIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIHByaXZhdGUgZ2V0TGFuZ3VhZ2VGcm9tVXJsKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuICdlcy1FUyc7XG5cbiAgICAgICAgY29uc3QgcGF0aG5hbWUgPSB0aGlzLmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lO1xuICAgICAgICBjb25zdCBsYW5nQ29kZSA9IHBhdGhuYW1lLnNwbGl0KCcvJylbMV0/LnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgY29uc3QgbGFuZ3VhZ2VNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICBlbjogJ2VuLVVTJyxcbiAgICAgICAgICAgIGVzOiAnZXMtRVMnLFxuICAgICAgICAgICAgcHQ6ICdwdC1QVCcsXG4gICAgICAgICAgICBkZTogJ2RlLURFJyxcbiAgICAgICAgICAgIGZyOiAnZnItRlInLFxuICAgICAgICAgICAgaXQ6ICdpdC1JVCcsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGxhbmd1YWdlTWFwW2xhbmdDb2RlXSB8fCAnZXMtRVMnO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1pbkRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICAgIHRoaXMuZ3Vlc3RzVmFsdWUgPSAnMDInO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdndWVzdHMnKT8uc2V0VmFsdWUodGhpcy5ndWVzdHNWYWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdFByb21vQ29kZSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgncHJvbW8nKT8uc2V0VmFsdWUodGhpcy5kZWZhdWx0UHJvbW9Db2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubG9hZEVuZ2luZURhdGEoKTtcbiAgICB9XG5cbiAgICB0b2dnbGVFbmdpbmVNb2RhbCgpIHtcbiAgICAgICAgdGhpcy5zaG93aW5nRW5naW5lTW9kYWwgPSAhdGhpcy5zaG93aW5nRW5naW5lTW9kYWw7XG4gICAgfVxuXG4gICAgdG9nZ2xlSG90ZWxzRHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhvdGVsc0Ryb3Bkb3duKSB7XG4gICAgICAgICAgICB0aGlzLmhvdGVsc0Ryb3Bkb3duLnNob3coKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZURyb3Bkb3duQ2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3RlbHNWYWx1ZSA9IGV2ZW50LnZhbHVlO1xuICAgIH1cblxuICAgIGhhbmRsZURpc2FibGVkQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICh0aGlzLmZvcm0uZ2V0KCdob3RlbHMnKT8uaW52YWxpZCkge1xuICAgICAgICAgICAgdGhpcy5ob3RlbEVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMuaG90ZWxFcnJvciA9IGZhbHNlKSwgNTAwKTtcbiAgICAgICAgICAgIHRoaXMuaG90ZWxzRHJvcGRvd24uc2hvdygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlU2hvd2luZ0d1ZXN0cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93aW5nR3Vlc3RzID0gIXRoaXMuc2hvd2luZ0d1ZXN0cztcbiAgICB9XG5cbiAgICBndWVzdHNDaGFuZ2UoZGF0YTogZ3Vlc3RzVmFsdWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5hZHVsdHMgPSBOdW1iZXIoZGF0YS5hZHVsdHNWYWx1ZT8uY29kZSkgfHwgMTtcbiAgICAgICAgdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5qdW5pb3JzID1cbiAgICAgICAgICAgIE51bWJlcihkYXRhLmp1bmlvcnNWYWx1ZT8uY29kZSkgfHwgMDtcbiAgICAgICAgdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5raWRzID0gTnVtYmVyKGRhdGEua2lkc1ZhbHVlPy5jb2RlKSB8fCAwO1xuICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmluZmFudHMgPVxuICAgICAgICAgICAgTnVtYmVyKGRhdGEuaW5mYW50c1ZhbHVlPy5jb2RlKSB8fCAwO1xuXG4gICAgICAgIGNvbnN0IHRvdGFsR3Vlc3RzID1cbiAgICAgICAgICAgIHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuYWR1bHRzICtcbiAgICAgICAgICAgIHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuanVuaW9ycyArXG4gICAgICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmtpZHMgK1xuICAgICAgICAgICAgdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5pbmZhbnRzO1xuXG4gICAgICAgIHRoaXMuZ3Vlc3RzVmFsdWUgPVxuICAgICAgICAgICAgdG90YWxHdWVzdHMgPCAxMCA/ICcwJyArIHRvdGFsR3Vlc3RzIDogdG90YWxHdWVzdHMudG9TdHJpbmcoKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnZ3Vlc3RzJyk/LnNldFZhbHVlKHRoaXMuZ3Vlc3RzVmFsdWUpO1xuICAgICAgICB0aGlzLnRvZ2dsZVNob3dpbmdHdWVzdHMoKTtcbiAgICB9XG4gICAgZ3JvdXBIb3RlbHMoYXBpSG90ZWxzOiBhbnlbXSk6IE1ld3NIb3RlbE9wdGlvbltdIHwgTWV3c0hvdGVsR3JvdXBbXSB7XG4gICAgICAgIGNvbnN0IGdyb3Vwc01hcDogeyBbY2F0ZWdvcnk6IHN0cmluZ106IE1ld3NIb3RlbE9wdGlvbltdIH0gPSB7fTtcbiAgICAgICAgY29uc3QgdW5ncm91cGVkSG90ZWxzOiBNZXdzSG90ZWxPcHRpb25bXSA9IFtdO1xuXG4gICAgICAgIGFwaUhvdGVscy5mb3JFYWNoKChob3RlbCkgPT4ge1xuICAgICAgICAgICAgLy8gQnVzY2EgbGEgY2F0ZWdvcsOtYSBwb3IgbGEgcHJvcGllZGFkICdsb2NhdGlvbicgbyBwb3IgZWwgbWFwYSBlc3TDoXRpY29cbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gaG90ZWwubG9jYXRpb24gfHwgaG90ZWxDYXRlZ29yeU1hcFtob3RlbC5uYW1lXTtcblxuICAgICAgICAgICAgY29uc3QgaG90ZWxPcHRpb246IE1ld3NIb3RlbE9wdGlvbiA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBob3RlbC5uYW1lLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25JZDogaG90ZWwudXJsIHx8IGhvdGVsLmNvbmZpZ3VyYXRpb25JZCxcbiAgICAgICAgICAgICAgICBpZDogaG90ZWwuaWQsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246IGhvdGVsLmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIFNpIG5vIHRpZW5lIGNhdGVnb3LDrWEsIGxvcyBzZXBhcmFtb3MgcGFyYSBtb3N0cmFybG9zIHNpbiBhZ3J1cGFyXG4gICAgICAgICAgICBpZiAoIWNhdGVnb3J5KSB7XG4gICAgICAgICAgICAgICAgdW5ncm91cGVkSG90ZWxzLnB1c2goaG90ZWxPcHRpb24pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIWdyb3Vwc01hcFtjYXRlZ29yeV0pIHtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBzTWFwW2NhdGVnb3J5XSA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBncm91cHNNYXBbY2F0ZWdvcnldLnB1c2goaG90ZWxPcHRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBncm91cEtleXMgPSBPYmplY3Qua2V5cyhncm91cHNNYXApO1xuXG4gICAgICAgIC8vIFNpIG5pbmfDum4gaG90ZWwgdGllbmUgY2F0ZWdvcsOtYSwgZGV2b2x2ZW1vcyBsYSBsaXN0YSBjb21wbGV0YW1lbnRlIHBsYW5hXG4gICAgICAgIGlmIChncm91cEtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5ncm91cGVkSG90ZWxzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2kgaGF5IG1lemNsYSAoYWxndW5vcyBjb24gY2F0ZWdvcsOtYSB5IG90cm9zIHNpbiBlbGxhKSxcbiAgICAgICAgLy8gcG9kZW1vcyBtZXRlciBsb3MgaHXDqXJmYW5vcyBlbiB1biBncnVwbyBzaW4gY2F0ZWdvcsOtYSBvIGRldm9sdmVyIHVuIGZvcm1hdG8gY29tcGF0aWJsZS5cbiAgICAgICAgY29uc3QgcmVzdWx0R3JvdXBzOiBNZXdzSG90ZWxHcm91cFtdID0gZ3JvdXBLZXlzLm1hcCgoY2F0ZWdvcnkpID0+ICh7XG4gICAgICAgICAgICBsYWJlbDogY2F0ZWdvcnksXG4gICAgICAgICAgICBpdGVtczogZ3JvdXBzTWFwW2NhdGVnb3J5XSxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIC8vIE9wY2lvbmFsOiBTaSBxdWllcmVzIHF1ZSBsb3MgcXVlIG5vIHRpZW5lbiBjYXRlZ29yw61hIGFwYXJlemNhbiBlbiB1biBncnVwbyBsbGFtYWRvIFwiT3Ryb3NcIiBvIHNpbWlsYXI6XG4gICAgICAgIGlmICh1bmdyb3VwZWRIb3RlbHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmVzdWx0R3JvdXBzLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnT3Ryb3MnLCAvLyBPIHVuYSBjYWRlbmEgdmFjw61hICcnIHNpIGVsIGRpc2XDsW8gbG8gcGVybWl0ZVxuICAgICAgICAgICAgICAgIGl0ZW1zOiB1bmdyb3VwZWRIb3RlbHMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHRHcm91cHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW52b2NhY2nDs24gYSBsYSBBUEkgZGUgTWV3cyBEaXN0cmlidXRvciBhbCBoYWNlciBjbGljIGVuIEJ1c2NhclxuICAgICAqL1xuICAgIG9wZW5NZXdzRW5naW5lKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVEaXNhYmxlZENsaWNrKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8XG4gICAgICAgICAgICB0eXBlb2YgTWV3cyA9PT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0VsIHNjcmlwdCBkZSBNZXdzIG5vIGVzdMOhIGRpc3BvbmlibGUuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5mb3JtLnZhbHVlO1xuICAgICAgICBjb25zdCBjb25maWdJZCA9XG4gICAgICAgICAgICBmb3JtVmFsdWVzLmhvdGVscz8uY29uZmlndXJhdGlvbklkIHx8XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRDb25maWd1cmF0aW9uSWQgfHxcbiAgICAgICAgICAgICcnO1xuXG4gICAgICAgIGNvbnN0IGlzVXJsID0gKHN0cmluZzogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIHN0cmluZy5zdGFydHNXaXRoKCdodHRwOi8vJykgfHxcbiAgICAgICAgICAgICAgICAgICAgc3RyaW5nLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vJylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChpc1VybChjb25maWdJZCkpIHtcbiAgICAgICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICAgICAgd2luZG93Lm9wZW4oY29uZmlnSWQsICdfYmxhbmsnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8XG4gICAgICAgICAgICB0eXBlb2YgTWV3cyA9PT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0VsIHNjcmlwdCBkZSBNZXdzIG5vIGVzdMOhIGRpc3BvbmlibGUuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtZXdzT3B0aW9uczogYW55ID0ge1xuICAgICAgICAgICAgY29uZmlndXJhdGlvbklkczogW2NvbmZpZ0lkXSxcbiAgICAgICAgICAgIGxhbmd1YWdlOiB0aGlzLmdldExhbmd1YWdlRnJvbVVybCgpLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChmb3JtVmFsdWVzLnByb21vKSB7XG4gICAgICAgICAgICBtZXdzT3B0aW9ucy5tZXdzVm91Y2hlckNvZGUgPSBmb3JtVmFsdWVzLnByb21vO1xuICAgICAgICB9XG5cbiAgICAgICAgTWV3cy5EaXN0cmlidXRvcihtZXdzT3B0aW9ucywgKGFwaTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShmb3JtVmFsdWVzLmRhdGVzKSAmJlxuICAgICAgICAgICAgICAgIGZvcm1WYWx1ZXMuZGF0ZXMubGVuZ3RoID09PSAyXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbc3RhcnREYXRlLCBlbmREYXRlXSA9IGZvcm1WYWx1ZXMuZGF0ZXM7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0RGF0ZSkgYXBpLnNldFN0YXJ0RGF0ZShuZXcgRGF0ZShzdGFydERhdGUpKTtcbiAgICAgICAgICAgICAgICBpZiAoZW5kRGF0ZSkgYXBpLnNldEVuZERhdGUobmV3IERhdGUoZW5kRGF0ZSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmFkdWx0cykge1xuICAgICAgICAgICAgICAgICAgICBhcGkuc2V0QWR1bHRDb3VudCh0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmFkdWx0cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmtpZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBpLnNldENoaWxkQ291bnQodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5raWRzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChtZXdzT3B0aW9ucy5tZXdzVm91Y2hlckNvZGUpIHtcbiAgICAgICAgICAgICAgICBhcGkuc2V0Vm91Y2hlckNvZGUobWV3c09wdGlvbnMubWV3c1ZvdWNoZXJDb2RlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1ld3NPcHRpb25zLmxhbmd1YWdlKSB7XG4gICAgICAgICAgICAgICAgYXBpLnNldExhbmd1YWdlQ29kZShtZXdzT3B0aW9ucy5sYW5ndWFnZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFicmlyIGVsIG1vdG9yIGRlIHJlc2VydmFzIG1vZGFsXG4gICAgICAgICAgICBhcGkuc2hvd1Jvb21zKGNvbmZpZ0lkKTtcbiAgICAgICAgICAgIGFwaS5vcGVuKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCBkZWZhdWx0R3Vlc3RzVmFsdWUoKTogZ3Vlc3RzVmFsdWUge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWR1bHRzVmFsdWU6IHtcbiAgICAgICAgICAgICAgICBjb2RlOiB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmFkdWx0cyxcbiAgICAgICAgICAgICAgICBuYW1lOiBTdHJpbmcodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5hZHVsdHMpLnBhZFN0YXJ0KDIsICcwJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAga2lkc1ZhbHVlOiB7XG4gICAgICAgICAgICAgICAgY29kZTogdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5raWRzLFxuICAgICAgICAgICAgICAgIG5hbWU6IFN0cmluZyh0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmtpZHMpLnBhZFN0YXJ0KDIsICcwJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAganVuaW9yc1ZhbHVlOiB7XG4gICAgICAgICAgICAgICAgY29kZTogdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5qdW5pb3JzLFxuICAgICAgICAgICAgICAgIG5hbWU6IFN0cmluZyh0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmp1bmlvcnMpLnBhZFN0YXJ0KFxuICAgICAgICAgICAgICAgICAgICAyLFxuICAgICAgICAgICAgICAgICAgICAnMCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluZmFudHNWYWx1ZToge1xuICAgICAgICAgICAgICAgIGNvZGU6IHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuaW5mYW50cyxcbiAgICAgICAgICAgICAgICBuYW1lOiBTdHJpbmcodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5pbmZhbnRzKS5wYWRTdGFydChcbiAgICAgICAgICAgICAgICAgICAgMixcbiAgICAgICAgICAgICAgICAgICAgJzAnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkRW5naW5lRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG5cbiAgICAgICAgLy8gU2kgbG9zIGhvdGVsZXMgdmllbmVuIHNpbiBhZ3J1cGFyIGRlc2RlIGVsIElucHV0LCBsb3MgdHJhbnNmb3JtYW1vcyBhdXRvbcOhdGljYW1lbnRlOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmhvdGVscyAmJlxuICAgICAgICAgICAgdGhpcy5ob3RlbHMub3B0aW9ucyAmJlxuICAgICAgICAgICAgdGhpcy5ob3RlbHMub3B0aW9ucy5sZW5ndGggPiAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgLy8gQ29tcHJvYmFtb3Mgc2kgeWEgZXN0w6FuIGFncnVwYWRvcyBvIHNpIHNvbiB1bmEgbGlzdGEgcGxhbmEgZGUgbGEgQVBJXG4gICAgICAgICAgICBjb25zdCBmaXJzdE9wdGlvbjogYW55ID0gdGhpcy5ob3RlbHMub3B0aW9uc1swXTtcblxuICAgICAgICAgICAgLy8gU2kgbm8gdGllbmUgbGEgcHJvcGllZGFkICdpdGVtcycsIGFzdW1pbW9zIHF1ZSBlcyB1bmEgbGlzdGEgcGxhbmEgeSBoYXkgcXVlIGFncnVwYXJsYVxuICAgICAgICAgICAgaWYgKCFmaXJzdE9wdGlvbi5pdGVtcykge1xuICAgICAgICAgICAgICAgIHRoaXMuaG90ZWxzID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmhvdGVscyxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5ncm91cEhvdGVscyh0aGlzLmhvdGVscy5vcHRpb25zKSxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IHRydWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBpbnRlcmZhY2UgTWV3c0hvdGVsT3B0aW9uIHtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIGNvbmZpZ3VyYXRpb25JZD86IHN0cmluZztcbiAgICBpZD86IG51bWJlcjtcbiAgICBsb2NhdGlvbj86IHN0cmluZztcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIE1ld3NIb3RlbEdyb3VwIHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICAgIGl0ZW1zOiBNZXdzSG90ZWxPcHRpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXdzSG90ZWxzRHJvcGRvd25JIHtcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBvcHRpb25zPzogTWV3c0hvdGVsT3B0aW9uW10gfCBNZXdzSG90ZWxHcm91cFtdO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHNtYWxsVGl0bGU/OiBzdHJpbmc7XG4gICAgZXJyb3I/OiBzdHJpbmc7XG4gICAgZ3JvdXA/OiBib29sZWFuO1xufVxuIiwiPCEtLURlc2t0b3AgRW5naW5lIE1ld3MtLT5cbjxkaXYgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmUgYmdfd2hpdGVcIiBbbmdDbGFzc109XCJ7IGVuZ2luZV9fY2FkZW5hOiBob3RlbHMgfVwiPlxuICAgIEBpZiAoZGVmYXVsdEJ1dHRvbikge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWRlZmF1bHQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIFtuYW1lXT1cImRlZmF1bHRCdXR0b24ubGFiZWwgfHwgJydcIiBjbGFzcz1cImJ0bi1jYWxsXCI+XG4gICAgICAgICAgICAgICAge3sgZGVmYXVsdEJ1dHRvbi5sYWJlbCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gQk9Uw5NOIFBBUkEgTcOTVklMOiBPY3VwYSB0b2RvIGVsIGFuY2hvIGVuIHBhbnRhbGxhcyBwZXF1ZcOxYXMgLS0+XG4gICAgPGRpdiBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9fbW9iaWxlLXRyaWdnZXItY29udGFpbmVyIGQtYmxvY2sgZC1sZy1ub25lXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX2NhbGwgdy0xMDAgbW9iaWxlLWVuZ2luZS1idG5cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUVuZ2luZU1vZGFsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBidXR0b24/LmxhYmVsIHx8ICdSZXNlcnZhcicgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEZPUk1VTEFSSU8gKFNlIG11ZXN0cmEgbm9ybWFsIGVuIERlc2t0b3AsIG8gZGVudHJvIGRlbCBtb2RhbCBlbiBNw7N2aWwpIC0tPlxuICAgIDxmb3JtXG4gICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19mb3JtIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgID5cbiAgICAgICAgQGlmIChcbiAgICAgICAgICAgIGhvdGVsc0lucHV0ICYmIGhvdGVscyAmJiBob3RlbHMub3B0aW9ucyAmJiBob3RlbHMub3B0aW9ucy5sZW5ndGggPiAxXG4gICAgICAgICkge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19pbnB1dC0td3JhcHBlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGhvdGVsc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHAtZHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVfX2lucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiaG90ZWxzLm9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiaG90ZWxzPy5ncm91cCB8fCB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaG90ZWxzXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImhvdGVsc1BsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uR3JvdXBMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uR3JvdXBDaGlsZHJlbj1cIml0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImhhbmRsZURyb3Bkb3duQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAjaG90ZWxzRHJvcGRvd25cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJncm91cFwiIGxldC1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZvbnQtYm9sZCB0ZXh0LXVwcGVyY2FzZSBwLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGdyb3VwLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cIml0ZW1cIiBsZXQtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgaXRlbS5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9wLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFieWxvbi1hcnJvdy1ib3R0b21cIj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9fZGF0ZXBpY2tlci0td3JhcHBlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHAtY2FsZW5kYXJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9fZGF0ZXBpY2tlclwiXG4gICAgICAgICAgICAgICAgW3Nob3dPdGhlck1vbnRoc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgZGF0ZUZvcm1hdD1cImRkLW1tLXl5XCJcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25Nb2RlPVwicmFuZ2VcIlxuICAgICAgICAgICAgICAgIFtudW1iZXJPZk1vbnRoc109XCIyXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0ZXBpY2tlckRhdGE/LnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkYXRlc1wiXG4gICAgICAgICAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgICAgICAgICAgI2RhdGVwaWNrZXJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHlJbnB1dF09XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fcHJpbWFyeSBidG4tLWxpZ2h0IGJhYnlsb24tcGx1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVwaWNrZXIub3ZlcmxheVZpc2libGUgPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3AtY2FsZW5kYXI+XG5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVfX2RhdGVwaWNrZXItLWljb24gYmFieWxvbi1hcnJvdy1ib3R0b21cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19pbnB1dC0td3JhcHBlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTaG93aW5nR3Vlc3RzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKGd1ZXN0c0lucHV0Py5wbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3Vlc3QtaW5mb1wiXG4gICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ3Vlc3RzSW5wdXQ/LnBsYWNlaG9sZGVyICsgJzogICdcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9faW5wdXQgbm8tY2FyZXRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ3Vlc3RzSW5wdXQ/LnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJndWVzdHNcIlxuICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWJ5bG9uLWFycm93LWJvdHRvbVwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHAtZGlhbG9nIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19kaWFsb2dcIiBbKHZpc2libGUpXT1cInNob3dpbmdHdWVzdHNcIj5cbiAgICAgICAgICAgIDxsaWItYmFieWxvbi1ndWVzdHMtcG9wdXBcbiAgICAgICAgICAgICAgICBbb25seUFkdWx0c109XCJvbmx5QWR1bHRzXCJcbiAgICAgICAgICAgICAgICBbc2hvd0FnZXNdPVwic2hvd0FnZXNcIlxuICAgICAgICAgICAgICAgIFtkZWZhdWx0VmFsdWVdPVwiZGVmYXVsdEd1ZXN0c1ZhbHVlXCJcbiAgICAgICAgICAgICAgICBbYWR1bHRzRHJvcGRvd25dPVwiZ3Vlc3RzPy5hZHVsdHNEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgW2FnZXNEcm9wZG93bl09XCJndWVzdHM/LmFnZXNEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgW2FnZXNMYWJlbF09XCJndWVzdHM/LmFnZXNMYWJlbFwiXG4gICAgICAgICAgICAgICAgW2JhYmllc0Ryb3Bkb3duXT1cImd1ZXN0cz8uYmFiaWVzRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFtraWRzRHJvcGRvd25dPVwiZ3Vlc3RzPy5raWRzRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFtqdW5pb3JzRHJvcGRvd25dPVwiZ3Vlc3RzPy5qdW5pb3JzRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFtidG5dPVwiZ3Vlc3RzPy5idG5cIlxuICAgICAgICAgICAgICAgICNndWVzdHBpY2tlclxuICAgICAgICAgICAgICAgIChhcHBseSk9XCJndWVzdHNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2xpYi1iYWJ5bG9uLWd1ZXN0cy1wb3B1cD5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3Vlc3RzLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fcHJpbWFyeSBidG4tLWxpZ2h0IGJhYnlsb24tcGx1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNsb3NlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNob3dpbmdHdWVzdHMoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvcC1kaWFsb2c+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVfX2lucHV0LS13cmFwcGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHJvbW8tY29kZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9tb0lucHV0Py5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJvbW9cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFieWxvbi10YWdcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKGJ1dHRvbikge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fY2FsbFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAnYnRuLWRpc2FibGVkJzogZm9ybS5pbnZhbGlkLFxuICAgICAgICAgICAgICAgICAgICAnc2hha2UtYW5pbWF0aW9uJzogaG90ZWxFcnJvcixcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICBpZD1cImJ0bi1zdWJtaXRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuTWV3c0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBidXR0b24ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgPC9mb3JtPlxuPC9kaXY+XG5cbjwhLS0gTU9EQUwgREUgUEFOVEFMTEEgQ09NUExFVEEgUEFSQSBNw5NWSUwgLS0+XG48cC1kaWFsb2dcbiAgICBzdHlsZUNsYXNzPVwiYmFieWxvbl9fZW5naW5lLWZ1bGxzY3JlZW4tbW9kYWxcIlxuICAgIFsodmlzaWJsZSldPVwic2hvd2luZ0VuZ2luZU1vZGFsXCJcbiAgICBbbW9kYWxdPVwidHJ1ZVwiXG4gICAgW2RyYWdnYWJsZV09XCJmYWxzZVwiXG4gICAgW3Jlc2l6YWJsZV09XCJmYWxzZVwiXG4gICAgW2Rpc21pc3NhYmxlTWFza109XCJ0cnVlXCJcbj5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZW5naW5lLW1vZGFsLWhlYWRlciB3LTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX3ByaW1hcnkgYnRuLS1saWdodCBiYWJ5bG9uLXBsdXMgY2xvc2UtbW9kYWwtYnRuXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRW5naW5lTW9kYWwoKVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8IS0tIENvbnRlbmlkbyBjbG9uYWRvL3JldXRpbGl6YWRvIGRlbCBtb3RvciBwYXJhIG3Ds3ZpbGVzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmUtbW9kYWwtY29udGVudFwiPlxuICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVfX2Zvcm0gZC1mbGV4IGFsaWduLWl0ZW1zLXN0cmV0Y2hcIlxuICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICBob3RlbHNJbnB1dCAmJlxuICAgICAgICAgICAgICAgIGhvdGVscyAmJlxuICAgICAgICAgICAgICAgIGhvdGVscy5vcHRpb25zICYmXG4gICAgICAgICAgICAgICAgaG90ZWxzLm9wdGlvbnMubGVuZ3RoID4gMVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9faW5wdXQtLXdyYXBwZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBob3RlbHNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJob3RlbHMub3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiaG90ZWxzPy5ncm91cCB8fCB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImhvdGVsc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaG90ZWxzUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbkdyb3VwTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25Hcm91cENoaWxkcmVuPVwiaXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImhhbmRsZURyb3Bkb3duQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI2hvdGVsc0Ryb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJncm91cFwiIGxldC1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZm9udC1ib2xkIHRleHQtdXBwZXJjYXNlIHAtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBncm91cC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJpdGVtXCIgbGV0LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBpdGVtLm5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvcC1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWJ5bG9uLWFycm93LWJvdHRvbVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9fZGF0ZXBpY2tlci0td3JhcHBlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8cC1jYWxlbmRhclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9fZGF0ZXBpY2tlclwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93T3RoZXJNb250aHNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0PVwiZGQtbW0teXlcIlxuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25Nb2RlPVwicmFuZ2VcIlxuICAgICAgICAgICAgICAgICAgICBbbnVtYmVyT2ZNb250aHNdPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRlcGlja2VyRGF0YT8ucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkYXRlc1wiXG4gICAgICAgICAgICAgICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICAgICAgICAgICAgICAjZGF0ZXBpY2tlclxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHlJbnB1dF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9wcmltYXJ5IGJ0bi0tbGlnaHQgYmFieWxvbi1wbHVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZXBpY2tlci5vdmVybGF5VmlzaWJsZSA9IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3AtY2FsZW5kYXI+XG5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9fZGF0ZXBpY2tlci0taWNvbiBiYWJ5bG9uLWFycm93LWJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9faW5wdXQtLXdyYXBwZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNob3dpbmdHdWVzdHMoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGlmIChndWVzdHNJbnB1dD8ucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3Vlc3QtaW5mb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImd1ZXN0c0lucHV0Py5wbGFjZWhvbGRlciArICc6ICAnXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19pbnB1dCBuby1jYXJldFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImd1ZXN0c0lucHV0Py5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImd1ZXN0c1wiXG4gICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhYnlsb24tYXJyb3ctYm90dG9tXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKHNob3dpbmdHdWVzdHMgJiYgZ3Vlc3RzKSB7XG4gICAgICAgICAgICAgICAgPGxpYi1iYWJ5bG9uLWd1ZXN0cy1wb3B1cFxuICAgICAgICAgICAgICAgICAgICBbb25seUFkdWx0c109XCJvbmx5QWR1bHRzXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dBZ2VzXT1cInNob3dBZ2VzXCJcbiAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJkZWZhdWx0R3Vlc3RzVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbYWR1bHRzRHJvcGRvd25dPVwiZ3Vlc3RzPy5hZHVsdHNEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgIFthZ2VzRHJvcGRvd25dPVwiZ3Vlc3RzPy5hZ2VzRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICBbYWdlc0xhYmVsXT1cImd1ZXN0cz8uYWdlc0xhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW2JhYmllc0Ryb3Bkb3duXT1cImd1ZXN0cz8uYmFiaWVzRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICBba2lkc0Ryb3Bkb3duXT1cImd1ZXN0cz8ua2lkc0Ryb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgW2p1bmlvcnNEcm9wZG93bl09XCJndWVzdHM/Lmp1bmlvcnNEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgIFtidG5dPVwiZ3Vlc3RzPy5idG5cIlxuICAgICAgICAgICAgICAgICAgICAjZ3Vlc3RwaWNrZXJcbiAgICAgICAgICAgICAgICAgICAgKGFwcGx5KT1cImd1ZXN0c0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9saWItYmFieWxvbi1ndWVzdHMtcG9wdXA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImd1ZXN0cy1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX3ByaW1hcnkgYnRuLS1saWdodCBiYWJ5bG9uLXBsdXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hvd2luZ0d1ZXN0cygpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVfX2lucHV0LS13cmFwcGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHJvbW8tY29kZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInByb21vSW5wdXQ/LnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJvbW9cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWJ5bG9uLXRhZ1wiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgQGlmIChidXR0b24pIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9jYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2J0bi1kaXNhYmxlZCc6IGZvcm0uaW52YWxpZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzaGFrZS1hbmltYXRpb24nOiBob3RlbEVycm9yLFxuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJidG4tc3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5NZXdzRW5naW5lKCRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgYnV0dG9uLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZm9ybT5cbiAgICA8L2Rpdj5cbjwvcC1kaWFsb2c+XG4iXX0=
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1lbmdpbmUtbWV3cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2JhYnlsb24tZW5naW5lLW1ld3MvYmFieWxvbi1lbmdpbmUtbWV3cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2JhYnlsb24tZW5naW5lLW1ld3MvYmFieWxvbi1lbmdpbmUtbWV3cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFZLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQVksY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFDSCwyQkFBMkIsR0FFOUIsTUFBTSx3REFBd0QsQ0FBQzs7Ozs7Ozs7QUFJaEUsTUFBTSxnQkFBZ0IsR0FBOEI7SUFDaEQsd0JBQXdCLEVBQUUsUUFBUTtJQUNsQyxvQkFBb0IsRUFBRSxP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LG9RQUMzQixZQUFZLHV1QkFDWixjQUFjLHV0Q0FDZCxZQUFZOzs0RkFNUCwwQkFBMEI7a0JBaEJ0QyxTQUFTOytCQUNJLHlCQUF5QixjQUN2QixJQUFJLFdBQ1A7d0JBQ0wsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsMkJBQTJCO3dCQUMzQixZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsWUFBWTtxQkFDZixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEIsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUN5QixjQUFjO3NCQUE3RCxTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFckMsS0FBSztzQkFBYixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgRm9ybUNvbnRyb2wsXG4gICAgRm9ybUdyb3VwLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXIsIENhbGVuZGFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jYWxlbmRhcic7XG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XG5pbXBvcnQgeyBEcm9wZG93biwgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhYnlsb25CdXR0b25JIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWJ1dHRvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbklucHV0SSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1pbnB1dC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQge1xuICAgIEJhYnlsb25HdWVzdHNQb3B1cENvbXBvbmVudCxcbiAgICBndWVzdHNWYWx1ZSxcbn0gZnJvbSAnLi4vYmFieWxvbi1ndWVzdHMtcG9wdXAvYmFieWxvbi1ndWVzdHMtcG9wdXAuY29tcG9uZW50JztcbmltcG9ydCB7IEJhYnlsb25HdWVzdHNQb3B1cEkgfSBmcm9tICcuLi9iYWJ5bG9uLWd1ZXN0cy1wb3B1cC9iYWJ5bG9uLWd1ZXN0cy1wb3B1cC5pbnRlcmZhY2UnO1xuXG5kZWNsYXJlIGNvbnN0IE1ld3M6IGFueTtcbmNvbnN0IGhvdGVsQ2F0ZWdvcnlNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgJ0R1bmEgUGFycXVlIEJlYWNoIENsdWInOiAnUmVzb3J0JyxcbiAgICAnSFMgTWlsZm9udGVzIEJlYWNoJzogJ0hvdGVsJyxcbiAgICAnUXVpbnRhIFBlZGFnw7NnaWNhIGRhIFNhbW9xdWVpcmluaGEnOiAnQ291bnRyeSBIb3VzZXMnLFxuICAgICdNb2luaG8gZGEgQXNuZWlyYSc6ICdDb3VudHJ5IEhvdXNlcycsXG4gICAgJ01pbGZvbnRlcyBHdWVzdCBIb3VzZSc6ICdHdWVzdCBIb3VzZScsXG4gICAgJ01pbGZvbnRlcyBQcml2YXRlIEhvbWVzJzogJ1Jvb21zICYgQXBhcnRtZW50cycsXG4gICAgJ0JsdWUgQmFtYm9vIEhvdGVsJzogJ0hvdGVsJyxcbiAgICBDb3Jrb29uOiAnSG90ZWwnLFxuICAgICdMYXp5IERheXMnOiAnUm9vbXMnLFxuICAgICdBcGFydGFtZW50b3MgZGEgVmlsYSc6ICdSb29tcyAmIEFwYXJ0bWVudHMnLFxuICAgICdQw6F0aW9zIGRhIFZpbGEnOiAnQXBhcnRtZW50cycsXG4gICAgJ1F1YXJ0b3MgZGEgVmlsYSc6ICdSb29tcycsXG4gICAgJ1JpdmVyIElubic6ICdSb29tcycsXG4gICAgJ1F1aW50YSBkbyBNb2luaG8gZGUgVmVudG8nOiAnUm9vbXMgJiBBcGFydG1lbnRzJyxcbiAgICAnTmF0dXJhcnRlIENhbXBvJzogJ0NvdW50cnkgSG91c2VzJyxcbiAgICAnTmF0dXJhcnRlIFJpbyc6ICdDb3VudHJ5IEhvdXNlcycsXG4gICAgJ0J1bGxkb2cgSW5uJzogJ1Jvb21zJyxcbn07XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1iYWJ5bG9uLWVuZ2luZS1tZXdzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIENhbGVuZGFyTW9kdWxlLFxuICAgICAgICBCYWJ5bG9uR3Vlc3RzUG9wdXBDb21wb25lbnQsXG4gICAgICAgIERpYWxvZ01vZHVsZSxcbiAgICAgICAgRHJvcGRvd25Nb2R1bGUsXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYWJ5bG9uLWVuZ2luZS1tZXdzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vYmFieWxvbi1lbmdpbmUtbWV3cy5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEJhYnlsb25FbmdpbmVNZXdzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKCdkYXRlcGlja2VyJykgZGF0ZXBpY2tlciE6IENhbGVuZGFyO1xuICAgIEBWaWV3Q2hpbGQoJ2hvdGVsc0Ryb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIGhvdGVsc0Ryb3Bkb3duITogRHJvcGRvd247XG5cbiAgICBASW5wdXQoKSBtb2RhbD86IGJvb2xlYW47XG4gICAgQElucHV0KCkgZGF0ZXBpY2tlckRhdGE/OiBCYWJ5bG9uSW5wdXRJO1xuICAgIEBJbnB1dCgpIGd1ZXN0c0lucHV0PzogQmFieWxvbklucHV0STtcbiAgICBASW5wdXQoKSBwcm9tb0lucHV0PzogQmFieWxvbklucHV0STtcbiAgICBASW5wdXQoKSBndWVzdHM/OiBCYWJ5bG9uR3Vlc3RzUG9wdXBJO1xuICAgIEBJbnB1dCgpIGJ1dHRvbj86IEJhYnlsb25CdXR0b25JO1xuICAgIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRlZmF1bHRDb25maWd1cmF0aW9uSWQ/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgb25seUFkdWx0cz86IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2hvd0FnZXMgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBkZWZhdWx0QnV0dG9uPzogQmFieWxvbkJ1dHRvbkk7XG4gICAgQElucHV0KCkgaG90ZWxzSW5wdXQ/OiBCYWJ5bG9uSW5wdXRJO1xuICAgIEBJbnB1dCgpIGhvdGVscz86IE1ld3NIb3RlbHNEcm9wZG93bkk7XG4gICAgQElucHV0KCkgaG90ZWxzUGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgZGVmYXVsdFByb21vQ29kZT86IHN0cmluZztcblxuICAgIEBPdXRwdXQoKSBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgc2hvd2luZ0VuZ2luZU1vZGFsOiBib29sZWFuID0gZmFsc2U7XG4gICAgLy9UT0RPXG5cbiAgICBob3RlbHNWYWx1ZTogTWV3c0hvdGVsT3B0aW9uIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBob3RlbHNJZDogc3RyaW5nW10gPSBbXTtcbiAgICBkYXRlcGlja2VyVmFsdWUgPSAnJztcbiAgICBtaW5EYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgICBob3RlbEVycm9yOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIGhvdGVsczogbmV3IEZvcm1Db250cm9sPE1ld3NIb3RlbE9wdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkLCBbXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBdKSxcbiAgICAgICAgZGF0ZXM6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmRhdGVwaWNrZXJWYWx1ZSksXG4gICAgICAgIGd1ZXN0czogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgICBwcm9tbzogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICB9KTtcblxuICAgIGd1ZXN0c1ZhbHVlID0gJzAyJztcbiAgICBndWVzdHNWYWx1ZVNlcGFyYXRlcyA9IHtcbiAgICAgICAgYWR1bHRzOiAyLFxuICAgICAgICBqdW5pb3JzOiAwLFxuICAgICAgICBraWRzOiAwLFxuICAgICAgICBpbmZhbnRzOiAwLFxuICAgIH07XG4gICAgc2hvd2luZ0d1ZXN0cyA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcbiAgICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICBwcml2YXRlIGdldExhbmd1YWdlRnJvbVVybCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybiAnZXMtRVMnO1xuXG4gICAgICAgIGNvbnN0IHBhdGhuYW1lID0gdGhpcy5kb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICAgICAgY29uc3QgbGFuZ0NvZGUgPSBwYXRobmFtZS5zcGxpdCgnLycpWzFdPy50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIGNvbnN0IGxhbmd1YWdlTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgZW46ICdlbi1VUycsXG4gICAgICAgICAgICBlczogJ2VzLUVTJyxcbiAgICAgICAgICAgIHB0OiAncHQtUFQnLFxuICAgICAgICAgICAgZGU6ICdkZS1ERScsXG4gICAgICAgICAgICBmcjogJ2ZyLUZSJyxcbiAgICAgICAgICAgIGl0OiAnaXQtSVQnLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBsYW5ndWFnZU1hcFtsYW5nQ29kZV0gfHwgJ2VzLUVTJztcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5taW5EYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlID0gJzAyJztcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnZ3Vlc3RzJyk/LnNldFZhbHVlKHRoaXMuZ3Vlc3RzVmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRQcm9tb0NvZGUpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Byb21vJyk/LnNldFZhbHVlKHRoaXMuZGVmYXVsdFByb21vQ29kZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxvYWRFbmdpbmVEYXRhKCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlRW5naW5lTW9kYWwoKSB7XG4gICAgICAgIHRoaXMuc2hvd2luZ0VuZ2luZU1vZGFsID0gIXRoaXMuc2hvd2luZ0VuZ2luZU1vZGFsO1xuICAgIH1cblxuICAgIHRvZ2dsZUhvdGVsc0Ryb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5ob3RlbHNEcm9wZG93bikge1xuICAgICAgICAgICAgdGhpcy5ob3RlbHNEcm9wZG93bi5zaG93KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVEcm9wZG93bkNoYW5nZShldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaG90ZWxzVmFsdWUgPSBldmVudC52YWx1ZTtcbiAgICB9XG5cbiAgICBoYW5kbGVEaXNhYmxlZENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAodGhpcy5mb3JtLmdldCgnaG90ZWxzJyk/LmludmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuaG90ZWxFcnJvciA9IHRydWU7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLmhvdGVsRXJyb3IgPSBmYWxzZSksIDUwMCk7XG4gICAgICAgICAgICB0aGlzLmhvdGVsc0Ryb3Bkb3duLnNob3coKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvZ2dsZVNob3dpbmdHdWVzdHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd2luZ0d1ZXN0cyA9ICF0aGlzLnNob3dpbmdHdWVzdHM7XG4gICAgfVxuXG4gICAgZ3Vlc3RzQ2hhbmdlKGRhdGE6IGd1ZXN0c1ZhbHVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuYWR1bHRzID0gTnVtYmVyKGRhdGEuYWR1bHRzVmFsdWU/LmNvZGUpIHx8IDE7XG4gICAgICAgIHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuanVuaW9ycyA9XG4gICAgICAgICAgICBOdW1iZXIoZGF0YS5qdW5pb3JzVmFsdWU/LmNvZGUpIHx8IDA7XG4gICAgICAgIHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMua2lkcyA9IE51bWJlcihkYXRhLmtpZHNWYWx1ZT8uY29kZSkgfHwgMDtcbiAgICAgICAgdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5pbmZhbnRzID1cbiAgICAgICAgICAgIE51bWJlcihkYXRhLmluZmFudHNWYWx1ZT8uY29kZSkgfHwgMDtcblxuICAgICAgICBjb25zdCB0b3RhbEd1ZXN0cyA9XG4gICAgICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmFkdWx0cyArXG4gICAgICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmp1bmlvcnMgK1xuICAgICAgICAgICAgdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5raWRzICtcbiAgICAgICAgICAgIHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuaW5mYW50cztcblxuICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlID1cbiAgICAgICAgICAgIHRvdGFsR3Vlc3RzIDwgMTAgPyAnMCcgKyB0b3RhbEd1ZXN0cyA6IHRvdGFsR3Vlc3RzLnRvU3RyaW5nKCk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2d1ZXN0cycpPy5zZXRWYWx1ZSh0aGlzLmd1ZXN0c1ZhbHVlKTtcbiAgICAgICAgdGhpcy50b2dnbGVTaG93aW5nR3Vlc3RzKCk7XG4gICAgfVxuICAgIHByaXZhdGUgZ2V0QWxsSG90ZWxzTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgbGFuZyA9IHRoaXMuZ2V0TGFuZ3VhZ2VGcm9tVXJsKCk7XG4gICAgICAgIGNvbnN0IGxhYmVsczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdlcy1FUyc6ICdUb2RvcyBsb3MgaG90ZWxlcycsXG4gICAgICAgICAgICAnZW4tVVMnOiAnQWxsIHByb3BlcnRpZXMnLFxuICAgICAgICAgICAgJ3B0LVBUJzogJ1RvZG9zIGFzIHByb3ByaWVkYWRlcycsXG4gICAgICAgICAgICAnZGUtREUnOiAnQWxsZSBIb3RlbHMnLFxuICAgICAgICAgICAgJ2ZyLUZSJzogJ1RvdXMgbGVzIGjDtHRlbHMnLFxuICAgICAgICAgICAgJ2l0LUlUJzogJ1R1dHRpIGdsaSBob3RlbCcsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBsYWJlbHNbbGFuZ10gfHwgJ1RvZG9zIGxvcyBob3RlbGVzJztcbiAgICB9XG4gICAgcHJpdmF0ZSBnZXRPdGhlckxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGxhbmcgPSB0aGlzLmdldExhbmd1YWdlRnJvbVVybCgpO1xuICAgICAgICBjb25zdCBsYWJlbHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnZXMtRVMnOiAnT3Ryb3MnLFxuICAgICAgICAgICAgJ2VuLVVTJzogJ090aGVycycsXG4gICAgICAgICAgICAncHQtUFQnOiAnT3V0cmFzJyxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGxhYmVsc1tsYW5nXSB8fCAnT3RoZXJzJztcbiAgICB9XG4gICAgZ3JvdXBIb3RlbHMoYXBpSG90ZWxzOiBhbnlbXSk6IE1ld3NIb3RlbE9wdGlvbltdIHwgTWV3c0hvdGVsR3JvdXBbXSB7XG4gICAgICAgIGNvbnN0IGdyb3Vwc01hcDogeyBbY2F0ZWdvcnk6IHN0cmluZ106IE1ld3NIb3RlbE9wdGlvbltdIH0gPSB7fTtcbiAgICAgICAgY29uc3QgdW5ncm91cGVkSG90ZWxzOiBNZXdzSG90ZWxPcHRpb25bXSA9IFtdO1xuICAgICAgICAvLyBFeHByZXNpw7NuIHJlZ3VsYXIgcGFyYSB2YWxpZGFyIGVsIGZvcm1hdG8gVVVJRCBkZSBNZXdzICg4LTQtNC00LTEyIGNhcmFjdGVyZXMgaGV4YWRlY2ltYWxlcylcbiAgICAgICAgY29uc3QgbWV3c0lkUmVnZXggPVxuICAgICAgICAgICAgL15bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kL2k7XG5cbiAgICAgICAgY29uc3QgYWxsSG90ZWxzT3B0aW9uOiBNZXdzSG90ZWxPcHRpb24gPSB7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLmdldEFsbEhvdGVsc0xhYmVsKCksXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uSWQ6ICcnLFxuICAgICAgICAgICAgaWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgYXBpSG90ZWxzLmZvckVhY2goKGhvdGVsKSA9PiB7XG4gICAgICAgICAgICAvLyBCdXNjYSBsYSBjYXRlZ29yw61hIHBvciBsYSBwcm9waWVkYWQgJ2xvY2F0aW9uJyBvIHBvciBlbCBtYXBhIGVzdMOhdGljb1xuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSBob3RlbC5sb2NhdGlvbiB8fCBob3RlbENhdGVnb3J5TWFwW2hvdGVsLm5hbWVdO1xuXG4gICAgICAgICAgICBjb25zdCBob3RlbE9wdGlvbjogTWV3c0hvdGVsT3B0aW9uID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGhvdGVsLm5hbWUsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbklkOiBob3RlbC51cmwgfHwgaG90ZWwuY29uZmlndXJhdGlvbklkLFxuICAgICAgICAgICAgICAgIGlkOiBob3RlbC5pZCxcbiAgICAgICAgICAgICAgICBsb2NhdGlvbjogaG90ZWwubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBob3RlbC51cmwgfHxcbiAgICAgICAgICAgICAgICAoaG90ZWwuY29uZmlndXJhdGlvbklkICYmXG4gICAgICAgICAgICAgICAgICAgIG1ld3NJZFJlZ2V4LnRlc3QoaG90ZWwudXJsIHx8IGhvdGVsLmNvbmZpZ3VyYXRpb25JZCkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhvdGVsc0lkLnB1c2goaG90ZWwudXJsIHx8IGhvdGVsLmNvbmZpZ3VyYXRpb25JZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFNpIG5vIHRpZW5lIGNhdGVnb3LDrWEsIGxvcyBzZXBhcmFtb3MgcGFyYSBtb3N0cmFybG9zIHNpbiBhZ3J1cGFyXG4gICAgICAgICAgICBpZiAoIWNhdGVnb3J5KSB7XG4gICAgICAgICAgICAgICAgdW5ncm91cGVkSG90ZWxzLnB1c2goaG90ZWxPcHRpb24pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIWdyb3Vwc01hcFtjYXRlZ29yeV0pIHtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBzTWFwW2NhdGVnb3J5XSA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBncm91cHNNYXBbY2F0ZWdvcnldLnB1c2goaG90ZWxPcHRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBncm91cEtleXMgPSBPYmplY3Qua2V5cyhncm91cHNNYXApO1xuXG4gICAgICAgIC8vIFNpIG5pbmfDum4gaG90ZWwgdGllbmUgY2F0ZWdvcsOtYSwgZGV2b2x2ZW1vcyBsYSBsaXN0YSBjb21wbGV0YW1lbnRlIHBsYW5hXG4gICAgICAgIGlmIChncm91cEtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB1bmdyb3VwZWRIb3RlbHMudW5zaGlmdChhbGxIb3RlbHNPcHRpb24pO1xuICAgICAgICAgICAgcmV0dXJuIHVuZ3JvdXBlZEhvdGVscztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNpIGhheSBncnVwb3MsIGHDsWFkaW1vcyBsYSBvcGNpw7NuIGdsb2JhbCBhbCBwcmluY2lwaW8gZW4gc3UgcHJvcGlvIGdydXBvIG8gZW5jYWJlemFkb1xuICAgICAgICBjb25zdCByZXN1bHRHcm91cHM6IE1ld3NIb3RlbEdyb3VwW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICcnLCAvLyBHcnVwbyBzdXBlcmlvciBsaW1waW8gc2luIGV0aXF1ZXRhIHBhcmEgbGEgb3BjacOzbiBnbG9iYWxcbiAgICAgICAgICAgICAgICBpdGVtczogW2FsbEhvdGVsc09wdGlvbl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLi4uZ3JvdXBLZXlzLm1hcCgoY2F0ZWdvcnkpID0+ICh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGNhdGVnb3J5LFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBncm91cHNNYXBbY2F0ZWdvcnldLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICBdO1xuXG4gICAgICAgIC8vIE9wY2lvbmFsOiBTaSBxdWllcmVzIHF1ZSBsb3MgcXVlIG5vIHRpZW5lbiBjYXRlZ29yw61hIGFwYXJlemNhbiBlbiB1biBncnVwbyBsbGFtYWRvIFwiT3Ryb3NcIiBvIHNpbWlsYXI6XG4gICAgICAgIGlmICh1bmdyb3VwZWRIb3RlbHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmVzdWx0R3JvdXBzLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmdldE90aGVyTGFiZWwoKSxcbiAgICAgICAgICAgICAgICBpdGVtczogdW5ncm91cGVkSG90ZWxzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0R3JvdXBzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEludm9jYWNpw7NuIGEgbGEgQVBJIGRlIE1ld3MgRGlzdHJpYnV0b3IgYWwgaGFjZXIgY2xpYyBlbiBCdXNjYXJcbiAgICAgKi9cbiAgICBvcGVuTWV3c0VuZ2luZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fFxuICAgICAgICAgICAgdHlwZW9mIE1ld3MgPT09ICd1bmRlZmluZWQnXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdFbCBzY3JpcHQgZGUgTWV3cyBubyBlc3TDoSBkaXNwb25pYmxlLicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZm9ybVZhbHVlcyA9IHRoaXMuZm9ybS52YWx1ZTtcbiAgICAgICAgY29uc3QgY29uZmlnSWQgPVxuICAgICAgICAgICAgZm9ybVZhbHVlcy5ob3RlbHM/LmNvbmZpZ3VyYXRpb25JZCB8fFxuICAgICAgICAgICAgdGhpcy5kZWZhdWx0Q29uZmlndXJhdGlvbklkIHx8XG4gICAgICAgICAgICAnJztcblxuICAgICAgICBjb25zdCBpc1VybCA9IChzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICBzdHJpbmcuc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8XG4gICAgICAgICAgICAgICAgICAgIHN0cmluZy5zdGFydHNXaXRoKCdodHRwczovLycpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoaXNVcmwoY29uZmlnSWQpKSB7XG4gICAgICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKGNvbmZpZ0lkLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fFxuICAgICAgICAgICAgdHlwZW9mIE1ld3MgPT09ICd1bmRlZmluZWQnXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdFbCBzY3JpcHQgZGUgTWV3cyBubyBlc3TDoSBkaXNwb25pYmxlLicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG1ld3NPcHRpb25zOiBhbnk7XG4gICAgICAgIGlmIChjb25maWdJZCkge1xuICAgICAgICAgICAgbWV3c09wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbklkczogW2NvbmZpZ0lkXSxcbiAgICAgICAgICAgICAgICBsYW5ndWFnZTogdGhpcy5nZXRMYW5ndWFnZUZyb21VcmwoKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtZXdzT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uSWRzOiB0aGlzLmhvdGVsc0lkLFxuICAgICAgICAgICAgICAgIGxhbmd1YWdlOiB0aGlzLmdldExhbmd1YWdlRnJvbVVybCgpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmb3JtVmFsdWVzLnByb21vKSB7XG4gICAgICAgICAgICBtZXdzT3B0aW9ucy5tZXdzVm91Y2hlckNvZGUgPSBmb3JtVmFsdWVzLnByb21vO1xuICAgICAgICB9XG5cbiAgICAgICAgTWV3cy5EaXN0cmlidXRvcihtZXdzT3B0aW9ucywgKGFwaTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShmb3JtVmFsdWVzLmRhdGVzKSAmJlxuICAgICAgICAgICAgICAgIGZvcm1WYWx1ZXMuZGF0ZXMubGVuZ3RoID09PSAyXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbc3RhcnREYXRlLCBlbmREYXRlXSA9IGZvcm1WYWx1ZXMuZGF0ZXM7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0RGF0ZSkgYXBpLnNldFN0YXJ0RGF0ZShuZXcgRGF0ZShzdGFydERhdGUpKTtcbiAgICAgICAgICAgICAgICBpZiAoZW5kRGF0ZSkgYXBpLnNldEVuZERhdGUobmV3IERhdGUoZW5kRGF0ZSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmFkdWx0cykge1xuICAgICAgICAgICAgICAgICAgICBhcGkuc2V0QWR1bHRDb3VudCh0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmFkdWx0cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmtpZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBpLnNldENoaWxkQ291bnQodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5raWRzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChtZXdzT3B0aW9ucy5tZXdzVm91Y2hlckNvZGUpIHtcbiAgICAgICAgICAgICAgICBhcGkuc2V0Vm91Y2hlckNvZGUobWV3c09wdGlvbnMubWV3c1ZvdWNoZXJDb2RlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1ld3NPcHRpb25zLmxhbmd1YWdlKSB7XG4gICAgICAgICAgICAgICAgYXBpLnNldExhbmd1YWdlQ29kZShtZXdzT3B0aW9ucy5sYW5ndWFnZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFicmlyIGVsIG1vdG9yIGRlIHJlc2VydmFzIG1vZGFsXG4gICAgICAgICAgICBhcGkuc2hvd1Jvb21zKGNvbmZpZ0lkKTtcbiAgICAgICAgICAgIGFwaS5vcGVuKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCBkZWZhdWx0R3Vlc3RzVmFsdWUoKTogZ3Vlc3RzVmFsdWUge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWR1bHRzVmFsdWU6IHtcbiAgICAgICAgICAgICAgICBjb2RlOiB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmFkdWx0cyxcbiAgICAgICAgICAgICAgICBuYW1lOiBTdHJpbmcodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5hZHVsdHMpLnBhZFN0YXJ0KDIsICcwJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAga2lkc1ZhbHVlOiB7XG4gICAgICAgICAgICAgICAgY29kZTogdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5raWRzLFxuICAgICAgICAgICAgICAgIG5hbWU6IFN0cmluZyh0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmtpZHMpLnBhZFN0YXJ0KDIsICcwJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAganVuaW9yc1ZhbHVlOiB7XG4gICAgICAgICAgICAgICAgY29kZTogdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5qdW5pb3JzLFxuICAgICAgICAgICAgICAgIG5hbWU6IFN0cmluZyh0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmp1bmlvcnMpLnBhZFN0YXJ0KFxuICAgICAgICAgICAgICAgICAgICAyLFxuICAgICAgICAgICAgICAgICAgICAnMCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluZmFudHNWYWx1ZToge1xuICAgICAgICAgICAgICAgIGNvZGU6IHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuaW5mYW50cyxcbiAgICAgICAgICAgICAgICBuYW1lOiBTdHJpbmcodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5pbmZhbnRzKS5wYWRTdGFydChcbiAgICAgICAgICAgICAgICAgICAgMixcbiAgICAgICAgICAgICAgICAgICAgJzAnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkRW5naW5lRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG5cbiAgICAgICAgLy8gU2kgbG9zIGhvdGVsZXMgdmllbmVuIHNpbiBhZ3J1cGFyIGRlc2RlIGVsIElucHV0LCBsb3MgdHJhbnNmb3JtYW1vcyBhdXRvbcOhdGljYW1lbnRlOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmhvdGVscyAmJlxuICAgICAgICAgICAgdGhpcy5ob3RlbHMub3B0aW9ucyAmJlxuICAgICAgICAgICAgdGhpcy5ob3RlbHMub3B0aW9ucy5sZW5ndGggPiAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgLy8gQ29tcHJvYmFtb3Mgc2kgeWEgZXN0w6FuIGFncnVwYWRvcyBvIHNpIHNvbiB1bmEgbGlzdGEgcGxhbmEgZGUgbGEgQVBJXG4gICAgICAgICAgICBjb25zdCBmaXJzdE9wdGlvbjogYW55ID0gdGhpcy5ob3RlbHMub3B0aW9uc1swXTtcblxuICAgICAgICAgICAgLy8gU2kgbm8gdGllbmUgbGEgcHJvcGllZGFkICdpdGVtcycsIGFzdW1pbW9zIHF1ZSBlcyB1bmEgbGlzdGEgcGxhbmEgeSBoYXkgcXVlIGFncnVwYXJsYVxuICAgICAgICAgICAgaWYgKCFmaXJzdE9wdGlvbi5pdGVtcykge1xuICAgICAgICAgICAgICAgIHRoaXMuaG90ZWxzID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmhvdGVscyxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5ncm91cEhvdGVscyh0aGlzLmhvdGVscy5vcHRpb25zKSxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IHRydWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBpbnRlcmZhY2UgTWV3c0hvdGVsT3B0aW9uIHtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIGNvbmZpZ3VyYXRpb25JZD86IHN0cmluZztcbiAgICBpZD86IG51bWJlcjtcbiAgICBsb2NhdGlvbj86IHN0cmluZztcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIE1ld3NIb3RlbEdyb3VwIHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICAgIGl0ZW1zOiBNZXdzSG90ZWxPcHRpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXdzSG90ZWxzRHJvcGRvd25JIHtcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBvcHRpb25zPzogTWV3c0hvdGVsT3B0aW9uW10gfCBNZXdzSG90ZWxHcm91cFtdO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHNtYWxsVGl0bGU/OiBzdHJpbmc7XG4gICAgZXJyb3I/OiBzdHJpbmc7XG4gICAgZ3JvdXA/OiBib29sZWFuO1xufVxuIiwiPCEtLURlc2t0b3AgRW5naW5lIE1ld3MtLT5cbjxkaXYgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmUgYmdfd2hpdGVcIiBbbmdDbGFzc109XCJ7IGVuZ2luZV9fY2FkZW5hOiBob3RlbHMgfVwiPlxuICAgIEBpZiAoZGVmYXVsdEJ1dHRvbikge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWRlZmF1bHQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIFtuYW1lXT1cImRlZmF1bHRCdXR0b24ubGFiZWwgfHwgJydcIiBjbGFzcz1cImJ0bi1jYWxsXCI+XG4gICAgICAgICAgICAgICAge3sgZGVmYXVsdEJ1dHRvbi5sYWJlbCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gQk9Uw5NOIFBBUkEgTcOTVklMOiBPY3VwYSB0b2RvIGVsIGFuY2hvIGVuIHBhbnRhbGxhcyBwZXF1ZcOxYXMgLS0+XG4gICAgPGRpdiBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9fbW9iaWxlLXRyaWdnZXItY29udGFpbmVyIGQtYmxvY2sgZC1sZy1ub25lXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX2NhbGwgdy0xMDAgbW9iaWxlLWVuZ2luZS1idG5cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUVuZ2luZU1vZGFsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBidXR0b24/LmxhYmVsIHx8ICdSZXNlcnZhcicgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEZPUk1VTEFSSU8gKFNlIG11ZXN0cmEgbm9ybWFsIGVuIERlc2t0b3AsIG8gZGVudHJvIGRlbCBtb2RhbCBlbiBNw7N2aWwpIC0tPlxuICAgIDxmb3JtXG4gICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19mb3JtIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgID5cbiAgICAgICAgQGlmIChcbiAgICAgICAgICAgIGhvdGVsc0lucHV0ICYmIGhvdGVscyAmJiBob3RlbHMub3B0aW9ucyAmJiBob3RlbHMub3B0aW9ucy5sZW5ndGggPiAxXG4gICAgICAgICkge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19pbnB1dC0td3JhcHBlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGhvdGVsc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHAtZHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVfX2lucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiaG90ZWxzLm9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiaG90ZWxzPy5ncm91cCB8fCB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaG90ZWxzXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImhvdGVsc1BsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uR3JvdXBMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uR3JvdXBDaGlsZHJlbj1cIml0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImhhbmRsZURyb3Bkb3duQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAjaG90ZWxzRHJvcGRvd25cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJncm91cFwiIGxldC1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZvbnQtYm9sZCB0ZXh0LXVwcGVyY2FzZSBwLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGdyb3VwLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cIml0ZW1cIiBsZXQtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgaXRlbS5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9wLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFieWxvbi1hcnJvdy1ib3R0b21cIj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9fZGF0ZXBpY2tlci0td3JhcHBlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHAtY2FsZW5kYXJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9fZGF0ZXBpY2tlclwiXG4gICAgICAgICAgICAgICAgW3Nob3dPdGhlck1vbnRoc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgZGF0ZUZvcm1hdD1cImRkLW1tLXl5XCJcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25Nb2RlPVwicmFuZ2VcIlxuICAgICAgICAgICAgICAgIFtudW1iZXJPZk1vbnRoc109XCIyXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0ZXBpY2tlckRhdGE/LnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkYXRlc1wiXG4gICAgICAgICAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgICAgICAgICAgI2RhdGVwaWNrZXJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHlJbnB1dF09XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fcHJpbWFyeSBidG4tLWxpZ2h0IGJhYnlsb24tcGx1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVwaWNrZXIub3ZlcmxheVZpc2libGUgPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3AtY2FsZW5kYXI+XG5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVfX2RhdGVwaWNrZXItLWljb24gYmFieWxvbi1hcnJvdy1ib3R0b21cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19pbnB1dC0td3JhcHBlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTaG93aW5nR3Vlc3RzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKGd1ZXN0c0lucHV0Py5wbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3Vlc3QtaW5mb1wiXG4gICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ3Vlc3RzSW5wdXQ/LnBsYWNlaG9sZGVyICsgJzogICdcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9faW5wdXQgbm8tY2FyZXRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ3Vlc3RzSW5wdXQ/LnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJndWVzdHNcIlxuICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWJ5bG9uLWFycm93LWJvdHRvbVwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHAtZGlhbG9nIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19kaWFsb2dcIiBbKHZpc2libGUpXT1cInNob3dpbmdHdWVzdHNcIj5cbiAgICAgICAgICAgIDxsaWItYmFieWxvbi1ndWVzdHMtcG9wdXBcbiAgICAgICAgICAgICAgICBbb25seUFkdWx0c109XCJvbmx5QWR1bHRzXCJcbiAgICAgICAgICAgICAgICBbc2hvd0FnZXNdPVwic2hvd0FnZXNcIlxuICAgICAgICAgICAgICAgIFtkZWZhdWx0VmFsdWVdPVwiZGVmYXVsdEd1ZXN0c1ZhbHVlXCJcbiAgICAgICAgICAgICAgICBbYWR1bHRzRHJvcGRvd25dPVwiZ3Vlc3RzPy5hZHVsdHNEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgW2FnZXNEcm9wZG93bl09XCJndWVzdHM/LmFnZXNEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgW2FnZXNMYWJlbF09XCJndWVzdHM/LmFnZXNMYWJlbFwiXG4gICAgICAgICAgICAgICAgW2JhYmllc0Ryb3Bkb3duXT1cImd1ZXN0cz8uYmFiaWVzRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFtraWRzRHJvcGRvd25dPVwiZ3Vlc3RzPy5raWRzRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFtqdW5pb3JzRHJvcGRvd25dPVwiZ3Vlc3RzPy5qdW5pb3JzRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFtidG5dPVwiZ3Vlc3RzPy5idG5cIlxuICAgICAgICAgICAgICAgICNndWVzdHBpY2tlclxuICAgICAgICAgICAgICAgIChhcHBseSk9XCJndWVzdHNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2xpYi1iYWJ5bG9uLWd1ZXN0cy1wb3B1cD5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3Vlc3RzLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fcHJpbWFyeSBidG4tLWxpZ2h0IGJhYnlsb24tcGx1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNsb3NlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNob3dpbmdHdWVzdHMoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvcC1kaWFsb2c+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVfX2lucHV0LS13cmFwcGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHJvbW8tY29kZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9tb0lucHV0Py5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJvbW9cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFieWxvbi10YWdcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKGJ1dHRvbikge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fY2FsbFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAnYnRuLWRpc2FibGVkJzogZm9ybS5pbnZhbGlkLFxuICAgICAgICAgICAgICAgICAgICAnc2hha2UtYW5pbWF0aW9uJzogaG90ZWxFcnJvcixcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICBpZD1cImJ0bi1zdWJtaXRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuTWV3c0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBidXR0b24ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgPC9mb3JtPlxuPC9kaXY+XG5cbjwhLS0gTU9EQUwgREUgUEFOVEFMTEEgQ09NUExFVEEgUEFSQSBNw5NWSUwgLS0+XG48cC1kaWFsb2dcbiAgICBzdHlsZUNsYXNzPVwiYmFieWxvbl9fZW5naW5lLWZ1bGxzY3JlZW4tbW9kYWxcIlxuICAgIFsodmlzaWJsZSldPVwic2hvd2luZ0VuZ2luZU1vZGFsXCJcbiAgICBbbW9kYWxdPVwidHJ1ZVwiXG4gICAgW2RyYWdnYWJsZV09XCJmYWxzZVwiXG4gICAgW3Jlc2l6YWJsZV09XCJmYWxzZVwiXG4gICAgW2Rpc21pc3NhYmxlTWFza109XCJ0cnVlXCJcbj5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZW5naW5lLW1vZGFsLWhlYWRlciB3LTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX3ByaW1hcnkgYnRuLS1saWdodCBiYWJ5bG9uLXBsdXMgY2xvc2UtbW9kYWwtYnRuXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRW5naW5lTW9kYWwoKVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8IS0tIENvbnRlbmlkbyBjbG9uYWRvL3JldXRpbGl6YWRvIGRlbCBtb3RvciBwYXJhIG3Ds3ZpbGVzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmUtbW9kYWwtY29udGVudFwiPlxuICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVfX2Zvcm0gZC1mbGV4IGFsaWduLWl0ZW1zLXN0cmV0Y2hcIlxuICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICBob3RlbHNJbnB1dCAmJlxuICAgICAgICAgICAgICAgIGhvdGVscyAmJlxuICAgICAgICAgICAgICAgIGhvdGVscy5vcHRpb25zICYmXG4gICAgICAgICAgICAgICAgaG90ZWxzLm9wdGlvbnMubGVuZ3RoID4gMVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9faW5wdXQtLXdyYXBwZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBob3RlbHNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJob3RlbHMub3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiaG90ZWxzPy5ncm91cCB8fCB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImhvdGVsc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaG90ZWxzUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbkdyb3VwTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25Hcm91cENoaWxkcmVuPVwiaXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImhhbmRsZURyb3Bkb3duQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI2hvdGVsc0Ryb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJncm91cFwiIGxldC1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZm9udC1ib2xkIHRleHQtdXBwZXJjYXNlIHAtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBncm91cC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJpdGVtXCIgbGV0LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBpdGVtLm5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvcC1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWJ5bG9uLWFycm93LWJvdHRvbVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9fZGF0ZXBpY2tlci0td3JhcHBlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8cC1jYWxlbmRhclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9fZGF0ZXBpY2tlclwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93T3RoZXJNb250aHNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0PVwiZGQtbW0teXlcIlxuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25Nb2RlPVwicmFuZ2VcIlxuICAgICAgICAgICAgICAgICAgICBbbnVtYmVyT2ZNb250aHNdPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRlcGlja2VyRGF0YT8ucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkYXRlc1wiXG4gICAgICAgICAgICAgICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICAgICAgICAgICAgICAjZGF0ZXBpY2tlclxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHlJbnB1dF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9wcmltYXJ5IGJ0bi0tbGlnaHQgYmFieWxvbi1wbHVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZXBpY2tlci5vdmVybGF5VmlzaWJsZSA9IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3AtY2FsZW5kYXI+XG5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9fZGF0ZXBpY2tlci0taWNvbiBiYWJ5bG9uLWFycm93LWJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9faW5wdXQtLXdyYXBwZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNob3dpbmdHdWVzdHMoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGlmIChndWVzdHNJbnB1dD8ucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3Vlc3QtaW5mb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImd1ZXN0c0lucHV0Py5wbGFjZWhvbGRlciArICc6ICAnXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19pbnB1dCBuby1jYXJldFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImd1ZXN0c0lucHV0Py5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImd1ZXN0c1wiXG4gICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhYnlsb24tYXJyb3ctYm90dG9tXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKHNob3dpbmdHdWVzdHMgJiYgZ3Vlc3RzKSB7XG4gICAgICAgICAgICAgICAgPGxpYi1iYWJ5bG9uLWd1ZXN0cy1wb3B1cFxuICAgICAgICAgICAgICAgICAgICBbb25seUFkdWx0c109XCJvbmx5QWR1bHRzXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dBZ2VzXT1cInNob3dBZ2VzXCJcbiAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJkZWZhdWx0R3Vlc3RzVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbYWR1bHRzRHJvcGRvd25dPVwiZ3Vlc3RzPy5hZHVsdHNEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgIFthZ2VzRHJvcGRvd25dPVwiZ3Vlc3RzPy5hZ2VzRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICBbYWdlc0xhYmVsXT1cImd1ZXN0cz8uYWdlc0xhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW2JhYmllc0Ryb3Bkb3duXT1cImd1ZXN0cz8uYmFiaWVzRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICBba2lkc0Ryb3Bkb3duXT1cImd1ZXN0cz8ua2lkc0Ryb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgW2p1bmlvcnNEcm9wZG93bl09XCJndWVzdHM/Lmp1bmlvcnNEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgIFtidG5dPVwiZ3Vlc3RzPy5idG5cIlxuICAgICAgICAgICAgICAgICAgICAjZ3Vlc3RwaWNrZXJcbiAgICAgICAgICAgICAgICAgICAgKGFwcGx5KT1cImd1ZXN0c0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9saWItYmFieWxvbi1ndWVzdHMtcG9wdXA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImd1ZXN0cy1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX3ByaW1hcnkgYnRuLS1saWdodCBiYWJ5bG9uLXBsdXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hvd2luZ0d1ZXN0cygpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVfX2lucHV0LS13cmFwcGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHJvbW8tY29kZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInByb21vSW5wdXQ/LnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJvbW9cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWJ5bG9uLXRhZ1wiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgQGlmIChidXR0b24pIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9jYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2J0bi1kaXNhYmxlZCc6IGZvcm0uaW52YWxpZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzaGFrZS1hbmltYXRpb24nOiBob3RlbEVycm9yLFxuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJidG4tc3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5NZXdzRW5naW5lKCRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgYnV0dG9uLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZm9ybT5cbiAgICA8L2Rpdj5cbjwvcC1kaWFsb2c+XG4iXX0=
@@ -0,0 +1,32 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class BabylonGlobalBadgeComponent {
6
+ constructor() {
7
+ this.badges = []; // Recibe el array de badges
8
+ this.position = 'top-right';
9
+ this.additionalClasses = '';
10
+ }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BabylonGlobalBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BabylonGlobalBadgeComponent, isStandalone: true, selector: "lib-babylon-global-badge", inputs: { badges: "badges", position: "position", additionalClasses: "additionalClasses", top: "top", bottom: "bottom", left: "left", right: "right" }, ngImport: i0, template: "<div\n class=\"global-badge-container\"\n [ngClass]=\"'badge-' + position + ' ' + additionalClasses\"\n [style.top]=\"top\"\n [style.bottom]=\"bottom\"\n [style.left]=\"left\"\n [style.right]=\"right\"\n>\n <div *ngFor=\"let badge of badges\" class=\"global-badge\">\n <span class=\"global-badge__text\">{{ badge }}</span>\n </div>\n</div>\n", styles: [".global-badge-container{position:absolute;z-index:10;pointer-events:none;display:flex;flex-direction:column;gap:8px}.global-badge-container.badge-top-right{top:15px;right:15px}.global-badge-container.badge-top-left{top:15px;left:15px}.global-badge-container.badge-bottom-right{bottom:15px;right:15px}.global-badge-container.badge-bottom-left{bottom:15px;left:15px}.global-badge-container.top--100{top:100px}.global-badge{padding:5px 12px;background-color:var(--cl_btn-box)!important;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:25px;box-shadow:0 2px 8px #00000040}.global-badge__text{font-family:inherit;font-size:11px;letter-spacing:.08em;color:#000;font-weight:700!important;text-transform:uppercase;text-align:center;width:100%;display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BabylonGlobalBadgeComponent, decorators: [{
15
+ type: Component,
16
+ args: [{ selector: 'lib-babylon-global-badge', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"global-badge-container\"\n [ngClass]=\"'badge-' + position + ' ' + additionalClasses\"\n [style.top]=\"top\"\n [style.bottom]=\"bottom\"\n [style.left]=\"left\"\n [style.right]=\"right\"\n>\n <div *ngFor=\"let badge of badges\" class=\"global-badge\">\n <span class=\"global-badge__text\">{{ badge }}</span>\n </div>\n</div>\n", styles: [".global-badge-container{position:absolute;z-index:10;pointer-events:none;display:flex;flex-direction:column;gap:8px}.global-badge-container.badge-top-right{top:15px;right:15px}.global-badge-container.badge-top-left{top:15px;left:15px}.global-badge-container.badge-bottom-right{bottom:15px;right:15px}.global-badge-container.badge-bottom-left{bottom:15px;left:15px}.global-badge-container.top--100{top:100px}.global-badge{padding:5px 12px;background-color:var(--cl_btn-box)!important;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:25px;box-shadow:0 2px 8px #00000040}.global-badge__text{font-family:inherit;font-size:11px;letter-spacing:.08em;color:#000;font-weight:700!important;text-transform:uppercase;text-align:center;width:100%;display:block}\n"] }]
17
+ }], propDecorators: { badges: [{
18
+ type: Input
19
+ }], position: [{
20
+ type: Input
21
+ }], additionalClasses: [{
22
+ type: Input
23
+ }], top: [{
24
+ type: Input
25
+ }], bottom: [{
26
+ type: Input
27
+ }], left: [{
28
+ type: Input
29
+ }], right: [{
30
+ type: Input
31
+ }] } });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1nbG9iYWwtYmFkZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLWdsb2JhbC1iYWRnZS9iYWJ5bG9uLWdsb2JhbC1iYWRnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2JhYnlsb24tZ2xvYmFsLWJhZGdlL2JhYnlsb24tZ2xvYmFsLWJhZGdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBVTFFLE1BQU0sT0FBTywyQkFBMkI7SUFSeEM7UUFTYSxXQUFNLEdBQWEsRUFBRSxDQUFDLENBQUMsNEJBQTRCO1FBQ25ELGFBQVEsR0FJSyxXQUFXLENBQUM7UUFDekIsc0JBQWlCLEdBQVcsRUFBRSxDQUFDO0tBTTNDOytHQWJZLDJCQUEyQjttR0FBM0IsMkJBQTJCLDRPQ1h4QyxzWEFZQSxtMEJETmMsWUFBWTs7NEZBS2IsMkJBQTJCO2tCQVJ2QyxTQUFTOytCQUNJLDBCQUEwQixjQUN4QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBR04sdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1iYWJ5bG9uLWdsb2JhbC1iYWRnZScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFieWxvbi1nbG9iYWwtYmFkZ2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9iYWJ5bG9uLWdsb2JhbC1iYWRnZS5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEJhYnlsb25HbG9iYWxCYWRnZUNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgYmFkZ2VzOiBzdHJpbmdbXSA9IFtdOyAvLyBSZWNpYmUgZWwgYXJyYXkgZGUgYmFkZ2VzXG4gICAgQElucHV0KCkgcG9zaXRpb246XG4gICAgICAgIHwgJ3RvcC1yaWdodCdcbiAgICAgICAgfCAndG9wLWxlZnQnXG4gICAgICAgIHwgJ2JvdHRvbS1yaWdodCdcbiAgICAgICAgfCAnYm90dG9tLWxlZnQnID0gJ3RvcC1yaWdodCc7XG4gICAgQElucHV0KCkgYWRkaXRpb25hbENsYXNzZXM6IHN0cmluZyA9ICcnO1xuXG4gICAgQElucHV0KCkgdG9wPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGJvdHRvbT86IHN0cmluZztcbiAgICBASW5wdXQoKSBsZWZ0Pzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHJpZ2h0Pzogc3RyaW5nO1xufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiZ2xvYmFsLWJhZGdlLWNvbnRhaW5lclwiXG4gICAgW25nQ2xhc3NdPVwiJ2JhZGdlLScgKyBwb3NpdGlvbiArICcgJyArIGFkZGl0aW9uYWxDbGFzc2VzXCJcbiAgICBbc3R5bGUudG9wXT1cInRvcFwiXG4gICAgW3N0eWxlLmJvdHRvbV09XCJib3R0b21cIlxuICAgIFtzdHlsZS5sZWZ0XT1cImxlZnRcIlxuICAgIFtzdHlsZS5yaWdodF09XCJyaWdodFwiXG4+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgYmFkZ2Ugb2YgYmFkZ2VzXCIgY2xhc3M9XCJnbG9iYWwtYmFkZ2VcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJnbG9iYWwtYmFkZ2VfX3RleHRcIj57eyBiYWRnZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19