ctt-puro 0.68.5 → 0.68.7

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.
@@ -1,5 +1,5 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/platform-browser";
5
5
  export class PuroIframeComponent {
@@ -8,21 +8,18 @@ export class PuroIframeComponent {
8
8
  this.cdr = cdr;
9
9
  this.safeUrl = null;
10
10
  }
11
- ngAfterViewInit() {
12
- if (this.frameUrl != null) {
13
- const iframe = this.frameUrl;
14
- this.safeUrl =
15
- this.sanitizer.bypassSecurityTrustResourceUrl(iframe);
16
- this.cdr.detectChanges();
17
- }
11
+ ngOnChanges() {
12
+ this.safeUrl = this.frameUrl
13
+ ? this.sanitizer.bypassSecurityTrustResourceUrl(this.frameUrl)
14
+ : null;
18
15
  }
19
16
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroIframeComponent, deps: [{ token: i1.DomSanitizer }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PuroIframeComponent, isStandalone: true, selector: "lib-puro-iframe", inputs: { frameUrl: "frameUrl" }, ngImport: i0, template: "<div class=\"iframe-container generalMargin\">\n <iframe\n [src]=\"safeUrl\"\n frameborder=\"0\"\n allowfullscreen\n ></iframe>\n</div>\n", styles: [".iframe-container{display:flex;align-items:center;justify-content:center;overflow:hidden}.iframe-container iframe{width:100vw;height:140vh;border:none;scrollbar-width:none;-ms-overflow-style:none}.iframe-container iframe::-webkit-scrollbar{display:none}.s-list-exp .container{padding:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
17
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroIframeComponent, isStandalone: true, selector: "lib-puro-iframe", inputs: { frameUrl: "frameUrl" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"iframe-container generalMargin\">\n @if (safeUrl) {\n <iframe\n [src]=\"safeUrl\"\n frameborder=\"0\"\n allowfullscreen\n ></iframe>\n }\n</div>\n", styles: [".iframe-container{display:flex;align-items:center;justify-content:center;overflow:hidden}.iframe-container iframe{width:100vw;height:140vh;border:none;scrollbar-width:none;-ms-overflow-style:none}.iframe-container iframe::-webkit-scrollbar{display:none}.s-list-exp .container{padding:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
21
18
  }
22
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroIframeComponent, decorators: [{
23
20
  type: Component,
24
- args: [{ selector: 'lib-puro-iframe', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"iframe-container generalMargin\">\n <iframe\n [src]=\"safeUrl\"\n frameborder=\"0\"\n allowfullscreen\n ></iframe>\n</div>\n", styles: [".iframe-container{display:flex;align-items:center;justify-content:center;overflow:hidden}.iframe-container iframe{width:100vw;height:140vh;border:none;scrollbar-width:none;-ms-overflow-style:none}.iframe-container iframe::-webkit-scrollbar{display:none}.s-list-exp .container{padding:0!important}\n"] }]
21
+ args: [{ selector: 'lib-puro-iframe', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"iframe-container generalMargin\">\n @if (safeUrl) {\n <iframe\n [src]=\"safeUrl\"\n frameborder=\"0\"\n allowfullscreen\n ></iframe>\n }\n</div>\n", styles: [".iframe-container{display:flex;align-items:center;justify-content:center;overflow:hidden}.iframe-container iframe{width:100vw;height:140vh;border:none;scrollbar-width:none;-ms-overflow-style:none}.iframe-container iframe::-webkit-scrollbar{display:none}.s-list-exp .container{padding:0!important}\n"] }]
25
22
  }], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i0.ChangeDetectorRef }], propDecorators: { frameUrl: [{
26
23
  type: Input
27
24
  }] } });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1pZnJhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1pZnJhbWUvcHVyby1pZnJhbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1pZnJhbWUvcHVyby1pZnJhbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBVzdGLE1BQU0sT0FBTyxtQkFBbUI7SUFLNUIsWUFDcUIsU0FBdUIsRUFDdkIsR0FBc0I7UUFEdEIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUN2QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUozQyxZQUFPLEdBQTJCLElBQUksQ0FBQztJQUtwQyxDQUFDO0lBRUosZUFBZTtRQUNYLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUU7WUFDdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM3QixJQUFJLENBQUMsT0FBTztnQkFDUixJQUFJLENBQUMsU0FBUyxDQUFDLDhCQUE4QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDNUI7SUFDTCxDQUFDOytHQWpCUSxtQkFBbUI7bUdBQW5CLG1CQUFtQiw2R0NaaEMsc0pBT0EsbVdEQWMsWUFBWTs7NEZBS2IsbUJBQW1CO2tCQVIvQixTQUFTOytCQUNJLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNO2lIQUd0QyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItcHVyby1pZnJhbWUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3B1cm8taWZyYW1lLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcHVyby1pZnJhbWUuY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQdXJvSWZyYW1lQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBmcmFtZVVybD86IHN0cmluZztcblxuICAgIHNhZmVVcmw6IFNhZmVSZXNvdXJjZVVybCB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZnJhbWVVcmwgIT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgaWZyYW1lID0gdGhpcy5mcmFtZVVybDtcbiAgICAgICAgICAgIHRoaXMuc2FmZVVybCA9XG4gICAgICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKGlmcmFtZSk7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaWZyYW1lLWNvbnRhaW5lciBnZW5lcmFsTWFyZ2luXCI+XG4gIDxpZnJhbWVcbiAgICBbc3JjXT1cInNhZmVVcmxcIlxuICAgIGZyYW1lYm9yZGVyPVwiMFwiXG4gICAgYWxsb3dmdWxsc2NyZWVuXG4gID48L2lmcmFtZT5cbjwvZGl2PlxuIl19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1pZnJhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1pZnJhbWUvcHVyby1pZnJhbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1pZnJhbWUvcHVyby1pZnJhbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULEtBQUssR0FFUixNQUFNLGVBQWUsQ0FBQzs7O0FBV3ZCLE1BQU0sT0FBTyxtQkFBbUI7SUFLNUIsWUFDcUIsU0FBdUIsRUFDdkIsR0FBc0I7UUFEdEIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUN2QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUozQyxZQUFPLEdBQTJCLElBQUksQ0FBQztJQUtwQyxDQUFDO0lBRUosV0FBVztRQUNQLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVE7WUFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5RCxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2YsQ0FBQzsrR0FkUSxtQkFBbUI7bUdBQW5CLG1CQUFtQixrSUNsQmhDLHdMQVNBLG1XREljLFlBQVk7OzRGQUtiLG1CQUFtQjtrQkFSL0IsU0FBUzsrQkFDSSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBR04sdUJBQXVCLENBQUMsTUFBTTtpSEFHdEMsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItcHVyby1pZnJhbWUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3B1cm8taWZyYW1lLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcHVyby1pZnJhbWUuY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQdXJvSWZyYW1lQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSBmcmFtZVVybD86IHN0cmluZztcblxuICAgIHNhZmVVcmw6IFNhZmVSZXNvdXJjZVVybCB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNhZmVVcmwgPSB0aGlzLmZyYW1lVXJsXG4gICAgICAgICAgICA/IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLmZyYW1lVXJsKVxuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpZnJhbWUtY29udGFpbmVyIGdlbmVyYWxNYXJnaW5cIj5cbiAgQGlmIChzYWZlVXJsKSB7XG4gICAgPGlmcmFtZVxuICAgICAgW3NyY109XCJzYWZlVXJsXCJcbiAgICAgIGZyYW1lYm9yZGVyPVwiMFwiXG4gICAgICBhbGxvd2Z1bGxzY3JlZW5cbiAgICA+PC9pZnJhbWU+XG4gIH1cbjwvZGl2PlxuIl19
@@ -3,6 +3,7 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Output
3
3
  import { FormsModule, ReactiveFormsModule, Validators, } from '@angular/forms';
4
4
  import { AutoImageZoomWrapperDirective } from '../../directives';
5
5
  import { PuroDynamicHeadingComponent } from '../../shared/puro-dynamic-heading';
6
+ import { Utils } from '../../utils/utils';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@angular/forms";
8
9
  export class PuroNewsletterComponent {
@@ -18,17 +19,19 @@ export class PuroNewsletterComponent {
18
19
  }
19
20
  buildForm() {
20
21
  const controls = {};
21
- // email input
22
+ // -------------------------
23
+ // EMAIL
24
+ // -------------------------
22
25
  if (this.email?.name) {
26
+ const v = Utils.safeValidators(this.email.validators);
23
27
  controls[this.email.name] = [
24
28
  '',
25
- this.email.validators || [
26
- Validators.required,
27
- Validators.email,
28
- ],
29
+ v.length ? v : [Validators.required, Validators.email],
29
30
  ];
30
31
  }
31
- // dropdowns
32
+ // -------------------------
33
+ // DROPDOWNS
34
+ // -------------------------
32
35
  if (this.lang)
33
36
  controls['lang'] = ['', Validators.required];
34
37
  if (this.country)
@@ -37,9 +40,15 @@ export class PuroNewsletterComponent {
37
40
  controls['center'] = ['', Validators.required];
38
41
  if (this.resident)
39
42
  controls['resident'] = ['', Validators.required];
40
- // checkbox
41
- if (this.conditions)
43
+ // -------------------------
44
+ // CHECKBOX
45
+ // -------------------------
46
+ if (this.conditions) {
42
47
  controls['conditions'] = [false, Validators.requiredTrue];
48
+ }
49
+ // -------------------------
50
+ // BUILD FORM
51
+ // -------------------------
43
52
  this.form = this.fb.group(controls);
44
53
  this.formReady$.set(true);
45
54
  this.cdr.markForCheck();
@@ -108,7 +117,7 @@ export class PuroNewsletterComponent {
108
117
  }
109
118
  }
110
119
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroNewsletterComponent, deps: [{ token: i1.FormBuilder }, { token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
111
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroNewsletterComponent, isStandalone: true, selector: "lib-puro-newsletter", inputs: { title: "title", subtitle: "subtitle", description: "description", image: "image", email: "email", lang: "lang", country: "country", center: "center", resident: "resident", conditions: "conditions", button: "button", tags: "tags", textColors: "textColors" }, outputs: { submitFormValue: "submitFormValue" }, ngImport: i0, template: "<section class=\"newsletter\">\n @if (image) {\n <div class=\"newsletter__graphic\">\n <img\n [src]=\"image.src\"\n [alt]=\"image.alt\"\n class=\"newsletter__graphic--img\"\n width=\"960\"\n height=\"985\" loading=\"lazy\" />\n </div>\n }\n <div class=\"newsletter__content\">\n <div class=\"newsletter__contentInner\">\n <div class=\"newsletter__headingSection\">\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'h2'\"\n cssClass=\"newsletter__heading\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n @if (subtitle) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.subtitle || 'p'\"\n cssClass=\"newsletter__subHeading\"\n [color]=\"textColors?.subtitle\"\n [content]=\"subtitle\"\n ></lib-puro-dynamic-heading>\n }\n </div>\n @if (description) {\n <p class=\"newsletter__paragraph\">{{ description }}</p>\n }\n @if (formReady$()) {\n <form [formGroup]=\"form\" class=\"form\" (ngSubmit)=\"submitForm()\">\n <div class=\"newsletterForm__row\">\n <div class=\"newsletterForm__col\">\n @if (email) {\n <div class=\"form__group withIcon\">\n <input\n type=\"email\"\n class=\"form__control\"\n [placeholder]=\"email.placeholder\"\n [formControlName]=\"email.name!\"\n (blur)=\"validateInput(email)\"\n (input)=\"inputChange($event, email)\"\n />\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"19\"\n height=\"15\"\n >\n <use href=\"#email\"></use>\n </svg>\n </span>\n </div>\n\n @if (!email.valid()) {\n <span class=\"form-error\">{{\n email.error\n }}</span>\n }\n }\n </div>\n <div class=\"newsletterForm__col\">\n @if (lang) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"lang\"\n >\n <option value=\"\" disabled selected>\n {{ lang.placeholder }}\n </option>\n @for (\n option of lang.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"newsletterForm__row\">\n <div class=\"newsletterForm__col\">\n @if (country) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"country\"\n >\n <option value=\"\">\n {{ country.placeholder }}\n </option>\n @for (\n option of country.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n <div class=\"newsletterForm__col\">\n @if (center) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"center\"\n >\n <option value=\"\">\n {{ center.placeholder }}\n </option>\n @for (\n option of center.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"newsletterForm__row\">\n <div class=\"newsletterForm__col\">\n @if (resident) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"resident\"\n >\n <option value=\"\">\n {{ resident.placeholder }}\n </option>\n @for (\n option of resident.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"newsletterForm__row\">\n <div class=\"newsletterForm__col\">\n <div class=\"block-checkbox\">\n @if (conditions) {\n <label class=\"form__checkbox\">\n <input\n type=\"checkbox\"\n class=\"checkbox\"\n formControlName=\"conditions\"\n />\n <span class=\"box\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"9\"\n height=\"7\"\n >\n <use\n href=\"#checkbox-tick\"\n ></use>\n </svg>\n </span>\n <span [innerHTML]=\"conditions\"></span>\n </label>\n }\n </div>\n </div>\n </div>\n\n <div class=\"btn__group\">\n @if (button) {\n <button\n type=\"submit\"\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"button.label\"\n [disabled]=\"!form.valid\"\n (click)=\"submitForm($event)\"\n >\n <span>{{ button.label }}</span>\n </button>\n }\n </div>\n </form>\n }\n </div>\n </div>\n</section>\n", styles: [".newsletter__content,.newsletterForm__col .form__group .form__control{background-color:#f9f5ed}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: AutoImageZoomWrapperDirective, selector: "img[src]" }, { kind: "component", type: PuroDynamicHeadingComponent, selector: "lib-puro-dynamic-heading", inputs: ["tag", "wrapper", "cssClass", "content", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
120
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroNewsletterComponent, isStandalone: true, selector: "lib-puro-newsletter", inputs: { title: "title", subtitle: "subtitle", description: "description", image: "image", email: "email", lang: "lang", country: "country", center: "center", resident: "resident", conditions: "conditions", button: "button", tags: "tags", textColors: "textColors" }, outputs: { submitFormValue: "submitFormValue" }, ngImport: i0, template: "<section class=\"newsletter\">\n @if (image) {\n <div class=\"newsletter__graphic\">\n <img\n [src]=\"image.src\"\n [alt]=\"image.alt\"\n class=\"newsletter__graphic--img\"\n width=\"960\"\n height=\"985\" loading=\"lazy\" />\n </div>\n }\n <div class=\"newsletter__content\">\n <div class=\"newsletter__contentInner\">\n <div class=\"newsletter__headingSection\">\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'h2'\"\n cssClass=\"newsletter__heading\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n @if (subtitle) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.subtitle || 'p'\"\n cssClass=\"newsletter__subHeading\"\n [color]=\"textColors?.subtitle\"\n [content]=\"subtitle\"\n ></lib-puro-dynamic-heading>\n }\n </div>\n @if (description) {\n <p class=\"newsletter__paragraph\">{{ description }}</p>\n }\n @if (formReady$()) {\n <form [formGroup]=\"form\" class=\"form\" (ngSubmit)=\"submitForm()\">\n <div class=\"newsletterForm__row\">\n <div class=\"newsletterForm__col\">\n @if (email) {\n <div class=\"form__group withIcon\">\n <input\n type=\"email\"\n class=\"form__control\"\n [placeholder]=\"email.placeholder\"\n [formControlName]=\"email.name!\"\n (blur)=\"validateInput(email)\"\n (input)=\"inputChange($event, email)\"\n />\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"19\"\n height=\"15\"\n >\n <use href=\"#email\"></use>\n </svg>\n </span>\n </div>\n\n @if (email?.valid && !email.valid()) {\n <span class=\"form-error\">{{\n email.error\n }}</span>\n }\n }\n </div>\n <div class=\"newsletterForm__col\">\n @if (lang) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"lang\"\n >\n <option value=\"\" disabled selected>\n {{ lang.placeholder }}\n </option>\n @for (\n option of lang.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"newsletterForm__row\">\n <div class=\"newsletterForm__col\">\n @if (country) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"country\"\n >\n <option value=\"\">\n {{ country.placeholder }}\n </option>\n @for (\n option of country.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n <div class=\"newsletterForm__col\">\n @if (center) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"center\"\n >\n <option value=\"\">\n {{ center.placeholder }}\n </option>\n @for (\n option of center.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"newsletterForm__row\">\n <div class=\"newsletterForm__col\">\n @if (resident) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"resident\"\n >\n <option value=\"\">\n {{ resident.placeholder }}\n </option>\n @for (\n option of resident.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"newsletterForm__row\">\n <div class=\"newsletterForm__col\">\n <div class=\"block-checkbox\">\n @if (conditions) {\n <label class=\"form__checkbox\">\n <input\n type=\"checkbox\"\n class=\"checkbox\"\n formControlName=\"conditions\"\n />\n <span class=\"box\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"9\"\n height=\"7\"\n >\n <use\n href=\"#checkbox-tick\"\n ></use>\n </svg>\n </span>\n <span [innerHTML]=\"conditions\"></span>\n </label>\n }\n </div>\n </div>\n </div>\n\n <div class=\"btn__group\">\n @if (button) {\n <button\n type=\"submit\"\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"button.label\"\n [disabled]=\"!form.valid\"\n (click)=\"submitForm($event)\"\n >\n <span>{{ button.label }}</span>\n </button>\n }\n </div>\n </form>\n }\n </div>\n </div>\n</section>\n", styles: [".newsletter__content,.newsletterForm__col .form__group .form__control{background-color:#f9f5ed}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: AutoImageZoomWrapperDirective, selector: "img[src]" }, { kind: "component", type: PuroDynamicHeadingComponent, selector: "lib-puro-dynamic-heading", inputs: ["tag", "wrapper", "cssClass", "content", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
112
121
  }
113
122
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroNewsletterComponent, decorators: [{
114
123
  type: Component,
@@ -118,7 +127,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
118
127
  ReactiveFormsModule,
119
128
  AutoImageZoomWrapperDirective,
120
129
  PuroDynamicHeadingComponent,
121
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"newsletter\">\n @if (image) {\n <div class=\"newsletter__graphic\">\n <img\n [src]=\"image.src\"\n [alt]=\"image.alt\"\n class=\"newsletter__graphic--img\"\n width=\"960\"\n height=\"985\" loading=\"lazy\" />\n </div>\n }\n <div class=\"newsletter__content\">\n <div class=\"newsletter__contentInner\">\n <div class=\"newsletter__headingSection\">\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'h2'\"\n cssClass=\"newsletter__heading\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n @if (subtitle) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.subtitle || 'p'\"\n cssClass=\"newsletter__subHeading\"\n [color]=\"textColors?.subtitle\"\n [content]=\"subtitle\"\n ></lib-puro-dynamic-heading>\n }\n </div>\n @if (description) {\n <p class=\"newsletter__paragraph\">{{ description }}</p>\n }\n @if (formReady$()) {\n <form [formGroup]=\"form\" class=\"form\" (ngSubmit)=\"submitForm()\">\n <div class=\"newsletterForm__row\">\n <div class=\"newsletterForm__col\">\n @if (email) {\n <div class=\"form__group withIcon\">\n <input\n type=\"email\"\n class=\"form__control\"\n [placeholder]=\"email.placeholder\"\n [formControlName]=\"email.name!\"\n (blur)=\"validateInput(email)\"\n (input)=\"inputChange($event, email)\"\n />\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"19\"\n height=\"15\"\n >\n <use href=\"#email\"></use>\n </svg>\n </span>\n </div>\n\n @if (!email.valid()) {\n <span class=\"form-error\">{{\n email.error\n }}</span>\n }\n }\n </div>\n <div class=\"newsletterForm__col\">\n @if (lang) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"lang\"\n >\n <option value=\"\" disabled selected>\n {{ lang.placeholder }}\n </option>\n @for (\n option of lang.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"newsletterForm__row\">\n <div class=\"newsletterForm__col\">\n @if (country) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"country\"\n >\n <option value=\"\">\n {{ country.placeholder }}\n </option>\n @for (\n option of country.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n <div class=\"newsletterForm__col\">\n @if (center) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"center\"\n >\n <option value=\"\">\n {{ center.placeholder }}\n </option>\n @for (\n option of center.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"newsletterForm__row\">\n <div class=\"newsletterForm__col\">\n @if (resident) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"resident\"\n >\n <option value=\"\">\n {{ resident.placeholder }}\n </option>\n @for (\n option of resident.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"newsletterForm__row\">\n <div class=\"newsletterForm__col\">\n <div class=\"block-checkbox\">\n @if (conditions) {\n <label class=\"form__checkbox\">\n <input\n type=\"checkbox\"\n class=\"checkbox\"\n formControlName=\"conditions\"\n />\n <span class=\"box\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"9\"\n height=\"7\"\n >\n <use\n href=\"#checkbox-tick\"\n ></use>\n </svg>\n </span>\n <span [innerHTML]=\"conditions\"></span>\n </label>\n }\n </div>\n </div>\n </div>\n\n <div class=\"btn__group\">\n @if (button) {\n <button\n type=\"submit\"\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"button.label\"\n [disabled]=\"!form.valid\"\n (click)=\"submitForm($event)\"\n >\n <span>{{ button.label }}</span>\n </button>\n }\n </div>\n </form>\n }\n </div>\n </div>\n</section>\n", styles: [".newsletter__content,.newsletterForm__col .form__group .form__control{background-color:#f9f5ed}\n"] }]
130
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"newsletter\">\n @if (image) {\n <div class=\"newsletter__graphic\">\n <img\n [src]=\"image.src\"\n [alt]=\"image.alt\"\n class=\"newsletter__graphic--img\"\n width=\"960\"\n height=\"985\" loading=\"lazy\" />\n </div>\n }\n <div class=\"newsletter__content\">\n <div class=\"newsletter__contentInner\">\n <div class=\"newsletter__headingSection\">\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'h2'\"\n cssClass=\"newsletter__heading\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n @if (subtitle) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.subtitle || 'p'\"\n cssClass=\"newsletter__subHeading\"\n [color]=\"textColors?.subtitle\"\n [content]=\"subtitle\"\n ></lib-puro-dynamic-heading>\n }\n </div>\n @if (description) {\n <p class=\"newsletter__paragraph\">{{ description }}</p>\n }\n @if (formReady$()) {\n <form [formGroup]=\"form\" class=\"form\" (ngSubmit)=\"submitForm()\">\n <div class=\"newsletterForm__row\">\n <div class=\"newsletterForm__col\">\n @if (email) {\n <div class=\"form__group withIcon\">\n <input\n type=\"email\"\n class=\"form__control\"\n [placeholder]=\"email.placeholder\"\n [formControlName]=\"email.name!\"\n (blur)=\"validateInput(email)\"\n (input)=\"inputChange($event, email)\"\n />\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"19\"\n height=\"15\"\n >\n <use href=\"#email\"></use>\n </svg>\n </span>\n </div>\n\n @if (email?.valid && !email.valid()) {\n <span class=\"form-error\">{{\n email.error\n }}</span>\n }\n }\n </div>\n <div class=\"newsletterForm__col\">\n @if (lang) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"lang\"\n >\n <option value=\"\" disabled selected>\n {{ lang.placeholder }}\n </option>\n @for (\n option of lang.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"newsletterForm__row\">\n <div class=\"newsletterForm__col\">\n @if (country) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"country\"\n >\n <option value=\"\">\n {{ country.placeholder }}\n </option>\n @for (\n option of country.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n <div class=\"newsletterForm__col\">\n @if (center) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"center\"\n >\n <option value=\"\">\n {{ center.placeholder }}\n </option>\n @for (\n option of center.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"newsletterForm__row\">\n <div class=\"newsletterForm__col\">\n @if (resident) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"resident\"\n >\n <option value=\"\">\n {{ resident.placeholder }}\n </option>\n @for (\n option of resident.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"newsletterForm__row\">\n <div class=\"newsletterForm__col\">\n <div class=\"block-checkbox\">\n @if (conditions) {\n <label class=\"form__checkbox\">\n <input\n type=\"checkbox\"\n class=\"checkbox\"\n formControlName=\"conditions\"\n />\n <span class=\"box\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"9\"\n height=\"7\"\n >\n <use\n href=\"#checkbox-tick\"\n ></use>\n </svg>\n </span>\n <span [innerHTML]=\"conditions\"></span>\n </label>\n }\n </div>\n </div>\n </div>\n\n <div class=\"btn__group\">\n @if (button) {\n <button\n type=\"submit\"\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"button.label\"\n [disabled]=\"!form.valid\"\n (click)=\"submitForm($event)\"\n >\n <span>{{ button.label }}</span>\n </button>\n }\n </div>\n </form>\n }\n </div>\n </div>\n</section>\n", styles: [".newsletter__content,.newsletterForm__col .form__group .form__control{background-color:#f9f5ed}\n"] }]
122
131
  }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i0.ChangeDetectorRef }, { type: Object, decorators: [{
123
132
  type: Inject,
124
133
  args: [PLATFORM_ID]
@@ -151,4 +160,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
151
160
  }], submitFormValue: [{
152
161
  type: Output
153
162
  }] } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1uZXdzbGV0dGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3B1cm8vc3JjL2xpYi9jb21wb25lbnRzL3B1cm8tbmV3c2xldHRlci9wdXJvLW5ld3NsZXR0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1uZXdzbGV0dGVyL3B1cm8tbmV3c2xldHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFdBQVcsRUFDWCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdILFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFTakUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7OztBQWlCaEYsTUFBTSxPQUFPLHVCQUF1QjtJQXFCaEMsWUFDcUIsRUFBZSxFQUNmLEdBQXNCLEVBQ1YsVUFBa0I7UUFGOUIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ1YsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQVJ6QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFHcEQsZUFBVSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQU1qQyxDQUFDO0lBRUosUUFBUTtRQUNKLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNy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QUs7Z0JBRUksZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFBMQVRGT1JNX0lELFxuICAgIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEZvcm1CdWlsZGVyLFxuICAgIEZvcm1Hcm91cCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEF1dG9JbWFnZVpvb21XcmFwcGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQge1xuICAgIFB1cm9CdXR0b25JLFxuICAgIFB1cm9JbWFnZUksXG4gICAgUHVyb0lucHV0SSxcbiAgICBQdXJvVGFnc0ksXG4gICAgUHVyb1RleHRzQ29sb3JzSSxcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQdXJvRHJvcGRvd25JIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wdXJvLWRyb3Bkb3duLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQdXJvRHluYW1pY0hlYWRpbmdDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zaGFyZWQvcHVyby1keW5hbWljLWhlYWRpbmcnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1wdXJvLW5ld3NsZXR0ZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuXG4gICAgICAgIEF1dG9JbWFnZVpvb21XcmFwcGVyRGlyZWN0aXZlLFxuICAgICAgICBQdXJvRHluYW1pY0hlYWRpbmdDb21wb25lbnQsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHVyby1uZXdzbGV0dGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcHVyby1uZXdzbGV0dGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUHVyb05ld3NsZXR0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGltYWdlPzogUHVyb0ltYWdlSTtcblxuICAgIEBJbnB1dCgpIGVtYWlsPzogUHVyb0lucHV0STtcbiAgICBASW5wdXQoKSBsYW5nPzogUHVyb0Ryb3Bkb3duSTtcbiAgICBASW5wdXQoKSBjb3VudHJ5PzogUHVyb0Ryb3Bkb3duSTtcbiAgICBASW5wdXQoKSBjZW50ZXI/OiBQdXJvRHJvcGRvd25JO1xuICAgIEBJbnB1dCgpIHJlc2lkZW50PzogUHVyb0Ryb3Bkb3duSTtcbiAgICBASW5wdXQoKSBjb25kaXRpb25zPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGJ1dHRvbj86IFB1cm9CdXR0b25JO1xuICAgIEBJbnB1dCgpIHRhZ3M/OiBQdXJvVGFnc0k7XG4gICAgQElucHV0KCkgdGV4dENvbG9ycz86IFB1cm9UZXh0c0NvbG9yc0k7XG5cbiAgICBAT3V0cHV0KCkgc3VibWl0Rm9ybVZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBmb3JtITogRm9ybUdyb3VwO1xuICAgIGZvcm1SZWFkeSQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0XG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnVpbGRGb3JtKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZEZvcm0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG5cbiAgICAgICAgLy8gZW1haWwgaW5wdXRcbiAgICAgICAgaWYgKHRoaXMuZW1haWw/Lm5hbWUpIHtcbiAgICAgICAgICAgIGNvbnRyb2xzW3RoaXMuZW1haWwubmFtZV0gPSBbXG4gICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgdGhpcy5lbWFpbC52YWxpZGF0b3JzIHx8IFtcbiAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5lbWFpbCxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGRyb3Bkb3duc1xuICAgICAgICBpZiAodGhpcy5sYW5nKSBjb250cm9sc1snbGFuZyddID0gWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXTtcbiAgICAgICAgaWYgKHRoaXMuY291bnRyeSkgY29udHJvbHNbJ2NvdW50cnknXSA9IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF07XG4gICAgICAgIGlmICh0aGlzLmNlbnRlcikgY29udHJvbHNbJ2NlbnRlciddID0gWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXTtcbiAgICAgICAgaWYgKHRoaXMucmVzaWRlbnQpIGNvbnRyb2xzWydyZXNpZGVudCddID0gWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXTtcblxuICAgICAgICAvLyBjaGVja2JveFxuICAgICAgICBpZiAodGhpcy5jb25kaXRpb25zKVxuICAgICAgICAgICAgY29udHJvbHNbJ2NvbmRpdGlvbnMnXSA9IFtmYWxzZSwgVmFsaWRhdG9ycy5yZXF1aXJlZFRydWVdO1xuXG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoY29udHJvbHMpO1xuXG4gICAgICAgIHRoaXMuZm9ybVJlYWR5JC5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHN1Ym1pdEZvcm0oZT86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGU/LnByZXZlbnREZWZhdWx0Py4oKTtcbiAgICAgICAgdGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcblxuICAgICAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcbiAgICAgICAgICAgIE9iamVjdC52YWx1ZXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgYy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgICAgICAgICAgYy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHRoaXMuZW1haWwpIHRoaXMudmFsaWRhdGVJbnB1dCh0aGlzLmVtYWlsKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3VibWl0Rm9ybVZhbHVlLmVtaXQodGhpcy5mb3JtLnZhbHVlKTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZUFmdGVyU3VibWl0KCk7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgfVxuXG4gICAgdmFsaWRhdGVJbnB1dChpbnB1dDogUHVyb0lucHV0SSk6IHZvaWQge1xuICAgICAgICBpZiAoIWlucHV0Py5uYW1lKSByZXR1cm47XG4gICAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLmZvcm0uZ2V0KGlucHV0Lm5hbWUpO1xuICAgICAgICBpZiAoIWN0cmwpIHJldHVybjtcbiAgICAgICAgaW5wdXQudmFsaWQ/LnNldChjdHJsLmVycm9ycyA9PT0gbnVsbCk7XG4gICAgfVxuXG4gICAgaW5wdXRDaGFuZ2UoZXZlbnQ6IEV2ZW50LCBpbnB1dDogUHVyb0lucHV0SSk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGVsLnZhbHVlLnRyaW0oKTtcbiAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAoaW5wdXQubmFtZSkge1xuICAgICAgICAgICAgY29uc3QgY3RybCA9IHRoaXMuZm9ybS5nZXQoaW5wdXQubmFtZSk7XG4gICAgICAgICAgICBpZiAoY3RybCkge1xuICAgICAgICAgICAgICAgIGN0cmwuc2V0VmFsdWUodmFsdWUsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIGN0cmwubWFya0FzRGlydHkoKTtcbiAgICAgICAgICAgICAgICBjdHJsLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNldEZvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybT8ucmVzZXQoKTtcbiAgICAgICAgaWYgKHRoaXMuZW1haWwpIHRoaXMuZW1haWwudmFsdWUgPSAnJztcbiAgICAgICAgT2JqZWN0LnZhbHVlcyh0aGlzLmZvcm0uY29udHJvbHMpLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgIGMubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgICAgIGMubWFya0FzVW50b3VjaGVkKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5hdmlnYXRlQWZ0ZXJTdWJtaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuYnV0dG9uPy51cmw7XG4gICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLmJ1dHRvbj8ubGlua1R5cGU7XG5cbiAgICAgICAgaWYgKCF1cmwgfHwgIXR5cGUpIHJldHVybjtcblxuICAgICAgICBpZiAodHlwZSA9PT0gJ2ludGVybmFsJyB8fCB0eXBlID09PSAnaW50ZXJuYWxfbGluaycpIHtcbiAgICAgICAgICAgIC8vIG5hdmVnYWNpw7NuIFNQQVxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbih1cmwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZXh0ZXJuYWxcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPHNlY3Rpb24gY2xhc3M9XCJuZXdzbGV0dGVyXCI+XG4gICAgQGlmIChpbWFnZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwibmV3c2xldHRlcl9fZ3JhcGhpY1wiPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIFtzcmNdPVwiaW1hZ2Uuc3JjXCJcbiAgICAgICAgICAgICAgICBbYWx0XT1cImltYWdlLmFsdFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJuZXdzbGV0dGVyX19ncmFwaGljLS1pbWdcIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiOTYwXCJcbiAgICAgICAgICAgICAgICBoZWlnaHQ9XCI5ODVcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8ZGl2IGNsYXNzPVwibmV3c2xldHRlcl9fY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibmV3c2xldHRlcl9fY29udGVudElubmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3c2xldHRlcl9faGVhZGluZ1NlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICBAaWYgKHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxsaWItcHVyby1keW5hbWljLWhlYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0YWddPVwidGFncz8udGl0bGUgfHwgJ2gyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzcz1cIm5ld3NsZXR0ZXJfX2hlYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInRleHRDb2xvcnM/LnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cInRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbGliLXB1cm8tZHluYW1pYy1oZWFkaW5nPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKHN1YnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxsaWItcHVyby1keW5hbWljLWhlYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0YWddPVwidGFncz8uc3VidGl0bGUgfHwgJ3AnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzPVwibmV3c2xldHRlcl9fc3ViSGVhZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwidGV4dENvbG9ycz8uc3VidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwic3VidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItcHVyby1keW5hbWljLWhlYWRpbmc+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdzbGV0dGVyX19wYXJhZ3JhcGhcIj57eyBkZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZm9ybVJlYWR5JCgpKSB7XG4gICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJmb3JtXCIgKG5nU3VibWl0KT1cInN1Ym1pdEZvcm0oKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3c2xldHRlckZvcm1fX3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld3NsZXR0ZXJGb3JtX19jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGVtYWlsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtX19ncm91cCB3aXRoSWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm1fX2NvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJlbWFpbC5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbWFpbC5uYW1lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwidmFsaWRhdGVJbnB1dChlbWFpbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJpbnB1dENoYW5nZSgkZXZlbnQsIGVtYWlsKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIGhyZWY9XCIjZW1haWxcIj48L3VzZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghZW1haWwudmFsaWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWVycm9yXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbC5lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXdzbGV0dGVyRm9ybV9fY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChsYW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtX19ncm91cCB3aXRoSWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybV9fY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGFuZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiIGRpc2FibGVkIHNlbGVjdGVkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBsYW5nLnBsYWNlaG9sZGVyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBvZiBsYW5nLm9wdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrICRpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRpb24uY29kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI3NlbGVjdC1hcnJvd1wiPjwvdXNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld3NsZXR0ZXJGb3JtX19yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXdzbGV0dGVyRm9ybV9fY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjb3VudHJ5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtX19ncm91cCB3aXRoSWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybV9fY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY291bnRyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudHJ5LnBsYWNlaG9sZGVyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBvZiBjb3VudHJ5Lm9wdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrICRpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRpb24uY29kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI3NlbGVjdC1hcnJvd1wiPjwvdXNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXdzbGV0dGVyRm9ybV9fY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjZW50ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2dyb3VwIHdpdGhJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtX19jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY2VudGVyLnBsYWNlaG9sZGVyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBvZiBjZW50ZXIub3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi5jb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiOFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIGhyZWY9XCIjc2VsZWN0LWFycm93XCI+PC91c2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3c2xldHRlckZvcm1fX3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld3NsZXR0ZXJGb3JtX19jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHJlc2lkZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtX19ncm91cCB3aXRoSWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybV9fY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVzaWRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVzaWRlbnQucGxhY2Vob2xkZXIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uIG9mIHJlc2lkZW50Lm9wdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrICRpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRpb24uY29kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI3NlbGVjdC1hcnJvd1wiPjwvdXNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld3NsZXR0ZXJGb3JtX19yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXdzbGV0dGVyRm9ybV9fY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJsb2NrLWNoZWNrYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29uZGl0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybV9fY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbmRpdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiOVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIjY2hlY2tib3gtdGlja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC91c2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImNvbmRpdGlvbnNcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bl9fZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5LS1vdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidXR0b24ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3VibWl0Rm9ybSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGJ1dHRvbi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvc2VjdGlvbj5cbiJdfQ==
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1uZXdzbGV0dGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3B1cm8vc3JjL2xpYi9jb21wb25lbnRzL3B1cm8tbmV3c2xldHRlci9wdXJvLW5ld3NsZXR0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1uZXdzbGV0dGVyL3B1cm8tbmV3c2xldHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFdBQVcsRUFDWCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdILFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFTakUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFpQjFDLE1BQU0sT0FBTyx1QkFBdUI7SUFxQmhDLFlBQ3FCLEVBQWUsRUFDZixHQUFzQixFQUNWLFVBQWtCO1FBRjlCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUNWLGVBQVUsR0FBVixVQUFVLENBQVE7UUFSekMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBR3BELGVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFNakMsQ0FBQztJ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QUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBQTEFURk9STV9JRCxcbiAgICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBGb3JtQnVpbGRlcixcbiAgICBGb3JtR3JvdXAsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBdXRvSW1hZ2Vab29tV3JhcHBlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHtcbiAgICBQdXJvQnV0dG9uSSxcbiAgICBQdXJvSW1hZ2VJLFxuICAgIFB1cm9JbnB1dEksXG4gICAgUHVyb1RhZ3NJLFxuICAgIFB1cm9UZXh0c0NvbG9yc0ksXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUHVyb0Ryb3Bkb3duSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcHVyby1kcm9wZG93bi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUHVyb0R5bmFtaWNIZWFkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc2hhcmVkL3B1cm8tZHluYW1pYy1oZWFkaW5nJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1wdXJvLW5ld3NsZXR0ZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuXG4gICAgICAgIEF1dG9JbWFnZVpvb21XcmFwcGVyRGlyZWN0aXZlLFxuICAgICAgICBQdXJvRHluYW1pY0hlYWRpbmdDb21wb25lbnQsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHVyby1uZXdzbGV0dGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcHVyby1uZXdzbGV0dGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUHVyb05ld3NsZXR0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGltYWdlPzogUHVyb0ltYWdlSTtcblxuICAgIEBJbnB1dCgpIGVtYWlsPzogUHVyb0lucHV0STtcbiAgICBASW5wdXQoKSBsYW5nPzogUHVyb0Ryb3Bkb3duSTtcbiAgICBASW5wdXQoKSBjb3VudHJ5PzogUHVyb0Ryb3Bkb3duSTtcbiAgICBASW5wdXQoKSBjZW50ZXI/OiBQdXJvRHJvcGRvd25JO1xuICAgIEBJbnB1dCgpIHJlc2lkZW50PzogUHVyb0Ryb3Bkb3duSTtcbiAgICBASW5wdXQoKSBjb25kaXRpb25zPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGJ1dHRvbj86IFB1cm9CdXR0b25JO1xuICAgIEBJbnB1dCgpIHRhZ3M/OiBQdXJvVGFnc0k7XG4gICAgQElucHV0KCkgdGV4dENvbG9ycz86IFB1cm9UZXh0c0NvbG9yc0k7XG5cbiAgICBAT3V0cHV0KCkgc3VibWl0Rm9ybVZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBmb3JtITogRm9ybUdyb3VwO1xuICAgIGZvcm1SZWFkeSQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0XG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnVpbGRGb3JtKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZEZvcm0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG5cbiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAvLyBFTUFJTFxuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgIGlmICh0aGlzLmVtYWlsPy5uYW1lKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gVXRpbHMuc2FmZVZhbGlkYXRvcnModGhpcy5lbWFpbC52YWxpZGF0b3JzKTtcbiAgICAgICAgICAgIGNvbnRyb2xzW3RoaXMuZW1haWwubmFtZV0gPSBbXG4gICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgdi5sZW5ndGggPyB2IDogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgLy8gRFJPUERPV05TXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgaWYgKHRoaXMubGFuZykgY29udHJvbHNbJ2xhbmcnXSA9IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF07XG4gICAgICAgIGlmICh0aGlzLmNvdW50cnkpIGNvbnRyb2xzWydjb3VudHJ5J10gPSBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdO1xuICAgICAgICBpZiAodGhpcy5jZW50ZXIpIGNvbnRyb2xzWydjZW50ZXInXSA9IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF07XG4gICAgICAgIGlmICh0aGlzLnJlc2lkZW50KSBjb250cm9sc1sncmVzaWRlbnQnXSA9IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF07XG5cbiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAvLyBDSEVDS0JPWFxuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnRyb2xzWydjb25kaXRpb25zJ10gPSBbZmFsc2UsIFZhbGlkYXRvcnMucmVxdWlyZWRUcnVlXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgLy8gQlVJTEQgRk9STVxuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoY29udHJvbHMpO1xuICAgICAgICB0aGlzLmZvcm1SZWFkeSQuc2V0KHRydWUpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBzdWJtaXRGb3JtKGU/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBlPy5wcmV2ZW50RGVmYXVsdD8uKCk7XG4gICAgICAgIHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XG4gICAgICAgICAgICBPYmplY3QudmFsdWVzKHRoaXMuZm9ybS5jb250cm9scykuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgICAgIGMubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAgICAgICAgIGMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmVtYWlsKSB0aGlzLnZhbGlkYXRlSW5wdXQodGhpcy5lbWFpbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN1Ym1pdEZvcm1WYWx1ZS5lbWl0KHRoaXMuZm9ybS52YWx1ZSk7XG4gICAgICAgIHRoaXMubmF2aWdhdGVBZnRlclN1Ym1pdCgpO1xuICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgIH1cblxuICAgIHZhbGlkYXRlSW5wdXQoaW5wdXQ6IFB1cm9JbnB1dEkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpbnB1dD8ubmFtZSkgcmV0dXJuO1xuICAgICAgICBjb25zdCBjdHJsID0gdGhpcy5mb3JtLmdldChpbnB1dC5uYW1lKTtcbiAgICAgICAgaWYgKCFjdHJsKSByZXR1cm47XG4gICAgICAgIGlucHV0LnZhbGlkPy5zZXQoY3RybC5lcnJvcnMgPT09IG51bGwpO1xuICAgIH1cblxuICAgIGlucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCwgaW5wdXQ6IFB1cm9JbnB1dEkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWwgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBlbC52YWx1ZS50cmltKCk7XG4gICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKGlucHV0Lm5hbWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLmZvcm0uZ2V0KGlucHV0Lm5hbWUpO1xuICAgICAgICAgICAgaWYgKGN0cmwpIHtcbiAgICAgICAgICAgICAgICBjdHJsLnNldFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICBjdHJsLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgICAgICAgY3RybC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVzZXRGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0/LnJlc2V0KCk7XG4gICAgICAgIGlmICh0aGlzLmVtYWlsKSB0aGlzLmVtYWlsLnZhbHVlID0gJyc7XG4gICAgICAgIE9iamVjdC52YWx1ZXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICBjLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgICAgICBjLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBuYXZpZ2F0ZUFmdGVyU3VibWl0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmJ1dHRvbj8udXJsO1xuICAgICAgICBjb25zdCB0eXBlID0gdGhpcy5idXR0b24/LmxpbmtUeXBlO1xuXG4gICAgICAgIGlmICghdXJsIHx8ICF0eXBlKSByZXR1cm47XG5cbiAgICAgICAgaWYgKHR5cGUgPT09ICdpbnRlcm5hbCcgfHwgdHlwZSA9PT0gJ2ludGVybmFsX2xpbmsnKSB7XG4gICAgICAgICAgICAvLyBuYXZlZ2FjacOzbiBTUEFcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGV4dGVybmFsXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwibmV3c2xldHRlclwiPlxuICAgIEBpZiAoaW1hZ2UpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5ld3NsZXR0ZXJfX2dyYXBoaWNcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlLnNyY1wiXG4gICAgICAgICAgICAgICAgW2FsdF09XCJpbWFnZS5hbHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibmV3c2xldHRlcl9fZ3JhcGhpYy0taW1nXCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjk2MFwiXG4gICAgICAgICAgICAgICAgaGVpZ2h0PVwiOTg1XCIgbG9hZGluZz1cImxhenlcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG4gICAgPGRpdiBjbGFzcz1cIm5ld3NsZXR0ZXJfX2NvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5ld3NsZXR0ZXJfX2NvbnRlbnRJbm5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld3NsZXR0ZXJfX2hlYWRpbmdTZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgQGlmICh0aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICA8bGliLXB1cm8tZHluYW1pYy1oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFnXT1cInRhZ3M/LnRpdGxlIHx8ICdoMidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M9XCJuZXdzbGV0dGVyX19oZWFkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJ0ZXh0Q29sb3JzPy50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgID48L2xpYi1wdXJvLWR5bmFtaWMtaGVhZGluZz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChzdWJ0aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICA8bGliLXB1cm8tZHluYW1pYy1oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFnXT1cInRhZ3M/LnN1YnRpdGxlIHx8ICdwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzcz1cIm5ld3NsZXR0ZXJfX3N1YkhlYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInRleHRDb2xvcnM/LnN1YnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cInN1YnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbGliLXB1cm8tZHluYW1pYy1oZWFkaW5nPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgQGlmIChkZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3c2xldHRlcl9fcGFyYWdyYXBoXCI+e3sgZGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGZvcm1SZWFkeSQoKSkge1xuICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJzdWJtaXRGb3JtKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld3NsZXR0ZXJGb3JtX19yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXdzbGV0dGVyRm9ybV9fY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChlbWFpbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZ3JvdXAgd2l0aEljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtX19jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZW1haWwucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZW1haWwubmFtZSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cInZhbGlkYXRlSW5wdXQoZW1haWwpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwiaW5wdXRDaGFuZ2UoJGV2ZW50LCBlbWFpbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI2VtYWlsXCI+PC91c2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZW1haWw/LnZhbGlkICYmICFlbWFpbC52YWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tZXJyb3JcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsLmVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld3NsZXR0ZXJGb3JtX19jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGxhbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2dyb3VwIHdpdGhJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtX19jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsYW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgZGlzYWJsZWQgc2VsZWN0ZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxhbmcucGxhY2Vob2xkZXIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uIG9mIGxhbmcub3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi5jb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiOFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIGhyZWY9XCIjc2VsZWN0LWFycm93XCI+PC91c2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3c2xldHRlckZvcm1fX3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld3NsZXR0ZXJGb3JtX19jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNvdW50cnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2dyb3VwIHdpdGhJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtX19jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb3VudHJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvdW50cnkucGxhY2Vob2xkZXIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uIG9mIGNvdW50cnkub3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi5jb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiOFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIGhyZWY9XCIjc2VsZWN0LWFycm93XCI+PC91c2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld3NsZXR0ZXJGb3JtX19jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNlbnRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZ3JvdXAgd2l0aEljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm1fX2NvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjZW50ZXIucGxhY2Vob2xkZXIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uIG9mIGNlbnRlci5vcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayAkaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwib3B0aW9uLmNvZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgaHJlZj1cIiNzZWxlY3QtYXJyb3dcIj48L3VzZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXdzbGV0dGVyRm9ybV9fcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3c2xldHRlckZvcm1fX2NvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocmVzaWRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2dyb3VwIHdpdGhJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtX19jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyZXNpZGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByZXNpZGVudC5wbGFjZWhvbGRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24gb2YgcmVzaWRlbnQub3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi5jb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiOFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIGhyZWY9XCIjc2VsZWN0LWFycm93XCI+PC91c2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3c2xldHRlckZvcm1fX3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld3NsZXR0ZXJGb3JtX19jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmxvY2stY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjb25kaXRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtX19jaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29uZGl0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIiNjaGVja2JveC10aWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3VzZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY29uZGl0aW9uc1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuX19ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChidXR0b24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fX3ByaW1hcnktLW91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdWJtaXRGb3JtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYnV0dG9uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19