@ecodev/natural 55.2.0 → 55.4.0

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,4 +1,4 @@
1
- import { Component, Input } from '@angular/core';
1
+ import { Component, HostBinding, Input } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../service/avatar.service";
@@ -10,10 +10,11 @@ export class NaturalAvatarComponent {
10
10
  constructor(avatarService) {
11
11
  this.avatarService = avatarService;
12
12
  this.size = 50;
13
- this.textSizeRatio = 3;
13
+ this.decorated = true;
14
+ this.textSizeRatio = 2.25;
14
15
  this.fgColor = '#FFF';
15
16
  this.borderRadius = '';
16
- this.textMaximumLength = 0;
17
+ this.textMaximumLength = 2;
17
18
  this.avatarSrc = null;
18
19
  this.avatarText = null;
19
20
  this.avatarStyle = {};
@@ -108,6 +109,8 @@ export class NaturalAvatarComponent {
108
109
  backgroundColor: this.bgColor ? this.bgColor : this.avatarService.getRandomColor(avatarValue),
109
110
  font: Math.floor(+this.size / this.textSizeRatio) + 'px Helvetica, Arial, sans-serif',
110
111
  lineHeight: this.size + 'px',
112
+ width: this.size + 'px',
113
+ height: this.size + 'px',
111
114
  };
112
115
  }
113
116
  /**
@@ -122,7 +125,7 @@ export class NaturalAvatarComponent {
122
125
  };
123
126
  }
124
127
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NaturalAvatarComponent, deps: [{ token: i1.AvatarService }], target: i0.ɵɵFactoryTarget.Component }); }
125
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.2", type: NaturalAvatarComponent, isStandalone: true, selector: "natural-avatar", inputs: { image: "image", initials: "initials", gravatar: "gravatar", size: "size", textSizeRatio: "textSizeRatio", bgColor: "bgColor", fgColor: "fgColor", borderRadius: "borderRadius", textMaximumLength: "textMaximumLength" }, usesOnChanges: true, ngImport: i0, template: `
128
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.2", type: NaturalAvatarComponent, isStandalone: true, selector: "natural-avatar", inputs: { image: "image", initials: "initials", gravatar: "gravatar", size: "size", decorated: "decorated", textSizeRatio: "textSizeRatio", bgColor: "bgColor", fgColor: "fgColor", borderRadius: "borderRadius", textMaximumLength: "textMaximumLength" }, host: { properties: { "style.height.px": "this.size", "style.width.px": "this.size", "class.decorated": "this.decorated" } }, usesOnChanges: true, ngImport: i0, template: `
126
129
  <div class="avatar-container" [ngStyle]="hostStyle">
127
130
  <img
128
131
  *ngIf="avatarSrc"
@@ -134,11 +137,16 @@ export class NaturalAvatarComponent {
134
137
  class="avatar-content"
135
138
  loading="lazy"
136
139
  />
137
- <div *ngIf="avatarText" class="avatar-content" [ngStyle]="avatarStyle">
140
+ <div
141
+ *ngIf="avatarText"
142
+ class="avatar-content"
143
+ [class.natural-elevation]="decorated"
144
+ [ngStyle]="avatarStyle"
145
+ >
138
146
  {{ avatarText }}
139
147
  </div>
140
148
  </div>
141
- `, isInline: true, styles: [":host{border-radius:50%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
149
+ `, isInline: true, styles: [":host{display:block}:host.decorated{position:relative}:host.decorated .avatar-container:before{content:\"\";position:absolute;inset:0;border-radius:50%;background:linear-gradient(345deg,rgba(255,255,255,0) 25%,rgba(255,255,255,.33) 100%)}:host.decorated .avatar-content{text-shadow:0 1px 0 rgba(0,0,0,.6)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
142
150
  }
143
151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NaturalAvatarComponent, decorators: [{
144
152
  type: Component,
@@ -154,11 +162,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
154
162
  class="avatar-content"
155
163
  loading="lazy"
156
164
  />
157
- <div *ngIf="avatarText" class="avatar-content" [ngStyle]="avatarStyle">
165
+ <div
166
+ *ngIf="avatarText"
167
+ class="avatar-content"
168
+ [class.natural-elevation]="decorated"
169
+ [ngStyle]="avatarStyle"
170
+ >
158
171
  {{ avatarText }}
159
172
  </div>
160
173
  </div>
161
- `, standalone: true, imports: [CommonModule], styles: [":host{border-radius:50%}\n"] }]
174
+ `, standalone: true, imports: [CommonModule], styles: [":host{display:block}:host.decorated{position:relative}:host.decorated .avatar-container:before{content:\"\";position:absolute;inset:0;border-radius:50%;background:linear-gradient(345deg,rgba(255,255,255,0) 25%,rgba(255,255,255,.33) 100%)}:host.decorated .avatar-content{text-shadow:0 1px 0 rgba(0,0,0,.6)}\n"] }]
162
175
  }], ctorParameters: function () { return [{ type: i1.AvatarService }]; }, propDecorators: { image: [{
163
176
  type: Input
164
177
  }], initials: [{
@@ -166,6 +179,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
166
179
  }], gravatar: [{
167
180
  type: Input
168
181
  }], size: [{
182
+ type: HostBinding,
183
+ args: ['style.height.px']
184
+ }, {
185
+ type: HostBinding,
186
+ args: ['style.width.px']
187
+ }, {
188
+ type: Input
189
+ }], decorated: [{
190
+ type: HostBinding,
191
+ args: ['class.decorated']
192
+ }, {
169
193
  type: Input
170
194
  }], textSizeRatio: [{
171
195
  type: Input
@@ -178,4 +202,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
178
202
  }], textMaximumLength: [{
179
203
  type: Input
180
204
  }] } });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2F2YXRhci9jb21wb25lbnQvYXZhdGFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBMkIsTUFBTSxlQUFlLENBQUM7QUFJekUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7O0FBSTdDOztHQUVHO0FBOEJILE1BQU0sT0FBTyxzQkFBc0I7SUFvQi9CLFlBQW9DLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBZmhELFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUVsQixZQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ2pCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLHNCQUFpQixHQUFHLENBQUMsQ0FBQztRQUUvQixjQUFTLEdBQWtCLElBQUksQ0FBQztRQUNoQyxlQUFVLEdBQWtCLElBQUksQ0FBQztRQUNqQyxnQkFBVyxHQUFVLEVBQUUsQ0FBQztRQUN4QixjQUFTLEdBQVUsRUFBRSxDQUFDO1FBRXJCLGlCQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEIsWUFBTyxHQUFhLEVBQUUsQ0FBQztJQUVvQyxDQUFDO0lBRXBFOztPQUVHO0lBQ0ksV0FBVyxDQUFDLE9BQXNCO1FBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUN4QixLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNoRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNwQixTQUFTO2FBQ1o7WUFFRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDO1lBQ3BELElBQUksWUFBWSxJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVEsRUFBRTtnQkFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQzthQUNoRDtTQUNKO1FBRUQsNkVBQTZFO1FBQzdFLDhEQUE4RDtRQUM5RCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ2hCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZELElBQUksY0FBYyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDekQ7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2hDO2FBQU07WUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDakM7SUFDTCxDQUFDO0lBRU8sY0FBYztRQUNsQixPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUM5QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMvQyxJQUFJLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzdELE9BQU8sTUFBTSxDQUFDO2FBQ2pCO1NBQ0o7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0I7UUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRztnQkFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJO2dCQUN2QixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJO2FBQzNCLENBQUM7U0FDTDtJQUNMLENBQUM7SUFFTyxXQUFXO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLGVBQWUsQ0FBQyxZQUFvQjtRQUN4QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxZQUFvQjtRQUN6QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNLLGVBQWUsQ0FBQyxXQUFtQjtRQUN2QyxPQUFPO1lBQ0gsU0FBUyxFQUFFLFFBQVE7WUFDbkIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLElBQUksTUFBTTtZQUN6QyxhQUFhLEVBQUUsV0FBVztZQUMxQixLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDbkIsZUFBZSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQztZQUM3RixJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLGlDQUFpQztZQUNyRixVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJO1NBQy9CLENBQUM7SUFDTixDQUFDO0lBRUQ7O09BRUc7SUFDSyxhQUFhO1FBQ2pCLE9BQU87WUFDSCxRQUFRLEVBQUUsTUFBTTtZQUNoQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksSUFBSSxNQUFNO1lBQ3pDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUk7WUFDdkIsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSTtTQUMzQixDQUFDO0lBQ04sQ0FBQzs4R0FySVEsc0JBQXNCO2tHQUF0QixzQkFBc0IsbVVBcEJyQjs7Ozs7Ozs7Ozs7Ozs7OztLQWdCVCxtR0FFUyxZQUFZOzsyRkFFYixzQkFBc0I7a0JBN0JsQyxTQUFTOytCQUNJLGdCQUFnQixZQVFoQjs7Ozs7Ozs7Ozs7Ozs7OztLQWdCVCxjQUNXLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQztvR0FHUCxLQUFLO3NCQUFwQixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFFVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsaUJBQWlCO3NCQUFoQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1NvdXJjZX0gZnJvbSAnLi4vc291cmNlcy9zb3VyY2UnO1xuaW1wb3J0IHtBdmF0YXJTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL2F2YXRhci5zZXJ2aWNlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG50eXBlIFN0eWxlID0gUGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPjtcblxuLyoqXG4gKiBTaG93IGFuIGF2YXRhciBmcm9tIGRpZmZlcmVudCBzb3VyY2VzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmF0dXJhbC1hdmF0YXInLFxuICAgIHN0eWxlczogW1xuICAgICAgICBgXG4gICAgICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgfVxuICAgICAgICBgLFxuICAgIF0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jb250YWluZXJcIiBbbmdTdHlsZV09XCJob3N0U3R5bGVcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAqbmdJZj1cImF2YXRhclNyY1wiXG4gICAgICAgICAgICAgICAgW3NyY109XCJhdmF0YXJTcmNcIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCJzaXplXCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cInNpemVcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImF2YXRhclN0eWxlXCJcbiAgICAgICAgICAgICAgICAoZXJyb3IpPVwidHJ5TmV4dFNvdXJjZSgpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImF2YXRhci1jb250ZW50XCJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImF2YXRhclRleHRcIiBjbGFzcz1cImF2YXRhci1jb250ZW50XCIgW25nU3R5bGVdPVwiYXZhdGFyU3R5bGVcIj5cbiAgICAgICAgICAgICAgICB7eyBhdmF0YXJUZXh0IH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsQXZhdGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSBwdWJsaWMgaW1hZ2U/OiBzdHJpbmcgfCBudWxsO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpbml0aWFscz86IHN0cmluZyB8IG51bGw7XG4gICAgQElucHV0KCkgcHVibGljIGdyYXZhdGFyPzogc3RyaW5nIHwgbnVsbDtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBzaXplID0gNTA7XG4gICAgQElucHV0KCkgcHVibGljIHRleHRTaXplUmF0aW8gPSAzO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBiZ0NvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KCkgcHVibGljIGZnQ29sb3IgPSAnI0ZGRic7XG4gICAgQElucHV0KCkgcHVibGljIGJvcmRlclJhZGl1cyA9ICcnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyB0ZXh0TWF4aW11bUxlbmd0aCA9IDA7XG5cbiAgICBwdWJsaWMgYXZhdGFyU3JjOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgYXZhdGFyVGV4dDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIGF2YXRhclN0eWxlOiBTdHlsZSA9IHt9O1xuICAgIHB1YmxpYyBob3N0U3R5bGU6IFN0eWxlID0ge307XG5cbiAgICBwcml2YXRlIGN1cnJlbnRJbmRleCA9IC0xO1xuICAgIHByaXZhdGUgc291cmNlczogU291cmNlW10gPSBbXTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGF2YXRhclNlcnZpY2U6IEF2YXRhclNlcnZpY2UpIHt9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlY3QgaW5wdXRzIGNoYW5nZVxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc291cmNlcy5sZW5ndGggPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IFtwcm9wTmFtZSwgY3JlYXRvcl0gb2YgdGhpcy5hdmF0YXJTZXJ2aWNlLmdldENyZWF0b3JzKCkpIHtcbiAgICAgICAgICAgIGlmICghY2hhbmdlc1twcm9wTmFtZV0pIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gY2hhbmdlc1twcm9wTmFtZV0uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAmJiB0eXBlb2YgY3VycmVudFZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHRoaXMuc291cmNlcy5wdXNoKG5ldyBjcmVhdG9yKGN1cnJlbnRWYWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVpbml0aWFsaXplIHRoZSBhdmF0YXIgY29tcG9uZW50IHdoZW4gYSBzb3VyY2UgcHJvcGVydHkgdmFsdWUgaGFzIGNoYW5nZWRcbiAgICAgICAgLy8gdGhlIGZhbGxiYWNrIHN5c3RlbSBtdXN0IGJlIHJlLWludm9rZWQgd2l0aCB0aGUgbmV3IHZhbHVlcy5cbiAgICAgICAgdGhpcy5pbml0aWFsaXplQXZhdGFyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmV0Y2ggYXZhdGFyIHNvdXJjZVxuICAgICAqL1xuICAgIHB1YmxpYyB0cnlOZXh0U291cmNlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2aW91c1NvdXJjZSA9IHRoaXMuc291cmNlc1t0aGlzLmN1cnJlbnRJbmRleF07XG4gICAgICAgIGlmIChwcmV2aW91c1NvdXJjZSkge1xuICAgICAgICAgICAgdGhpcy5hdmF0YXJTZXJ2aWNlLm1hcmtTb3VyY2VBc0ZhaWxlZChwcmV2aW91c1NvdXJjZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzb3VyY2UgPSB0aGlzLmZpbmROZXh0U291cmNlKCk7XG4gICAgICAgIGlmICghc291cmNlKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyQXZhdGFyKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc291cmNlLmlzVGV4dHVhbCgpKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkVGV4dEF2YXRhcihzb3VyY2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5idWlsZEltYWdlQXZhdGFyKHNvdXJjZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmROZXh0U291cmNlKCk6IFNvdXJjZSB8IG51bGwge1xuICAgICAgICB3aGlsZSAoKyt0aGlzLmN1cnJlbnRJbmRleCA8IHRoaXMuc291cmNlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHRoaXMuc291cmNlc1t0aGlzLmN1cnJlbnRJbmRleF07XG4gICAgICAgICAgICBpZiAoc291cmNlICYmICF0aGlzLmF2YXRhclNlcnZpY2Uuc291cmNlSGFzRmFpbGVkQmVmb3JlKHNvdXJjZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc291cmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZSB0aGUgYXZhdGFyIGNvbXBvbmVudCBhbmQgaXRzIGZhbGxiYWNrIHN5c3RlbVxuICAgICAqL1xuICAgIHByaXZhdGUgaW5pdGlhbGl6ZUF2YXRhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSAtMTtcbiAgICAgICAgaWYgKHRoaXMuc291cmNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnRyeU5leHRTb3VyY2UoKTtcbiAgICAgICAgICAgIHRoaXMuaG9zdFN0eWxlID0ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLnNpemUgKyAncHgnLFxuICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5zaXplICsgJ3B4JyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyQXZhdGFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmF2YXRhclNyYyA9IG51bGw7XG4gICAgICAgIHRoaXMuYXZhdGFyVGV4dCA9IG51bGw7XG4gICAgICAgIHRoaXMuYXZhdGFyU3R5bGUgPSB7fTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkVGV4dEF2YXRhcihhdmF0YXJTb3VyY2U6IFNvdXJjZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsZWFyQXZhdGFyKCk7XG4gICAgICAgIHRoaXMuYXZhdGFyVGV4dCA9IGF2YXRhclNvdXJjZS5nZXRBdmF0YXIoK3RoaXMudGV4dE1heGltdW1MZW5ndGgpO1xuICAgICAgICB0aGlzLmF2YXRhclN0eWxlID0gdGhpcy5nZXRUZXh0dWFsU3R5bGUoYXZhdGFyU291cmNlLmdldFZhbHVlKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRJbWFnZUF2YXRhcihhdmF0YXJTb3VyY2U6IFNvdXJjZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsZWFyQXZhdGFyKCk7XG4gICAgICAgIHRoaXMuYXZhdGFyU3JjID0gYXZhdGFyU291cmNlLmdldEF2YXRhcigrdGhpcy5zaXplKTtcbiAgICAgICAgdGhpcy5hdmF0YXJTdHlsZSA9IHRoaXMuZ2V0SW1hZ2VTdHlsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaW5pdGlhbHMgc3R5bGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFRleHR1YWxTdHlsZShhdmF0YXJWYWx1ZTogc3RyaW5nKTogU3R5bGUge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogdGhpcy5ib3JkZXJSYWRpdXMgfHwgJzEwMCUnLFxuICAgICAgICAgICAgdGV4dFRyYW5zZm9ybTogJ3VwcGVyY2FzZScsXG4gICAgICAgICAgICBjb2xvcjogdGhpcy5mZ0NvbG9yLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLmJnQ29sb3IgPyB0aGlzLmJnQ29sb3IgOiB0aGlzLmF2YXRhclNlcnZpY2UuZ2V0UmFuZG9tQ29sb3IoYXZhdGFyVmFsdWUpLFxuICAgICAgICAgICAgZm9udDogTWF0aC5mbG9vcigrdGhpcy5zaXplIC8gdGhpcy50ZXh0U2l6ZVJhdGlvKSArICdweCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmJyxcbiAgICAgICAgICAgIGxpbmVIZWlnaHQ6IHRoaXMuc2l6ZSArICdweCcsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpbWFnZSBzdHlsZVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0SW1hZ2VTdHlsZSgpOiBTdHlsZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiB0aGlzLmJvcmRlclJhZGl1cyB8fCAnMTAwJScsXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5zaXplICsgJ3B4JyxcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5zaXplICsgJ3B4JyxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2F2YXRhci9jb21wb25lbnQvYXZhdGFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQTJCLE1BQU0sZUFBZSxDQUFDO0FBSXRGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQUk3Qzs7R0FFRztBQXNESCxNQUFNLE9BQU8sc0JBQXNCO0lBNEIvQixZQUFvQyxhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXBCekQsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUlWLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFFakIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFFckIsWUFBTyxHQUFHLE1BQU0sQ0FBQztRQUNqQixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixzQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFFL0IsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFDaEMsZUFBVSxHQUFrQixJQUFJLENBQUM7UUFDakMsZ0JBQVcsR0FBVSxFQUFFLENBQUM7UUFDeEIsY0FBUyxHQUFVLEVBQUUsQ0FBQztRQUVyQixpQkFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLFlBQU8sR0FBYSxFQUFFLENBQUM7SUFFb0MsQ0FBQztJQUVwRTs7T0FFRztJQUNJLFdBQVcsQ0FBQyxPQUFzQjtRQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDeEIsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDaEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFR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QkFBcEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBS0MsSUFBSTtzQkFIVixXQUFXO3VCQUFDLGlCQUFpQjs7c0JBQzdCLFdBQVc7dUJBQUMsZ0JBQWdCOztzQkFDNUIsS0FBSztnQkFLQyxTQUFTO3NCQUZmLFdBQVc7dUJBQUMsaUJBQWlCOztzQkFDN0IsS0FBSztnQkFHVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLGlCQUFpQjtzQkFBaEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7U291cmNlfSBmcm9tICcuLi9zb3VyY2VzL3NvdXJjZSc7XG5pbXBvcnQge0F2YXRhclNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvYXZhdGFyLnNlcnZpY2UnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbnR5cGUgU3R5bGUgPSBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+O1xuXG4vKipcbiAqIFNob3cgYW4gYXZhdGFyIGZyb20gZGlmZmVyZW50IHNvdXJjZXNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduYXR1cmFsLWF2YXRhcicsXG4gICAgc3R5bGVzOiBbXG4gICAgICAgIGBcbiAgICAgICAgICAgIDpob3N0IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAgICAgICAgICYuZGVjb3JhdGVkIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAgICAgICAgIC5hdmF0YXItY29udGFpbmVyOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMzQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDI1JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMzKSAxMDAlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC5hdmF0YXItY29udGVudCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDAsIDAsIDAsIDAuNik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIGAsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cImhvc3RTdHlsZVwiPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICpuZ0lmPVwiYXZhdGFyU3JjXCJcbiAgICAgICAgICAgICAgICBbc3JjXT1cImF2YXRhclNyY1wiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cInNpemVcIlxuICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwic2l6ZVwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiYXZhdGFyU3R5bGVcIlxuICAgICAgICAgICAgICAgIChlcnJvcik9XCJ0cnlOZXh0U291cmNlKClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXZhdGFyLWNvbnRlbnRcIlxuICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJhdmF0YXJUZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImF2YXRhci1jb250ZW50XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MubmF0dXJhbC1lbGV2YXRpb25dPVwiZGVjb3JhdGVkXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJhdmF0YXJTdHlsZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgYXZhdGFyVGV4dCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbEF2YXRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgcHVibGljIGltYWdlPzogc3RyaW5nIHwgbnVsbDtcbiAgICBASW5wdXQoKSBwdWJsaWMgaW5pdGlhbHM/OiBzdHJpbmcgfCBudWxsO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBncmF2YXRhcj86IHN0cmluZyB8IG51bGw7XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodC5weCcpXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS53aWR0aC5weCcpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2l6ZSA9IDUwO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kZWNvcmF0ZWQnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRlY29yYXRlZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgdGV4dFNpemVSYXRpbyA9IDIuMjU7XG4gICAgQElucHV0KCkgcHVibGljIGJnQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBwdWJsaWMgZmdDb2xvciA9ICcjRkZGJztcbiAgICBASW5wdXQoKSBwdWJsaWMgYm9yZGVyUmFkaXVzID0gJyc7XG4gICAgQElucHV0KCkgcHVibGljIHRleHRNYXhpbXVtTGVuZ3RoID0gMjtcblxuICAgIHB1YmxpYyBhdmF0YXJTcmM6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBhdmF0YXJUZXh0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgYXZhdGFyU3R5bGU6IFN0eWxlID0ge307XG4gICAgcHVibGljIGhvc3RTdHlsZTogU3R5bGUgPSB7fTtcblxuICAgIHByaXZhdGUgY3VycmVudEluZGV4ID0gLTE7XG4gICAgcHJpdmF0ZSBzb3VyY2VzOiBTb3VyY2VbXSA9IFtdO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXZhdGFyU2VydmljZTogQXZhdGFyU2VydmljZSkge31cblxuICAgIC8qKlxuICAgICAqIERldGVjdCBpbnB1dHMgY2hhbmdlXG4gICAgICovXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zb3VyY2VzLmxlbmd0aCA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgW3Byb3BOYW1lLCBjcmVhdG9yXSBvZiB0aGlzLmF2YXRhclNlcnZpY2UuZ2V0Q3JlYXRvcnMoKSkge1xuICAgICAgICAgICAgaWYgKCFjaGFuZ2VzW3Byb3BOYW1lXSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBjaGFuZ2VzW3Byb3BOYW1lXS5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBpZiAoY3VycmVudFZhbHVlICYmIHR5cGVvZiBjdXJyZW50VmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zb3VyY2VzLnB1c2gobmV3IGNyZWF0b3IoY3VycmVudFZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyByZWluaXRpYWxpemUgdGhlIGF2YXRhciBjb21wb25lbnQgd2hlbiBhIHNvdXJjZSBwcm9wZXJ0eSB2YWx1ZSBoYXMgY2hhbmdlZFxuICAgICAgICAvLyB0aGUgZmFsbGJhY2sgc3lzdGVtIG11c3QgYmUgcmUtaW52b2tlZCB3aXRoIHRoZSBuZXcgdmFsdWVzLlxuICAgICAgICB0aGlzLmluaXRpYWxpemVBdmF0YXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGZXRjaCBhdmF0YXIgc291cmNlXG4gICAgICovXG4gICAgcHVibGljIHRyeU5leHRTb3VyY2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzU291cmNlID0gdGhpcy5zb3VyY2VzW3RoaXMuY3VycmVudEluZGV4XTtcbiAgICAgICAgaWYgKHByZXZpb3VzU291cmNlKSB7XG4gICAgICAgICAgICB0aGlzLmF2YXRhclNlcnZpY2UubWFya1NvdXJjZUFzRmFpbGVkKHByZXZpb3VzU291cmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IHRoaXMuZmluZE5leHRTb3VyY2UoKTtcbiAgICAgICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJBdmF0YXIoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzb3VyY2UuaXNUZXh0dWFsKCkpIHtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRUZXh0QXZhdGFyKHNvdXJjZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkSW1hZ2VBdmF0YXIoc291cmNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZmluZE5leHRTb3VyY2UoKTogU291cmNlIHwgbnVsbCB7XG4gICAgICAgIHdoaWxlICgrK3RoaXMuY3VycmVudEluZGV4IDwgdGhpcy5zb3VyY2VzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gdGhpcy5zb3VyY2VzW3RoaXMuY3VycmVudEluZGV4XTtcbiAgICAgICAgICAgIGlmIChzb3VyY2UgJiYgIXRoaXMuYXZhdGFyU2VydmljZS5zb3VyY2VIYXNGYWlsZWRCZWZvcmUoc291cmNlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIHRoZSBhdmF0YXIgY29tcG9uZW50IGFuZCBpdHMgZmFsbGJhY2sgc3lzdGVtXG4gICAgICovXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplQXZhdGFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IC0xO1xuICAgICAgICBpZiAodGhpcy5zb3VyY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMudHJ5TmV4dFNvdXJjZSgpO1xuICAgICAgICAgICAgdGhpcy5ob3N0U3R5bGUgPSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMuc2l6ZSArICdweCcsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLnNpemUgKyAncHgnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJBdmF0YXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYXZhdGFyU3JjID0gbnVsbDtcbiAgICAgICAgdGhpcy5hdmF0YXJUZXh0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5hdmF0YXJTdHlsZSA9IHt9O1xuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRUZXh0QXZhdGFyKGF2YXRhclNvdXJjZTogU291cmNlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYXJBdmF0YXIoKTtcbiAgICAgICAgdGhpcy5hdmF0YXJUZXh0ID0gYXZhdGFyU291cmNlLmdldEF2YXRhcigrdGhpcy50ZXh0TWF4aW11bUxlbmd0aCk7XG4gICAgICAgIHRoaXMuYXZhdGFyU3R5bGUgPSB0aGlzLmdldFRleHR1YWxTdHlsZShhdmF0YXJTb3VyY2UuZ2V0VmFsdWUoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZEltYWdlQXZhdGFyKGF2YXRhclNvdXJjZTogU291cmNlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYXJBdmF0YXIoKTtcbiAgICAgICAgdGhpcy5hdmF0YXJTcmMgPSBhdmF0YXJTb3VyY2UuZ2V0QXZhdGFyKCt0aGlzLnNpemUpO1xuICAgICAgICB0aGlzLmF2YXRhclN0eWxlID0gdGhpcy5nZXRJbWFnZVN0eWxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpbml0aWFscyBzdHlsZVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0VGV4dHVhbFN0eWxlKGF2YXRhclZhbHVlOiBzdHJpbmcpOiBTdHlsZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiB0aGlzLmJvcmRlclJhZGl1cyB8fCAnMTAwJScsXG4gICAgICAgICAgICB0ZXh0VHJhbnNmb3JtOiAndXBwZXJjYXNlJyxcbiAgICAgICAgICAgIGNvbG9yOiB0aGlzLmZnQ29sb3IsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMuYmdDb2xvciA/IHRoaXMuYmdDb2xvciA6IHRoaXMuYXZhdGFyU2VydmljZS5nZXRSYW5kb21Db2xvcihhdmF0YXJWYWx1ZSksXG4gICAgICAgICAgICBmb250OiBNYXRoLmZsb29yKCt0aGlzLnNpemUgLyB0aGlzLnRleHRTaXplUmF0aW8pICsgJ3B4IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYnLFxuICAgICAgICAgICAgbGluZUhlaWdodDogdGhpcy5zaXplICsgJ3B4JyxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLnNpemUgKyAncHgnLFxuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLnNpemUgKyAncHgnLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaW1hZ2Ugc3R5bGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldEltYWdlU3R5bGUoKTogU3R5bGUge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogdGhpcy5ib3JkZXJSYWRpdXMgfHwgJzEwMCUnLFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMuc2l6ZSArICdweCcsXG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMuc2l6ZSArICdweCcsXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
@@ -18,14 +18,15 @@ export class AvatarService {
18
18
  ['initials', Initials],
19
19
  ]);
20
20
  this.avatarColors = [
21
- '#1abc9c',
22
- '#3498db',
23
- '#f1c40f',
24
- '#8e44ad',
25
- '#e74c3c',
26
- '#d35400',
27
- '#2c3e50',
28
- '#7f8c8d',
21
+ '#ff0000',
22
+ '#ff8800',
23
+ '#dabb00',
24
+ '#00c200',
25
+ '#01cbcb',
26
+ '#008cff',
27
+ '#ff00d8',
28
+ '#c800ff',
29
+ '#3b3b3b',
29
30
  ];
30
31
  this.failedSources = new Map();
31
32
  }
@@ -63,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
63
64
  providedIn: 'root',
64
65
  }]
65
66
  }] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9hdmF0YXIvc2VydmljZS9hdmF0YXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDN0MsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDOztBQUd2Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBSUk7OztXQUdHO1FBQ2MsbUJBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBOEM7WUFDbkYsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDO1lBQ3RCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztZQUNoQixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUM7U0FDekIsQ0FBQyxDQUFDO1FBRWMsaUJBQVksR0FBRztZQUM1QixTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztTQUNaLENBQUM7UUFFZSxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0tBaUM5RDtJQS9CVSxjQUFjLENBQUMsVUFBa0I7UUFDcEMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNiLE9BQU8sYUFBYSxDQUFDO1NBQ3hCO1FBQ0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXpELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRU0sV0FBVztRQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRU8sWUFBWSxDQUFDLE1BQWM7UUFDL0IsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdELENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxNQUFjO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxNQUFjO1FBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEtBQWE7UUFDcEMsT0FBTyxLQUFLO2FBQ1AsS0FBSyxDQUFDLEVBQUUsQ0FBQzthQUNULEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbkMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBQzNELENBQUM7OEdBdERRLGFBQWE7a0hBQWIsYUFBYSxjQUZWLE1BQU07OzJGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U291cmNlLCBTb3VyY2VDcmVhdG9yfSBmcm9tICcuLi9zb3VyY2VzL3NvdXJjZSc7XG5pbXBvcnQge0dyYXZhdGFyfSBmcm9tICcuLi9zb3VyY2VzL2dyYXZhdGFyJztcbmltcG9ydCB7SW5pdGlhbHN9IGZyb20gJy4uL3NvdXJjZXMvaW5pdGlhbHMnO1xuaW1wb3J0IHtJbWFnZX0gZnJvbSAnLi4vc291cmNlcy9pbWFnZSc7XG5pbXBvcnQge05hdHVyYWxBdmF0YXJDb21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudC9hdmF0YXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBQcm92aWRlcyB1dGlsaXRpZXMgbWV0aG9kcyByZWxhdGVkIHRvIEF2YXRhciBjb21wb25lbnRcbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXZhdGFyU2VydmljZSB7XG4gICAgLyoqXG4gICAgICogT3JkZXJlZCBwYWlycyBvZiBwb3NzaWJsZSBzb3VyY2VzLiBGaXJzdCBpbiBsaXN0IGlzIHRoZSBoaWdoZXN0IHByaW9yaXR5LlxuICAgICAqIEFuZCBrZXkgbXVzdCBtYXRjaCBvbmUgdGhlIGlucHV0IG9mIEF2YXRhckNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHNvdXJjZUNyZWF0b3JzID0gbmV3IE1hcDxrZXlvZiBOYXR1cmFsQXZhdGFyQ29tcG9uZW50LCBTb3VyY2VDcmVhdG9yPihbXG4gICAgICAgIFsnZ3JhdmF0YXInLCBHcmF2YXRhcl0sXG4gICAgICAgIFsnaW1hZ2UnLCBJbWFnZV0sXG4gICAgICAgIFsnaW5pdGlhbHMnLCBJbml0aWFsc10sXG4gICAgXSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGF2YXRhckNvbG9ycyA9IFtcbiAgICAgICAgJyMxYWJjOWMnLFxuICAgICAgICAnIzM0OThkYicsXG4gICAgICAgICcjZjFjNDBmJyxcbiAgICAgICAgJyM4ZTQ0YWQnLFxuICAgICAgICAnI2U3NGMzYycsXG4gICAgICAgICcjZDM1NDAwJyxcbiAgICAgICAgJyMyYzNlNTAnLFxuICAgICAgICAnIzdmOGM4ZCcsXG4gICAgXTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFpbGVkU291cmNlcyA9IG5ldyBNYXA8c3RyaW5nLCBTb3VyY2U+KCk7XG5cbiAgICBwdWJsaWMgZ2V0UmFuZG9tQ29sb3IoYXZhdGFyVGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFhdmF0YXJUZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ3RyYW5zcGFyZW50JztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhc2NpaUNvZGVTdW0gPSB0aGlzLmNhbGN1bGF0ZUFzY2lpQ29kZShhdmF0YXJUZXh0KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hdmF0YXJDb2xvcnNbYXNjaWlDb2RlU3VtICUgdGhpcy5hdmF0YXJDb2xvcnMubGVuZ3RoXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q3JlYXRvcnMoKTogSXRlcmFibGVJdGVyYXRvcjxba2V5b2YgTmF0dXJhbEF2YXRhckNvbXBvbmVudCwgU291cmNlQ3JlYXRvcl0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlQ3JlYXRvcnMuZW50cmllcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U291cmNlS2V5KHNvdXJjZTogU291cmNlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZS5jb25zdHJ1Y3Rvci5uYW1lICsgJy0nICsgc291cmNlLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNvdXJjZUhhc0ZhaWxlZEJlZm9yZShzb3VyY2U6IFNvdXJjZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mYWlsZWRTb3VyY2VzLmhhcyh0aGlzLmdldFNvdXJjZUtleShzb3VyY2UpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWFya1NvdXJjZUFzRmFpbGVkKHNvdXJjZTogU291cmNlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmFpbGVkU291cmNlcy5zZXQodGhpcy5nZXRTb3VyY2VLZXkoc291cmNlKSwgc291cmNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZUFzY2lpQ29kZSh2YWx1ZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICAuc3BsaXQoJycpXG4gICAgICAgICAgICAubWFwKGxldHRlciA9PiBsZXR0ZXIuY2hhckNvZGVBdCgwKSlcbiAgICAgICAgICAgIC5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiBwcmV2aW91cyArIGN1cnJlbnQpO1xuICAgIH1cbn1cbiJdfQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9hdmF0YXIvc2VydmljZS9hdmF0YXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDN0MsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDOztBQUd2Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBSUk7OztXQUdHO1FBQ2MsbUJBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBOEM7WUFDbkYsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDO1lBQ3RCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztZQUNoQixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUM7U0FDekIsQ0FBQyxDQUFDO1FBRWMsaUJBQVksR0FBRztZQUM1QixTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7U0FDWixDQUFDO1FBRWUsa0JBQWEsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztLQWlDOUQ7SUEvQlUsY0FBYyxDQUFDLFVBQWtCO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDYixPQUFPLGFBQWEsQ0FBQztTQUN4QjtRQUNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV6RCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVNLFdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVPLFlBQVksQ0FBQyxNQUFjO1FBQy9CLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRU0scUJBQXFCLENBQUMsTUFBYztRQUN2QyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU0sa0JBQWtCLENBQUMsTUFBYztRQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxLQUFhO1FBQ3BDLE9BQU8sS0FBSzthQUNQLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDVCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ25DLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUMzRCxDQUFDOzhHQXZEUSxhQUFhO2tIQUFiLGFBQWEsY0FGVixNQUFNOzsyRkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NvdXJjZSwgU291cmNlQ3JlYXRvcn0gZnJvbSAnLi4vc291cmNlcy9zb3VyY2UnO1xuaW1wb3J0IHtHcmF2YXRhcn0gZnJvbSAnLi4vc291cmNlcy9ncmF2YXRhcic7XG5pbXBvcnQge0luaXRpYWxzfSBmcm9tICcuLi9zb3VyY2VzL2luaXRpYWxzJztcbmltcG9ydCB7SW1hZ2V9IGZyb20gJy4uL3NvdXJjZXMvaW1hZ2UnO1xuaW1wb3J0IHtOYXR1cmFsQXZhdGFyQ29tcG9uZW50fSBmcm9tICcuLi9jb21wb25lbnQvYXZhdGFyLmNvbXBvbmVudCc7XG5cbi8qKlxuICogUHJvdmlkZXMgdXRpbGl0aWVzIG1ldGhvZHMgcmVsYXRlZCB0byBBdmF0YXIgY29tcG9uZW50XG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEF2YXRhclNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIE9yZGVyZWQgcGFpcnMgb2YgcG9zc2libGUgc291cmNlcy4gRmlyc3QgaW4gbGlzdCBpcyB0aGUgaGlnaGVzdCBwcmlvcml0eS5cbiAgICAgKiBBbmQga2V5IG11c3QgbWF0Y2ggb25lIHRoZSBpbnB1dCBvZiBBdmF0YXJDb21wb25lbnQuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBzb3VyY2VDcmVhdG9ycyA9IG5ldyBNYXA8a2V5b2YgTmF0dXJhbEF2YXRhckNvbXBvbmVudCwgU291cmNlQ3JlYXRvcj4oW1xuICAgICAgICBbJ2dyYXZhdGFyJywgR3JhdmF0YXJdLFxuICAgICAgICBbJ2ltYWdlJywgSW1hZ2VdLFxuICAgICAgICBbJ2luaXRpYWxzJywgSW5pdGlhbHNdLFxuICAgIF0pO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdmF0YXJDb2xvcnMgPSBbXG4gICAgICAgICcjZmYwMDAwJyxcbiAgICAgICAgJyNmZjg4MDAnLFxuICAgICAgICAnI2RhYmIwMCcsXG4gICAgICAgICcjMDBjMjAwJyxcbiAgICAgICAgJyMwMWNiY2InLFxuICAgICAgICAnIzAwOGNmZicsXG4gICAgICAgICcjZmYwMGQ4JyxcbiAgICAgICAgJyNjODAwZmYnLFxuICAgICAgICAnIzNiM2IzYicsXG4gICAgXTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFpbGVkU291cmNlcyA9IG5ldyBNYXA8c3RyaW5nLCBTb3VyY2U+KCk7XG5cbiAgICBwdWJsaWMgZ2V0UmFuZG9tQ29sb3IoYXZhdGFyVGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFhdmF0YXJUZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ3RyYW5zcGFyZW50JztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhc2NpaUNvZGVTdW0gPSB0aGlzLmNhbGN1bGF0ZUFzY2lpQ29kZShhdmF0YXJUZXh0KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hdmF0YXJDb2xvcnNbYXNjaWlDb2RlU3VtICUgdGhpcy5hdmF0YXJDb2xvcnMubGVuZ3RoXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q3JlYXRvcnMoKTogSXRlcmFibGVJdGVyYXRvcjxba2V5b2YgTmF0dXJhbEF2YXRhckNvbXBvbmVudCwgU291cmNlQ3JlYXRvcl0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlQ3JlYXRvcnMuZW50cmllcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U291cmNlS2V5KHNvdXJjZTogU291cmNlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZS5jb25zdHJ1Y3Rvci5uYW1lICsgJy0nICsgc291cmNlLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNvdXJjZUhhc0ZhaWxlZEJlZm9yZShzb3VyY2U6IFNvdXJjZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mYWlsZWRTb3VyY2VzLmhhcyh0aGlzLmdldFNvdXJjZUtleShzb3VyY2UpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWFya1NvdXJjZUFzRmFpbGVkKHNvdXJjZTogU291cmNlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmFpbGVkU291cmNlcy5zZXQodGhpcy5nZXRTb3VyY2VLZXkoc291cmNlKSwgc291cmNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZUFzY2lpQ29kZSh2YWx1ZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICAuc3BsaXQoJycpXG4gICAgICAgICAgICAubWFwKGxldHRlciA9PiBsZXR0ZXIuY2hhckNvZGVBdCgwKSlcbiAgICAgICAgICAgIC5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiBwcmV2aW91cyArIGN1cnJlbnQpO1xuICAgIH1cbn1cbiJdfQ==
@@ -22,10 +22,10 @@ function getInitials(name, size) {
22
22
  */
23
23
  export class Initials extends Source {
24
24
  getAvatar(size) {
25
- return getInitials(this.getValue(), size);
25
+ return getInitials(this.getValue().replace(/[^a-zA-Z0-9\s]/g, ''), size); // only letters, numbers and space
26
26
  }
27
27
  isTextual() {
28
28
  return true;
29
29
  }
30
30
  }
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9hdmF0YXIvc291cmNlcy9pbml0aWFscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRWhDOztHQUVHO0FBQ0gsU0FBUyxXQUFXLENBQUMsSUFBWSxFQUFFLElBQVk7SUFDM0MsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQixJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ1AsT0FBTyxFQUFFLENBQUM7S0FDYjtJQUVELElBQUksS0FBSyxHQUFhLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdEMsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUU7UUFDN0IsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ2hDO0lBRUQsT0FBTyxLQUFLO1NBQ1AsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDckMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFCLElBQUksQ0FBQyxFQUFFLENBQUM7U0FDUixXQUFXLEVBQUUsQ0FBQztBQUN2QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sUUFBUyxTQUFRLE1BQU07SUFDekIsU0FBUyxDQUFDLElBQVk7UUFDekIsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTb3VyY2V9IGZyb20gJy4vc291cmNlJztcblxuLyoqXG4gKiBJdGVyYXRlcyBhIHBlcnNvbidzIG5hbWUgc3RyaW5nIHRvIGdldCB0aGUgaW5pdGlhbHMgb2YgZWFjaCB3b3JkIGluIHVwcGVyY2FzZS5cbiAqL1xuZnVuY3Rpb24gZ2V0SW5pdGlhbHMobmFtZTogc3RyaW5nLCBzaXplOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIG5hbWUgPSBuYW1lLnRyaW0oKTtcblxuICAgIGlmICghbmFtZSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgbGV0IHdvcmRzOiBzdHJpbmdbXSA9IG5hbWUuc3BsaXQoJyAnKTtcblxuICAgIGlmIChzaXplICYmIHNpemUgPCB3b3Jkcy5sZW5ndGgpIHtcbiAgICAgICAgd29yZHMgPSB3b3Jkcy5zbGljZSgwLCBzaXplKTtcbiAgICB9XG5cbiAgICByZXR1cm4gd29yZHNcbiAgICAgICAgLmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQubGVuZ3RoID4gMClcbiAgICAgICAgLm1hcChlbGVtZW50ID0+IGVsZW1lbnRbMF0pXG4gICAgICAgIC5qb2luKCcnKVxuICAgICAgICAudG9VcHBlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIGluaXRpYWxzIG9mIHRoZSBnaXZlbiB2YWx1ZSBhcyBhdmF0YXJcbiAqL1xuZXhwb3J0IGNsYXNzIEluaXRpYWxzIGV4dGVuZHMgU291cmNlIHtcbiAgICBwdWJsaWMgZ2V0QXZhdGFyKHNpemU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBnZXRJbml0aWFscyh0aGlzLmdldFZhbHVlKCksIHNpemUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1RleHR1YWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbiJdfQ==
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9hdmF0YXIvc291cmNlcy9pbml0aWFscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRWhDOztHQUVHO0FBQ0gsU0FBUyxXQUFXLENBQUMsSUFBWSxFQUFFLElBQVk7SUFDM0MsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQixJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ1AsT0FBTyxFQUFFLENBQUM7S0FDYjtJQUVELElBQUksS0FBSyxHQUFhLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdEMsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUU7UUFDN0IsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ2hDO0lBRUQsT0FBTyxLQUFLO1NBQ1AsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDckMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFCLElBQUksQ0FBQyxFQUFFLENBQUM7U0FDUixXQUFXLEVBQUUsQ0FBQztBQUN2QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sUUFBUyxTQUFRLE1BQU07SUFDekIsU0FBUyxDQUFDLElBQVk7UUFDekIsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLGtDQUFrQztJQUNoSCxDQUFDO0lBRU0sU0FBUztRQUNaLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U291cmNlfSBmcm9tICcuL3NvdXJjZSc7XG5cbi8qKlxuICogSXRlcmF0ZXMgYSBwZXJzb24ncyBuYW1lIHN0cmluZyB0byBnZXQgdGhlIGluaXRpYWxzIG9mIGVhY2ggd29yZCBpbiB1cHBlcmNhc2UuXG4gKi9cbmZ1bmN0aW9uIGdldEluaXRpYWxzKG5hbWU6IHN0cmluZywgc2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBuYW1lID0gbmFtZS50cmltKCk7XG5cbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGxldCB3b3Jkczogc3RyaW5nW10gPSBuYW1lLnNwbGl0KCcgJyk7XG5cbiAgICBpZiAoc2l6ZSAmJiBzaXplIDwgd29yZHMubGVuZ3RoKSB7XG4gICAgICAgIHdvcmRzID0gd29yZHMuc2xpY2UoMCwgc2l6ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHdvcmRzXG4gICAgICAgIC5maWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50Lmxlbmd0aCA+IDApXG4gICAgICAgIC5tYXAoZWxlbWVudCA9PiBlbGVtZW50WzBdKVxuICAgICAgICAuam9pbignJylcbiAgICAgICAgLnRvVXBwZXJDYXNlKCk7XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBpbml0aWFscyBvZiB0aGUgZ2l2ZW4gdmFsdWUgYXMgYXZhdGFyXG4gKi9cbmV4cG9ydCBjbGFzcyBJbml0aWFscyBleHRlbmRzIFNvdXJjZSB7XG4gICAgcHVibGljIGdldEF2YXRhcihzaXplOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZ2V0SW5pdGlhbHModGhpcy5nZXRWYWx1ZSgpLnJlcGxhY2UoL1teYS16QS1aMC05XFxzXS9nLCAnJyksIHNpemUpOyAvLyBvbmx5IGxldHRlcnMsIG51bWJlcnMgYW5kIHNwYWNlXG4gICAgfVxuXG4gICAgcHVibGljIGlzVGV4dHVhbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxufVxuIl19
@@ -1,8 +1,9 @@
1
1
  import { DOCUMENT } from '@angular/common';
2
2
  import { Inject, Injectable, InjectionToken, LOCALE_ID } from '@angular/core';
3
3
  import { NavigationEnd, PRIMARY_OUTLET } from '@angular/router';
4
- import { filter } from 'rxjs/operators';
4
+ import { filter, startWith } from 'rxjs/operators';
5
5
  import { NaturalDialogTriggerComponent } from '../../dialog-trigger/dialog-trigger.component';
6
+ import { combineLatest, Observable, of } from 'rxjs';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@angular/router";
8
9
  import * as i2 from "@angular/platform-browser";
@@ -25,14 +26,20 @@ export function stripTags(str) {
25
26
  * configured for it in the routing.
26
27
  */
27
28
  export class NaturalSeoService {
28
- constructor(config, router, titleService, metaTagService, document, locale) {
29
- this.config = config;
29
+ constructor(configToken, router, titleService, metaTagService, document, locale) {
30
30
  this.router = router;
31
31
  this.titleService = titleService;
32
32
  this.metaTagService = metaTagService;
33
33
  this.document = document;
34
34
  this.locale = locale;
35
- this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(() => {
35
+ this.config = {
36
+ applicationName: '',
37
+ };
38
+ combineLatest({
39
+ config: configToken instanceof Observable ? configToken.pipe(startWith(this.config)) : of(configToken),
40
+ navigationEnd: this.router.events.pipe(filter(event => event instanceof NavigationEnd)),
41
+ }).subscribe(({ config }) => {
42
+ this.config = config;
36
43
  const root = this.router.routerState.root.snapshot;
37
44
  this.routeData = this.getRouteData(root);
38
45
  const seo = this.routeData.seo ?? { title: '' };
@@ -52,11 +59,11 @@ export class NaturalSeoService {
52
59
  /**
53
60
  * Update the SEO with given info. The extra part and app name will be appended automatically.
54
61
  *
55
- * In most cases this should not be used, and instead the SEO should be configured in the routing,
62
+ * In most cases, this should not be used. And instead, the SEO should be configured in the routing,
56
63
  * possibly with the callback variant for some dynamism.
57
64
  *
58
- * But in rare cases only the Component is able to build a proper page title, after it gather everything it
59
- * needed. For those cases the Component can inject this service and update the SEO directly.
65
+ * But in rare cases, only the Component is able to build a proper page title, after it gathered everything it
66
+ * needed. For those cases, the Component can inject this service and update the SEO directly.
60
67
  */
61
68
  update(seo) {
62
69
  // Title
@@ -76,7 +83,7 @@ export class NaturalSeoService {
76
83
  // Canonical
77
84
  // Add language in url (after domain) if some languages are provided only
78
85
  const language = this.config.languages?.length && this.locale ? this.locale.split('-')[0] : '';
79
- const urlParts = this.getUrlParts(seo.canonicalQueryParamsWhitelist || []);
86
+ const urlParts = this.getUrlParts(seo.canonicalQueryParamsWhitelist ?? []);
80
87
  this.updateLinkTag({ rel: 'canonical', href: this.getUrl(urlParts, language) });
81
88
  this.updateAlternates(urlParts);
82
89
  }
@@ -97,10 +104,10 @@ export class NaturalSeoService {
97
104
  }
98
105
  // Query Params
99
106
  let params = '';
100
- for (const param in urlTree.queryParams) {
101
- if (whiteListedParams.includes(param)) {
102
- const key = encodeURIComponent(param);
103
- const value = encodeURIComponent(urlTree.queryParams[param]);
107
+ for (const whiteListedParam of whiteListedParams) {
108
+ if (whiteListedParam in urlTree.queryParams) {
109
+ const key = encodeURIComponent(whiteListedParam);
110
+ const value = encodeURIComponent(urlTree.queryParams[whiteListedParam]);
104
111
  if (params.length) {
105
112
  params += '&';
106
113
  }
@@ -114,9 +121,6 @@ export class NaturalSeoService {
114
121
  }
115
122
  /**
116
123
  * Add language between domain and uri https://example.com/fr/folder/page
117
- * @param urlParts
118
- * @param language
119
- * @private
120
124
  */
121
125
  getUrl(urlParts, language) {
122
126
  let url = urlParts.url;
@@ -148,7 +152,7 @@ export class NaturalSeoService {
148
152
  }
149
153
  }
150
154
  updateLinkTag(definition) {
151
- const linkElement = this.document.head.querySelector(this._parseSelector(definition)) ||
155
+ const linkElement = this.document.head.querySelector(this.parseSelector(definition)) ??
152
156
  this.document.head.appendChild(this.document.createElement('link'));
153
157
  if (linkElement) {
154
158
  Object.keys(definition).forEach((attribute) => {
@@ -157,13 +161,11 @@ export class NaturalSeoService {
157
161
  }
158
162
  }
159
163
  /**
160
- * Parse tag to create a selector
161
- * @param definition
162
- * @return {string} selector to use in querySelector
164
+ * Returns selector to use in querySelector to get the given link
163
165
  */
164
- _parseSelector(definition) {
166
+ parseSelector(definition) {
165
167
  let attributes = 'link';
166
- Object.keys(definition).forEach((attr) => {
168
+ Object.keys(definition).forEach(attr => {
167
169
  if (attr !== 'href') {
168
170
  attributes += `[${attr}="${definition[attr]}"]`;
169
171
  }
@@ -231,4 +233,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
231
233
  type: Inject,
232
234
  args: [LOCALE_ID]
233
235
  }] }]; } });
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9jb21tb24vc2VydmljZXMvc2VvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUErQixhQUFhLEVBQUUsY0FBYyxFQUFTLE1BQU0saUJBQWlCLENBQUM7QUFDcEcsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLCtDQUErQyxDQUFDOzs7O0FBOEc1RixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBbUIsK0JBQStCLENBQUMsQ0FBQztBQUV4RyxNQUFNLFVBQVUsU0FBUyxDQUFDLEdBQVc7SUFDakMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBVUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFHMUIsWUFDaUQsTUFBd0IsRUFDcEQsTUFBYyxFQUNkLFlBQW1CLEVBQ25CLGNBQW9CLEVBQ0YsUUFBa0IsRUFDMUIsTUFBYztRQUxJLFdBQU0sR0FBTixNQUFNLENBQWtCO1FBQ3BELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxpQkFBWSxHQUFaLFlBQVksQ0FBTztRQUNuQixtQkFBYyxHQUFkLGNBQWMsQ0FBTTtRQUNGLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUV6QyxJQUFJLENBQUMsTUFBTSxDQUFDLE1B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O1NBQ3pCO2FBQU0sSUFBSSxZQUFZLElBQUksR0FBRyxFQUFFO1lBQzVCLE1BQU0sSUFBSSxHQUE2QixTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1AsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDL0Y7WUFFRCxPQUFPO2dCQUNILEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksSUFBSSxFQUFFO2dCQUNyRCxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxXQUFXO2dCQUNwQyxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07YUFDckIsQ0FBQztTQUNMO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDOzhHQTdOUSxpQkFBaUIsa0JBSWQsa0JBQWtCLDRFQUlsQixRQUFRLGFBQ1IsU0FBUztrSEFUWixpQkFBaUIsY0FGZCxNQUFNOzsyRkFFVCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFLUSxNQUFNOzJCQUFDLGtCQUFrQjs7MEJBSXpCLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsTUFBTTsyQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgTE9DQUxFX0lEfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWV0YSwgVGl0bGV9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBEYXRhLCBOYXZpZ2F0aW9uRW5kLCBQUklNQVJZX09VVExFVCwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TmF0dXJhbERpYWxvZ1RyaWdnZXJDb21wb25lbnR9IGZyb20gJy4uLy4uL2RpYWxvZy10cmlnZ2VyL2RpYWxvZy10cmlnZ2VyLmNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIE5hdHVyYWxTZW8gPSBOYXR1cmFsU2VvQmFzaWMgfCBOYXR1cmFsU2VvQ2FsbGJhY2sgfCBOYXR1cmFsU2VvUmVzb2x2ZTtcblxuLyoqXG4gKiBUeXBpY2FsbHkgdXNlZCBmb3IgXCJzdGF0aWNcIiBwYWdlcyB3aGVyZSB0aGVyZSBpcyBub3QgYSBzaW5nbGUgcmVzb2x2ZWQgb2JqZWN0LiBTb1xuICogYWxsIHBhZ2VzIHN1Y2ggYXMgXCJBYm91dFwiLCBvciBsaXN0IG9mIG9iamVjdHMgKGxpc3Qgb2Ygcmlza3MsIGV0Yy4pLlxuICpcbiAqIFRoaXMgc2hvdWxkIGJlIHRoZSBtb3N0IGNvbW1vbiB1c2VkIHZhcmlhbnQuXG4gKi9cbmV4cG9ydCB0eXBlIE5hdHVyYWxTZW9CYXNpYyA9IFJvYm90cyAmIHtcbiAgICAvKipcbiAgICAgKiBUaGUgcGFnZSB0aXRsZSwgdGhhdCB3aWxsIGJlIGNvbmNhdGVuYXRlZCB3aXRoIGFwcGxpY2F0aW9uIG5hbWVcbiAgICAgKi9cbiAgICB0aXRsZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogSWYgZ2l2ZW4gd2lsbCBiZSB1c2VkIGFzIHBhZ2UgZGVzY3JpcHRpb24sIG90aGVyd2lzZSBmYWxsYmFjayBvbiBkZWZhdWx0IHZhbHVlXG4gICAgICovXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIHBhcmFtZXRlcnMgaW5jbHVkZWQgaW4gdGhlIGNhbm9uaWNhbCB0YWcncyB1cmxcbiAgICAgKi9cbiAgICBjYW5vbmljYWxRdWVyeVBhcmFtc1doaXRlbGlzdD86IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBOYXR1cmFsTGlua0RlZmluaXRpb24gPSB7XG4gICAgY2hhcnNldD86IHN0cmluZztcbiAgICBjcm9zc29yaWdpbj86IHN0cmluZztcbiAgICBocmVmPzogc3RyaW5nO1xuICAgIGhyZWZsYW5nPzogc3RyaW5nO1xuICAgIG1lZGlhPzogc3RyaW5nO1xuICAgIHJlbD86IHN0cmluZztcbiAgICByZXY/OiBzdHJpbmc7XG4gICAgc2l6ZXM/OiBzdHJpbmc7XG4gICAgdGFyZ2V0Pzogc3RyaW5nO1xuICAgIHR5cGU/OiBzdHJpbmc7XG59ICYge1xuICAgIFtwcm9wOiBzdHJpbmddOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBUeXBpY2FsbHkgdXNlZCBmb3IgYSBcImR5bmFtaWNcIiBwYWdlIHdoZXJlIGEgc2luZ2xlIG9iamVjdCBpcyByZXNvbHZlZC4gU28gYSBkZXRhaWwgcGFnZSwgc3VjaFxuICogYXMgdGhlIGRldGFpbCBvZiBhIHJpc2sgYW5kIHNvIG9uLlxuICovXG5leHBvcnQgdHlwZSBOYXR1cmFsU2VvUmVzb2x2ZSA9IFJvYm90cyAmIHtcbiAgICAvKipcbiAgICAgKiBUaGUga2V5IHRvIGJlIHVzZWQgaW4gdGhlIHJlc29sdmVkIGRhdGEgdG8gZmluZCB0aGUgcmVzb2x2ZWQgb2JqZWN0LiBUaGUgZnVsbE5hbWVcbiAgICAgKiBvciBuYW1lIG9mIHRoZSBvYmplY3Qgd2lsbCBiZSB1c2VkIGZvciBwYWdlIHRpdGxlLCBhbmQgdGhlIG9iamVjdCBkZXNjcmlwdGlvbiwgaWYgYW55LFxuICAgICAqIHdpbGwgYmUgdXNlZCBmb3IgcGFnZSBkZXNjcmlwdGlvbi5cbiAgICAgKi9cbiAgICByZXNvbHZlS2V5OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFJhcmVseSB1c2VkIGZvciBhIHBhZ2UgdGhhdCBoYXMgdmVyeSBzcGVjaWZpYyBuZWVkcyBhbmQgbmVlZCB0byBidWlsZCB0aXRsZSBhbmQgZGVzY3JpcHRpb24gaW4gYSBjdXN0b20gd2F5LlxuICogVGhlIGNhbGxiYWNrIGJhY2sgd2lsbCBiZSBnaXZlbiB0aGUgcmVzb2x2ZWQgZGF0YSwgYW5kIGl0IGlzIHVwIHRvIHRoZSBjYWxsYmFjayB0byBmaW5kIHdoYXRldmVyIGl0IG5lZWRzLlxuICovXG5leHBvcnQgdHlwZSBOYXR1cmFsU2VvQ2FsbGJhY2sgPSAocm91dGVEYXRhOiBEYXRhKSA9PiBOYXR1cmFsU2VvQmFzaWM7XG5cbi8qKlxuICogVHlwaWNhbGx5IHVzZWQgdG8gdHlwZSB0aGUgcm91dGluZyBkYXRhIHJlY2VpdmVkIGluIHRoZSBjb21wb25lbnQsIGVnOlxuICpcbiAqIGBgYHRzXG4gKiBjbGFzcyBNeUNvbXBvbmVudCBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdERldGFpbDxNeVNlcnZpY2UsIE5hdHVyYWxTZW9SZXNvbHZlRGF0YT4ge31cbiAqIGBgYFxuICovXG5leHBvcnQgdHlwZSBOYXR1cmFsU2VvUmVzb2x2ZURhdGEgPSB7XG4gICAgc2VvOiBOYXR1cmFsU2VvQmFzaWM7XG59O1xuXG5pbnRlcmZhY2UgUm9ib3RzIHtcbiAgICAvKipcbiAgICAgKiBJZiBnaXZlbiB3aWxsIGJlIHVzZWQgYXMgcm9ib3RzIG1ldGEgdGFnLCBvdGhlcndpc2UgZmFsbGJhY2sgb24gZGVmYXVsdCB2YWx1ZVxuICAgICAqL1xuICAgIHJvYm90cz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOYXR1cmFsU2VvQ29uZmlnIHtcbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24gdGhhdCB3aWxsIGFsd2F5cyBhcHBlYXIgaW4gdGhlIHBhZ2UgdGl0bGVcbiAgICAgKi9cbiAgICByZWFkb25seSBhcHBsaWNhdGlvbk5hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgdmFsdWUgZm9yIGRlc2NyaXB0aW9uIG1ldGEgdGhhdCBpcyB1c2VkIGZvciBwYWdlcyB3aXRob3V0IHZhbHVlXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGVmYXVsdERlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRGVmYXVsdCB2YWx1ZSBmb3Igcm9ib3RzIG1ldGEgdGhhdCBpcyB1c2VkIGZvciBwYWdlcyB3aXRob3V0IHZhbHVlXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGVmYXVsdFJvYm90cz86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIElmIGdpdmVuLCB0aGUgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2ggcm91dGUgYW5kIG11c3QgcmV0dXJuIGEgc3RyaW5nIHRoYXQgd2lsbFxuICAgICAqIGJlIGluc2VydGVkIGJldHdlZW4gdGhlIHBhZ2UgdGl0bGUgYW5kIHRoZSBhcHBsaWNhdGlvbiBuYW1lLlxuICAgICAqXG4gICAgICogSXQgc2hvdWxkIGJlIHVzZWQgdG8gY29tcGxldGUgdGhlIHRpdGxlIHdpdGggaW5mbyB0aGF0IGFyZSBvZnRlbiwgYnV0IG5vdCBuZWNlc3NhcmlseSBhbHdheXMsXG4gICAgICogYXZhaWxhYmxlIHRocm91Z2hvdXQgdGhlIGVudGlyZSBhcHBsaWNhdGlvbi4gVHlwaWNhbGx5IHVzZWQgZm9yIHRoZSBzaXRlL3N0YXRlIGluIE9LcGlsb3QuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZXh0cmFQYXJ0PzogKHJvdXRlRGF0YTogRGF0YSkgPT4gc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVXNlZCB0byBnZW5lcmF0ZSBhbHRlcm5hdGl2ZSB0YWdzXG4gICAgICogPGxpbmsgcmVsPVwiYWx0ZXJuYXRlXCIgaHJlZmxhbmc9XCJlblwiIGhyZWY9XCJodHRwczovL3d3dy5leGFtcGxlLmNvbS9lbi9wYWdlXCI+XG4gICAgICovXG4gICAgcmVhZG9ubHkgbGFuZ3VhZ2VzPzogUmVhZG9ubHk8c3RyaW5nW10+O1xufVxuXG5leHBvcnQgY29uc3QgTkFUVVJBTF9TRU9fQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPE5hdHVyYWxTZW9Db25maWc+KCdDb25maWd1cmF0aW9uIGZvciBTRU8gc2VydmljZScpO1xuXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBUYWdzKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoLzxcXC8/W14+XSs+L2csICcnKTtcbn1cblxudHlwZSBSZXNvbHZlZERhdGEgPSB7XG4gICAgbW9kZWw/OiB7XG4gICAgICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgICAgIGZ1bGxOYW1lPzogc3RyaW5nO1xuICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICB9O1xufTtcblxuLyoqXG4gKiBUaGlzIHNlcnZpY2UgaXMgcmVzcG9uc2libGUgdG8ga2VlcCB1cCB0byBkYXRlIHRoZSBwYWdlIHRpdGxlIGFuZCBwYWdlIGRlc2NyaXB0aW9uIGFjY29yZGluZ1xuICogdG8gd2hhdCBpcyBjb25maWd1cmVkIGluIHJvdXRpbmcgb3IgZGVmYXVsdCB2YWx1ZXMuXG4gKlxuICogSXQgKiptdXN0KiogYmUgaW5qZWN0ZWQgaW4gdGhlIHJvb3QgbW9kdWxlIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBoYXZlIGVmZmVjdHMgaW4gYWxsIG1vZHVsZXMuIEFuZCBpdFxuICogbXVzdCBiZSBwcm92aWRlZCBhIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogVGhlIGZ1bGwgdGl0bGUgaGFzIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOlxuICpcbiAqICAgICBkaWFsb2cgdGl0bGUgLSBwYWdlIHRpdGxlIC0gZXh0cmEgcGFydCAtIGFwcCBuYW1lXG4gKlxuICogYGRpYWxvZyB0aXRsZWAgb25seSBleGlzdHMgaWYgYSBgTmF0dXJhbERpYWxvZ1RyaWdnZXJDb21wb25lbnRgIGlzIGN1cnJlbnRseSBvcGVuLCBhbmQgdGhhdCBzb21lIFNFTyBpc1xuICogY29uZmlndXJlZCBmb3IgaXQgaW4gdGhlIHJvdXRpbmcuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxTZW9TZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJvdXRlRGF0YT86IERhdGE7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoTkFUVVJBTF9TRU9fQ09ORklHKSBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogTmF0dXJhbFNlb0NvbmZpZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0aXRsZVNlcnZpY2U6IFRpdGxlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1ldGFUYWdTZXJ2aWNlOiBNZXRhLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgbG9jYWxlOiBzdHJpbmcsXG4gICAgKSB7XG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgcm9vdCA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnJvb3Quc25hcHNob3Q7XG4gICAgICAgICAgICB0aGlzLnJvdXRlRGF0YSA9IHRoaXMuZ2V0Um91dGVEYXRhKHJvb3QpO1xuXG4gICAgICAgICAgICBjb25zdCBzZW8gPSB0aGlzLnJvdXRlRGF0YS5zZW8gPz8ge3RpdGxlOiAnJ307XG4gICAgICAgICAgICBjb25zdCBkaWFsb2dSb3V0ZURhdGEgPSB0aGlzLmdldERpYWxvZ1JvdXRlRGF0YShyb290KTtcbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ1NlbzogTmF0dXJhbFNlbyA9IGRpYWxvZ1JvdXRlRGF0YT8uc2VvO1xuXG4gICAgICAgICAgICBsZXQgYmFzaWMgPSB0aGlzLnRvQmFzaWMoc2VvLCB0aGlzLnJvdXRlRGF0YSk7XG4gICAgICAgICAgICBpZiAoZGlhbG9nUm91dGVEYXRhICYmIGRpYWxvZ1Nlbykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpYWxvZ0Jhc2ljID0gdGhpcy50b0Jhc2ljKGRpYWxvZ1NlbywgZGlhbG9nUm91dGVEYXRhKTtcbiAgICAgICAgICAgICAgICBiYXNpYyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZGlhbG9nQmFzaWMsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLmpvaW4oW2RpYWxvZ0Jhc2ljLnRpdGxlLCBiYXNpYy50aXRsZV0pLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlKGJhc2ljKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIHRoZSBTRU8gd2l0aCBnaXZlbiBpbmZvLiBUaGUgZXh0cmEgcGFydCBhbmQgYXBwIG5hbWUgd2lsbCBiZSBhcHBlbmRlZCBhdXRvbWF0aWNhbGx5LlxuICAgICAqXG4gICAgICogSW4gbW9zdCBjYXNlcyB0aGlzIHNob3VsZCBub3QgYmUgdXNlZCwgYW5kIGluc3RlYWQgdGhlIFNFTyBzaG91bGQgYmUgY29uZmlndXJlZCBpbiB0aGUgcm91dGluZyxcbiAgICAgKiBwb3NzaWJseSB3aXRoIHRoZSBjYWxsYmFjayB2YXJpYW50IGZvciBzb21lIGR5bmFtaXNtLlxuICAgICAqXG4gICAgICogQnV0IGluIHJhcmUgY2FzZXMgb25seSB0aGUgQ29tcG9uZW50IGlzIGFibGUgdG8gYnVpbGQgYSBwcm9wZXIgcGFnZSB0aXRsZSwgYWZ0ZXIgaXQgZ2F0aGVyIGV2ZXJ5dGhpbmcgaXRcbiAgICAgKiBuZWVkZWQuIEZvciB0aG9zZSBjYXNlcyB0aGUgQ29tcG9uZW50IGNhbiBpbmplY3QgdGhpcyBzZXJ2aWNlIGFuZCB1cGRhdGUgdGhlIFNFTyBkaXJlY3RseS5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlKHNlbzogTmF0dXJhbFNlb0Jhc2ljKTogdm9pZCB7XG4gICAgICAgIC8vIFRpdGxlXG4gICAgICAgIGNvbnN0IHBhcnRzID0gW1xuICAgICAgICAgICAgc2VvLnRpdGxlLFxuICAgICAgICAgICAgdGhpcy5jb25maWcuZXh0cmFQYXJ0ICYmIHRoaXMucm91dGVEYXRhID8gdGhpcy5jb25maWcuZXh0cmFQYXJ0KHRoaXMucm91dGVEYXRhKSA6ICcnLFxuICAgICAgICAgICAgdGhpcy5jb25maWcuYXBwbGljYXRpb25OYW1lLFxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHRpdGxlID0gdGhpcy5qb2luKHBhcnRzKTtcbiAgICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodGl0bGUpO1xuXG4gICAgICAgIC8vIERlc2NyaXB0aW9uXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gc2VvPy5kZXNjcmlwdGlvbiA/PyB0aGlzLmNvbmZpZy5kZWZhdWx0RGVzY3JpcHRpb247XG4gICAgICAgIHRoaXMudXBkYXRlVGFnKCdkZXNjcmlwdGlvbicsIGRlc2NyaXB0aW9uKTtcblxuICAgICAgICAvLyBSb2JvdHNcbiAgICAgICAgY29uc3Qgcm9ib3RzID0gc2VvPy5yb2JvdHMgPz8gdGhpcy5jb25maWcuZGVmYXVsdFJvYm90cztcbiAgICAgICAgdGhpcy51cGRhdGVUYWcoJ3JvYm90cycsIHJvYm90cyk7XG5cbiAgICAgICAgLy8gQ2Fub25pY2FsXG4gICAgICAgIC8vIEFkZCBsYW5ndWFnZSBpbiB1cmwgKGFmdGVyIGRvbWFpbikgaWYgc29tZSBsYW5ndWFnZXMgYXJlIHByb3ZpZGVkIG9ubHlcbiAgICAgICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLmNvbmZpZy5sYW5ndWFnZXM/Lmxlbmd0aCAmJiB0aGlzLmxvY2FsZSA/IHRoaXMubG9jYWxlLnNwbGl0KCctJylbMF0gOiAnJztcbiAgICAgICAgY29uc3QgdXJsUGFydHMgPSB0aGlzLmdldFVybFBhcnRzKHNlby5jYW5vbmljYWxRdWVyeVBhcmFtc1doaXRlbGlzdCB8fCBbXSk7XG4gICAgICAgIHRoaXMudXBkYXRlTGlua1RhZyh7cmVsOiAnY2Fub25pY2FsJywgaHJlZjogdGhpcy5nZXRVcmwodXJsUGFydHMsIGxhbmd1YWdlKX0pO1xuICAgICAgICB0aGlzLnVwZGF0ZUFsdGVybmF0ZXModXJsUGFydHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVBbHRlcm5hdGVzKHVybFBhcnRzOiB7dXJsOiBzdHJpbmc7IHBhcmFtczogc3RyaW5nfSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmZpZy5sYW5ndWFnZXM/LmZvckVhY2gobGFuZ3VhZ2UgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMaW5rVGFnKHtyZWw6ICdhbHRlcm5hdGUnLCBocmVmOiB0aGlzLmdldFVybCh1cmxQYXJ0cywgbGFuZ3VhZ2UpLCBocmVmbGFuZzogbGFuZ3VhZ2V9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRVcmxQYXJ0cyh3aGl0ZUxpc3RlZFBhcmFtczogc3RyaW5nW10pOiB7dXJsOiBzdHJpbmc7IHBhcmFtczogc3RyaW5nfSB7XG4gICAgICAgIGxldCB1cmwgPSAnaHR0cHM6Ly8nICsgdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldz8ud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xuICAgICAgICBjb25zdCB1cmxUcmVlID0gdGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy5yb3V0ZXIudXJsKTtcblxuICAgICAgICAvLyBuZWVkIGJldHRlciBsaWtlIHNvbWV0aGluZyByZWN1cnNpdmUgP1xuICAgICAgICBpZiAodXJsVHJlZS5yb290Lmhhc0NoaWxkcmVuKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRzID0gdXJsVHJlZS5yb290LmNoaWxkcmVuWydwcmltYXJ5J10uc2VnbWVudHM7XG4gICAgICAgICAgICBpZiAoc2VnbWVudHMgJiYgc2VnbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHVybCArPSAnLycgKyBzZWdtZW50cy5tYXAoc2VnbWVudCA9PiBzZWdtZW50LnBhdGgpLmpvaW4oJy8nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFF1ZXJ5IFBhcmFtc1xuICAgICAgICBsZXQgcGFyYW1zID0gJyc7XG4gICAgICAgIGZvciAoY29uc3QgcGFyYW0gaW4gdXJsVHJlZS5xdWVyeVBhcmFtcykge1xuICAgICAgICAgICAgaWYgKHdoaXRlTGlzdGVkUGFyYW1zLmluY2x1ZGVzKHBhcmFtKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGVuY29kZVVSSUNvbXBvbmVudChwYXJhbSk7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodXJsVHJlZS5xdWVyeVBhcmFtc1twYXJhbV0pO1xuICAgICAgICAgICAgICAgIGlmIChwYXJhbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyArPSAnJic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBhcmFtcyArPSBgJHtrZXl9PSR7dmFsdWV9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJhbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSAnPycgKyBwYXJhbXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge3VybCwgcGFyYW1zfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgbGFuZ3VhZ2UgYmV0d2VlbiBkb21haW4gYW5kIHVyaSBodHRwczovL2V4YW1wbGUuY29tL2ZyL2ZvbGRlci9wYWdlXG4gICAgICogQHBhcmFtIHVybFBhcnRzXG4gICAgICogQHBhcmFtIGxhbmd1YWdlXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFVybCh1cmxQYXJ0czoge3VybDogc3RyaW5nOyBwYXJhbXM6IHN0cmluZ30sIGxhbmd1YWdlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHVybCA9IHVybFBhcnRzLnVybDtcblxuICAgICAgICBpZiAobGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgIHVybCA9IHRoaXMuYWRkTGFuZ3VhZ2VTZWdtZW50KHVybCwgbGFuZ3VhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHVybFBhcnRzLnBhcmFtcykge1xuICAgICAgICAgICAgdXJsICs9IHVybFBhcnRzLnBhcmFtcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRMYW5ndWFnZVNlZ21lbnQodXJsOiBzdHJpbmcsIGxhbmd1YWdlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB1cmxPYmogPSBuZXcgVVJMKHVybCk7XG4gICAgICAgIGNvbnN0IG5ld1BhdGggPSB1cmxPYmoucGF0aG5hbWUgPT09ICcvJyA/IGAvJHtsYW5ndWFnZX1gIDogYC8ke2xhbmd1YWdlfSR7dXJsT2JqLnBhdGhuYW1lfWA7XG4gICAgICAgIHJldHVybiB1cmxPYmoub3JpZ2luICsgbmV3UGF0aCArIHVybE9iai5zZWFyY2ggKyB1cmxPYmouaGFzaDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGpvaW4ocGFydHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHBhcnRzLmZpbHRlcihzID0+ICEhcykuam9pbignIC0gJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVUYWcobmFtZTogc3RyaW5nLCB2YWx1ZT86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubWV0YVRhZ1NlcnZpY2UudXBkYXRlVGFnKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBzdHJpcFRhZ3ModmFsdWUpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1ldGFUYWdTZXJ2aWNlLnJlbW92ZVRhZyhgbmFtZT1cIiR7bmFtZX1cImApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVMaW5rVGFnKGRlZmluaXRpb246IE5hdHVyYWxMaW5rRGVmaW5pdGlvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBsaW5rRWxlbWVudCA9XG4gICAgICAgICAgICA8SFRNTExpbmtFbGVtZW50PnRoaXMuZG9jdW1lbnQuaGVhZC5xdWVyeVNlbGVjdG9yKHRoaXMuX3BhcnNlU2VsZWN0b3IoZGVmaW5pdGlvbikpIHx8XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJykpO1xuXG4gICAgICAgIGlmIChsaW5rRWxlbWVudCkge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGVmaW5pdGlvbikuZm9yRWFjaCgoYXR0cmlidXRlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCBkZWZpbml0aW9uW2F0dHJpYnV0ZV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZSB0YWcgdG8gY3JlYXRlIGEgc2VsZWN0b3JcbiAgICAgKiBAcGFyYW0gIGRlZmluaXRpb25cbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IHNlbGVjdG9yIHRvIHVzZSBpbiBxdWVyeVNlbGVjdG9yXG4gICAgICovXG4gICAgcHJpdmF0ZSBfcGFyc2VTZWxlY3RvcihkZWZpbml0aW9uOiBOYXR1cmFsTGlua0RlZmluaXRpb24pOiBzdHJpbmcge1xuICAgICAgICBsZXQgYXR0cmlidXRlcyA9ICdsaW5rJztcbiAgICAgICAgT2JqZWN0LmtleXMoZGVmaW5pdGlvbikuZm9yRWFjaCgoYXR0cjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAoYXR0ciAhPT0gJ2hyZWYnKSB7XG4gICAgICAgICAgICAgICAgYXR0cmlidXRlcyArPSBgWyR7YXR0cn09XCIke2RlZmluaXRpb25bYXR0cl19XCJdYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZGF0YSBmcm9tIHRoZSBtb3N0IGRlZXAvc3BlY2lmaWMgYWN0aXZhdGVkIHJvdXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRSb3V0ZURhdGEocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBEYXRhIHtcbiAgICAgICAgaWYgKHJvdXRlLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFJvdXRlRGF0YShyb3V0ZS5maXJzdENoaWxkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByb3V0ZS5kYXRhO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZGF0YSBmcm9tIHRoZSBgTmF0dXJhbERpYWxvZ1RyaWdnZXJDb21wb25lbnRgIGlmIG9uZSBpcyBvcGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXREaWFsb2dSb3V0ZURhdGEocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBEYXRhIHwgbnVsbCB7XG4gICAgICAgIGlmIChyb3V0ZS5jb21wb25lbnQgPT09IE5hdHVyYWxEaWFsb2dUcmlnZ2VyQ29tcG9uZW50ICYmIHJvdXRlLm91dGxldCAhPT0gUFJJTUFSWV9PVVRMRVQpIHtcbiAgICAgICAgICAgIHJldHVybiByb3V0ZS5kYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiByb3V0ZS5jaGlsZHJlbikge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0RGlhbG9nUm91dGVEYXRhKGNoaWxkKTtcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvQmFzaWMoc2VvOiBOYXR1cmFsU2VvLCByb3V0ZURhdGE6IERhdGEpOiBOYXR1cmFsU2VvQmFzaWMge1xuICAgICAgICBpZiAodHlwZW9mIHNlbyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIHNlbyhyb3V0ZURhdGEpO1xuICAgICAgICB9IGVsc2UgaWYgKCdyZXNvbHZlS2V5JyBpbiBzZW8pIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGE6IFJlc29sdmVkRGF0YSB8IHVuZGVmaW5lZCA9IHJvdXRlRGF0YVtzZW8ucmVzb2x2ZUtleV07XG4gICAgICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHJlc29sdmVkIGRhdGEgZm9yIFNFTyBzZXJ2aWNlIHdpdGgga2V5OiAnICsgc2VvLnJlc29sdmVLZXkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBkYXRhLm1vZGVsPy5mdWxsTmFtZSA/PyBkYXRhLm1vZGVsPy5uYW1lID8/ICcnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkYXRhLm1vZGVsPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICByb2JvdHM6IHNlby5yb2JvdHMsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbztcbiAgICB9XG59XG4iXX0=
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9jb21tb24vc2VydmljZXMvc2VvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUErQixhQUFhLEVBQUUsY0FBYyxFQUFTLE1BQU0saUJBQWlCLENBQUM7QUFDcEcsT0FBTyxFQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RixPQUFPLEVBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7QUErR25ELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFtQiwrQkFBK0IsQ0FBQyxDQUFDO0FBRXhHLE1BQU0sVUFBVSxTQUFTLENBQUMsR0FBVztJQUNqQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFVRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBSUgsTUFBTSxPQUFPLGlCQUFpQjtJQU0xQixZQUNnQyxXQUE2QixFQUN4QyxNQUFjLEVBQ2QsWUFBbUIsRUFDbkIsY0FBb0IsRUFDRixRQUFrQixFQUMxQixNQUFjO1FBSnhCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxpQkFBWSxHQUFaLFlBQVksQ0FBTztRQUNuQixtQkFBYyxHQUFkLGNBQWMsQ0FBTTtRQUNGLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDMUIsV0FB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QUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBMT0NBTEVfSUR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNZXRhLCBUaXRsZX0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlU25hcHNob3QsIERhdGEsIE5hdmlnYXRpb25FbmQsIFBSSU1BUllfT1VUTEVULCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2ZpbHRlciwgc3RhcnRXaXRofSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge05hdHVyYWxEaWFsb2dUcmlnZ2VyQ29tcG9uZW50fSBmcm9tICcuLi8uLi9kaWFsb2ctdHJpZ2dlci9kaWFsb2ctdHJpZ2dlci5jb21wb25lbnQnO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIE5hdHVyYWxTZW8gPSBOYXR1cmFsU2VvQmFzaWMgfCBOYXR1cmFsU2VvQ2FsbGJhY2sgfCBOYXR1cmFsU2VvUmVzb2x2ZTtcblxuLyoqXG4gKiBUeXBpY2FsbHkgdXNlZCBmb3IgXCJzdGF0aWNcIiBwYWdlcyB3aGVyZSB0aGVyZSBpcyBub3QgYSBzaW5nbGUgcmVzb2x2ZWQgb2JqZWN0LiBTb1xuICogYWxsIHBhZ2VzIHN1Y2ggYXMgXCJBYm91dFwiLCBvciBsaXN0IG9mIG9iamVjdHMgKGxpc3Qgb2Ygcmlza3MsIGV0Yy4pLlxuICpcbiAqIFRoaXMgc2hvdWxkIGJlIHRoZSBtb3N0IGNvbW1vbiB1c2VkIHZhcmlhbnQuXG4gKi9cbmV4cG9ydCB0eXBlIE5hdHVyYWxTZW9CYXNpYyA9IFJvYm90cyAmIHtcbiAgICAvKipcbiAgICAgKiBUaGUgcGFnZSB0aXRsZSwgdGhhdCB3aWxsIGJlIGNvbmNhdGVuYXRlZCB3aXRoIGFwcGxpY2F0aW9uIG5hbWVcbiAgICAgKi9cbiAgICB0aXRsZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogSWYgZ2l2ZW4gd2lsbCBiZSB1c2VkIGFzIHBhZ2UgZGVzY3JpcHRpb24sIG90aGVyd2lzZSBmYWxsYmFjayBvbiBkZWZhdWx0IHZhbHVlXG4gICAgICovXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIHBhcmFtZXRlcnMgaW5jbHVkZWQgaW4gdGhlIGNhbm9uaWNhbCB0YWcncyB1cmxcbiAgICAgKi9cbiAgICBjYW5vbmljYWxRdWVyeVBhcmFtc1doaXRlbGlzdD86IHN0cmluZ1tdO1xufTtcblxudHlwZSBOYXR1cmFsTGlua0RlZmluaXRpb24gPSB7XG4gICAgY2hhcnNldD86IHN0cmluZztcbiAgICBjcm9zc29yaWdpbj86IHN0cmluZztcbiAgICBocmVmPzogc3RyaW5nO1xuICAgIGhyZWZsYW5nPzogc3RyaW5nO1xuICAgIG1lZGlhPzogc3RyaW5nO1xuICAgIHJlbD86IHN0cmluZztcbiAgICByZXY/OiBzdHJpbmc7XG4gICAgc2l6ZXM/OiBzdHJpbmc7XG4gICAgdGFyZ2V0Pzogc3RyaW5nO1xuICAgIHR5cGU/OiBzdHJpbmc7XG59ICYge1xuICAgIFtwcm9wOiBzdHJpbmddOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBUeXBpY2FsbHkgdXNlZCBmb3IgYSBcImR5bmFtaWNcIiBwYWdlIHdoZXJlIGEgc2luZ2xlIG9iamVjdCBpcyByZXNvbHZlZC4gU28gYSBkZXRhaWwgcGFnZSwgc3VjaFxuICogYXMgdGhlIGRldGFpbCBvZiBhIHJpc2sgYW5kIHNvIG9uLlxuICovXG5leHBvcnQgdHlwZSBOYXR1cmFsU2VvUmVzb2x2ZSA9IFJvYm90cyAmIHtcbiAgICAvKipcbiAgICAgKiBUaGUga2V5IHRvIGJlIHVzZWQgaW4gdGhlIHJlc29sdmVkIGRhdGEgdG8gZmluZCB0aGUgcmVzb2x2ZWQgb2JqZWN0LiBUaGUgZnVsbE5hbWVcbiAgICAgKiBvciBuYW1lIG9mIHRoZSBvYmplY3Qgd2lsbCBiZSB1c2VkIGZvciBwYWdlIHRpdGxlLCBhbmQgdGhlIG9iamVjdCBkZXNjcmlwdGlvbiwgaWYgYW55LFxuICAgICAqIHdpbGwgYmUgdXNlZCBmb3IgcGFnZSBkZXNjcmlwdGlvbi5cbiAgICAgKi9cbiAgICByZXNvbHZlS2V5OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFJhcmVseSB1c2VkIGZvciBhIHBhZ2UgdGhhdCBoYXMgdmVyeSBzcGVjaWZpYyBuZWVkcyBhbmQgbmVlZCB0byBidWlsZCB0aXRsZSBhbmQgZGVzY3JpcHRpb24gaW4gYSBjdXN0b20gd2F5LlxuICogVGhlIGNhbGxiYWNrIGJhY2sgd2lsbCBiZSBnaXZlbiB0aGUgcmVzb2x2ZWQgZGF0YSwgYW5kIGl0IGlzIHVwIHRvIHRoZSBjYWxsYmFjayB0byBmaW5kIHdoYXRldmVyIGl0IG5lZWRzLlxuICovXG5leHBvcnQgdHlwZSBOYXR1cmFsU2VvQ2FsbGJhY2sgPSAocm91dGVEYXRhOiBEYXRhKSA9PiBOYXR1cmFsU2VvQmFzaWM7XG5cbi8qKlxuICogVHlwaWNhbGx5IHVzZWQgdG8gdHlwZSB0aGUgcm91dGluZyBkYXRhIHJlY2VpdmVkIGluIHRoZSBjb21wb25lbnQsIGVnOlxuICpcbiAqIGBgYHRzXG4gKiBjbGFzcyBNeUNvbXBvbmVudCBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdERldGFpbDxNeVNlcnZpY2UsIE5hdHVyYWxTZW9SZXNvbHZlRGF0YT4ge31cbiAqIGBgYFxuICovXG5leHBvcnQgdHlwZSBOYXR1cmFsU2VvUmVzb2x2ZURhdGEgPSB7XG4gICAgc2VvOiBOYXR1cmFsU2VvQmFzaWM7XG59O1xuXG5pbnRlcmZhY2UgUm9ib3RzIHtcbiAgICAvKipcbiAgICAgKiBJZiBnaXZlbiB3aWxsIGJlIHVzZWQgYXMgcm9ib3RzIG1ldGEgdGFnLCBvdGhlcndpc2UgZmFsbGJhY2sgb24gZGVmYXVsdCB2YWx1ZVxuICAgICAqL1xuICAgIHJvYm90cz86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIE5hdHVyYWxTZW9Db25maWdQbGFpbiB7XG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIGFwcGxpY2F0aW9uIHRoYXQgd2lsbCBhbHdheXMgYXBwZWFyIGluIHRoZSBwYWdlIHRpdGxlXG4gICAgICovXG4gICAgcmVhZG9ubHkgYXBwbGljYXRpb25OYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBEZWZhdWx0IHZhbHVlIGZvciBkZXNjcmlwdGlvbiBtZXRhIHRoYXQgaXMgdXNlZCBmb3IgcGFnZXMgd2l0aG91dCB2YWx1ZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGRlZmF1bHREZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgdmFsdWUgZm9yIHJvYm90cyBtZXRhIHRoYXQgaXMgdXNlZCBmb3IgcGFnZXMgd2l0aG91dCB2YWx1ZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGRlZmF1bHRSb2JvdHM/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBJZiBnaXZlbiwgdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoIHJvdXRlIGFuZCBtdXN0IHJldHVybiBhIHN0cmluZyB0aGF0IHdpbGxcbiAgICAgKiBiZSBpbnNlcnRlZCBiZXR3ZWVuIHRoZSBwYWdlIHRpdGxlIGFuZCB0aGUgYXBwbGljYXRpb24gbmFtZS5cbiAgICAgKlxuICAgICAqIEl0IHNob3VsZCBiZSB1c2VkIHRvIGNvbXBsZXRlIHRoZSB0aXRsZSB3aXRoIGluZm8gdGhhdCBhcmUgb2Z0ZW4sIGJ1dCBub3QgbmVjZXNzYXJpbHkgYWx3YXlzLFxuICAgICAqIGF2YWlsYWJsZSB0aHJvdWdob3V0IHRoZSBlbnRpcmUgYXBwbGljYXRpb24uIFR5cGljYWxseSB1c2VkIGZvciB0aGUgc2l0ZS9zdGF0ZSBpbiBPS3BpbG90LlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGV4dHJhUGFydD86IChyb3V0ZURhdGE6IERhdGEpID0+IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gZ2VuZXJhdGUgYWx0ZXJuYXRpdmUgdGFnc1xuICAgICAqIDxsaW5rIHJlbD1cImFsdGVybmF0ZVwiIGhyZWZsYW5nPVwiZW5cIiBocmVmPVwiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vZW4vcGFnZVwiPlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGxhbmd1YWdlcz86IFJlYWRvbmx5PHN0cmluZ1tdPjtcbn1cblxuZXhwb3J0IHR5cGUgTmF0dXJhbFNlb0NvbmZpZyA9IE5hdHVyYWxTZW9Db25maWdQbGFpbiB8IE9ic2VydmFibGU8TmF0dXJhbFNlb0NvbmZpZ1BsYWluPjtcbmV4cG9ydCBjb25zdCBOQVRVUkFMX1NFT19DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48TmF0dXJhbFNlb0NvbmZpZz4oJ0NvbmZpZ3VyYXRpb24gZm9yIFNFTyBzZXJ2aWNlJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcFRhZ3Moc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvPFxcLz9bXj5dKz4vZywgJycpO1xufVxuXG50eXBlIFJlc29sdmVkRGF0YSA9IHtcbiAgICBtb2RlbD86IHtcbiAgICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgICAgZnVsbE5hbWU/OiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIH07XG59O1xuXG4vKipcbiAqIFRoaXMgc2VydmljZSBpcyByZXNwb25zaWJsZSB0byBrZWVwIHVwIHRvIGRhdGUgdGhlIHBhZ2UgdGl0bGUgYW5kIHBhZ2UgZGVzY3JpcHRpb24gYWNjb3JkaW5nXG4gKiB0byB3aGF0IGlzIGNvbmZpZ3VyZWQgaW4gcm91dGluZyBvciBkZWZhdWx0IHZhbHVlcy5cbiAqXG4gKiBJdCAqKm11c3QqKiBiZSBpbmplY3RlZCBpbiB0aGUgcm9vdCBtb2R1bGUgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIGhhdmUgZWZmZWN0cyBpbiBhbGwgbW9kdWxlcy4gQW5kIGl0XG4gKiBtdXN0IGJlIHByb3ZpZGVkIGEgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBUaGUgZnVsbCB0aXRsZSBoYXMgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6XG4gKlxuICogICAgIGRpYWxvZyB0aXRsZSAtIHBhZ2UgdGl0bGUgLSBleHRyYSBwYXJ0IC0gYXBwIG5hbWVcbiAqXG4gKiBgZGlhbG9nIHRpdGxlYCBvbmx5IGV4aXN0cyBpZiBhIGBOYXR1cmFsRGlhbG9nVHJpZ2dlckNvbXBvbmVudGAgaXMgY3VycmVudGx5IG9wZW4sIGFuZCB0aGF0IHNvbWUgU0VPIGlzXG4gKiBjb25maWd1cmVkIGZvciBpdCBpbiB0aGUgcm91dGluZy5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbFNlb1NlcnZpY2Uge1xuICAgIHByaXZhdGUgcm91dGVEYXRhPzogRGF0YTtcbiAgICBwcml2YXRlIGNvbmZpZzogTmF0dXJhbFNlb0NvbmZpZ1BsYWluID0ge1xuICAgICAgICBhcHBsaWNhdGlvbk5hbWU6ICcnLFxuICAgIH07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoTkFUVVJBTF9TRU9fQ09ORklHKSBjb25maWdUb2tlbjogTmF0dXJhbFNlb0NvbmZpZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0aXRsZVNlcnZpY2U6IFRpdGxlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1ldGFUYWdTZXJ2aWNlOiBNZXRhLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgbG9jYWxlOiBzdHJpbmcsXG4gICAgKSB7XG4gICAgICAgIGNvbWJpbmVMYXRlc3Qoe1xuICAgICAgICAgICAgY29uZmlnOiBjb25maWdUb2tlbiBpbnN0YW5jZW9mIE9ic2VydmFibGUgPyBjb25maWdUb2tlbi5waXBlKHN0YXJ0V2l0aCh0aGlzLmNvbmZpZykpIDogb2YoY29uZmlnVG9rZW4pLFxuICAgICAgICAgICAgbmF2aWdhdGlvbkVuZDogdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpLFxuICAgICAgICB9KS5zdWJzY3JpYmUoKHtjb25maWd9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5yb290LnNuYXBzaG90O1xuICAgICAgICAgICAgdGhpcy5yb3V0ZURhdGEgPSB0aGlzLmdldFJvdXRlRGF0YShyb290KTtcblxuICAgICAgICAgICAgY29uc3Qgc2VvOiBOYXR1cmFsU2VvID0gdGhpcy5yb3V0ZURhdGEuc2VvID8/IHt0aXRsZTogJyd9O1xuICAgICAgICAgICAgY29uc3QgZGlhbG9nUm91dGVEYXRhID0gdGhpcy5nZXREaWFsb2dSb3V0ZURhdGEocm9vdCk7XG4gICAgICAgICAgICBjb25zdCBkaWFsb2dTZW86IE5hdHVyYWxTZW8gPSBkaWFsb2dSb3V0ZURhdGE/LnNlbztcblxuICAgICAgICAgICAgbGV0IGJhc2ljID0gdGhpcy50b0Jhc2ljKHNlbywgdGhpcy5yb3V0ZURhdGEpO1xuICAgICAgICAgICAgaWYgKGRpYWxvZ1JvdXRlRGF0YSAmJiBkaWFsb2dTZW8pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkaWFsb2dCYXNpYyA9IHRoaXMudG9CYXNpYyhkaWFsb2dTZW8sIGRpYWxvZ1JvdXRlRGF0YSk7XG4gICAgICAgICAgICAgICAgYmFzaWMgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmRpYWxvZ0Jhc2ljLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5qb2luKFtkaWFsb2dCYXNpYy50aXRsZSwgYmFzaWMudGl0bGVdKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZShiYXNpYyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgU0VPIHdpdGggZ2l2ZW4gaW5mby4gVGhlIGV4dHJhIHBhcnQgYW5kIGFwcCBuYW1lIHdpbGwgYmUgYXBwZW5kZWQgYXV0b21hdGljYWxseS5cbiAgICAgKlxuICAgICAqIEluIG1vc3QgY2FzZXMsIHRoaXMgc2hvdWxkIG5vdCBiZSB1c2VkLiBBbmQgaW5zdGVhZCwgdGhlIFNFTyBzaG91bGQgYmUgY29uZmlndXJlZCBpbiB0aGUgcm91dGluZyxcbiAgICAgKiBwb3NzaWJseSB3aXRoIHRoZSBjYWxsYmFjayB2YXJpYW50IGZvciBzb21lIGR5bmFtaXNtLlxuICAgICAqXG4gICAgICogQnV0IGluIHJhcmUgY2FzZXMsIG9ubHkgdGhlIENvbXBvbmVudCBpcyBhYmxlIHRvIGJ1aWxkIGEgcHJvcGVyIHBhZ2UgdGl0bGUsIGFmdGVyIGl0IGdhdGhlcmVkIGV2ZXJ5dGhpbmcgaXRcbiAgICAgKiBuZWVkZWQuIEZvciB0aG9zZSBjYXNlcywgdGhlIENvbXBvbmVudCBjYW4gaW5qZWN0IHRoaXMgc2VydmljZSBhbmQgdXBkYXRlIHRoZSBTRU8gZGlyZWN0bHkuXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZShzZW86IE5hdHVyYWxTZW9CYXNpYyk6IHZvaWQge1xuICAgICAgICAvLyBUaXRsZVxuICAgICAgICBjb25zdCBwYXJ0cyA9IFtcbiAgICAgICAgICAgIHNlby50aXRsZSxcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmV4dHJhUGFydCAmJiB0aGlzLnJvdXRlRGF0YSA/IHRoaXMuY29uZmlnLmV4dHJhUGFydCh0aGlzLnJvdXRlRGF0YSkgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmFwcGxpY2F0aW9uTmFtZSxcbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCB0aXRsZSA9IHRoaXMuam9pbihwYXJ0cyk7XG4gICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRpdGxlKTtcblxuICAgICAgICAvLyBEZXNjcmlwdGlvblxuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHNlbz8uZGVzY3JpcHRpb24gPz8gdGhpcy5jb25maWcuZGVmYXVsdERlc2NyaXB0aW9uO1xuICAgICAgICB0aGlzLnVwZGF0ZVRhZygnZGVzY3JpcHRpb24nLCBkZXNjcmlwdGlvbik7XG5cbiAgICAgICAgLy8gUm9ib3RzXG4gICAgICAgIGNvbnN0IHJvYm90cyA9IHNlbz8ucm9ib3RzID8/IHRoaXMuY29uZmlnLmRlZmF1bHRSb2JvdHM7XG4gICAgICAgIHRoaXMudXBkYXRlVGFnKCdyb2JvdHMnLCByb2JvdHMpO1xuXG4gICAgICAgIC8vIENhbm9uaWNhbFxuICAgICAgICAvLyBBZGQgbGFuZ3VhZ2UgaW4gdXJsIChhZnRlciBkb21haW4pIGlmIHNvbWUgbGFuZ3VhZ2VzIGFyZSBwcm92aWRlZCBvbmx5XG4gICAgICAgIGNvbnN0IGxhbmd1YWdlID0gdGhpcy5jb25maWcubGFuZ3VhZ2VzPy5sZW5ndGggJiYgdGhpcy5sb2NhbGUgPyB0aGlzLmxvY2FsZS5zcGxpdCgnLScpWzBdIDogJyc7XG4gICAgICAgIGNvbnN0IHVybFBhcnRzID0gdGhpcy5nZXRVcmxQYXJ0cyhzZW8uY2Fub25pY2FsUXVlcnlQYXJhbXNXaGl0ZWxpc3QgPz8gW10pO1xuICAgICAgICB0aGlzLnVwZGF0ZUxpbmtUYWcoe3JlbDogJ2Nhbm9uaWNhbCcsIGhyZWY6IHRoaXMuZ2V0VXJsKHVybFBhcnRzLCBsYW5ndWFnZSl9KTtcbiAgICAgICAgdGhpcy51cGRhdGVBbHRlcm5hdGVzKHVybFBhcnRzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUFsdGVybmF0ZXModXJsUGFydHM6IHt1cmw6IHN0cmluZzsgcGFyYW1zOiBzdHJpbmd9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29uZmlnLmxhbmd1YWdlcz8uZm9yRWFjaChsYW5ndWFnZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxpbmtUYWcoe3JlbDogJ2FsdGVybmF0ZScsIGhyZWY6IHRoaXMuZ2V0VXJsKHVybFBhcnRzLCBsYW5ndWFnZSksIGhyZWZsYW5nOiBsYW5ndWFnZX0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFVybFBhcnRzKHdoaXRlTGlzdGVkUGFyYW1zOiBzdHJpbmdbXSk6IHt1cmw6IHN0cmluZzsgcGFyYW1zOiBzdHJpbmd9IHtcbiAgICAgICAgbGV0IHVybCA9ICdodHRwczovLycgKyB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3Py53aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG4gICAgICAgIGNvbnN0IHVybFRyZWUgPSB0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLnJvdXRlci51cmwpO1xuXG4gICAgICAgIC8vIG5lZWQgYmV0dGVyIGxpa2Ugc29tZXRoaW5nIHJlY3Vyc2l2ZSA/XG4gICAgICAgIGlmICh1cmxUcmVlLnJvb3QuaGFzQ2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgY29uc3Qgc2VnbWVudHMgPSB1cmxUcmVlLnJvb3QuY2hpbGRyZW5bJ3ByaW1hcnknXS5zZWdtZW50cztcbiAgICAgICAgICAgIGlmIChzZWdtZW50cyAmJiBzZWdtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdXJsICs9ICcvJyArIHNlZ21lbnRzLm1hcChzZWdtZW50ID0+IHNlZ21lbnQucGF0aCkuam9pbignLycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUXVlcnkgUGFyYW1zXG4gICAgICAgIGxldCBwYXJhbXMgPSAnJztcbiAgICAgICAgZm9yIChjb25zdCB3aGl0ZUxpc3RlZFBhcmFtIG9mIHdoaXRlTGlzdGVkUGFyYW1zKSB7XG4gICAgICAgICAgICBpZiAod2hpdGVMaXN0ZWRQYXJhbSBpbiB1cmxUcmVlLnF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KHdoaXRlTGlzdGVkUGFyYW0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KHVybFRyZWUucXVlcnlQYXJhbXNbd2hpdGVMaXN0ZWRQYXJhbV0pO1xuICAgICAgICAgICAgICAgIGlmIChwYXJhbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyArPSAnJic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBhcmFtcyArPSBgJHtrZXl9PSR7dmFsdWV9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJhbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSAnPycgKyBwYXJhbXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge3VybCwgcGFyYW1zfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgbGFuZ3VhZ2UgYmV0d2VlbiBkb21haW4gYW5kIHVyaSBodHRwczovL2V4YW1wbGUuY29tL2ZyL2ZvbGRlci9wYWdlXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRVcmwodXJsUGFydHM6IHt1cmw6IHN0cmluZzsgcGFyYW1zOiBzdHJpbmd9LCBsYW5ndWFnZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCB1cmwgPSB1cmxQYXJ0cy51cmw7XG5cbiAgICAgICAgaWYgKGxhbmd1YWdlKSB7XG4gICAgICAgICAgICB1cmwgPSB0aGlzLmFkZExhbmd1YWdlU2VnbWVudCh1cmwsIGxhbmd1YWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1cmxQYXJ0cy5wYXJhbXMpIHtcbiAgICAgICAgICAgIHVybCArPSB1cmxQYXJ0cy5wYXJhbXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkTGFuZ3VhZ2VTZWdtZW50KHVybDogc3RyaW5nLCBsYW5ndWFnZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdXJsT2JqID0gbmV3IFVSTCh1cmwpO1xuICAgICAgICBjb25zdCBuZXdQYXRoID0gdXJsT2JqLnBhdGhuYW1lID09PSAnLycgPyBgLyR7bGFuZ3VhZ2V9YCA6IGAvJHtsYW5ndWFnZX0ke3VybE9iai5wYXRobmFtZX1gO1xuICAgICAgICByZXR1cm4gdXJsT2JqLm9yaWdpbiArIG5ld1BhdGggKyB1cmxPYmouc2VhcmNoICsgdXJsT2JqLmhhc2g7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBqb2luKHBhcnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBwYXJ0cy5maWx0ZXIocyA9PiAhIXMpLmpvaW4oJyAtICcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVGFnKG5hbWU6IHN0cmluZywgdmFsdWU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm1ldGFUYWdTZXJ2aWNlLnVwZGF0ZVRhZyh7XG4gICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogc3RyaXBUYWdzKHZhbHVlKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tZXRhVGFnU2VydmljZS5yZW1vdmVUYWcoYG5hbWU9XCIke25hbWV9XCJgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTGlua1RhZyhkZWZpbml0aW9uOiBOYXR1cmFsTGlua0RlZmluaXRpb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGlua0VsZW1lbnQgPVxuICAgICAgICAgICAgdGhpcy5kb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3I8SFRNTExpbmtFbGVtZW50Pih0aGlzLnBhcnNlU2VsZWN0b3IoZGVmaW5pdGlvbikpID8/XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJykpO1xuXG4gICAgICAgIGlmIChsaW5rRWxlbWVudCkge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGVmaW5pdGlvbikuZm9yRWFjaCgoYXR0cmlidXRlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCBkZWZpbml0aW9uW2F0dHJpYnV0ZV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHNlbGVjdG9yIHRvIHVzZSBpbiBxdWVyeVNlbGVjdG9yIHRvIGdldCB0aGUgZ2l2ZW4gbGlua1xuICAgICAqL1xuICAgIHByaXZhdGUgcGFyc2VTZWxlY3RvcihkZWZpbml0aW9uOiBOYXR1cmFsTGlua0RlZmluaXRpb24pOiBzdHJpbmcge1xuICAgICAgICBsZXQgYXR0cmlidXRlcyA9ICdsaW5rJztcbiAgICAgICAgT2JqZWN0LmtleXMoZGVmaW5pdGlvbikuZm9yRWFjaChhdHRyID0+IHtcbiAgICAgICAgICAgIGlmIChhdHRyICE9PSAnaHJlZicpIHtcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzICs9IGBbJHthdHRyfT1cIiR7ZGVmaW5pdGlvblthdHRyXX1cIl1gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBkYXRhIGZyb20gdGhlIG1vc3QgZGVlcC9zcGVjaWZpYyBhY3RpdmF0ZWQgcm91dGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFJvdXRlRGF0YShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IERhdGEge1xuICAgICAgICBpZiAocm91dGUuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um91dGVEYXRhKHJvdXRlLmZpcnN0Q2hpbGQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJvdXRlLmRhdGE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBkYXRhIGZyb20gdGhlIGBOYXR1cmFsRGlhbG9nVHJpZ2dlckNvbXBvbmVudGAgaWYgb25lIGlzIG9wZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldERpYWxvZ1JvdXRlRGF0YShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IERhdGEgfCBudWxsIHtcbiAgICAgICAgaWYgKHJvdXRlLmNvbXBvbmVudCA9PT0gTmF0dXJhbERpYWxvZ1RyaWdnZXJDb21wb25lbnQgJiYgcm91dGUub3V0bGV0ICE9PSBQUklNQVJZX09VVExFVCkge1xuICAgICAgICAgICAgcmV0dXJuIHJvdXRlLmRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHJvdXRlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXREaWFsb2dSb3V0ZURhdGEoY2hpbGQpO1xuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9CYXNpYyhzZW86IE5hdHVyYWxTZW8sIHJvdXRlRGF0YTogRGF0YSk6IE5hdHVyYWxTZW9CYXNpYyB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2VvID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gc2VvKHJvdXRlRGF0YSk7XG4gICAgICAgIH0gZWxzZSBpZiAoJ3Jlc29sdmVLZXknIGluIHNlbykge1xuICAgICAgICAgICAgY29uc3QgZGF0YTogUmVzb2x2ZWREYXRhIHwgdW5kZWZpbmVkID0gcm91dGVEYXRhW3Nlby5yZXNvbHZlS2V5XTtcbiAgICAgICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmQgcmVzb2x2ZWQgZGF0YSBmb3IgU0VPIHNlcnZpY2Ugd2l0aCBrZXk6ICcgKyBzZW8ucmVzb2x2ZUtleSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEubW9kZWw/LmZ1bGxOYW1lID8/IGRhdGEubW9kZWw/Lm5hbWUgPz8gJycsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGRhdGEubW9kZWw/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHJvYm90czogc2VvLnJvYm90cyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VvO1xuICAgIH1cbn1cbiJdfQ==