valtech-components 4.0.976 → 4.0.978

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.
@@ -26,7 +26,35 @@ export class ProfileCardComponent {
26
26
  this.safeWhatsapp = computed(() => sanitizeUrl(this.data().links?.whatsapp));
27
27
  this.safePhone = computed(() => sanitizeUrl(this.data().links?.phone));
28
28
  this.safeEmail = computed(() => sanitizeUrl(this.data().links?.email));
29
- this.hasLinks = computed(() => !!(this.safeWebsite() || this.safeInstagram() || this.safeWhatsapp() || this.safePhone() || this.safeEmail()));
29
+ this.safeFacebook = computed(() => this.facebookUrl(this.data().links?.facebook));
30
+ this.hasLinks = computed(() => !!(this.safeWebsite() ||
31
+ this.safeInstagram() ||
32
+ this.safeWhatsapp() ||
33
+ this.safePhone() ||
34
+ this.safeEmail() ||
35
+ this.safeFacebook()));
36
+ this.statsToShow = computed(() => {
37
+ const stats = this.data().stats;
38
+ if (stats)
39
+ return stats;
40
+ const stat = this.data().stat;
41
+ return stat ? [stat] : null;
42
+ });
43
+ }
44
+ facebookUrl(handle) {
45
+ if (!handle)
46
+ return null;
47
+ if (handle.startsWith('http'))
48
+ return sanitizeUrl(handle);
49
+ return sanitizeUrl(`https://facebook.com/${handle}`);
50
+ }
51
+ formatPlace(place) {
52
+ const parts = [];
53
+ if (place.city)
54
+ parts.push(place.city);
55
+ if (place.region)
56
+ parts.push(place.region);
57
+ return parts.join(', ');
30
58
  }
31
59
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProfileCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
32
60
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ProfileCardComponent, isStandalone: true, selector: "val-profile-card", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
@@ -48,10 +76,22 @@ export class ProfileCardComponent {
48
76
  @if (data().handle) {
49
77
  <div class="profile-card__handle">{{ '@' + data().handle }}</div>
50
78
  }
51
- @if (data().stat) {
52
- <div class="profile-card__stat">
53
- <strong>{{ data().stat!.value }}</strong
54
- >&nbsp;{{ data().stat!.label }}
79
+ @if (data().description) {
80
+ <div class="profile-card__description">{{ data().description }}</div>
81
+ }
82
+ @if (data().place) {
83
+ <div class="profile-card__place">
84
+ {{ formatPlace(data().place) }}
85
+ </div>
86
+ }
87
+ @if (statsToShow(); as stats) {
88
+ <div class="profile-card__stats">
89
+ @for (stat of stats; track $index) {
90
+ <div class="profile-card__stat">
91
+ <strong>{{ stat.value }}</strong
92
+ >&nbsp;{{ stat.label }}
93
+ </div>
94
+ }
55
95
  </div>
56
96
  }
57
97
  @if (hasLinks()) {
@@ -99,11 +139,22 @@ export class ProfileCardComponent {
99
139
  <ion-icon name="mail-outline" />
100
140
  </a>
101
141
  }
142
+ @if (safeFacebook()) {
143
+ <a
144
+ class="profile-card__link"
145
+ [href]="safeFacebook()!"
146
+ target="_blank"
147
+ rel="noopener noreferrer"
148
+ aria-label="Facebook"
149
+ >
150
+ <ion-icon name="logo-facebook" />
151
+ </a>
152
+ }
102
153
  </div>
103
154
  }
104
155
  </div>
105
156
  </div>
106
- `, isInline: true, styles: [".profile-card{display:flex;align-items:flex-start;gap:14px}.profile-card__avatar-wrap{flex-shrink:0;position:relative}.profile-card__avatar{width:64px;height:64px;border-radius:50%;background:var(--ion-color-dark, #313131);display:flex;align-items:center;justify-content:center;font-size:1.625rem;font-weight:800;color:#fff;overflow:hidden;letter-spacing:-.5px}.profile-card__avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}.profile-card__badge{position:absolute;bottom:-4px;right:-4px;width:20px;height:20px;background:var(--ion-color-secondary, #fff600);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.625rem;font-weight:700;border:2px solid var(--ion-background-color, #fff)}.profile-card__text{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;padding-top:4px}.profile-card__name{font-size:1.125rem;font-weight:700;color:var(--ion-text-color, #000);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile-card__handle{font-size:.8125rem;color:var(--ion-color-dark, #92949c)}.profile-card__stat{margin-top:4px;font-size:.75rem;color:var(--ion-color-dark, #92949c)}.profile-card__stat strong{color:var(--ion-text-color, #000);font-weight:700}.profile-card__links{display:flex;gap:10px;margin-top:6px}.profile-card__link{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--ion-color-light, rgba(0, 0, 0, .06));color:var(--ion-text-color, #000);text-decoration:none;font-size:1rem;transition:opacity .15s}.profile-card__link:hover{opacity:.7}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
157
+ `, isInline: true, styles: [".profile-card{display:flex;align-items:flex-start;gap:14px}.profile-card__avatar-wrap{flex-shrink:0;position:relative}.profile-card__avatar{width:64px;height:64px;border-radius:50%;background:var(--ion-color-dark, #313131);display:flex;align-items:center;justify-content:center;font-size:1.625rem;font-weight:800;color:#fff;overflow:hidden;letter-spacing:-.5px}.profile-card__avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}.profile-card__badge{position:absolute;bottom:-4px;right:-4px;width:20px;height:20px;background:var(--ion-color-secondary, #fff600);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.625rem;font-weight:700;border:2px solid var(--ion-background-color, #fff)}.profile-card__text{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;padding-top:4px}.profile-card__name{font-size:1.125rem;font-weight:700;color:var(--ion-text-color, #000);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile-card__handle{font-size:.8125rem;color:var(--ion-color-dark, #92949c)}.profile-card__description{font-size:.875rem;color:var(--ion-color-dark, #92949c);line-height:1.4;margin-top:6px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.profile-card__place{font-size:.75rem;color:var(--ion-color-dark, #92949c);margin-top:3px}.profile-card__stats{display:flex;gap:10px;margin-top:6px;flex-wrap:wrap}.profile-card__stat{font-size:.75rem;color:var(--ion-color-dark, #92949c)}.profile-card__stat strong{color:var(--ion-text-color, #000);font-weight:700}.profile-card__links{display:flex;gap:10px;margin-top:6px}.profile-card__link{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--ion-color-light, rgba(0, 0, 0, .06));color:var(--ion-text-color, #000);text-decoration:none;font-size:1rem;transition:opacity .15s}.profile-card__link:hover{opacity:.7}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
107
158
  }
108
159
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProfileCardComponent, decorators: [{
109
160
  type: Component,
@@ -126,10 +177,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
126
177
  @if (data().handle) {
127
178
  <div class="profile-card__handle">{{ '@' + data().handle }}</div>
128
179
  }
129
- @if (data().stat) {
130
- <div class="profile-card__stat">
131
- <strong>{{ data().stat!.value }}</strong
132
- >&nbsp;{{ data().stat!.label }}
180
+ @if (data().description) {
181
+ <div class="profile-card__description">{{ data().description }}</div>
182
+ }
183
+ @if (data().place) {
184
+ <div class="profile-card__place">
185
+ {{ formatPlace(data().place) }}
186
+ </div>
187
+ }
188
+ @if (statsToShow(); as stats) {
189
+ <div class="profile-card__stats">
190
+ @for (stat of stats; track $index) {
191
+ <div class="profile-card__stat">
192
+ <strong>{{ stat.value }}</strong
193
+ >&nbsp;{{ stat.label }}
194
+ </div>
195
+ }
133
196
  </div>
134
197
  }
135
198
  @if (hasLinks()) {
@@ -177,10 +240,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
177
240
  <ion-icon name="mail-outline" />
178
241
  </a>
179
242
  }
243
+ @if (safeFacebook()) {
244
+ <a
245
+ class="profile-card__link"
246
+ [href]="safeFacebook()!"
247
+ target="_blank"
248
+ rel="noopener noreferrer"
249
+ aria-label="Facebook"
250
+ >
251
+ <ion-icon name="logo-facebook" />
252
+ </a>
253
+ }
180
254
  </div>
181
255
  }
182
256
  </div>
183
257
  </div>
184
- `, styles: [".profile-card{display:flex;align-items:flex-start;gap:14px}.profile-card__avatar-wrap{flex-shrink:0;position:relative}.profile-card__avatar{width:64px;height:64px;border-radius:50%;background:var(--ion-color-dark, #313131);display:flex;align-items:center;justify-content:center;font-size:1.625rem;font-weight:800;color:#fff;overflow:hidden;letter-spacing:-.5px}.profile-card__avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}.profile-card__badge{position:absolute;bottom:-4px;right:-4px;width:20px;height:20px;background:var(--ion-color-secondary, #fff600);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.625rem;font-weight:700;border:2px solid var(--ion-background-color, #fff)}.profile-card__text{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;padding-top:4px}.profile-card__name{font-size:1.125rem;font-weight:700;color:var(--ion-text-color, #000);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile-card__handle{font-size:.8125rem;color:var(--ion-color-dark, #92949c)}.profile-card__stat{margin-top:4px;font-size:.75rem;color:var(--ion-color-dark, #92949c)}.profile-card__stat strong{color:var(--ion-text-color, #000);font-weight:700}.profile-card__links{display:flex;gap:10px;margin-top:6px}.profile-card__link{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--ion-color-light, rgba(0, 0, 0, .06));color:var(--ion-text-color, #000);text-decoration:none;font-size:1rem;transition:opacity .15s}.profile-card__link:hover{opacity:.7}\n"] }]
258
+ `, styles: [".profile-card{display:flex;align-items:flex-start;gap:14px}.profile-card__avatar-wrap{flex-shrink:0;position:relative}.profile-card__avatar{width:64px;height:64px;border-radius:50%;background:var(--ion-color-dark, #313131);display:flex;align-items:center;justify-content:center;font-size:1.625rem;font-weight:800;color:#fff;overflow:hidden;letter-spacing:-.5px}.profile-card__avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}.profile-card__badge{position:absolute;bottom:-4px;right:-4px;width:20px;height:20px;background:var(--ion-color-secondary, #fff600);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.625rem;font-weight:700;border:2px solid var(--ion-background-color, #fff)}.profile-card__text{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;padding-top:4px}.profile-card__name{font-size:1.125rem;font-weight:700;color:var(--ion-text-color, #000);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile-card__handle{font-size:.8125rem;color:var(--ion-color-dark, #92949c)}.profile-card__description{font-size:.875rem;color:var(--ion-color-dark, #92949c);line-height:1.4;margin-top:6px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.profile-card__place{font-size:.75rem;color:var(--ion-color-dark, #92949c);margin-top:3px}.profile-card__stats{display:flex;gap:10px;margin-top:6px;flex-wrap:wrap}.profile-card__stat{font-size:.75rem;color:var(--ion-color-dark, #92949c)}.profile-card__stat strong{color:var(--ion-text-color, #000);font-weight:700}.profile-card__links{display:flex;gap:10px;margin-top:6px}.profile-card__link{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--ion-color-light, rgba(0, 0, 0, .06));color:var(--ion-text-color, #000);text-decoration:none;font-size:1rem;transition:opacity .15s}.profile-card__link:hover{opacity:.7}\n"] }]
185
259
  }] });
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcHJvZmlsZS1jYXJkL3Byb2ZpbGUtY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBNkJwRCxTQUFTLFdBQVcsQ0FBQyxHQUE4QjtJQUNqRCxJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3RCLElBQUksQ0FBQztRQUNILE1BQU0sQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNsRixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFtTEgsTUFBTSxPQUFPLG9CQUFvQjtJQWxMakM7UUFtTFcsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQW1CLENBQUM7UUFFekMsaUJBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0IsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN0RSxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzFFLGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDeEUsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVsRSxhQUFRLEdBQUcsUUFBUSxDQUMxQixHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQ3BILENBQUM7S0FDSDsrR0FkWSxvQkFBb0I7bUdBQXBCLG9CQUFvQiw0TUE5S3JCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBFVCwybkRBM0VTLE9BQU87OzRGQStLTixvQkFBb0I7a0JBbExoQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxPQUFPLENBQUMsWUFDUjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwRVQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZmlsZUNhcmRMaW5rcyB7XG4gIHdlYnNpdGU/OiBzdHJpbmcgfCBudWxsO1xuICBpbnN0YWdyYW0/OiBzdHJpbmcgfCBudWxsO1xuICB3aGF0c2FwcD86IHN0cmluZyB8IG51bGw7XG4gIHBob25lPzogc3RyaW5nIHwgbnVsbDtcbiAgZW1haWw/OiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2ZpbGVDYXJkU3RhdCB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBudW1iZXIgfCBzdHJpbmc7XG59XG5cbi8qKlxuICogRGF0b3MgYWduw7NzdGljb3MgYWwgZG9taW5pbyAoQURSLTA2Mykg4oCUIHNpcnZlIHJlZnVnaW8gKENoZXNlZCksIGNyZWFkb3IgZGVcbiAqIHJlY2V0YXMgKE1lYWxwbGFuKSBvIGN1YWxxdWllciBwdWJsaXNoZXIvZW50aWRhZCBjb24gcGVyZmlsIHDDumJsaWNvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2ZpbGVDYXJkRGF0YSB7XG4gIGF2YXRhclVybD86IHN0cmluZyB8IG51bGw7XG4gIG5hbWU6IHN0cmluZztcbiAgaGFuZGxlPzogc3RyaW5nIHwgbnVsbDtcbiAgdmVyaWZpZWQ/OiBib29sZWFuO1xuICB2ZXJpZmllZExhYmVsPzogc3RyaW5nO1xuICBzdGF0PzogUHJvZmlsZUNhcmRTdGF0O1xuICBsaW5rcz86IFByb2ZpbGVDYXJkTGlua3M7XG59XG5cbmZ1bmN0aW9uIHNhbml0aXplVXJsKHVybDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IG51bGwge1xuICBpZiAoIXVybCkgcmV0dXJuIG51bGw7XG4gIHRyeSB7XG4gICAgY29uc3QgdSA9IG5ldyBVUkwodXJsKTtcbiAgICByZXR1cm4gWydodHRwOicsICdodHRwczonLCAndGVsOicsICdtYWlsdG86J10uaW5jbHVkZXModS5wcm90b2NvbCkgPyB1cmwgOiBudWxsO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIENhcmQgZGUgcGVyZmlsIHDDumJsaWNvIChhdmF0YXIgKyBub21icmUgKyBoYW5kbGUgKyBiYWRnZSB2ZXJpZmljYWRvICsgc3RhdFxuICogKyBsaW5rcykuIFByZXNlbnRhY2lvbmFsL2R1bWI6IGVsIGNvbnN1bWVyIHJlc3VlbHZlIGRhdG9zLCBhY3Rpb25zIHlcbiAqIHJvdXRpbmcuIENvbmZpZyBhZ27Ds3N0aWNhIGFsIGRvbWluaW8g4oCUIHZlciBgUHJvZmlsZUNhcmREYXRhYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXByb2ZpbGUtY2FyZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1jYXJkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1jYXJkX19hdmF0YXItd3JhcFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1jYXJkX19hdmF0YXJcIj5cbiAgICAgICAgICBAaWYgKGRhdGEoKS5hdmF0YXJVcmwgJiYgIWF2YXRhckZhaWxlZCgpKSB7XG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwiZGF0YSgpLmF2YXRhclVybCFcIiBbYWx0XT1cImRhdGEoKS5uYW1lXCIgKGVycm9yKT1cImF2YXRhckZhaWxlZC5zZXQodHJ1ZSlcIiAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAge3sgZGF0YSgpLm5hbWVbMF0/LnRvVXBwZXJDYXNlKCkgfX1cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKGRhdGEoKS52ZXJpZmllZCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWNhcmRfX2JhZGdlXCIgW2F0dHIudGl0bGVdPVwiZGF0YSgpLnZlcmlmaWVkTGFiZWxcIj7inJM8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1jYXJkX190ZXh0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWNhcmRfX25hbWVcIj57eyBkYXRhKCkubmFtZSB9fTwvZGl2PlxuICAgICAgICBAaWYgKGRhdGEoKS5oYW5kbGUpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1jYXJkX19oYW5kbGVcIj57eyAnQCcgKyBkYXRhKCkuaGFuZGxlIH19PC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChkYXRhKCkuc3RhdCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWNhcmRfX3N0YXRcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgZGF0YSgpLnN0YXQhLnZhbHVlIH19PC9zdHJvbmdcbiAgICAgICAgICAgID4mbmJzcDt7eyBkYXRhKCkuc3RhdCEubGFiZWwgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGhhc0xpbmtzKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1jYXJkX19saW5rc1wiPlxuICAgICAgICAgICAgQGlmIChzYWZlV2Vic2l0ZSgpKSB7XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9maWxlLWNhcmRfX2xpbmtcIlxuICAgICAgICAgICAgICAgIFtocmVmXT1cInNhZmVXZWJzaXRlKCkhXCJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJXZWJzaXRlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiZ2xvYmUtb3V0bGluZVwiIC8+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoc2FmZUluc3RhZ3JhbSgpKSB7XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9maWxlLWNhcmRfX2xpbmtcIlxuICAgICAgICAgICAgICAgIFtocmVmXT1cInNhZmVJbnN0YWdyYW0oKSFcIlxuICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkluc3RhZ3JhbVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImxvZ28taW5zdGFncmFtXCIgLz5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzYWZlV2hhdHNhcHAoKSkge1xuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZmlsZS1jYXJkX19saW5rXCJcbiAgICAgICAgICAgICAgICBbaHJlZl09XCJzYWZlV2hhdHNhcHAoKSFcIlxuICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIldoYXRzQXBwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibG9nby13aGF0c2FwcFwiIC8+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoc2FmZVBob25lKCkpIHtcbiAgICAgICAgICAgICAgPGEgY2xhc3M9XCJwcm9maWxlLWNhcmRfX2xpbmtcIiBbaHJlZl09XCJzYWZlUGhvbmUoKSFcIiBhcmlhLWxhYmVsPVwiUGhvbmVcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNhbGwtb3V0bGluZVwiIC8+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoc2FmZUVtYWlsKCkpIHtcbiAgICAgICAgICAgICAgPGEgY2xhc3M9XCJwcm9maWxlLWNhcmRfX2xpbmtcIiBbaHJlZl09XCJzYWZlRW1haWwoKSFcIiBhcmlhLWxhYmVsPVwiRW1haWxcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cIm1haWwtb3V0bGluZVwiIC8+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5wcm9maWxlLWNhcmQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgZ2FwOiAxNHB4O1xuICAgICAgfVxuICAgICAgLnByb2ZpbGUtY2FyZF9fYXZhdGFyLXdyYXAge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfVxuICAgICAgLnByb2ZpbGUtY2FyZF9fYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDY0cHg7XG4gICAgICAgIGhlaWdodDogNjRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzMxMzEzMSk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDEuNjI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjVweDtcbiAgICAgIH1cbiAgICAgIC5wcm9maWxlLWNhcmRfX2F2YXRhciBpbWcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgfVxuICAgICAgLnByb2ZpbGUtY2FyZF9fYmFkZ2Uge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogLTRweDtcbiAgICAgICAgcmlnaHQ6IC00cHg7XG4gICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnksICNmZmY2MDApO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDAuNjI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZik7XG4gICAgICB9XG4gICAgICAucHJvZmlsZS1jYXJkX190ZXh0IHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDNweDtcbiAgICAgICAgcGFkZGluZy10b3A6IDRweDtcbiAgICAgIH1cbiAgICAgIC5wcm9maWxlLWNhcmRfX25hbWUge1xuICAgICAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIH1cbiAgICAgIC5wcm9maWxlLWNhcmRfX2hhbmRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmssICM5Mjk0OWMpO1xuICAgICAgfVxuICAgICAgLnByb2ZpbGUtY2FyZF9fc3RhdCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmssICM5Mjk0OWMpO1xuICAgICAgfVxuICAgICAgLnByb2ZpbGUtY2FyZF9fc3RhdCBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgfVxuICAgICAgLnByb2ZpbGUtY2FyZF9fbGlua3Mge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDZweDtcbiAgICAgIH1cbiAgICAgIC5wcm9maWxlLWNhcmRfX2xpbmsge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDI4cHg7XG4gICAgICAgIGhlaWdodDogMjhweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC4wNikpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cztcbiAgICAgIH1cbiAgICAgIC5wcm9maWxlLWNhcmRfX2xpbms6aG92ZXIge1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZmlsZUNhcmRDb21wb25lbnQge1xuICByZWFkb25seSBkYXRhID0gaW5wdXQucmVxdWlyZWQ8UHJvZmlsZUNhcmREYXRhPigpO1xuXG4gIHJlYWRvbmx5IGF2YXRhckZhaWxlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcmVhZG9ubHkgc2FmZVdlYnNpdGUgPSBjb21wdXRlZCgoKSA9PiBzYW5pdGl6ZVVybCh0aGlzLmRhdGEoKS5saW5rcz8ud2Vic2l0ZSkpO1xuICByZWFkb25seSBzYWZlSW5zdGFncmFtID0gY29tcHV0ZWQoKCkgPT4gc2FuaXRpemVVcmwodGhpcy5kYXRhKCkubGlua3M/Lmluc3RhZ3JhbSkpO1xuICByZWFkb25seSBzYWZlV2hhdHNhcHAgPSBjb21wdXRlZCgoKSA9PiBzYW5pdGl6ZVVybCh0aGlzLmRhdGEoKS5saW5rcz8ud2hhdHNhcHApKTtcbiAgcmVhZG9ubHkgc2FmZVBob25lID0gY29tcHV0ZWQoKCkgPT4gc2FuaXRpemVVcmwodGhpcy5kYXRhKCkubGlua3M/LnBob25lKSk7XG4gIHJlYWRvbmx5IHNhZmVFbWFpbCA9IGNvbXB1dGVkKCgpID0+IHNhbml0aXplVXJsKHRoaXMuZGF0YSgpLmxpbmtzPy5lbWFpbCkpO1xuXG4gIHJlYWRvbmx5IGhhc0xpbmtzID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gISEodGhpcy5zYWZlV2Vic2l0ZSgpIHx8IHRoaXMuc2FmZUluc3RhZ3JhbSgpIHx8IHRoaXMuc2FmZVdoYXRzYXBwKCkgfHwgdGhpcy5zYWZlUGhvbmUoKSB8fCB0aGlzLnNhZmVFbWFpbCgpKVxuICApO1xufVxuIl19
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcHJvZmlsZS1jYXJkL3Byb2ZpbGUtY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBc0NwRCxTQUFTLFdBQVcsQ0FBQyxHQUE4QjtJQUNqRCxJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3RCLElBQUksQ0FBQztRQUNILE1BQU0sQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNsRixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUErTkgsTUFBTSxPQUFPLG9CQUFvQjtJQTlOakM7UUErTlcsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQW1CLENBQUM7UUFFekMsaUJBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0IsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN0RSxrQkFBYSxHQUFHLFFBQVEsQ0FB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Ozs7OztHQWlHVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9maWxlQ2FyZExpbmtzIHtcbiAgd2Vic2l0ZT86IHN0cmluZyB8IG51bGw7XG4gIGluc3RhZ3JhbT86IHN0cmluZyB8IG51bGw7XG4gIHdoYXRzYXBwPzogc3RyaW5nIHwgbnVsbDtcbiAgcGhvbmU/OiBzdHJpbmcgfCBudWxsO1xuICBlbWFpbD86IHN0cmluZyB8IG51bGw7XG4gIGZhY2Vib29rPzogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9maWxlQ2FyZFN0YXQge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2ZpbGVDYXJkUGxhY2Uge1xuICBjaXR5Pzogc3RyaW5nO1xuICByZWdpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGF0b3MgYWduw7NzdGljb3MgYWwgZG9taW5pbyAoQURSLTA2Mykg4oCUIHNpcnZlIHJlZnVnaW8gKENoZXNlZCksIGNyZWFkb3IgZGVcbiAqIHJlY2V0YXMgKE1lYWxwbGFuKSBvIGN1YWxxdWllciBwdWJsaXNoZXIvZW50aWRhZCBjb24gcGVyZmlsIHDDumJsaWNvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2ZpbGVDYXJkRGF0YSB7XG4gIGF2YXRhclVybD86IHN0cmluZyB8IG51bGw7XG4gIG5hbWU6IHN0cmluZztcbiAgaGFuZGxlPzogc3RyaW5nIHwgbnVsbDtcbiAgdmVyaWZpZWQ/OiBib29sZWFuO1xuICB2ZXJpZmllZExhYmVsPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcGxhY2U/OiBQcm9maWxlQ2FyZFBsYWNlO1xuICBzdGF0PzogUHJvZmlsZUNhcmRTdGF0O1xuICBzdGF0cz86IEFycmF5PFByb2ZpbGVDYXJkU3RhdD47XG4gIGxpbmtzPzogUHJvZmlsZUNhcmRMaW5rcztcbn1cblxuZnVuY3Rpb24gc2FuaXRpemVVcmwodXJsOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmICghdXJsKSByZXR1cm4gbnVsbDtcbiAgdHJ5IHtcbiAgICBjb25zdCB1ID0gbmV3IFVSTCh1cmwpO1xuICAgIHJldHVybiBbJ2h0dHA6JywgJ2h0dHBzOicsICd0ZWw6JywgJ21haWx0bzonXS5pbmNsdWRlcyh1LnByb3RvY29sKSA/IHVybCA6IG51bGw7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogQ2FyZCBkZSBwZXJmaWwgcMO6YmxpY28gKGF2YXRhciArIG5vbWJyZSArIGhhbmRsZSArIGJhZGdlIHZlcmlmaWNhZG8gKyBzdGF0XG4gKiArIGxpbmtzKS4gUHJlc2VudGFjaW9uYWwvZHVtYjogZWwgY29uc3VtZXIgcmVzdWVsdmUgZGF0b3MsIGFjdGlvbnMgeVxuICogcm91dGluZy4gQ29uZmlnIGFnbsOzc3RpY2EgYWwgZG9taW5pbyDigJQgdmVyIGBQcm9maWxlQ2FyZERhdGFgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcHJvZmlsZS1jYXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbkljb25dLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWNhcmRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWNhcmRfX2F2YXRhci13cmFwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWNhcmRfX2F2YXRhclwiPlxuICAgICAgICAgIEBpZiAoZGF0YSgpLmF2YXRhclVybCAmJiAhYXZhdGFyRmFpbGVkKCkpIHtcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJkYXRhKCkuYXZhdGFyVXJsIVwiIFthbHRdPVwiZGF0YSgpLm5hbWVcIiAoZXJyb3IpPVwiYXZhdGFyRmFpbGVkLnNldCh0cnVlKVwiIC8+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICB7eyBkYXRhKCkubmFtZVswXT8udG9VcHBlckNhc2UoKSB9fVxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIEBpZiAoZGF0YSgpLnZlcmlmaWVkKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtY2FyZF9fYmFkZ2VcIiBbYXR0ci50aXRsZV09XCJkYXRhKCkudmVyaWZpZWRMYWJlbFwiPuKckzwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWNhcmRfX3RleHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtY2FyZF9fbmFtZVwiPnt7IGRhdGEoKS5uYW1lIH19PC9kaXY+XG4gICAgICAgIEBpZiAoZGF0YSgpLmhhbmRsZSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWNhcmRfX2hhbmRsZVwiPnt7ICdAJyArIGRhdGEoKS5oYW5kbGUgfX08L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGRhdGEoKS5kZXNjcmlwdGlvbikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWNhcmRfX2Rlc2NyaXB0aW9uXCI+e3sgZGF0YSgpLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChkYXRhKCkucGxhY2UpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1jYXJkX19wbGFjZVwiPlxuICAgICAgICAgICAge3sgZm9ybWF0UGxhY2UoZGF0YSgpLnBsYWNlKSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoc3RhdHNUb1Nob3coKTsgYXMgc3RhdHMpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1jYXJkX19zdGF0c1wiPlxuICAgICAgICAgICAgQGZvciAoc3RhdCBvZiBzdGF0czsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWNhcmRfX3N0YXRcIj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHN0YXQudmFsdWUgfX08L3N0cm9uZ1xuICAgICAgICAgICAgICAgID4mbmJzcDt7eyBzdGF0LmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoaGFzTGlua3MoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWNhcmRfX2xpbmtzXCI+XG4gICAgICAgICAgICBAaWYgKHNhZmVXZWJzaXRlKCkpIHtcbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBjbGFzcz1cInByb2ZpbGUtY2FyZF9fbGlua1wiXG4gICAgICAgICAgICAgICAgW2hyZWZdPVwic2FmZVdlYnNpdGUoKSFcIlxuICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIldlYnNpdGVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJnbG9iZS1vdXRsaW5lXCIgLz5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzYWZlSW5zdGFncmFtKCkpIHtcbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBjbGFzcz1cInByb2ZpbGUtY2FyZF9fbGlua1wiXG4gICAgICAgICAgICAgICAgW2hyZWZdPVwic2FmZUluc3RhZ3JhbSgpIVwiXG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiSW5zdGFncmFtXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibG9nby1pbnN0YWdyYW1cIiAvPlxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHNhZmVXaGF0c2FwcCgpKSB7XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9maWxlLWNhcmRfX2xpbmtcIlxuICAgICAgICAgICAgICAgIFtocmVmXT1cInNhZmVXaGF0c2FwcCgpIVwiXG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiV2hhdHNBcHBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJsb2dvLXdoYXRzYXBwXCIgLz5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzYWZlUGhvbmUoKSkge1xuICAgICAgICAgICAgICA8YSBjbGFzcz1cInByb2ZpbGUtY2FyZF9fbGlua1wiIFtocmVmXT1cInNhZmVQaG9uZSgpIVwiIGFyaWEtbGFiZWw9XCJQaG9uZVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2FsbC1vdXRsaW5lXCIgLz5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzYWZlRW1haWwoKSkge1xuICAgICAgICAgICAgICA8YSBjbGFzcz1cInByb2ZpbGUtY2FyZF9fbGlua1wiIFtocmVmXT1cInNhZmVFbWFpbCgpIVwiIGFyaWEtbGFiZWw9XCJFbWFpbFwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibWFpbC1vdXRsaW5lXCIgLz5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzYWZlRmFjZWJvb2soKSkge1xuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZmlsZS1jYXJkX19saW5rXCJcbiAgICAgICAgICAgICAgICBbaHJlZl09XCJzYWZlRmFjZWJvb2soKSFcIlxuICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkZhY2Vib29rXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibG9nby1mYWNlYm9va1wiIC8+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5wcm9maWxlLWNhcmQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgZ2FwOiAxNHB4O1xuICAgICAgfVxuICAgICAgLnByb2ZpbGUtY2FyZF9fYXZhdGFyLXdyYXAge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfVxuICAgICAgLnByb2ZpbGUtY2FyZF9fYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDY0cHg7XG4gICAgICAgIGhlaWdodDogNjRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzMxMzEzMSk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDEuNjI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjVweDtcbiAgICAgIH1cbiAgICAgIC5wcm9maWxlLWNhcmRfX2F2YXRhciBpbWcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgfVxuICAgICAgLnByb2ZpbGUtY2FyZF9fYmFkZ2Uge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogLTRweDtcbiAgICAgICAgcmlnaHQ6IC00cHg7XG4gICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnksICNmZmY2MDApO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDAuNjI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZik7XG4gICAgICB9XG4gICAgICAucHJvZmlsZS1jYXJkX190ZXh0IHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDNweDtcbiAgICAgICAgcGFkZGluZy10b3A6IDRweDtcbiAgICAgIH1cbiAgICAgIC5wcm9maWxlLWNhcmRfX25hbWUge1xuICAgICAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIH1cbiAgICAgIC5wcm9maWxlLWNhcmRfX2hhbmRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmssICM5Mjk0OWMpO1xuICAgICAgfVxuICAgICAgLnByb2ZpbGUtY2FyZF9fZGVzY3JpcHRpb24ge1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmssICM5Mjk0OWMpO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40O1xuICAgICAgICBtYXJnaW4tdG9wOiA2cHg7XG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgfVxuICAgICAgLnByb2ZpbGUtY2FyZF9fcGxhY2Uge1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzkyOTQ5Yyk7XG4gICAgICAgIG1hcmdpbi10b3A6IDNweDtcbiAgICAgIH1cbiAgICAgIC5wcm9maWxlLWNhcmRfX3N0YXRzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiA2cHg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIH1cbiAgICAgIC5wcm9maWxlLWNhcmRfX3N0YXQge1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzkyOTQ5Yyk7XG4gICAgICB9XG4gICAgICAucHJvZmlsZS1jYXJkX19zdGF0IHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzAwMCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICB9XG4gICAgICAucHJvZmlsZS1jYXJkX19saW5rcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgbWFyZ2luLXRvcDogNnB4O1xuICAgICAgfVxuICAgICAgLnByb2ZpbGUtY2FyZF9fbGluayB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjA2KSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzAwMCk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzO1xuICAgICAgfVxuICAgICAgLnByb2ZpbGUtY2FyZF9fbGluazpob3ZlciB7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9maWxlQ2FyZENvbXBvbmVudCB7XG4gIHJlYWRvbmx5IGRhdGEgPSBpbnB1dC5yZXF1aXJlZDxQcm9maWxlQ2FyZERhdGE+KCk7XG5cbiAgcmVhZG9ubHkgYXZhdGFyRmFpbGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICByZWFkb25seSBzYWZlV2Vic2l0ZSA9IGNvbXB1dGVkKCgpID0+IHNhbml0aXplVXJsKHRoaXMuZGF0YSgpLmxpbmtzPy53ZWJzaXRlKSk7XG4gIHJlYWRvbmx5IHNhZmVJbnN0YWdyYW0gPSBjb21wdXRlZCgoKSA9PiBzYW5pdGl6ZVVybCh0aGlzLmRhdGEoKS5saW5rcz8uaW5zdGFncmFtKSk7XG4gIHJlYWRvbmx5IHNhZmVXaGF0c2FwcCA9IGNvbXB1dGVkKCgpID0+IHNhbml0aXplVXJsKHRoaXMuZGF0YSgpLmxpbmtzPy53aGF0c2FwcCkpO1xuICByZWFkb25seSBzYWZlUGhvbmUgPSBjb21wdXRlZCgoKSA9PiBzYW5pdGl6ZVVybCh0aGlzLmRhdGEoKS5saW5rcz8ucGhvbmUpKTtcbiAgcmVhZG9ubHkgc2FmZUVtYWlsID0gY29tcHV0ZWQoKCkgPT4gc2FuaXRpemVVcmwodGhpcy5kYXRhKCkubGlua3M/LmVtYWlsKSk7XG4gIHJlYWRvbmx5IHNhZmVGYWNlYm9vayA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZmFjZWJvb2tVcmwodGhpcy5kYXRhKCkubGlua3M/LmZhY2Vib29rKSk7XG5cbiAgcmVhZG9ubHkgaGFzTGlua3MgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgISEoXG4gICAgICAgIHRoaXMuc2FmZVdlYnNpdGUoKSB8fFxuICAgICAgICB0aGlzLnNhZmVJbnN0YWdyYW0oKSB8fFxuICAgICAgICB0aGlzLnNhZmVXaGF0c2FwcCgpIHx8XG4gICAgICAgIHRoaXMuc2FmZVBob25lKCkgfHxcbiAgICAgICAgdGhpcy5zYWZlRW1haWwoKSB8fFxuICAgICAgICB0aGlzLnNhZmVGYWNlYm9vaygpXG4gICAgICApXG4gICk7XG5cbiAgcmVhZG9ubHkgc3RhdHNUb1Nob3cgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLmRhdGEoKS5zdGF0cztcbiAgICBpZiAoc3RhdHMpIHJldHVybiBzdGF0cztcbiAgICBjb25zdCBzdGF0ID0gdGhpcy5kYXRhKCkuc3RhdDtcbiAgICByZXR1cm4gc3RhdCA/IFtzdGF0XSA6IG51bGw7XG4gIH0pO1xuXG4gIHByaXZhdGUgZmFjZWJvb2tVcmwoaGFuZGxlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCFoYW5kbGUpIHJldHVybiBudWxsO1xuICAgIGlmIChoYW5kbGUuc3RhcnRzV2l0aCgnaHR0cCcpKSByZXR1cm4gc2FuaXRpemVVcmwoaGFuZGxlKTtcbiAgICByZXR1cm4gc2FuaXRpemVVcmwoYGh0dHBzOi8vZmFjZWJvb2suY29tLyR7aGFuZGxlfWApO1xuICB9XG5cbiAgZm9ybWF0UGxhY2UocGxhY2U6IFByb2ZpbGVDYXJkUGxhY2UpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgaWYgKHBsYWNlLmNpdHkpIHBhcnRzLnB1c2gocGxhY2UuY2l0eSk7XG4gICAgaWYgKHBsYWNlLnJlZ2lvbikgcGFydHMucHVzaChwbGFjZS5yZWdpb24pO1xuICAgIHJldHVybiBwYXJ0cy5qb2luKCcsICcpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3ZpZGVvLXVwbG9hZC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb250cmF0byBkZSBzdWJpZGEgZGlyZWN0YSBhIFMzIHbDrWEgUE9TVCBwcmVzaWduYWRvIChBRFItMDg3KS4gRWwgY29uc3VtZXJcbiAqIG51bmNhIGFybWEgZXN0ZSBvYmpldG8gYSBtYW5vIOKAlCBsbyByZWNpYmUgdGFsIGN1YWwgZGVsIGJhY2tlbmRcbiAqIChgUmVxdWVzdFZpZGVvVXBsb2FkUmVzcG9uc2VgKSB5IHNlIGxvIHBhc2EgYSBgVmlkZW9VcGxvYWRTZXJ2aWNlLnVwbG9hZCgpYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM1Bvc3RVcGxvYWRJbnRlbnQge1xuICB1cGxvYWRVcmw6IHN0cmluZztcbiAgdXBsb2FkRmllbGRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vKipcbiAqIExvcyBkb3MgcGFzb3MgcXVlIFPDjSBkZXBlbmRlbiBkZWwgZG9taW5pbyAocmVjZXRhLCBjb250ZW5pZG8sIGFuaW1hbCBlblxuICogYWRvcGNpw7NuLi4uKSB5IHF1ZSBsYSBsaWIgbm8gcHVlZGUgY29ub2NlcjogY8OzbW8gcGVkaXIgZWwgaW50ZW50IGRlIHN1YmlkYVxuICogeSBjw7NtbyBhdmlzYXIgcXVlIHRlcm1pbsOzLiBUb2RvIGxvIGRlbcOhcyAoYXJtYXIgZWwgRm9ybURhdGEsIGVsIFBPU1QgYSBTMyxcbiAqIGVsIG9yZGVuIGludGVudOKGklMz4oaSZmluYWxpemUpIGxvIHJlc3VlbHZlIGBWaWRlb1VwbG9hZFNlcnZpY2VgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvVXBsb2FkSGFuZGxlcnMge1xuICByZXF1ZXN0SW50ZW50OiAoZmlsZTogRmlsZSkgPT4gUHJvbWlzZTxTM1Bvc3RVcGxvYWRJbnRlbnQ+O1xuICBmaW5hbGl6ZTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IHR5cGUgVmlkZW9VcGxvYWRTdGF0dXMgPSAndXBsb2FkaW5nJyB8ICdwcm9jZXNzaW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBWaWRlb1VwbG9hZFByb2dyZXNzIHtcbiAgc3RhdHVzOiBWaWRlb1VwbG9hZFN0YXR1cztcbn1cbiJdfQ==
@@ -0,0 +1,101 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Subida directa a S3 vía POST presignado (ADR-087, "el video no puede pasar
6
+ * por la API" — API Gateway tiene un tope duro de ~10MB de payload y un
7
+ * timeout de integración de 29s, ninguno de los dos configurable). El
8
+ * archivo nunca toca nuestro backend.
9
+ *
10
+ * Antes de este servicio, `uploadVideoToS3` vivía copiado literal en cada app
11
+ * consumidora (Eklesee, Okhelia) — mismo texto, mismo comentario, mismo
12
+ * riesgo de que un fix quede aplicado en una sola copia. Este servicio es al
13
+ * video lo que `StorageService` es a Firebase Storage: la app nunca ve el
14
+ * bucket, nunca arma un `FormData`, nunca sabe que el proveedor es S3.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * private videoUpload = inject(VideoUploadService);
19
+ *
20
+ * onFileSelected(file: File) {
21
+ * this.videoUpload.upload(file, {
22
+ * requestIntent: (f) => firstValueFrom(this.recipeSvc.requestVideoUpload(recipeId, {
23
+ * filename: f.name, contentType: f.type || 'video/mp4', sizeBytes: f.size,
24
+ * })),
25
+ * finalize: () => firstValueFrom(this.recipeSvc.finalizeVideoUpload(recipeId)),
26
+ * }).subscribe({
27
+ * next: (progress) => this.state.set(progress.status),
28
+ * error: (err) => this.errors.handle(err, { context: 'my-page.uploadVideo', ... }),
29
+ * complete: () => this.state.set('done'),
30
+ * });
31
+ * }
32
+ * ```
33
+ */
34
+ export class VideoUploadService {
35
+ /**
36
+ * Orquesta el flujo completo: pide el intent al backend del dominio, sube
37
+ * el archivo a S3, y avisa que terminó. Emite el progreso en dos pasos
38
+ * (`uploading` mientras sube a S3, `processing` mientras el backend hace
39
+ * `finalize`) y completa cuando el backend confirma — el estado real del
40
+ * video (`ready`/`failed`) sigue siendo async del lado del backend
41
+ * (EventBridge → worker), esto solo cubre la subida.
42
+ */
43
+ upload(file, handlers) {
44
+ return new Observable(subscriber => {
45
+ let cancelled = false;
46
+ (async () => {
47
+ try {
48
+ subscriber.next({ status: 'uploading' });
49
+ const intent = await handlers.requestIntent(file);
50
+ if (cancelled)
51
+ return;
52
+ await this.postToS3(intent, file);
53
+ if (cancelled)
54
+ return;
55
+ subscriber.next({ status: 'processing' });
56
+ await handlers.finalize();
57
+ if (cancelled)
58
+ return;
59
+ subscriber.complete();
60
+ }
61
+ catch (error) {
62
+ if (!cancelled)
63
+ subscriber.error(error);
64
+ }
65
+ })();
66
+ return () => {
67
+ cancelled = true;
68
+ };
69
+ });
70
+ }
71
+ /**
72
+ * Arma el `FormData` de la subida POST de S3 y lo envía. **Orden del
73
+ * FormData**: los campos de la policy PRIMERO, el archivo AL FINAL — es un
74
+ * requisito del form-based upload de S3 (RFC de multipart/form-data + cómo
75
+ * S3 procesa la policy), no un detalle de estilo.
76
+ *
77
+ * Usa `fetch()` nativo A PROPÓSITO, nunca `HttpClient`: el interceptor de
78
+ * `provideValtechAuth` agrega `Authorization: Bearer <token>` a cualquier
79
+ * request que pase por él, y no corresponde que ese token viaje a un
80
+ * dominio de S3 que no es nuestro backend.
81
+ * @internal
82
+ */
83
+ async postToS3(intent, file) {
84
+ const form = new FormData();
85
+ for (const [key, value] of Object.entries(intent.uploadFields)) {
86
+ form.append(key, value);
87
+ }
88
+ form.append('file', file);
89
+ const res = await fetch(intent.uploadUrl, { method: 'POST', body: form });
90
+ if (!res.ok) {
91
+ throw new Error(`S3 upload respondió ${res.status}`);
92
+ }
93
+ }
94
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VideoUploadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
95
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VideoUploadService, providedIn: 'root' }); }
96
+ }
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VideoUploadService, decorators: [{
98
+ type: Injectable,
99
+ args: [{ providedIn: 'root' }]
100
+ }] });
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8tdXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3ZpZGVvLXVwbG9hZC92aWRlby11cGxvYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSWxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUFDN0I7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxJQUFVLEVBQUUsUUFBNkI7UUFDOUMsT0FBTyxJQUFJLFVBQVUsQ0FBc0IsVUFBVSxDQUFDLEVBQUU7WUFDdEQsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDO29CQUNILFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztvQkFDekMsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNsRCxJQUFJLFNBQVM7d0JBQUUsT0FBTztvQkFDdEIsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDbEMsSUFBSSxTQUFTO3dCQUFFLE9BQU87b0JBQ3RCLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztvQkFDMUMsTUFBTSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQzFCLElBQUksU0FBUzt3QkFBRSxPQUFPO29CQUN0QixVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3hCLENBQUM7Z0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztvQkFDZixJQUFJLENBQUMsU0FBUzt3QkFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMxQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNMLE9BQU8sR0FBRyxFQUFFO2dCQUNWLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDbkIsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQTBCLEVBQUUsSUFBVTtRQUMzRCxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzVCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQy9ELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUxQixNQUFNLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7K0dBeERVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBREwsTUFBTTs7NEZBQ25CLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFMzUG9zdFVwbG9hZEludGVudCwgVmlkZW9VcGxvYWRIYW5kbGVycywgVmlkZW9VcGxvYWRQcm9ncmVzcyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFN1YmlkYSBkaXJlY3RhIGEgUzMgdsOtYSBQT1NUIHByZXNpZ25hZG8gKEFEUi0wODcsIFwiZWwgdmlkZW8gbm8gcHVlZGUgcGFzYXJcbiAqIHBvciBsYSBBUElcIiDigJQgQVBJIEdhdGV3YXkgdGllbmUgdW4gdG9wZSBkdXJvIGRlIH4xME1CIGRlIHBheWxvYWQgeSB1blxuICogdGltZW91dCBkZSBpbnRlZ3JhY2nDs24gZGUgMjlzLCBuaW5ndW5vIGRlIGxvcyBkb3MgY29uZmlndXJhYmxlKS4gRWxcbiAqIGFyY2hpdm8gbnVuY2EgdG9jYSBudWVzdHJvIGJhY2tlbmQuXG4gKlxuICogQW50ZXMgZGUgZXN0ZSBzZXJ2aWNpbywgYHVwbG9hZFZpZGVvVG9TM2Agdml2w61hIGNvcGlhZG8gbGl0ZXJhbCBlbiBjYWRhIGFwcFxuICogY29uc3VtaWRvcmEgKEVrbGVzZWUsIE9raGVsaWEpIOKAlCBtaXNtbyB0ZXh0bywgbWlzbW8gY29tZW50YXJpbywgbWlzbW9cbiAqIHJpZXNnbyBkZSBxdWUgdW4gZml4IHF1ZWRlIGFwbGljYWRvIGVuIHVuYSBzb2xhIGNvcGlhLiBFc3RlIHNlcnZpY2lvIGVzIGFsXG4gKiB2aWRlbyBsbyBxdWUgYFN0b3JhZ2VTZXJ2aWNlYCBlcyBhIEZpcmViYXNlIFN0b3JhZ2U6IGxhIGFwcCBudW5jYSB2ZSBlbFxuICogYnVja2V0LCBudW5jYSBhcm1hIHVuIGBGb3JtRGF0YWAsIG51bmNhIHNhYmUgcXVlIGVsIHByb3ZlZWRvciBlcyBTMy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogcHJpdmF0ZSB2aWRlb1VwbG9hZCA9IGluamVjdChWaWRlb1VwbG9hZFNlcnZpY2UpO1xuICpcbiAqIG9uRmlsZVNlbGVjdGVkKGZpbGU6IEZpbGUpIHtcbiAqICAgdGhpcy52aWRlb1VwbG9hZC51cGxvYWQoZmlsZSwge1xuICogICAgIHJlcXVlc3RJbnRlbnQ6IChmKSA9PiBmaXJzdFZhbHVlRnJvbSh0aGlzLnJlY2lwZVN2Yy5yZXF1ZXN0VmlkZW9VcGxvYWQocmVjaXBlSWQsIHtcbiAqICAgICAgIGZpbGVuYW1lOiBmLm5hbWUsIGNvbnRlbnRUeXBlOiBmLnR5cGUgfHwgJ3ZpZGVvL21wNCcsIHNpemVCeXRlczogZi5zaXplLFxuICogICAgIH0pKSxcbiAqICAgICBmaW5hbGl6ZTogKCkgPT4gZmlyc3RWYWx1ZUZyb20odGhpcy5yZWNpcGVTdmMuZmluYWxpemVWaWRlb1VwbG9hZChyZWNpcGVJZCkpLFxuICogICB9KS5zdWJzY3JpYmUoe1xuICogICAgIG5leHQ6IChwcm9ncmVzcykgPT4gdGhpcy5zdGF0ZS5zZXQocHJvZ3Jlc3Muc3RhdHVzKSxcbiAqICAgICBlcnJvcjogKGVycikgPT4gdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwgeyBjb250ZXh0OiAnbXktcGFnZS51cGxvYWRWaWRlbycsIC4uLiB9KSxcbiAqICAgICBjb21wbGV0ZTogKCkgPT4gdGhpcy5zdGF0ZS5zZXQoJ2RvbmUnKSxcbiAqICAgfSk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBWaWRlb1VwbG9hZFNlcnZpY2Uge1xuICAvKipcbiAgICogT3JxdWVzdGEgZWwgZmx1am8gY29tcGxldG86IHBpZGUgZWwgaW50ZW50IGFsIGJhY2tlbmQgZGVsIGRvbWluaW8sIHN1YmVcbiAgICogZWwgYXJjaGl2byBhIFMzLCB5IGF2aXNhIHF1ZSB0ZXJtaW7Dsy4gRW1pdGUgZWwgcHJvZ3Jlc28gZW4gZG9zIHBhc29zXG4gICAqIChgdXBsb2FkaW5nYCBtaWVudHJhcyBzdWJlIGEgUzMsIGBwcm9jZXNzaW5nYCBtaWVudHJhcyBlbCBiYWNrZW5kIGhhY2VcbiAgICogYGZpbmFsaXplYCkgeSBjb21wbGV0YSBjdWFuZG8gZWwgYmFja2VuZCBjb25maXJtYSDigJQgZWwgZXN0YWRvIHJlYWwgZGVsXG4gICAqIHZpZGVvIChgcmVhZHlgL2BmYWlsZWRgKSBzaWd1ZSBzaWVuZG8gYXN5bmMgZGVsIGxhZG8gZGVsIGJhY2tlbmRcbiAgICogKEV2ZW50QnJpZGdlIOKGkiB3b3JrZXIpLCBlc3RvIHNvbG8gY3VicmUgbGEgc3ViaWRhLlxuICAgKi9cbiAgdXBsb2FkKGZpbGU6IEZpbGUsIGhhbmRsZXJzOiBWaWRlb1VwbG9hZEhhbmRsZXJzKTogT2JzZXJ2YWJsZTxWaWRlb1VwbG9hZFByb2dyZXNzPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFZpZGVvVXBsb2FkUHJvZ3Jlc3M+KHN1YnNjcmliZXIgPT4ge1xuICAgICAgbGV0IGNhbmNlbGxlZCA9IGZhbHNlO1xuICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoeyBzdGF0dXM6ICd1cGxvYWRpbmcnIH0pO1xuICAgICAgICAgIGNvbnN0IGludGVudCA9IGF3YWl0IGhhbmRsZXJzLnJlcXVlc3RJbnRlbnQoZmlsZSk7XG4gICAgICAgICAgaWYgKGNhbmNlbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGF3YWl0IHRoaXMucG9zdFRvUzMoaW50ZW50LCBmaWxlKTtcbiAgICAgICAgICBpZiAoY2FuY2VsbGVkKSByZXR1cm47XG4gICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHsgc3RhdHVzOiAncHJvY2Vzc2luZycgfSk7XG4gICAgICAgICAgYXdhaXQgaGFuZGxlcnMuZmluYWxpemUoKTtcbiAgICAgICAgICBpZiAoY2FuY2VsbGVkKSByZXR1cm47XG4gICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGlmICghY2FuY2VsbGVkKSBzdWJzY3JpYmVyLmVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSkoKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNhbmNlbGxlZCA9IHRydWU7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFybWEgZWwgYEZvcm1EYXRhYCBkZSBsYSBzdWJpZGEgUE9TVCBkZSBTMyB5IGxvIGVudsOtYS4gKipPcmRlbiBkZWxcbiAgICogRm9ybURhdGEqKjogbG9zIGNhbXBvcyBkZSBsYSBwb2xpY3kgUFJJTUVSTywgZWwgYXJjaGl2byBBTCBGSU5BTCDigJQgZXMgdW5cbiAgICogcmVxdWlzaXRvIGRlbCBmb3JtLWJhc2VkIHVwbG9hZCBkZSBTMyAoUkZDIGRlIG11bHRpcGFydC9mb3JtLWRhdGEgKyBjw7Ntb1xuICAgKiBTMyBwcm9jZXNhIGxhIHBvbGljeSksIG5vIHVuIGRldGFsbGUgZGUgZXN0aWxvLlxuICAgKlxuICAgKiBVc2EgYGZldGNoKClgIG5hdGl2byBBIFBST1DDk1NJVE8sIG51bmNhIGBIdHRwQ2xpZW50YDogZWwgaW50ZXJjZXB0b3IgZGVcbiAgICogYHByb3ZpZGVWYWx0ZWNoQXV0aGAgYWdyZWdhIGBBdXRob3JpemF0aW9uOiBCZWFyZXIgPHRva2VuPmAgYSBjdWFscXVpZXJcbiAgICogcmVxdWVzdCBxdWUgcGFzZSBwb3Igw6lsLCB5IG5vIGNvcnJlc3BvbmRlIHF1ZSBlc2UgdG9rZW4gdmlhamUgYSB1blxuICAgKiBkb21pbmlvIGRlIFMzIHF1ZSBubyBlcyBudWVzdHJvIGJhY2tlbmQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwb3N0VG9TMyhpbnRlbnQ6IFMzUG9zdFVwbG9hZEludGVudCwgZmlsZTogRmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZvcm0gPSBuZXcgRm9ybURhdGEoKTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhpbnRlbnQudXBsb2FkRmllbGRzKSkge1xuICAgICAgZm9ybS5hcHBlbmQoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICAgIGZvcm0uYXBwZW5kKCdmaWxlJywgZmlsZSk7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChpbnRlbnQudXBsb2FkVXJsLCB7IG1ldGhvZDogJ1BPU1QnLCBib2R5OiBmb3JtIH0pO1xuICAgIGlmICghcmVzLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFMzIHVwbG9hZCByZXNwb25kacOzICR7cmVzLnN0YXR1c31gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '4.0.976';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC45NzYnO1xuIl19
5
+ export const VERSION = '4.0.978';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC45NzgnO1xuIl19