valtech-components 2.0.1035 → 4.0.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.
Files changed (80) hide show
  1. package/esm2022/lib/components/atoms/box/box.component.mjs +6 -8
  2. package/esm2022/lib/components/atoms/button/factory.mjs +24 -217
  3. package/esm2022/lib/components/atoms/divider/divider.component.mjs +2 -4
  4. package/esm2022/lib/components/atoms/href/href.component.mjs +1 -2
  5. package/esm2022/lib/components/atoms/image/image.component.mjs +36 -3
  6. package/esm2022/lib/components/molecules/action-card/action-card.component.mjs +4 -9
  7. package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +4 -4
  8. package/esm2022/lib/components/molecules/card/card.component.mjs +53 -10
  9. package/esm2022/lib/components/molecules/checkbox-radio-input/checkbox-radio-input.component.mjs +27 -36
  10. package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +44 -6
  11. package/esm2022/lib/components/molecules/command-display/command-display.component.mjs +32 -7
  12. package/esm2022/lib/components/molecules/comment/comment.component.mjs +28 -12
  13. package/esm2022/lib/components/molecules/cta-card/cta-card.component.mjs +4 -9
  14. package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +7 -7
  15. package/esm2022/lib/components/molecules/features-list/features-list.component.mjs +159 -71
  16. package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +7 -3
  17. package/esm2022/lib/components/molecules/hint/hint.component.mjs +30 -5
  18. package/esm2022/lib/components/molecules/pagination/pagination.component.mjs +75 -19
  19. package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +42 -9
  20. package/esm2022/lib/components/molecules/permission-selector/types.mjs +1 -1
  21. package/esm2022/lib/components/molecules/rating/rating.component.mjs +88 -12
  22. package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +15 -7
  23. package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +93 -7
  24. package/esm2022/lib/components/organisms/change-email-modal/change-email-modal.component.mjs +5 -5
  25. package/esm2022/lib/components/organisms/change-password-modal/change-password-modal.component.mjs +4 -4
  26. package/esm2022/lib/components/organisms/form/form.component.mjs +62 -20
  27. package/esm2022/lib/components/organisms/login/login.component.mjs +8 -8
  28. package/esm2022/lib/components/organisms/mfa-modal/mfa-modal.component.mjs +3 -3
  29. package/esm2022/lib/components/types.mjs +1 -1
  30. package/esm2022/lib/services/presets/default-presets.mjs +45 -0
  31. package/esm2022/lib/services/presets/index.mjs +3 -1
  32. package/esm2022/lib/services/presets/preset.service.mjs +17 -4
  33. package/esm2022/lib/services/requests/request-form-builder.service.mjs +8 -3
  34. package/esm2022/lib/shared/utils/ionic-color.mjs +36 -0
  35. package/esm2022/lib/version.mjs +2 -2
  36. package/esm2022/public-api.mjs +2 -8
  37. package/fesm2022/valtech-components.mjs +1138 -1022
  38. package/fesm2022/valtech-components.mjs.map +1 -1
  39. package/lib/components/atoms/box/box.component.d.ts +2 -5
  40. package/lib/components/atoms/button/factory.d.ts +15 -69
  41. package/lib/components/atoms/divider/divider.component.d.ts +1 -4
  42. package/lib/components/atoms/href/href.component.d.ts +2 -3
  43. package/lib/components/atoms/image/image.component.d.ts +5 -0
  44. package/lib/components/molecules/action-card/action-card.component.d.ts +1 -1
  45. package/lib/components/molecules/card/card.component.d.ts +2 -1
  46. package/lib/components/molecules/checkbox-radio-input/checkbox-radio-input.component.d.ts +2 -3
  47. package/lib/components/molecules/chip-group/chip-group.component.d.ts +5 -0
  48. package/lib/components/molecules/command-display/command-display.component.d.ts +4 -0
  49. package/lib/components/molecules/comment/comment.component.d.ts +3 -0
  50. package/lib/components/molecules/cta-card/cta-card.component.d.ts +0 -1
  51. package/lib/components/molecules/hint/hint.component.d.ts +11 -1
  52. package/lib/components/molecules/pagination/pagination.component.d.ts +5 -0
  53. package/lib/components/molecules/password-input/password-input.component.d.ts +4 -2
  54. package/lib/components/molecules/permission-selector/types.d.ts +1 -0
  55. package/lib/components/molecules/rating/rating.component.d.ts +11 -0
  56. package/lib/components/molecules/text-input/text-input.component.d.ts +21 -0
  57. package/lib/components/organisms/form/form.component.d.ts +19 -0
  58. package/lib/components/types.d.ts +21 -1
  59. package/lib/services/presets/default-presets.d.ts +22 -0
  60. package/lib/services/presets/index.d.ts +1 -0
  61. package/lib/services/presets/preset.service.d.ts +4 -0
  62. package/lib/shared/utils/ionic-color.d.ts +20 -0
  63. package/lib/version.d.ts +1 -1
  64. package/package.json +1 -1
  65. package/public-api.d.ts +1 -7
  66. package/src/lib/components/styles/mixins.scss +16 -0
  67. package/esm2022/lib/components/molecules/content-card/content-card.component.mjs +0 -86
  68. package/esm2022/lib/components/molecules/content-card/types.mjs +0 -11
  69. package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +0 -68
  70. package/esm2022/lib/components/molecules/hour-input/hour-input.component.mjs +0 -28
  71. package/esm2022/lib/components/molecules/info-card/info-card.component.mjs +0 -126
  72. package/esm2022/lib/components/molecules/info-card/types.mjs +0 -11
  73. package/esm2022/lib/components/molecules/number-input/number-input.component.mjs +0 -34
  74. package/lib/components/molecules/content-card/content-card.component.d.ts +0 -26
  75. package/lib/components/molecules/content-card/types.d.ts +0 -30
  76. package/lib/components/molecules/email-input/email-input.component.d.ts +0 -34
  77. package/lib/components/molecules/hour-input/hour-input.component.d.ts +0 -15
  78. package/lib/components/molecules/info-card/info-card.component.d.ts +0 -37
  79. package/lib/components/molecules/info-card/types.d.ts +0 -44
  80. package/lib/components/molecules/number-input/number-input.component.d.ts +0 -16
@@ -132,42 +132,86 @@ export class FeaturesListComponent {
132
132
  [class.features-list--center]="config().alignment === 'center'"
133
133
  >
134
134
  @for (feature of visibleFeatures(); track feature.titleKey) {
135
- <div class="feature" [class.feature--clickable]="feature.token != null" (click)="onItem(feature)">
136
- <div
137
- class="feature__icon"
138
- [style.color]="iconColorStyle()"
139
- [style.width.px]="config().iconSize"
140
- [style.height.px]="config().iconSize"
135
+ @if (feature.token != null) {
136
+ <button
137
+ type="button"
138
+ class="feature feature--clickable"
139
+ [attr.aria-label]="getTitle(feature)"
140
+ (click)="onItem(feature)"
141
141
  >
142
- @if (feature.image) {
143
- <img
144
- class="feature__image"
145
- [class.feature__image--circle]="config().imageShape === 'circle'"
146
- [src]="feature.image"
147
- [alt]="getTitle(feature)"
148
- />
149
- } @else if (feature.icon === 'custom' && feature.svgPath) {
150
- <svg
151
- [attr.width]="config().iconSize"
152
- [attr.height]="config().iconSize"
153
- viewBox="0 0 24 24"
154
- fill="none"
155
- stroke="currentColor"
156
- stroke-width="1.5"
157
- stroke-linecap="round"
158
- stroke-linejoin="round"
159
- >
160
- <path [attr.d]="feature.svgPath" />
161
- </svg>
162
- } @else if (feature.icon) {
163
- <ion-icon [name]="feature.icon" [style.font-size.px]="config().iconSize"></ion-icon>
164
- }
165
- </div>
166
- <div class="feature__content">
167
- <strong class="feature__title">{{ getTitle(feature) }}</strong>
168
- <p class="feature__description">{{ getDescription(feature) }}</p>
142
+ <div
143
+ class="feature__icon"
144
+ [style.color]="iconColorStyle()"
145
+ [style.width.px]="config().iconSize"
146
+ [style.height.px]="config().iconSize"
147
+ >
148
+ @if (feature.image) {
149
+ <img
150
+ class="feature__image"
151
+ [class.feature__image--circle]="config().imageShape === 'circle'"
152
+ [src]="feature.image"
153
+ [alt]="getTitle(feature)"
154
+ />
155
+ } @else if (feature.icon === 'custom' && feature.svgPath) {
156
+ <svg
157
+ [attr.width]="config().iconSize"
158
+ [attr.height]="config().iconSize"
159
+ viewBox="0 0 24 24"
160
+ fill="none"
161
+ stroke="currentColor"
162
+ stroke-width="1.5"
163
+ stroke-linecap="round"
164
+ stroke-linejoin="round"
165
+ >
166
+ <path [attr.d]="feature.svgPath" />
167
+ </svg>
168
+ } @else if (feature.icon) {
169
+ <ion-icon [name]="feature.icon" [style.font-size.px]="config().iconSize"></ion-icon>
170
+ }
171
+ </div>
172
+ <div class="feature__content">
173
+ <strong class="feature__title">{{ getTitle(feature) }}</strong>
174
+ <p class="feature__description">{{ getDescription(feature) }}</p>
175
+ </div>
176
+ </button>
177
+ } @else {
178
+ <div class="feature">
179
+ <div
180
+ class="feature__icon"
181
+ [style.color]="iconColorStyle()"
182
+ [style.width.px]="config().iconSize"
183
+ [style.height.px]="config().iconSize"
184
+ >
185
+ @if (feature.image) {
186
+ <img
187
+ class="feature__image"
188
+ [class.feature__image--circle]="config().imageShape === 'circle'"
189
+ [src]="feature.image"
190
+ [alt]="getTitle(feature)"
191
+ />
192
+ } @else if (feature.icon === 'custom' && feature.svgPath) {
193
+ <svg
194
+ [attr.width]="config().iconSize"
195
+ [attr.height]="config().iconSize"
196
+ viewBox="0 0 24 24"
197
+ fill="none"
198
+ stroke="currentColor"
199
+ stroke-width="1.5"
200
+ stroke-linecap="round"
201
+ stroke-linejoin="round"
202
+ >
203
+ <path [attr.d]="feature.svgPath" />
204
+ </svg>
205
+ } @else if (feature.icon) {
206
+ <ion-icon [name]="feature.icon" [style.font-size.px]="config().iconSize"></ion-icon>
207
+ }
208
+ </div>
209
+ <div class="feature__content">
210
+ <strong class="feature__title">{{ getTitle(feature) }}</strong>
211
+ <p class="feature__description">{{ getDescription(feature) }}</p>
212
+ </div>
169
213
  </div>
170
- </div>
214
+ }
171
215
  }
172
216
 
173
217
  @if (canCollapse()) {
@@ -182,7 +226,7 @@ export class FeaturesListComponent {
182
226
  </a>
183
227
  }
184
228
  </div>
185
- `, isInline: true, styles: [":host{display:block}.features-list{display:flex}.features-list--vertical{flex-direction:column}.features-list--horizontal{flex-direction:row;flex-wrap:wrap}.features-list--horizontal .feature{flex:1;min-width:200px}.features-list--gap-small{gap:1rem}.features-list--gap-medium{gap:1.5rem}.features-list--gap-large{gap:2rem}.features-list--center{align-items:center;text-align:center}.features-list--center .feature{flex-direction:column;align-items:center}.features-list--center .feature__content{text-align:center}.feature{display:flex;align-items:flex-start;gap:1rem}.feature--clickable{cursor:pointer;border-radius:10px;transition:background-color .15s ease}.feature--clickable:hover{background:var(--ion-color-light, rgba(0, 0, 0, .03))}.feature__icon{flex-shrink:0;display:flex;align-items:center;justify-content:center}.feature__image{width:100%;height:100%;object-fit:contain;border-radius:8px}.feature__image--circle{object-fit:cover;border-radius:50%}.feature__content{flex:1}.feature__title{display:block;font-size:1.1rem;font-weight:600;color:var(--ion-text-color);margin-bottom:.25rem}.feature__description{margin:0;font-size:.95rem;color:var(--ion-color-medium);line-height:1.5}.features-list__more{align-self:flex-start;margin-top:.25rem;padding:0;background:none;border:none;font:inherit;font-weight:600;color:var(--ion-color-primary);cursor:pointer}.features-list--center .features-list__more,.features-list--center .features-list__footer{align-self:center}.features-list__footer{align-self:flex-start;margin-top:.25rem;font-weight:600;color:var(--ion-color-primary);text-decoration:none;cursor:pointer}.features-list__footer:hover{text-decoration:underline}:host-context(.dark) .feature__title,:host-context(.ion-palette-dark) .feature__title,:host-context(html.ion-palette-dark) .feature__title,:host-context(body.dark) .feature__title,:host-context([data-theme=\"dark\"]) .feature__title{color:var(--ion-text-color, #fff)}:host-context(.dark) .feature__description,:host-context(.ion-palette-dark) .feature__description,:host-context(html.ion-palette-dark) .feature__description,:host-context(body.dark) .feature__description,:host-context([data-theme=\"dark\"]) .feature__description{color:var(--ion-color-medium, #a0a0a0)}:host-context(.dark) .feature--clickable:hover,:host-context(.ion-palette-dark) .feature--clickable:hover,:host-context(html.ion-palette-dark) .feature--clickable:hover,:host-context(body.dark) .feature--clickable:hover,:host-context([data-theme=\"dark\"]) .feature--clickable:hover{background:#ffffff0a}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
229
+ `, isInline: true, styles: [":host{display:block}.features-list{display:flex}.features-list--vertical{flex-direction:column}.features-list--horizontal{flex-direction:row;flex-wrap:wrap}.features-list--horizontal .feature{flex:1;min-width:200px}.features-list--gap-small{gap:1rem}.features-list--gap-medium{gap:1.5rem}.features-list--gap-large{gap:2rem}.features-list--center{align-items:center;text-align:center}.features-list--center .feature{flex-direction:column;align-items:center}.features-list--center .feature__content{text-align:center}.feature{display:flex;align-items:flex-start;gap:1rem}.feature--clickable{cursor:pointer;border-radius:10px;transition:background-color .15s ease;width:100%;text-align:left;border:none;background:none;font:inherit;color:inherit;padding:.25rem}.feature--clickable:hover{background:var(--ion-color-light, rgba(0, 0, 0, .03))}.feature--clickable:focus{outline:none}.feature--clickable:focus-visible{outline:.125rem solid var(--ion-color-primary, #7026df);outline-offset:2px}.feature__icon{flex-shrink:0;display:flex;align-items:center;justify-content:center}.feature__image{width:100%;height:100%;object-fit:contain;border-radius:8px}.feature__image--circle{object-fit:cover;border-radius:50%}.feature__content{flex:1}.feature__title{display:block;font-size:1.1rem;font-weight:600;color:var(--ion-text-color);margin-bottom:.25rem}.feature__description{margin:0;font-size:.95rem;color:var(--ion-color-medium);line-height:1.5}.features-list__more{align-self:flex-start;margin-top:.25rem;padding:0;background:none;border:none;font:inherit;font-weight:600;color:var(--ion-color-primary);cursor:pointer}.features-list--center .features-list__more,.features-list--center .features-list__footer{align-self:center}.features-list__footer{align-self:flex-start;margin-top:.25rem;font-weight:600;color:var(--ion-color-primary);text-decoration:none;cursor:pointer}.features-list__footer:hover{text-decoration:underline}:host-context(.dark) .feature__title,:host-context(.ion-palette-dark) .feature__title,:host-context(html.ion-palette-dark) .feature__title,:host-context(body.dark) .feature__title,:host-context([data-theme=\"dark\"]) .feature__title{color:var(--ion-text-color, #fff)}:host-context(.dark) .feature__description,:host-context(.ion-palette-dark) .feature__description,:host-context(html.ion-palette-dark) .feature__description,:host-context(body.dark) .feature__description,:host-context([data-theme=\"dark\"]) .feature__description{color:var(--ion-color-medium, #a0a0a0)}:host-context(.dark) .feature--clickable:hover,:host-context(.ion-palette-dark) .feature--clickable:hover,:host-context(html.ion-palette-dark) .feature--clickable:hover,:host-context(body.dark) .feature--clickable:hover,:host-context([data-theme=\"dark\"]) .feature--clickable:hover{background:#ffffff0a}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
186
230
  }
187
231
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FeaturesListComponent, decorators: [{
188
232
  type: Component,
@@ -197,42 +241,86 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
197
241
  [class.features-list--center]="config().alignment === 'center'"
198
242
  >
199
243
  @for (feature of visibleFeatures(); track feature.titleKey) {
200
- <div class="feature" [class.feature--clickable]="feature.token != null" (click)="onItem(feature)">
201
- <div
202
- class="feature__icon"
203
- [style.color]="iconColorStyle()"
204
- [style.width.px]="config().iconSize"
205
- [style.height.px]="config().iconSize"
244
+ @if (feature.token != null) {
245
+ <button
246
+ type="button"
247
+ class="feature feature--clickable"
248
+ [attr.aria-label]="getTitle(feature)"
249
+ (click)="onItem(feature)"
206
250
  >
207
- @if (feature.image) {
208
- <img
209
- class="feature__image"
210
- [class.feature__image--circle]="config().imageShape === 'circle'"
211
- [src]="feature.image"
212
- [alt]="getTitle(feature)"
213
- />
214
- } @else if (feature.icon === 'custom' && feature.svgPath) {
215
- <svg
216
- [attr.width]="config().iconSize"
217
- [attr.height]="config().iconSize"
218
- viewBox="0 0 24 24"
219
- fill="none"
220
- stroke="currentColor"
221
- stroke-width="1.5"
222
- stroke-linecap="round"
223
- stroke-linejoin="round"
224
- >
225
- <path [attr.d]="feature.svgPath" />
226
- </svg>
227
- } @else if (feature.icon) {
228
- <ion-icon [name]="feature.icon" [style.font-size.px]="config().iconSize"></ion-icon>
229
- }
230
- </div>
231
- <div class="feature__content">
232
- <strong class="feature__title">{{ getTitle(feature) }}</strong>
233
- <p class="feature__description">{{ getDescription(feature) }}</p>
251
+ <div
252
+ class="feature__icon"
253
+ [style.color]="iconColorStyle()"
254
+ [style.width.px]="config().iconSize"
255
+ [style.height.px]="config().iconSize"
256
+ >
257
+ @if (feature.image) {
258
+ <img
259
+ class="feature__image"
260
+ [class.feature__image--circle]="config().imageShape === 'circle'"
261
+ [src]="feature.image"
262
+ [alt]="getTitle(feature)"
263
+ />
264
+ } @else if (feature.icon === 'custom' && feature.svgPath) {
265
+ <svg
266
+ [attr.width]="config().iconSize"
267
+ [attr.height]="config().iconSize"
268
+ viewBox="0 0 24 24"
269
+ fill="none"
270
+ stroke="currentColor"
271
+ stroke-width="1.5"
272
+ stroke-linecap="round"
273
+ stroke-linejoin="round"
274
+ >
275
+ <path [attr.d]="feature.svgPath" />
276
+ </svg>
277
+ } @else if (feature.icon) {
278
+ <ion-icon [name]="feature.icon" [style.font-size.px]="config().iconSize"></ion-icon>
279
+ }
280
+ </div>
281
+ <div class="feature__content">
282
+ <strong class="feature__title">{{ getTitle(feature) }}</strong>
283
+ <p class="feature__description">{{ getDescription(feature) }}</p>
284
+ </div>
285
+ </button>
286
+ } @else {
287
+ <div class="feature">
288
+ <div
289
+ class="feature__icon"
290
+ [style.color]="iconColorStyle()"
291
+ [style.width.px]="config().iconSize"
292
+ [style.height.px]="config().iconSize"
293
+ >
294
+ @if (feature.image) {
295
+ <img
296
+ class="feature__image"
297
+ [class.feature__image--circle]="config().imageShape === 'circle'"
298
+ [src]="feature.image"
299
+ [alt]="getTitle(feature)"
300
+ />
301
+ } @else if (feature.icon === 'custom' && feature.svgPath) {
302
+ <svg
303
+ [attr.width]="config().iconSize"
304
+ [attr.height]="config().iconSize"
305
+ viewBox="0 0 24 24"
306
+ fill="none"
307
+ stroke="currentColor"
308
+ stroke-width="1.5"
309
+ stroke-linecap="round"
310
+ stroke-linejoin="round"
311
+ >
312
+ <path [attr.d]="feature.svgPath" />
313
+ </svg>
314
+ } @else if (feature.icon) {
315
+ <ion-icon [name]="feature.icon" [style.font-size.px]="config().iconSize"></ion-icon>
316
+ }
317
+ </div>
318
+ <div class="feature__content">
319
+ <strong class="feature__title">{{ getTitle(feature) }}</strong>
320
+ <p class="feature__description">{{ getDescription(feature) }}</p>
321
+ </div>
234
322
  </div>
235
- </div>
323
+ }
236
324
  }
237
325
 
238
326
  @if (canCollapse()) {
@@ -247,6 +335,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
247
335
  </a>
248
336
  }
249
337
  </div>
250
- `, styles: [":host{display:block}.features-list{display:flex}.features-list--vertical{flex-direction:column}.features-list--horizontal{flex-direction:row;flex-wrap:wrap}.features-list--horizontal .feature{flex:1;min-width:200px}.features-list--gap-small{gap:1rem}.features-list--gap-medium{gap:1.5rem}.features-list--gap-large{gap:2rem}.features-list--center{align-items:center;text-align:center}.features-list--center .feature{flex-direction:column;align-items:center}.features-list--center .feature__content{text-align:center}.feature{display:flex;align-items:flex-start;gap:1rem}.feature--clickable{cursor:pointer;border-radius:10px;transition:background-color .15s ease}.feature--clickable:hover{background:var(--ion-color-light, rgba(0, 0, 0, .03))}.feature__icon{flex-shrink:0;display:flex;align-items:center;justify-content:center}.feature__image{width:100%;height:100%;object-fit:contain;border-radius:8px}.feature__image--circle{object-fit:cover;border-radius:50%}.feature__content{flex:1}.feature__title{display:block;font-size:1.1rem;font-weight:600;color:var(--ion-text-color);margin-bottom:.25rem}.feature__description{margin:0;font-size:.95rem;color:var(--ion-color-medium);line-height:1.5}.features-list__more{align-self:flex-start;margin-top:.25rem;padding:0;background:none;border:none;font:inherit;font-weight:600;color:var(--ion-color-primary);cursor:pointer}.features-list--center .features-list__more,.features-list--center .features-list__footer{align-self:center}.features-list__footer{align-self:flex-start;margin-top:.25rem;font-weight:600;color:var(--ion-color-primary);text-decoration:none;cursor:pointer}.features-list__footer:hover{text-decoration:underline}:host-context(.dark) .feature__title,:host-context(.ion-palette-dark) .feature__title,:host-context(html.ion-palette-dark) .feature__title,:host-context(body.dark) .feature__title,:host-context([data-theme=\"dark\"]) .feature__title{color:var(--ion-text-color, #fff)}:host-context(.dark) .feature__description,:host-context(.ion-palette-dark) .feature__description,:host-context(html.ion-palette-dark) .feature__description,:host-context(body.dark) .feature__description,:host-context([data-theme=\"dark\"]) .feature__description{color:var(--ion-color-medium, #a0a0a0)}:host-context(.dark) .feature--clickable:hover,:host-context(.ion-palette-dark) .feature--clickable:hover,:host-context(html.ion-palette-dark) .feature--clickable:hover,:host-context(body.dark) .feature--clickable:hover,:host-context([data-theme=\"dark\"]) .feature--clickable:hover{background:#ffffff0a}\n"] }]
338
+ `, styles: [":host{display:block}.features-list{display:flex}.features-list--vertical{flex-direction:column}.features-list--horizontal{flex-direction:row;flex-wrap:wrap}.features-list--horizontal .feature{flex:1;min-width:200px}.features-list--gap-small{gap:1rem}.features-list--gap-medium{gap:1.5rem}.features-list--gap-large{gap:2rem}.features-list--center{align-items:center;text-align:center}.features-list--center .feature{flex-direction:column;align-items:center}.features-list--center .feature__content{text-align:center}.feature{display:flex;align-items:flex-start;gap:1rem}.feature--clickable{cursor:pointer;border-radius:10px;transition:background-color .15s ease;width:100%;text-align:left;border:none;background:none;font:inherit;color:inherit;padding:.25rem}.feature--clickable:hover{background:var(--ion-color-light, rgba(0, 0, 0, .03))}.feature--clickable:focus{outline:none}.feature--clickable:focus-visible{outline:.125rem solid var(--ion-color-primary, #7026df);outline-offset:2px}.feature__icon{flex-shrink:0;display:flex;align-items:center;justify-content:center}.feature__image{width:100%;height:100%;object-fit:contain;border-radius:8px}.feature__image--circle{object-fit:cover;border-radius:50%}.feature__content{flex:1}.feature__title{display:block;font-size:1.1rem;font-weight:600;color:var(--ion-text-color);margin-bottom:.25rem}.feature__description{margin:0;font-size:.95rem;color:var(--ion-color-medium);line-height:1.5}.features-list__more{align-self:flex-start;margin-top:.25rem;padding:0;background:none;border:none;font:inherit;font-weight:600;color:var(--ion-color-primary);cursor:pointer}.features-list--center .features-list__more,.features-list--center .features-list__footer{align-self:center}.features-list__footer{align-self:flex-start;margin-top:.25rem;font-weight:600;color:var(--ion-color-primary);text-decoration:none;cursor:pointer}.features-list__footer:hover{text-decoration:underline}:host-context(.dark) .feature__title,:host-context(.ion-palette-dark) .feature__title,:host-context(html.ion-palette-dark) .feature__title,:host-context(body.dark) .feature__title,:host-context([data-theme=\"dark\"]) .feature__title{color:var(--ion-text-color, #fff)}:host-context(.dark) .feature__description,:host-context(.ion-palette-dark) .feature__description,:host-context(html.ion-palette-dark) .feature__description,:host-context(body.dark) .feature__description,:host-context([data-theme=\"dark\"]) .feature__description{color:var(--ion-color-medium, #a0a0a0)}:host-context(.dark) .feature--clickable:hover,:host-context(.ion-palette-dark) .feature--clickable:hover,:host-context(html.ion-palette-dark) .feature--clickable:hover,:host-context(body.dark) .feature--clickable:hover,:host-context([data-theme=\"dark\"]) .feature--clickable:hover{background:#ffffff0a}\n"] }]
251
339
  }], ctorParameters: () => [] });
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZXMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2ZlYXR1cmVzLWxpc3QvZmVhdHVyZXMtbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQTZELHNCQUFzQixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUU1Rzs7O0dBR0c7QUFDSCxNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtJQUNsRCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7Q0FDckQsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFvT0gsTUFBTSxPQUFPLHFCQUFxQjtJQWVoQztRQWRRLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0IsZUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRS9DLDhCQUE4QjtRQUNyQixVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEs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akIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUM7SUFDaEMsQ0FBQzsrR0FsR1UscUJBQXFCO21HQUFyQixxQkFBcUIsaVJBL050Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZEVCw4akZBOURTLFlBQVksK0JBQUUsVUFBVSxvT0FBRSxPQUFPOzs0RkFnT2hDLHFCQUFxQjtrQkFuT2pDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLFlBQ2xDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkRUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgRmVhdHVyZUl0ZW0sIEZlYXR1cmVzTGlzdEZvb3RlckxpbmssIEZlYXR1cmVzTGlzdE1ldGFkYXRhLCBGRUFUVVJFU19MSVNUX0RFRkFVTFRTIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRGVmYXVsdHMgaTE4biAoZXMvZW4pIOKAlCBhdXRvLXJlZ2lzdHJhZG9zIHNpIGVsIGNvbnN1bWVyIG5vIHByb3ZlecOzIGVsXG4gKiBuYW1lc3BhY2UgYEZlYXR1cmVzTGlzdGAuIEN1YnJlIGxvcyBsYWJlbHMgZGUgXCJ2ZXIgbcOhc1wiL1widmVyIG1lbm9zXCIuXG4gKi9cbmNvbnN0IEZFQVRVUkVTX0xJU1RfSTE4TiA9IHtcbiAgZXM6IHsgc2hvd01vcmU6ICdWZXIgbcOhcycsIHNob3dMZXNzOiAnVmVyIG1lbm9zJyB9LFxuICBlbjogeyBzaG93TW9yZTogJ1Nob3cgbW9yZScsIHNob3dMZXNzOiAnU2hvdyBsZXNzJyB9LFxufTtcblxuLyoqXG4gKiB2YWwtZmVhdHVyZXMtbGlzdFxuICpcbiAqIExpc3RhIGRlIGZlYXR1cmVzIGNvbiBpY29ubyAqKm8gaW1hZ2VuKiosIHTDrXR1bG8geSBkZXNjcmlwY2nDs24uIFNvcG9ydGEgaTE4bixcbiAqIGNvbGFwc28gb3BjaW9uYWwgKFwidmVyIG3DoXNcIiBjdWFuZG8gc3VwZXJhIGBtYXhWaXNpYmxlYCkgeSB1biBsaW5rIGFsIHBpZVxuICogKGVqLiBcIkZpbmQgb3V0IG1vcmVcIikuIMOadGlsIHBhcmEgbGlzdGFzIGRlIHNldHRpbmdzLCBhcHBzLCBiZW5lZmljaW9zLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8dmFsLWZlYXR1cmVzLWxpc3RcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBmZWF0dXJlczogW1xuICogICAgICAgeyBpY29uOiAnZmxhc2gtb3V0bGluZScsIHRpdGxlS2V5OiAnUsOhcGlkbycsIGRlc2NyaXB0aW9uS2V5OiAnQ2FyZ2EgYWwgaW5zdGFudGUnIH0sXG4gKiAgICAgICB7IGltYWdlOiAnL2xvZ29zL2FwcC5wbmcnLCB0aXRsZUtleTogJ01pIEFwcCcsIGRlc2NyaXB0aW9uS2V5OiAnR2VzdGnDs24gZGUgZXF1aXBvcycsIHRva2VuOiAnYXBwJyB9XG4gKiAgICAgXSxcbiAqICAgICBtYXhWaXNpYmxlOiAzLFxuICogICAgIGZvb3Rlckxpbms6IHsgbGFiZWw6ICdWZXIgdG9kbycsIHJvdXRlckxpbms6ICcvYXBwcycgfVxuICogICB9XCJcbiAqICAgKGl0ZW1DbGljayk9XCJvcGVuKCRldmVudClcIlxuICogLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZmVhdHVyZXMtbGlzdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlckxpbmssIElvbkljb25dLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZmVhdHVyZXMtbGlzdFwiXG4gICAgICBbY2xhc3MuZmVhdHVyZXMtbGlzdC0tdmVydGljYWxdPVwiY29uZmlnKCkubW9kZSA9PT0gJ3ZlcnRpY2FsJ1wiXG4gICAgICBbY2xhc3MuZmVhdHVyZXMtbGlzdC0taG9yaXpvbnRhbF09XCJjb25maWcoKS5tb2RlID09PSAnaG9yaXpvbnRhbCdcIlxuICAgICAgW2NsYXNzLmZlYXR1cmVzLWxpc3QtLWdhcC1zbWFsbF09XCJjb25maWcoKS5nYXAgPT09ICdzbWFsbCdcIlxuICAgICAgW2NsYXNzLmZlYXR1cmVzLWxpc3QtLWdhcC1tZWRpdW1dPVwiY29uZmlnKCkuZ2FwID09PSAnbWVkaXVtJ1wiXG4gICAgICBbY2xhc3MuZmVhdHVyZXMtbGlzdC0tZ2FwLWxhcmdlXT1cImNvbmZpZygpLmdhcCA9PT0gJ2xhcmdlJ1wiXG4gICAgICBbY2xhc3MuZmVhdHVyZXMtbGlzdC0tY2VudGVyXT1cImNvbmZpZygpLmFsaWdubWVudCA9PT0gJ2NlbnRlcidcIlxuICAgID5cbiAgICAgIEBmb3IgKGZlYXR1cmUgb2YgdmlzaWJsZUZlYXR1cmVzKCk7IHRyYWNrIGZlYXR1cmUudGl0bGVLZXkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImZlYXR1cmVcIiBbY2xhc3MuZmVhdHVyZS0tY2xpY2thYmxlXT1cImZlYXR1cmUudG9rZW4gIT0gbnVsbFwiIChjbGljayk9XCJvbkl0ZW0oZmVhdHVyZSlcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZlYXR1cmVfX2ljb25cIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImljb25Db2xvclN0eWxlKClcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbmZpZygpLmljb25TaXplXCJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiY29uZmlnKCkuaWNvblNpemVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoZmVhdHVyZS5pbWFnZSkge1xuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZWF0dXJlX19pbWFnZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZlYXR1cmVfX2ltYWdlLS1jaXJjbGVdPVwiY29uZmlnKCkuaW1hZ2VTaGFwZSA9PT0gJ2NpcmNsZSdcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiZmVhdHVyZS5pbWFnZVwiXG4gICAgICAgICAgICAgICAgW2FsdF09XCJnZXRUaXRsZShmZWF0dXJlKVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9IEBlbHNlIGlmIChmZWF0dXJlLmljb24gPT09ICdjdXN0b20nICYmIGZlYXR1cmUuc3ZnUGF0aCkge1xuICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwiY29uZmlnKCkuaWNvblNpemVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJjb25maWcoKS5pY29uU2l6ZVwiXG4gICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8cGF0aCBbYXR0ci5kXT1cImZlYXR1cmUuc3ZnUGF0aFwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAoZmVhdHVyZS5pY29uKSB7XG4gICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJmZWF0dXJlLmljb25cIiBbc3R5bGUuZm9udC1zaXplLnB4XT1cImNvbmZpZygpLmljb25TaXplXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmVhdHVyZV9fY29udGVudFwiPlxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImZlYXR1cmVfX3RpdGxlXCI+e3sgZ2V0VGl0bGUoZmVhdHVyZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiZmVhdHVyZV9fZGVzY3JpcHRpb25cIj57eyBnZXREZXNjcmlwdGlvbihmZWF0dXJlKSB9fTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIEBpZiAoY2FuQ29sbGFwc2UoKSkge1xuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImZlYXR1cmVzLWxpc3RfX21vcmVcIiAoY2xpY2spPVwidG9nZ2xlKClcIj5cbiAgICAgICAgICB7eyBleHBhbmRlZCgpID8gc2hvd0xlc3NUZXh0KCkgOiBzaG93TW9yZVRleHQoKSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cblxuICAgICAgQGlmIChjb25maWcoKS5mb290ZXJMaW5rOyBhcyBsaW5rKSB7XG4gICAgICAgIDxhIGNsYXNzPVwiZmVhdHVyZXMtbGlzdF9fZm9vdGVyXCIgW3JvdXRlckxpbmtdPVwibGluay5yb3V0ZXJMaW5rID8/IG51bGxcIiAoY2xpY2spPVwib25Gb290ZXIoJGV2ZW50LCBsaW5rKVwiPlxuICAgICAgICAgIHt7IGxpbmsubGFiZWwgfX1cbiAgICAgICAgPC9hPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAuZmVhdHVyZXMtbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB9XG5cbiAgICAgIC5mZWF0dXJlcy1saXN0LS12ZXJ0aWNhbCB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB9XG5cbiAgICAgIC5mZWF0dXJlcy1saXN0LS1ob3Jpem9udGFsIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgfVxuXG4gICAgICAuZmVhdHVyZXMtbGlzdC0taG9yaXpvbnRhbCAuZmVhdHVyZSB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgICB9XG5cbiAgICAgIC5mZWF0dXJlcy1saXN0LS1nYXAtc21hbGwge1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5mZWF0dXJlcy1saXN0LS1nYXAtbWVkaXVtIHtcbiAgICAgICAgZ2FwOiAxLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5mZWF0dXJlcy1saXN0LS1nYXAtbGFyZ2Uge1xuICAgICAgICBnYXA6IDJyZW07XG4gICAgICB9XG5cbiAgICAgIC5mZWF0dXJlcy1saXN0LS1jZW50ZXIge1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5mZWF0dXJlcy1saXN0LS1jZW50ZXIgLmZlYXR1cmUge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuZmVhdHVyZXMtbGlzdC0tY2VudGVyIC5mZWF0dXJlX19jb250ZW50IHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuZmVhdHVyZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5mZWF0dXJlLS1jbGlja2FibGUge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmUtLWNsaWNrYWJsZTpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjAzKSk7XG4gICAgICB9XG5cbiAgICAgIC5mZWF0dXJlX19pY29uIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuZmVhdHVyZV9faW1hZ2Uge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICB9XG5cbiAgICAgIC5mZWF0dXJlX19pbWFnZS0tY2lyY2xlIHtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmVfX2NvbnRlbnQge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgfVxuXG4gICAgICAuZmVhdHVyZV9fdGl0bGUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvcik7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5mZWF0dXJlX19kZXNjcmlwdGlvbiB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICB9XG5cbiAgICAgIC5mZWF0dXJlcy1saXN0X19tb3JlIHtcbiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgICAgICAgbWFyZ2luLXRvcDogMC4yNXJlbTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5mZWF0dXJlcy1saXN0LS1jZW50ZXIgLmZlYXR1cmVzLWxpc3RfX21vcmUsXG4gICAgICAuZmVhdHVyZXMtbGlzdC0tY2VudGVyIC5mZWF0dXJlcy1saXN0X19mb290ZXIge1xuICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5mZWF0dXJlcy1saXN0X19mb290ZXIge1xuICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmVzLWxpc3RfX2Zvb3Rlcjpob3ZlciB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgfVxuXG4gICAgICAvKiBEYXJrIG1vZGUgc3VwcG9ydCDigJQgY2xhc3MtYmFzZWQgT05MWSAoSW9uaWMgYm9keS5kYXJrIC8gaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAqL1xuICAgICAgOmhvc3QtY29udGV4dCguZGFyaykgLmZlYXR1cmVfX3RpdGxlLFxuICAgICAgOmhvc3QtY29udGV4dCguaW9uLXBhbGV0dGUtZGFyaykgLmZlYXR1cmVfX3RpdGxlLFxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5mZWF0dXJlX190aXRsZSxcbiAgICAgIDpob3N0LWNvbnRleHQoYm9keS5kYXJrKSAuZmVhdHVyZV9fdGl0bGUsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5mZWF0dXJlX190aXRsZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgI2ZmZik7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoLmRhcmspIC5mZWF0dXJlX19kZXNjcmlwdGlvbixcbiAgICAgIDpob3N0LWNvbnRleHQoLmlvbi1wYWxldHRlLWRhcmspIC5mZWF0dXJlX19kZXNjcmlwdGlvbixcbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuZmVhdHVyZV9fZGVzY3JpcHRpb24sXG4gICAgICA6aG9zdC1jb250ZXh0KGJvZHkuZGFyaykgLmZlYXR1cmVfX2Rlc2NyaXB0aW9uLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuZmVhdHVyZV9fZGVzY3JpcHRpb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgI2EwYTBhMCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoLmRhcmspIC5mZWF0dXJlLS1jbGlja2FibGU6aG92ZXIsXG4gICAgICA6aG9zdC1jb250ZXh0KC5pb24tcGFsZXR0ZS1kYXJrKSAuZmVhdHVyZS0tY2xpY2thYmxlOmhvdmVyLFxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5mZWF0dXJlLS1jbGlja2FibGU6aG92ZXIsXG4gICAgICA6aG9zdC1jb250ZXh0KGJvZHkuZGFyaykgLmZlYXR1cmUtLWNsaWNrYWJsZTpob3ZlcixcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmZlYXR1cmUtLWNsaWNrYWJsZTpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCk7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRmVhdHVyZXNMaXN0Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uID0gaW5qZWN0KE5hdmlnYXRpb25TZXJ2aWNlKTtcblxuICAvKiogQ29tcG9uZW50IGNvbmZpZ3VyYXRpb24gKi9cbiAgcmVhZG9ubHkgcHJvcHMgPSBpbnB1dC5yZXF1aXJlZDxGZWF0dXJlc0xpc3RNZXRhZGF0YT4oKTtcblxuICAvKiogRW1pdGlkbyBhbCB0b2NhciB1biBpdGVtIChjb24gc3UgYHRva2VuYCkuICovXG4gIHJlYWRvbmx5IGl0ZW1DbGljayA9IG91dHB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIC8qKiBFbWl0aWRvIGFsIHRvY2FyIGVsIGZvb3RlciBsaW5rIChjb24gc3UgYHRva2VuYCkuICovXG4gIHJlYWRvbmx5IGZvb3RlckNsaWNrID0gb3V0cHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9leHBhbmRlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGV4cGFuZGVkID0gdGhpcy5fZXhwYW5kZWQuYXNSZWFkb25seSgpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZSgnRmVhdHVyZXNMaXN0JykpIHtcbiAgICAgIHRoaXMuaTE4bi5yZWdpc3RlckNvbnRlbnQoJ0ZlYXR1cmVzTGlzdCcsIEZFQVRVUkVTX0xJU1RfSTE4Tik7XG4gICAgfVxuICB9XG5cbiAgLyoqIE1lcmdlZCBjb25maWd1cmF0aW9uIHdpdGggZGVmYXVsdHMgKi9cbiAgY29uZmlnID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAuLi5GRUFUVVJFU19MSVNUX0RFRkFVTFRTLFxuICAgIC4uLnRoaXMucHJvcHMoKSxcbiAgfSkpO1xuXG4gIC8qKiBJdGVtcyB2aXNpYmxlcyBzZWfDum4gZWwgZXN0YWRvIGRlIGNvbGFwc28uICovXG4gIHZpc2libGVGZWF0dXJlcyA9IGNvbXB1dGVkPEZlYXR1cmVJdGVtW10+KCgpID0+IHtcbiAgICBjb25zdCBjZmcgPSB0aGlzLmNvbmZpZygpO1xuICAgIGNvbnN0IGFsbCA9IGNmZy5mZWF0dXJlcyA/PyBbXTtcbiAgICBpZiAoY2ZnLm1heFZpc2libGUgPiAwICYmICF0aGlzLl9leHBhbmRlZCgpICYmIGFsbC5sZW5ndGggPiBjZmcubWF4VmlzaWJsZSkge1xuICAgICAgcmV0dXJuIGFsbC5zbGljZSgwLCBjZmcubWF4VmlzaWJsZSk7XG4gICAgfVxuICAgIHJldHVybiBhbGw7XG4gIH0pO1xuXG4gIC8qKiBTaSBoYXkgaXRlbXMgZGUgc29icmEgcGFyYSBjb2xhcHNhci9leHBhbmRpci4gKi9cbiAgY2FuQ29sbGFwc2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY2ZnID0gdGhpcy5jb25maWcoKTtcbiAgICByZXR1cm4gY2ZnLm1heFZpc2libGUgPiAwICYmIChjZmcuZmVhdHVyZXM/Lmxlbmd0aCA/PyAwKSA+IGNmZy5tYXhWaXNpYmxlO1xuICB9KTtcblxuICBzaG93TW9yZVRleHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5jb25maWcoKS5zaG93TW9yZUxhYmVsIHx8IHRoaXMuaTE4bi50KCdzaG93TW9yZScsICdGZWF0dXJlc0xpc3QnKTtcbiAgfSk7XG5cbiAgc2hvd0xlc3NUZXh0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnKCkuc2hvd0xlc3NMYWJlbCB8fCB0aGlzLmkxOG4udCgnc2hvd0xlc3MnLCAnRmVhdHVyZXNMaXN0Jyk7XG4gIH0pO1xuXG4gIC8qKiBSZXNvbHZlZCBpY29uIGNvbG9yIChoYW5kbGVzIElvbmljIGNvbG9ycyBhbmQgQ1NTIGNvbG9ycykgKi9cbiAgaWNvbkNvbG9yU3R5bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29sb3IgPSB0aGlzLmNvbmZpZygpLmljb25Db2xvcjtcbiAgICBpZiAoY29sb3IgJiYgIWNvbG9yLnN0YXJ0c1dpdGgoJyMnKSAmJiAhY29sb3Iuc3RhcnRzV2l0aCgncmdiJykpIHtcbiAgICAgIHJldHVybiBgdmFyKC0taW9uLWNvbG9yLSR7Y29sb3J9KWA7XG4gICAgfVxuICAgIHJldHVybiBjb2xvcjtcbiAgfSk7XG5cbiAgdG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMuX2V4cGFuZGVkLnNldCghdGhpcy5fZXhwYW5kZWQoKSk7XG4gIH1cblxuICBvbkl0ZW0oZmVhdHVyZTogRmVhdHVyZUl0ZW0pOiB2b2lkIHtcbiAgICBpZiAoZmVhdHVyZS50b2tlbiAhPSBudWxsKSB7XG4gICAgICB0aGlzLml0ZW1DbGljay5lbWl0KGZlYXR1cmUudG9rZW4pO1xuICAgIH1cbiAgfVxuXG4gIG9uRm9vdGVyKGV2ZW50OiBNb3VzZUV2ZW50LCBsaW5rOiBGZWF0dXJlc0xpc3RGb290ZXJMaW5rKTogdm9pZCB7XG4gICAgdGhpcy5mb290ZXJDbGljay5lbWl0KGxpbmsudG9rZW4pO1xuICAgIGlmIChsaW5rLmhyZWYpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm5hdmlnYXRpb24ub3BlbkluTmV3VGFiKGxpbmsuaHJlZik7XG4gICAgfVxuICB9XG5cbiAgLyoqIEdldCB0cmFuc2xhdGVkIHRpdGxlIG9yIHJldHVybiBkaXJlY3QgdGV4dCAqL1xuICBnZXRUaXRsZShmZWF0dXJlOiBGZWF0dXJlSXRlbSk6IHN0cmluZyB7XG4gICAgY29uc3QgbmFtZXNwYWNlID0gdGhpcy5wcm9wcygpLmkxOG5OYW1lc3BhY2U7XG4gICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICAgIHJldHVybiB0aGlzLmkxOG4udChmZWF0dXJlLnRpdGxlS2V5LCBuYW1lc3BhY2UpO1xuICAgIH1cbiAgICByZXR1cm4gZmVhdHVyZS50aXRsZUtleTtcbiAgfVxuXG4gIC8qKiBHZXQgdHJhbnNsYXRlZCBkZXNjcmlwdGlvbiBvciByZXR1cm4gZGlyZWN0IHRleHQgKi9cbiAgZ2V0RGVzY3JpcHRpb24oZmVhdHVyZTogRmVhdHVyZUl0ZW0pOiBzdHJpbmcge1xuICAgIGNvbnN0IG5hbWVzcGFjZSA9IHRoaXMucHJvcHMoKS5pMThuTmFtZXNwYWNlO1xuICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgICByZXR1cm4gdGhpcy5pMThuLnQoZmVhdHVyZS5kZXNjcmlwdGlvbktleSwgbmFtZXNwYWNlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZlYXR1cmUuZGVzY3JpcHRpb25LZXk7XG4gIH1cbn1cbiJdfQ==
340
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZXMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2ZlYXR1cmVzLWxpc3QvZmVhdHVyZXMtbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQTZELHNCQUFzQixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUU1Rzs7O0dBR0c7QUFDSCxNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtJQUNsRCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7Q0FDckQsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFnU0gsTUFBTSxPQUFPLHFCQUFxQjtJQWVoQztRQWRRLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0IsZUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRS9DLDhCQUE4QjtRQUNyQixVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEs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akIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUM7SUFDaEMsQ0FBQzsrR0FsR1UscUJBQXFCO21HQUFyQixxQkFBcUIsaVJBM1J0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUdULG16RkExR1MsWUFBWSwrQkFBRSxVQUFVLG9PQUFFLE9BQU87OzRGQTRSaEMscUJBQXFCO2tCQS9SakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsWUFDbEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlHVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IEZlYXR1cmVJdGVtLCBGZWF0dXJlc0xpc3RGb290ZXJMaW5rLCBGZWF0dXJlc0xpc3RNZXRhZGF0YSwgRkVBVFVSRVNfTElTVF9ERUZBVUxUUyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIERlZmF1bHRzIGkxOG4gKGVzL2VuKSDigJQgYXV0by1yZWdpc3RyYWRvcyBzaSBlbCBjb25zdW1lciBubyBwcm92ZXnDsyBlbFxuICogbmFtZXNwYWNlIGBGZWF0dXJlc0xpc3RgLiBDdWJyZSBsb3MgbGFiZWxzIGRlIFwidmVyIG3DoXNcIi9cInZlciBtZW5vc1wiLlxuICovXG5jb25zdCBGRUFUVVJFU19MSVNUX0kxOE4gPSB7XG4gIGVzOiB7IHNob3dNb3JlOiAnVmVyIG3DoXMnLCBzaG93TGVzczogJ1ZlciBtZW5vcycgfSxcbiAgZW46IHsgc2hvd01vcmU6ICdTaG93IG1vcmUnLCBzaG93TGVzczogJ1Nob3cgbGVzcycgfSxcbn07XG5cbi8qKlxuICogdmFsLWZlYXR1cmVzLWxpc3RcbiAqXG4gKiBMaXN0YSBkZSBmZWF0dXJlcyBjb24gaWNvbm8gKipvIGltYWdlbioqLCB0w610dWxvIHkgZGVzY3JpcGNpw7NuLiBTb3BvcnRhIGkxOG4sXG4gKiBjb2xhcHNvIG9wY2lvbmFsIChcInZlciBtw6FzXCIgY3VhbmRvIHN1cGVyYSBgbWF4VmlzaWJsZWApIHkgdW4gbGluayBhbCBwaWVcbiAqIChlai4gXCJGaW5kIG91dCBtb3JlXCIpLiDDmnRpbCBwYXJhIGxpc3RhcyBkZSBzZXR0aW5ncywgYXBwcywgYmVuZWZpY2lvcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHZhbC1mZWF0dXJlcy1saXN0XG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgZmVhdHVyZXM6IFtcbiAqICAgICAgIHsgaWNvbjogJ2ZsYXNoLW91dGxpbmUnLCB0aXRsZUtleTogJ1LDoXBpZG8nLCBkZXNjcmlwdGlvbktleTogJ0NhcmdhIGFsIGluc3RhbnRlJyB9LFxuICogICAgICAgeyBpbWFnZTogJy9sb2dvcy9hcHAucG5nJywgdGl0bGVLZXk6ICdNaSBBcHAnLCBkZXNjcmlwdGlvbktleTogJ0dlc3Rpw7NuIGRlIGVxdWlwb3MnLCB0b2tlbjogJ2FwcCcgfVxuICogICAgIF0sXG4gKiAgICAgbWF4VmlzaWJsZTogMyxcbiAqICAgICBmb290ZXJMaW5rOiB7IGxhYmVsOiAnVmVyIHRvZG8nLCByb3V0ZXJMaW5rOiAnL2FwcHMnIH1cbiAqICAgfVwiXG4gKiAgIChpdGVtQ2xpY2spPVwib3BlbigkZXZlbnQpXCJcbiAqIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWZlYXR1cmVzLWxpc3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJMaW5rLCBJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZlYXR1cmVzLWxpc3RcIlxuICAgICAgW2NsYXNzLmZlYXR1cmVzLWxpc3QtLXZlcnRpY2FsXT1cImNvbmZpZygpLm1vZGUgPT09ICd2ZXJ0aWNhbCdcIlxuICAgICAgW2NsYXNzLmZlYXR1cmVzLWxpc3QtLWhvcml6b250YWxdPVwiY29uZmlnKCkubW9kZSA9PT0gJ2hvcml6b250YWwnXCJcbiAgICAgIFtjbGFzcy5mZWF0dXJlcy1saXN0LS1nYXAtc21hbGxdPVwiY29uZmlnKCkuZ2FwID09PSAnc21hbGwnXCJcbiAgICAgIFtjbGFzcy5mZWF0dXJlcy1saXN0LS1nYXAtbWVkaXVtXT1cImNvbmZpZygpLmdhcCA9PT0gJ21lZGl1bSdcIlxuICAgICAgW2NsYXNzLmZlYXR1cmVzLWxpc3QtLWdhcC1sYXJnZV09XCJjb25maWcoKS5nYXAgPT09ICdsYXJnZSdcIlxuICAgICAgW2NsYXNzLmZlYXR1cmVzLWxpc3QtLWNlbnRlcl09XCJjb25maWcoKS5hbGlnbm1lbnQgPT09ICdjZW50ZXInXCJcbiAgICA+XG4gICAgICBAZm9yIChmZWF0dXJlIG9mIHZpc2libGVGZWF0dXJlcygpOyB0cmFjayBmZWF0dXJlLnRpdGxlS2V5KSB7XG4gICAgICAgIEBpZiAoZmVhdHVyZS50b2tlbiAhPSBudWxsKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImZlYXR1cmUgZmVhdHVyZS0tY2xpY2thYmxlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0VGl0bGUoZmVhdHVyZSlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbShmZWF0dXJlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImZlYXR1cmVfX2ljb25cIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaWNvbkNvbG9yU3R5bGUoKVwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb25maWcoKS5pY29uU2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiY29uZmlnKCkuaWNvblNpemVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYgKGZlYXR1cmUuaW1hZ2UpIHtcbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZlYXR1cmVfX2ltYWdlXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZWF0dXJlX19pbWFnZS0tY2lyY2xlXT1cImNvbmZpZygpLmltYWdlU2hhcGUgPT09ICdjaXJjbGUnXCJcbiAgICAgICAgICAgICAgICAgIFtzcmNdPVwiZmVhdHVyZS5pbWFnZVwiXG4gICAgICAgICAgICAgICAgICBbYWx0XT1cImdldFRpdGxlKGZlYXR1cmUpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmIChmZWF0dXJlLmljb24gPT09ICdjdXN0b20nICYmIGZlYXR1cmUuc3ZnUGF0aCkge1xuICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgIFthdHRyLndpZHRoXT1cImNvbmZpZygpLmljb25TaXplXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJjb25maWcoKS5pY29uU2l6ZVwiXG4gICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHBhdGggW2F0dHIuZF09XCJmZWF0dXJlLnN2Z1BhdGhcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmIChmZWF0dXJlLmljb24pIHtcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwiZmVhdHVyZS5pY29uXCIgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJjb25maWcoKS5pY29uU2l6ZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZlYXR1cmVfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImZlYXR1cmVfX3RpdGxlXCI+e3sgZ2V0VGl0bGUoZmVhdHVyZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmZWF0dXJlX19kZXNjcmlwdGlvblwiPnt7IGdldERlc2NyaXB0aW9uKGZlYXR1cmUpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZWF0dXJlXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZmVhdHVyZV9faWNvblwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJpY29uQ29sb3JTdHlsZSgpXCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbmZpZygpLmljb25TaXplXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJjb25maWcoKS5pY29uU2l6ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEBpZiAoZmVhdHVyZS5pbWFnZSkge1xuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmVhdHVyZV9faW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmZlYXR1cmVfX2ltYWdlLS1jaXJjbGVdPVwiY29uZmlnKCkuaW1hZ2VTaGFwZSA9PT0gJ2NpcmNsZSdcIlxuICAgICAgICAgICAgICAgICAgW3NyY109XCJmZWF0dXJlLmltYWdlXCJcbiAgICAgICAgICAgICAgICAgIFthbHRdPVwiZ2V0VGl0bGUoZmVhdHVyZSlcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGZlYXR1cmUuaWNvbiA9PT0gJ2N1c3RvbScgJiYgZmVhdHVyZS5zdmdQYXRoKSB7XG4gICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwiY29uZmlnKCkuaWNvblNpemVcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuaGVpZ2h0XT1cImNvbmZpZygpLmljb25TaXplXCJcbiAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBbYXR0ci5kXT1cImZlYXR1cmUuc3ZnUGF0aFwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGZlYXR1cmUuaWNvbikge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJmZWF0dXJlLmljb25cIiBbc3R5bGUuZm9udC1zaXplLnB4XT1cImNvbmZpZygpLmljb25TaXplXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmVhdHVyZV9fY29udGVudFwiPlxuICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiZmVhdHVyZV9fdGl0bGVcIj57eyBnZXRUaXRsZShmZWF0dXJlKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImZlYXR1cmVfX2Rlc2NyaXB0aW9uXCI+e3sgZ2V0RGVzY3JpcHRpb24oZmVhdHVyZSkgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaWYgKGNhbkNvbGxhcHNlKCkpIHtcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJmZWF0dXJlcy1saXN0X19tb3JlXCIgKGNsaWNrKT1cInRvZ2dsZSgpXCI+XG4gICAgICAgICAge3sgZXhwYW5kZWQoKSA/IHNob3dMZXNzVGV4dCgpIDogc2hvd01vcmVUZXh0KCkgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAoY29uZmlnKCkuZm9vdGVyTGluazsgYXMgbGluaykge1xuICAgICAgICA8YSBjbGFzcz1cImZlYXR1cmVzLWxpc3RfX2Zvb3RlclwiIFtyb3V0ZXJMaW5rXT1cImxpbmsucm91dGVyTGluayA/PyBudWxsXCIgKGNsaWNrKT1cIm9uRm9vdGVyKCRldmVudCwgbGluaylcIj5cbiAgICAgICAgICB7eyBsaW5rLmxhYmVsIH19XG4gICAgICAgIDwvYT5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmVzLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgfVxuXG4gICAgICAuZmVhdHVyZXMtbGlzdC0tdmVydGljYWwge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgfVxuXG4gICAgICAuZmVhdHVyZXMtbGlzdC0taG9yaXpvbnRhbCB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmVzLWxpc3QtLWhvcml6b250YWwgLmZlYXR1cmUge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4td2lkdGg6IDIwMHB4O1xuICAgICAgfVxuXG4gICAgICAuZmVhdHVyZXMtbGlzdC0tZ2FwLXNtYWxsIHtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgfVxuXG4gICAgICAuZmVhdHVyZXMtbGlzdC0tZ2FwLW1lZGl1bSB7XG4gICAgICAgIGdhcDogMS41cmVtO1xuICAgICAgfVxuXG4gICAgICAuZmVhdHVyZXMtbGlzdC0tZ2FwLWxhcmdlIHtcbiAgICAgICAgZ2FwOiAycmVtO1xuICAgICAgfVxuXG4gICAgICAuZmVhdHVyZXMtbGlzdC0tY2VudGVyIHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuZmVhdHVyZXMtbGlzdC0tY2VudGVyIC5mZWF0dXJlIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmVzLWxpc3QtLWNlbnRlciAuZmVhdHVyZV9fY29udGVudCB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmUge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgfVxuXG4gICAgICAuZmVhdHVyZS0tY2xpY2thYmxlIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuZmVhdHVyZS0tY2xpY2thYmxlOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuMDMpKTtcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmUtLWNsaWNrYWJsZTpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5mZWF0dXJlLS1jbGlja2FibGU6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmU6IDAuMTI1cmVtIHNvbGlkIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjNzAyNmRmKTtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmVfX2ljb24ge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5mZWF0dXJlX19pbWFnZSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmVfX2ltYWdlLS1jaXJjbGUge1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgfVxuXG4gICAgICAuZmVhdHVyZV9fY29udGVudCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICB9XG5cbiAgICAgIC5mZWF0dXJlX190aXRsZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmVfX2Rlc2NyaXB0aW9uIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmVzLWxpc3RfX21vcmUge1xuICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmVzLWxpc3QtLWNlbnRlciAuZmVhdHVyZXMtbGlzdF9fbW9yZSxcbiAgICAgIC5mZWF0dXJlcy1saXN0LS1jZW50ZXIgLmZlYXR1cmVzLWxpc3RfX2Zvb3RlciB7XG4gICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmVzLWxpc3RfX2Zvb3RlciB7XG4gICAgICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gICAgICAgIG1hcmdpbi10b3A6IDAuMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgfVxuXG4gICAgICAuZmVhdHVyZXMtbGlzdF9fZm9vdGVyOmhvdmVyIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICB9XG5cbiAgICAgIC8qIERhcmsgbW9kZSBzdXBwb3J0IOKAlCBjbGFzcy1iYXNlZCBPTkxZIChJb25pYyBib2R5LmRhcmsgLyBodG1sLmlvbi1wYWxldHRlLWRhcmspICovXG4gICAgICA6aG9zdC1jb250ZXh0KC5kYXJrKSAuZmVhdHVyZV9fdGl0bGUsXG4gICAgICA6aG9zdC1jb250ZXh0KC5pb24tcGFsZXR0ZS1kYXJrKSAuZmVhdHVyZV9fdGl0bGUsXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmZlYXR1cmVfX3RpdGxlLFxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspIC5mZWF0dXJlX190aXRsZSxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmZlYXR1cmVfX3RpdGxlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjZmZmKTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dCguZGFyaykgLmZlYXR1cmVfX2Rlc2NyaXB0aW9uLFxuICAgICAgOmhvc3QtY29udGV4dCguaW9uLXBhbGV0dGUtZGFyaykgLmZlYXR1cmVfX2Rlc2NyaXB0aW9uLFxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5mZWF0dXJlX19kZXNjcmlwdGlvbixcbiAgICAgIDpob3N0LWNvbnRleHQoYm9keS5kYXJrKSAuZmVhdHVyZV9fZGVzY3JpcHRpb24sXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5mZWF0dXJlX19kZXNjcmlwdGlvbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjYTBhMGEwKTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dCguZGFyaykgLmZlYXR1cmUtLWNsaWNrYWJsZTpob3ZlcixcbiAgICAgIDpob3N0LWNvbnRleHQoLmlvbi1wYWxldHRlLWRhcmspIC5mZWF0dXJlLS1jbGlja2FibGU6aG92ZXIsXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmZlYXR1cmUtLWNsaWNrYWJsZTpob3ZlcixcbiAgICAgIDpob3N0LWNvbnRleHQoYm9keS5kYXJrKSAuZmVhdHVyZS0tY2xpY2thYmxlOmhvdmVyLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuZmVhdHVyZS0tY2xpY2thYmxlOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA0KTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGZWF0dXJlc0xpc3RDb21wb25lbnQge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIG5hdmlnYXRpb24gPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuXG4gIC8qKiBDb21wb25lbnQgY29uZmlndXJhdGlvbiAqL1xuICByZWFkb25seSBwcm9wcyA9IGlucHV0LnJlcXVpcmVkPEZlYXR1cmVzTGlzdE1ldGFkYXRhPigpO1xuXG4gIC8qKiBFbWl0aWRvIGFsIHRvY2FyIHVuIGl0ZW0gKGNvbiBzdSBgdG9rZW5gKS4gKi9cbiAgcmVhZG9ubHkgaXRlbUNsaWNrID0gb3V0cHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgLyoqIEVtaXRpZG8gYWwgdG9jYXIgZWwgZm9vdGVyIGxpbmsgKGNvbiBzdSBgdG9rZW5gKS4gKi9cbiAgcmVhZG9ubHkgZm9vdGVyQ2xpY2sgPSBvdXRwdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cGFuZGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgZXhwYW5kZWQgPSB0aGlzLl9leHBhbmRlZC5hc1JlYWRvbmx5KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKCdGZWF0dXJlc0xpc3QnKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudCgnRmVhdHVyZXNMaXN0JywgRkVBVFVSRVNfTElTVF9JMThOKTtcbiAgICB9XG4gIH1cblxuICAvKiogTWVyZ2VkIGNvbmZpZ3VyYXRpb24gd2l0aCBkZWZhdWx0cyAqL1xuICBjb25maWcgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIC4uLkZFQVRVUkVTX0xJU1RfREVGQVVMVFMsXG4gICAgLi4udGhpcy5wcm9wcygpLFxuICB9KSk7XG5cbiAgLyoqIEl0ZW1zIHZpc2libGVzIHNlZ8O6biBlbCBlc3RhZG8gZGUgY29sYXBzby4gKi9cbiAgdmlzaWJsZUZlYXR1cmVzID0gY29tcHV0ZWQ8RmVhdHVyZUl0ZW1bXT4oKCkgPT4ge1xuICAgIGNvbnN0IGNmZyA9IHRoaXMuY29uZmlnKCk7XG4gICAgY29uc3QgYWxsID0gY2ZnLmZlYXR1cmVzID8/IFtdO1xuICAgIGlmIChjZmcubWF4VmlzaWJsZSA+IDAgJiYgIXRoaXMuX2V4cGFuZGVkKCkgJiYgYWxsLmxlbmd0aCA+IGNmZy5tYXhWaXNpYmxlKSB7XG4gICAgICByZXR1cm4gYWxsLnNsaWNlKDAsIGNmZy5tYXhWaXNpYmxlKTtcbiAgICB9XG4gICAgcmV0dXJuIGFsbDtcbiAgfSk7XG5cbiAgLyoqIFNpIGhheSBpdGVtcyBkZSBzb2JyYSBwYXJhIGNvbGFwc2FyL2V4cGFuZGlyLiAqL1xuICBjYW5Db2xsYXBzZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjZmcgPSB0aGlzLmNvbmZpZygpO1xuICAgIHJldHVybiBjZmcubWF4VmlzaWJsZSA+IDAgJiYgKGNmZy5mZWF0dXJlcz8ubGVuZ3RoID8/IDApID4gY2ZnLm1heFZpc2libGU7XG4gIH0pO1xuXG4gIHNob3dNb3JlVGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB0aGlzLmNvbmZpZygpLnNob3dNb3JlTGFiZWwgfHwgdGhpcy5pMThuLnQoJ3Nob3dNb3JlJywgJ0ZlYXR1cmVzTGlzdCcpO1xuICB9KTtcblxuICBzaG93TGVzc1RleHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5jb25maWcoKS5zaG93TGVzc0xhYmVsIHx8IHRoaXMuaTE4bi50KCdzaG93TGVzcycsICdGZWF0dXJlc0xpc3QnKTtcbiAgfSk7XG5cbiAgLyoqIFJlc29sdmVkIGljb24gY29sb3IgKGhhbmRsZXMgSW9uaWMgY29sb3JzIGFuZCBDU1MgY29sb3JzKSAqL1xuICBpY29uQ29sb3JTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb2xvciA9IHRoaXMuY29uZmlnKCkuaWNvbkNvbG9yO1xuICAgIGlmIChjb2xvciAmJiAhY29sb3Iuc3RhcnRzV2l0aCgnIycpICYmICFjb2xvci5zdGFydHNXaXRoKCdyZ2InKSkge1xuICAgICAgcmV0dXJuIGB2YXIoLS1pb24tY29sb3ItJHtjb2xvcn0pYDtcbiAgICB9XG4gICAgcmV0dXJuIGNvbG9yO1xuICB9KTtcblxuICB0b2dnbGUoKTogdm9pZCB7XG4gICAgdGhpcy5fZXhwYW5kZWQuc2V0KCF0aGlzLl9leHBhbmRlZCgpKTtcbiAgfVxuXG4gIG9uSXRlbShmZWF0dXJlOiBGZWF0dXJlSXRlbSk6IHZvaWQge1xuICAgIGlmIChmZWF0dXJlLnRva2VuICE9IG51bGwpIHtcbiAgICAgIHRoaXMuaXRlbUNsaWNrLmVtaXQoZmVhdHVyZS50b2tlbik7XG4gICAgfVxuICB9XG5cbiAgb25Gb290ZXIoZXZlbnQ6IE1vdXNlRXZlbnQsIGxpbms6IEZlYXR1cmVzTGlzdEZvb3RlckxpbmspOiB2b2lkIHtcbiAgICB0aGlzLmZvb3RlckNsaWNrLmVtaXQobGluay50b2tlbik7XG4gICAgaWYgKGxpbmsuaHJlZikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMubmF2aWdhdGlvbi5vcGVuSW5OZXdUYWIobGluay5ocmVmKTtcbiAgICB9XG4gIH1cblxuICAvKiogR2V0IHRyYW5zbGF0ZWQgdGl0bGUgb3IgcmV0dXJuIGRpcmVjdCB0ZXh0ICovXG4gIGdldFRpdGxlKGZlYXR1cmU6IEZlYXR1cmVJdGVtKTogc3RyaW5nIHtcbiAgICBjb25zdCBuYW1lc3BhY2UgPSB0aGlzLnByb3BzKCkuaTE4bk5hbWVzcGFjZTtcbiAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgICAgcmV0dXJuIHRoaXMuaTE4bi50KGZlYXR1cmUudGl0bGVLZXksIG5hbWVzcGFjZSk7XG4gICAgfVxuICAgIHJldHVybiBmZWF0dXJlLnRpdGxlS2V5O1xuICB9XG5cbiAgLyoqIEdldCB0cmFuc2xhdGVkIGRlc2NyaXB0aW9uIG9yIHJldHVybiBkaXJlY3QgdGV4dCAqL1xuICBnZXREZXNjcmlwdGlvbihmZWF0dXJlOiBGZWF0dXJlSXRlbSk6IHN0cmluZyB7XG4gICAgY29uc3QgbmFtZXNwYWNlID0gdGhpcy5wcm9wcygpLmkxOG5OYW1lc3BhY2U7XG4gICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICAgIHJldHVybiB0aGlzLmkxOG4udChmZWF0dXJlLmRlc2NyaXB0aW9uS2V5LCBuYW1lc3BhY2UpO1xuICAgIH1cbiAgICByZXR1cm4gZmVhdHVyZS5kZXNjcmlwdGlvbktleTtcbiAgfVxufVxuIl19
@@ -2,7 +2,7 @@ import { Component, inject, Input, ViewChild } from '@angular/core';
2
2
  import { IonIcon } from '@ionic/angular/standalone';
3
3
  import { I18nService } from '../../../services/i18n';
4
4
  import { ButtonComponent } from '../../atoms/button/button.component';
5
- import { PrimarySolidDefaultRoundButton } from '../../atoms/button/factory';
5
+ import { button } from '../../atoms/button/factory';
6
6
  import { TextComponent } from '../../atoms/text/text.component';
7
7
  import * as i0 from "@angular/core";
8
8
  /**
@@ -22,7 +22,11 @@ export class FileInputComponent {
22
22
  ngOnInit() {
23
23
  // Initialize button with i18n text
24
24
  this.contrastButton = {
25
- ...PrimarySolidDefaultRoundButton(this.props?.buttonText || this.i18n.t('uploadFile')),
25
+ ...button({
26
+ text: this.props?.buttonText || this.i18n.t('uploadFile'),
27
+ fill: 'solid',
28
+ shape: 'round',
29
+ }),
26
30
  color: 'light',
27
31
  };
28
32
  }
@@ -87,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
87
91
  type: ViewChild,
88
92
  args: ['fileInput']
89
93
  }] } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2ZpbGUtaW5wdXQvZmlsZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBNEJoRTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBZ0I3QjtRQUxRLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFLcEIsQ0FBQztJQUVoQixRQUFRO1FBQ04sbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxjQUFjLEdBQUc7WUFDcEIsR0FBRyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RixLQUFLLEVBQUUsT0FBTztTQUNmLENBQUM7SUFDSixDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLGtCQUFrQjtRQUNoQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1FBQ2hDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFLO1FBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDMUMsQ0FBQzsrR0ExQ1Usa0JBQWtCO21HQUFsQixrQkFBa0IsOE1BOUJuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQscTBHQWxCUyxPQUFPLDJKQUFFLGFBQWEsd0VBQUUsZUFBZTs7NEZBK0J0QyxrQkFBa0I7a0JBbEM5QixTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLFlBQ3hDOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVDt3REFvQlEsS0FBSztzQkFBYixLQUFLO2dCQUVrQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJpbWFyeVNvbGlkRGVmYXVsdFJvdW5kQnV0dG9uIH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2ZhY3RvcnknO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBGaWxlSW5wdXRNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZmlsZS1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25JY29uLCBUZXh0Q29tcG9uZW50LCBCdXR0b25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJmaWxlLWNvbnRhaW5lclwiPlxuICAgICAgPGlucHV0IHN0eWxlPVwiZGlzcGxheTogbm9uZVwiIHR5cGU9XCJmaWxlXCIgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCIgI2ZpbGVJbnB1dCBbYWNjZXB0XT1cInByb3BzLmFjY2VwdFwiIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwibmFtZS1jb250YWluZXJcIj5cbiAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cInNlbGVjdGVkRmlsZSA/ICdjaGVja21hcmstY2lyY2xlLW91dGxpbmUnIDogJ2FsZXJ0LWNpcmNsZS1vdXRsaW5lJ1wiPjwvaW9uLWljb24+XG4gICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDRweDtcIlxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBjb250ZW50OiBnZXRGaWxlRGlzcGxheVRleHQoKSxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgIH1cIlxuICAgICAgICA+PC92YWwtdGV4dD5cbiAgICAgIDwvZGl2PlxuICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cImNvbnRyYXN0QnV0dG9uXCIgKG9uQ2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj48L3ZhbC1idXR0b24+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1maWxlLWlucHV0XG4gKlxuICogQSBmaWxlIGlucHV0IGNvbXBvbmVudCBmb3IgdXBsb2FkaW5nIGZpbGVzLCBpbnRlZ3JhdGVkIHdpdGggQW5ndWxhciBmb3Jtcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1maWxlLWlucHV0IFtwcm9wc109XCJ7IGNvbnRyb2w6IG15Q29udHJvbCwgYWNjZXB0OiAnaW1hZ2UvKicgfVwiPjwvdmFsLWZpbGUtaW5wdXQ+XG4gKlxuICogQGlucHV0IHByb3BzOiBGaWxlSW5wdXRNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBmaWxlIGlucHV0IChmb3JtIGNvbnRyb2wsIGFjY2VwdCB0eXBlcywgZXRjLilcbiAqL1xuZXhwb3J0IGNsYXNzIEZpbGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBJbnB1dCBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICogQHR5cGUge0ZpbGVJbnB1dE1ldGFkYXRhfVxuICAgKiBAcHJvcGVydHkgY29udHJvbCAtIFRoZSBBbmd1bGFyIEZvcm1Db250cm9sIGZvciB0aGUgZmlsZSBpbnB1dC5cbiAgICogQHByb3BlcnR5IGFjY2VwdCAtIEFjY2VwdGVkIGZpbGUgdHlwZXMgKGUuZy4sICdpbWFnZS8qJywgJy5wZGYnKS5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBGaWxlSW5wdXRNZXRhZGF0YTtcblxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQ7XG5cbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICBjb250cmFzdEJ1dHRvbjogQnV0dG9uTWV0YWRhdGE7XG4gIHNlbGVjdGVkRmlsZTogRmlsZTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBidXR0b24gd2l0aCBpMThuIHRleHRcbiAgICB0aGlzLmNvbnRyYXN0QnV0dG9uID0ge1xuICAgICAgLi4uUHJpbWFyeVNvbGlkRGVmYXVsdFJvdW5kQnV0dG9uKHRoaXMucHJvcHM/LmJ1dHRvblRleHQgfHwgdGhpcy5pMThuLnQoJ3VwbG9hZEZpbGUnKSksXG4gICAgICBjb2xvcjogJ2xpZ2h0JyxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEdldCBkaXNwbGF5IHRleHQgZm9yIGZpbGUgc3RhdHVzICovXG4gIGdldEZpbGVEaXNwbGF5VGV4dCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsZSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRGaWxlLm5hbWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb3BzPy5ub0ZpbGVUZXh0IHx8IHRoaXMuaTE4bi50KCdub0ZpbGVTZWxlY3RlZCcpO1xuICB9XG5cbiAgb25GaWxlU2VsZWN0ZWQoZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXTtcbiAgICB0aGlzLnByb3BzLmNvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZEZpbGUpO1xuICB9XG5cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEZpbGUgPSBudWxsO1xuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgfVxufVxuIl19
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2ZpbGUtaW5wdXQvZmlsZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOztBQTRCaEU7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQWdCN0I7UUFMUSxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBS3BCLENBQUM7SUFFaEIsUUFBUTtRQUNOLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsY0FBYyxHQUFHO1lBQ3BCLEdBQUcsTUFBTSxDQUFDO2dCQUNSLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7Z0JBQ3pELElBQUksRUFBRSxPQUFPO2dCQUNiLEtBQUssRUFBRSxPQUFPO2FBQ2YsQ0FBQztZQUNGLEtBQUssRUFBRSxPQUFPO1NBQ2YsQ0FBQztJQUNKLENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsa0JBQWtCO1FBQ2hCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDaEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQUs7UUFDbEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUMxQyxDQUFDOytHQTlDVSxrQkFBa0I7bUdBQWxCLGtCQUFrQiw4TUE5Qm5COzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVCxxMEdBbEJTLE9BQU8sMkpBQUUsYUFBYSx3RUFBRSxlQUFlOzs0RkErQnRDLGtCQUFrQjtrQkFsQzlCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsWUFDeEM7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJUO3dEQW9CUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRWtCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBidXR0b24gfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vZmFjdG9yeSc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEZpbGVJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1maWxlLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbkljb24sIFRleHRDb21wb25lbnQsIEJ1dHRvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImZpbGUtY29udGFpbmVyXCI+XG4gICAgICA8aW5wdXQgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgdHlwZT1cImZpbGVcIiAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIiAjZmlsZUlucHV0IFthY2NlcHRdPVwicHJvcHMuYWNjZXB0XCIgLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJuYW1lLWNvbnRhaW5lclwiPlxuICAgICAgICA8aW9uLWljb24gW25hbWVdPVwic2VsZWN0ZWRGaWxlID8gJ2NoZWNrbWFyay1jaXJjbGUtb3V0bGluZScgOiAnYWxlcnQtY2lyY2xlLW91dGxpbmUnXCI+PC9pb24taWNvbj5cbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogNHB4O1wiXG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IGdldEZpbGVEaXNwbGF5VGV4dCgpLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgfVwiXG4gICAgICAgID48L3ZhbC10ZXh0PlxuICAgICAgPC9kaXY+XG4gICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwiY29udHJhc3RCdXR0b25cIiAob25DbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPjwvdmFsLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWZpbGUtaW5wdXRcbiAqXG4gKiBBIGZpbGUgaW5wdXQgY29tcG9uZW50IGZvciB1cGxvYWRpbmcgZmlsZXMsIGludGVncmF0ZWQgd2l0aCBBbmd1bGFyIGZvcm1zLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLWZpbGUtaW5wdXQgW3Byb3BzXT1cInsgY29udHJvbDogbXlDb250cm9sLCBhY2NlcHQ6ICdpbWFnZS8qJyB9XCI+PC92YWwtZmlsZS1pbnB1dD5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IEZpbGVJbnB1dE1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGZpbGUgaW5wdXQgKGZvcm0gY29udHJvbCwgYWNjZXB0IHR5cGVzLCBldGMuKVxuICovXG5leHBvcnQgY2xhc3MgRmlsZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIElucHV0IGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKiBAdHlwZSB7RmlsZUlucHV0TWV0YWRhdGF9XG4gICAqIEBwcm9wZXJ0eSBjb250cm9sIC0gVGhlIEFuZ3VsYXIgRm9ybUNvbnRyb2wgZm9yIHRoZSBmaWxlIGlucHV0LlxuICAgKiBAcHJvcGVydHkgYWNjZXB0IC0gQWNjZXB0ZWQgZmlsZSB0eXBlcyAoZS5nLiwgJ2ltYWdlLyonLCAnLnBkZicpLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IEZpbGVJbnB1dE1ldGFkYXRhO1xuXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dDtcblxuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIGNvbnRyYXN0QnV0dG9uOiBCdXR0b25NZXRhZGF0YTtcbiAgc2VsZWN0ZWRGaWxlOiBGaWxlO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBJbml0aWFsaXplIGJ1dHRvbiB3aXRoIGkxOG4gdGV4dFxuICAgIHRoaXMuY29udHJhc3RCdXR0b24gPSB7XG4gICAgICAuLi5idXR0b24oe1xuICAgICAgICB0ZXh0OiB0aGlzLnByb3BzPy5idXR0b25UZXh0IHx8IHRoaXMuaTE4bi50KCd1cGxvYWRGaWxlJyksXG4gICAgICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgfSksXG4gICAgICBjb2xvcjogJ2xpZ2h0JyxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEdldCBkaXNwbGF5IHRleHQgZm9yIGZpbGUgc3RhdHVzICovXG4gIGdldEZpbGVEaXNwbGF5VGV4dCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsZSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRGaWxlLm5hbWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb3BzPy5ub0ZpbGVUZXh0IHx8IHRoaXMuaTE4bi50KCdub0ZpbGVTZWxlY3RlZCcpO1xuICB9XG5cbiAgb25GaWxlU2VsZWN0ZWQoZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXTtcbiAgICB0aGlzLnByb3BzLmNvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZEZpbGUpO1xuICB9XG5cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEZpbGUgPSBudWxsO1xuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgfVxufVxuIl19
@@ -8,14 +8,23 @@ import * as i1 from "@angular/common";
8
8
  * val-hint
9
9
  *
10
10
  * Displays validation error messages for a form input, using Angular forms.
11
+ * Cuando muestra un error, el contenedor se anuncia a tecnologías asistivas
12
+ * (`role="alert"` + `aria-live="assertive"`). Acepta un `id` para que el input
13
+ * asociado lo referencie vía `aria-describedby`.
11
14
  *
12
15
  * @example
13
- * <val-hint [props]="{ control: myControl, errors: { required: 'Required field' } }"></val-hint>
16
+ * <val-hint [props]="{ control: myControl, errors: { required: 'Required field' } }" id="email-error"></val-hint>
14
17
  *
15
18
  * @input props: InputMetadata - Configuration for the input (form control, errors, etc.)
19
+ * @input id: string - Id del contenedor, para enlace `aria-describedby` desde el input.
16
20
  */
17
21
  export class HintComponent {
18
22
  constructor() {
23
+ /**
24
+ * Si el hint representa un error (vs un hint informativo). Hoy `val-hint`
25
+ * siempre muestra errores de validación, así que por defecto es `true`.
26
+ */
27
+ this.isError = true;
19
28
  this.i18n = inject(I18nService);
20
29
  }
21
30
  ngOnInit() { }
@@ -55,8 +64,14 @@ export class HintComponent {
55
64
  return errors;
56
65
  }
57
66
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HintComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
58
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: HintComponent, isStandalone: true, selector: "val-hint", inputs: { props: "props" }, ngImport: i0, template: `
59
- <div class="hint-container" *ngIf="shouldShowErrors">
67
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: HintComponent, isStandalone: true, selector: "val-hint", inputs: { props: "props", id: "id", isError: "isError" }, ngImport: i0, template: `
68
+ <div
69
+ class="hint-container"
70
+ *ngIf="shouldShowErrors"
71
+ [attr.id]="id"
72
+ [attr.role]="isError ? 'alert' : 'status'"
73
+ [attr.aria-live]="isError ? 'assertive' : 'polite'"
74
+ >
60
75
  <val-text
61
76
  *ngFor="let e of Errors"
62
77
  [props]="{
@@ -72,7 +87,13 @@ export class HintComponent {
72
87
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HintComponent, decorators: [{
73
88
  type: Component,
74
89
  args: [{ selector: 'val-hint', standalone: true, imports: [CommonModule, TextComponent], template: `
75
- <div class="hint-container" *ngIf="shouldShowErrors">
90
+ <div
91
+ class="hint-container"
92
+ *ngIf="shouldShowErrors"
93
+ [attr.id]="id"
94
+ [attr.role]="isError ? 'alert' : 'status'"
95
+ [attr.aria-live]="isError ? 'assertive' : 'polite'"
96
+ >
76
97
  <val-text
77
98
  *ngFor="let e of Errors"
78
99
  [props]="{
@@ -86,5 +107,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
86
107
  `, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:var(--val-form-field-gap, .5rem) 0}@media (min-width: 768px){.input{margin:var(--val-form-field-gap, .75rem) 0}}.submit-actions--sticky{position:sticky;bottom:0;z-index:1;background:var(--ion-background-color);border-top:1px solid var(--ion-color-step-150, rgba(0, 0, 0, .08));padding:.75rem 0 calc(.75rem + env(safe-area-inset-bottom))}.field-description{display:block;font-size:.75rem;color:var(--ion-color-dark);margin-bottom:.25rem;line-height:1.4}.hint-container{margin-top:.25rem}\n"] }]
87
108
  }], ctorParameters: () => [], propDecorators: { props: [{
88
109
  type: Input
110
+ }], id: [{
111
+ type: Input
112
+ }], isError: [{
113
+ type: Input
89
114
  }] } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2hpbnQvaGludC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFzQmhFOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBV3hCO1FBRlEsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVwQixDQUFDO0lBRWhCLFFBQVEsS0FBSSxDQUFDO0lBRWIsSUFBSSxnQkFBZ0I7UUFDbEIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLG1DQUFtQztZQUNuQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzFELDhDQUE4QztZQUM5QyxNQUFNLFdBQVcsR0FDZixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckcsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9HLE9BQU8sV0FBVyxJQUFJLFNBQVMsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFO1lBQ3JCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pELGVBQWU7Z0JBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUMxRCw2Q0FBNkM7Z0JBQzdDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFeEQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDdkMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZELENBQUM7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDckMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3JELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOytHQXBEVSxhQUFhO21HQUFiLGFBQWEsZ0dBekJkOzs7Ozs7Ozs7Ozs7R0FZVCxpd0dBYlMsWUFBWSxnUUFBRSxhQUFhOzs0RkEwQjFCLGFBQWE7a0JBN0J6QixTQUFTOytCQUNFLFVBQVUsY0FDUixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQzVCOzs7Ozs7Ozs7Ozs7R0FZVDt3REFvQlEsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWhpbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUZXh0Q29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiaGludC1jb250YWluZXJcIiAqbmdJZj1cInNob3VsZFNob3dFcnJvcnNcIj5cbiAgICAgIDx2YWwtdGV4dFxuICAgICAgICAqbmdGb3I9XCJsZXQgZSBvZiBFcnJvcnNcIlxuICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgIGNvbnRlbnQ6IGUsXG4gICAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgIH1cIlxuICAgICAgPjwvdmFsLXRleHQ+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2hpbnQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1oaW50XG4gKlxuICogRGlzcGxheXMgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcyBmb3IgYSBmb3JtIGlucHV0LCB1c2luZyBBbmd1bGFyIGZvcm1zLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLWhpbnQgW3Byb3BzXT1cInsgY29udHJvbDogbXlDb250cm9sLCBlcnJvcnM6IHsgcmVxdWlyZWQ6ICdSZXF1aXJlZCBmaWVsZCcgfSB9XCI+PC92YWwtaGludD5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IElucHV0TWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgaW5wdXQgKGZvcm0gY29udHJvbCwgZXJyb3JzLCBldGMuKVxuICovXG5leHBvcnQgY2xhc3MgSGludENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBJbnB1dCBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICogQHR5cGUge0lucHV0TWV0YWRhdGF9XG4gICAqIEBwcm9wZXJ0eSBjb250cm9sIC0gVGhlIEFuZ3VsYXIgRm9ybUNvbnRyb2wgZm9yIHRoZSBpbnB1dC5cbiAgICogQHByb3BlcnR5IGVycm9ycyAtIFRoZSBlcnJvciBtZXNzYWdlcyBtYXBwaW5nLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IElucHV0TWV0YWRhdGE7XG5cbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIGdldCBzaG91bGRTaG93RXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnByb3BzLmNvbnRyb2wpIHtcbiAgICAgIC8vIE5vcm1hbCBmaWVsZCB3aXRoIHNpbmdsZSBjb250cm9sXG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5jb250cm9sLmludmFsaWQgJiYgKHRoaXMucHJvcHMuY29udHJvbC50b3VjaGVkIHx8IHRoaXMucHJvcHMuY29udHJvbC5kaXJ0eSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLmZyb21Db250cm9sICYmIHRoaXMucHJvcHMudG9Db250cm9sKSB7XG4gICAgICAvLyBOVU1CRVJfRlJPTV9UTyBmaWVsZCB3aXRoIHNlcGFyYXRlIGNvbnRyb2xzXG4gICAgICBjb25zdCBmcm9tSW52YWxpZCA9XG4gICAgICAgIHRoaXMucHJvcHMuZnJvbUNvbnRyb2wuaW52YWxpZCAmJiAodGhpcy5wcm9wcy5mcm9tQ29udHJvbC50b3VjaGVkIHx8IHRoaXMucHJvcHMuZnJvbUNvbnRyb2wuZGlydHkpO1xuICAgICAgY29uc3QgdG9JbnZhbGlkID0gdGhpcy5wcm9wcy50b0NvbnRyb2wuaW52YWxpZCAmJiAodGhpcy5wcm9wcy50b0NvbnRyb2wudG91Y2hlZCB8fCB0aGlzLnByb3BzLnRvQ29udHJvbC5kaXJ0eSk7XG4gICAgICByZXR1cm4gZnJvbUludmFsaWQgfHwgdG9JbnZhbGlkO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgRXJyb3JzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5wcm9wcy5lcnJvcnMgfHwge30pO1xuICAgIGNvbnN0IGVycm9ycyA9IFtdO1xuXG4gICAga2V5cy5tYXAoKGU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvcHMuY29udHJvbCAmJiB0aGlzLnByb3BzLmNvbnRyb2wuaGFzRXJyb3IoZSkpIHtcbiAgICAgICAgLy8gTm9ybWFsIGZpZWxkXG4gICAgICAgIGVycm9ycy5wdXNoKHRoaXMucHJvcHMuZXJyb3JzW2VdKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5mcm9tQ29udHJvbCAmJiB0aGlzLnByb3BzLnRvQ29udHJvbCkge1xuICAgICAgICAvLyBOVU1CRVJfRlJPTV9UTyBmaWVsZCAtIGNoZWNrIGJvdGggY29udHJvbHNcbiAgICAgICAgY29uc3QgZnJvbUxhYmVsID0gdGhpcy5wcm9wcy5mcm9tTGFiZWwgfHwgdGhpcy5pMThuLnQoJ2Zyb20nKTtcbiAgICAgICAgY29uc3QgdG9MYWJlbCA9IHRoaXMucHJvcHMudG9MYWJlbCB8fCB0aGlzLmkxOG4udCgndG8nKTtcblxuICAgICAgICBpZiAodGhpcy5wcm9wcy5mcm9tQ29udHJvbC5oYXNFcnJvcihlKSkge1xuICAgICAgICAgIGVycm9ycy5wdXNoKGAke2Zyb21MYWJlbH06ICR7dGhpcy5wcm9wcy5lcnJvcnNbZV19YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJvcHMudG9Db250cm9sLmhhc0Vycm9yKGUpKSB7XG4gICAgICAgICAgZXJyb3JzLnB1c2goYCR7dG9MYWJlbH06ICR7dGhpcy5wcm9wcy5lcnJvcnNbZV19YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cbn1cbiJdfQ==
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2hpbnQvaGludC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUE0QmhFOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQXVCeEI7UUFSQTs7O1dBR0c7UUFDTSxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBRWhCLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFcEIsQ0FBQztJQUVoQixRQUFRLEtBQUksQ0FBQztJQUViLElBQUksZ0JBQWdCO1FBQ2xCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN2QixtQ0FBbUM7WUFDbkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEcsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMxRCw4Q0FBOEM7WUFDOUMsTUFBTSxXQUFXLEdBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JHLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvRyxPQUFPLFdBQVcsSUFBSSxTQUFTLENBQUM7UUFDbEMsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbEQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWxCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRTtZQUNyQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN6RCxlQUFlO2dCQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDMUQsNkNBQTZDO2dCQUM3QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDOUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRXhELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3ZDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RCxDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzsrR0FoRVUsYUFBYTttR0FBYixhQUFhLDhIQW5DZDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JULGl3R0FuQlMsWUFBWSxnUUFBRSxhQUFhOzs0RkFvQzFCLGFBQWE7a0JBdkN6QixTQUFTOytCQUNFLFVBQVUsY0FDUixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQzVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQ7d0RBd0JRLEtBQUs7c0JBQWIsS0FBSztnQkFNRyxFQUFFO3NCQUFWLEtBQUs7Z0JBTUcsT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWhpbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUZXh0Q29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImhpbnQtY29udGFpbmVyXCJcbiAgICAgICpuZ0lmPVwic2hvdWxkU2hvd0Vycm9yc1wiXG4gICAgICBbYXR0ci5pZF09XCJpZFwiXG4gICAgICBbYXR0ci5yb2xlXT1cImlzRXJyb3IgPyAnYWxlcnQnIDogJ3N0YXR1cydcIlxuICAgICAgW2F0dHIuYXJpYS1saXZlXT1cImlzRXJyb3IgPyAnYXNzZXJ0aXZlJyA6ICdwb2xpdGUnXCJcbiAgICA+XG4gICAgICA8dmFsLXRleHRcbiAgICAgICAgKm5nRm9yPVwibGV0IGUgb2YgRXJyb3JzXCJcbiAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICBjb250ZW50OiBlLFxuICAgICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICB9XCJcbiAgICAgID48L3ZhbC10ZXh0PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9oaW50LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtaGludFxuICpcbiAqIERpc3BsYXlzIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMgZm9yIGEgZm9ybSBpbnB1dCwgdXNpbmcgQW5ndWxhciBmb3Jtcy5cbiAqIEN1YW5kbyBtdWVzdHJhIHVuIGVycm9yLCBlbCBjb250ZW5lZG9yIHNlIGFudW5jaWEgYSB0ZWNub2xvZ8OtYXMgYXNpc3RpdmFzXG4gKiAoYHJvbGU9XCJhbGVydFwiYCArIGBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcImApLiBBY2VwdGEgdW4gYGlkYCBwYXJhIHF1ZSBlbCBpbnB1dFxuICogYXNvY2lhZG8gbG8gcmVmZXJlbmNpZSB2w61hIGBhcmlhLWRlc2NyaWJlZGJ5YC5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1oaW50IFtwcm9wc109XCJ7IGNvbnRyb2w6IG15Q29udHJvbCwgZXJyb3JzOiB7IHJlcXVpcmVkOiAnUmVxdWlyZWQgZmllbGQnIH0gfVwiIGlkPVwiZW1haWwtZXJyb3JcIj48L3ZhbC1oaW50PlxuICpcbiAqIEBpbnB1dCBwcm9wczogSW5wdXRNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBpbnB1dCAoZm9ybSBjb250cm9sLCBlcnJvcnMsIGV0Yy4pXG4gKiBAaW5wdXQgaWQ6IHN0cmluZyAtIElkIGRlbCBjb250ZW5lZG9yLCBwYXJhIGVubGFjZSBgYXJpYS1kZXNjcmliZWRieWAgZGVzZGUgZWwgaW5wdXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBIaW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIElucHV0IGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKiBAdHlwZSB7SW5wdXRNZXRhZGF0YX1cbiAgICogQHByb3BlcnR5IGNvbnRyb2wgLSBUaGUgQW5ndWxhciBGb3JtQ29udHJvbCBmb3IgdGhlIGlucHV0LlxuICAgKiBAcHJvcGVydHkgZXJyb3JzIC0gVGhlIGVycm9yIG1lc3NhZ2VzIG1hcHBpbmcuXG4gICAqL1xuICBASW5wdXQoKSBwcm9wczogSW5wdXRNZXRhZGF0YTtcblxuICAvKipcbiAgICogSWQgZGVsIGNvbnRlbmVkb3IgZGVsIGhpbnQuIExvIHBhc2EgYHZhbC1mb3JtYCBwYXJhIGVubGF6YXIgZWwgaW5wdXQgY29uIGVsXG4gICAqIG1lbnNhamUgZGUgZXJyb3IgdsOtYSBgYXJpYS1kZXNjcmliZWRieWAuXG4gICAqL1xuICBASW5wdXQoKSBpZD86IHN0cmluZztcblxuICAvKipcbiAgICogU2kgZWwgaGludCByZXByZXNlbnRhIHVuIGVycm9yICh2cyB1biBoaW50IGluZm9ybWF0aXZvKS4gSG95IGB2YWwtaGludGBcbiAgICogc2llbXByZSBtdWVzdHJhIGVycm9yZXMgZGUgdmFsaWRhY2nDs24sIGFzw60gcXVlIHBvciBkZWZlY3RvIGVzIGB0cnVlYC5cbiAgICovXG4gIEBJbnB1dCgpIGlzRXJyb3IgPSB0cnVlO1xuXG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCkge31cblxuICBnZXQgc2hvdWxkU2hvd0Vycm9ycygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5wcm9wcy5jb250cm9sKSB7XG4gICAgICAvLyBOb3JtYWwgZmllbGQgd2l0aCBzaW5nbGUgY29udHJvbFxuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY29udHJvbC5pbnZhbGlkICYmICh0aGlzLnByb3BzLmNvbnRyb2wudG91Y2hlZCB8fCB0aGlzLnByb3BzLmNvbnRyb2wuZGlydHkpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5mcm9tQ29udHJvbCAmJiB0aGlzLnByb3BzLnRvQ29udHJvbCkge1xuICAgICAgLy8gTlVNQkVSX0ZST01fVE8gZmllbGQgd2l0aCBzZXBhcmF0ZSBjb250cm9sc1xuICAgICAgY29uc3QgZnJvbUludmFsaWQgPVxuICAgICAgICB0aGlzLnByb3BzLmZyb21Db250cm9sLmludmFsaWQgJiYgKHRoaXMucHJvcHMuZnJvbUNvbnRyb2wudG91Y2hlZCB8fCB0aGlzLnByb3BzLmZyb21Db250cm9sLmRpcnR5KTtcbiAgICAgIGNvbnN0IHRvSW52YWxpZCA9IHRoaXMucHJvcHMudG9Db250cm9sLmludmFsaWQgJiYgKHRoaXMucHJvcHMudG9Db250cm9sLnRvdWNoZWQgfHwgdGhpcy5wcm9wcy50b0NvbnRyb2wuZGlydHkpO1xuICAgICAgcmV0dXJuIGZyb21JbnZhbGlkIHx8IHRvSW52YWxpZDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0IEVycm9ycygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucHJvcHMuZXJyb3JzIHx8IHt9KTtcbiAgICBjb25zdCBlcnJvcnMgPSBbXTtcblxuICAgIGtleXMubWFwKChlOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbnRyb2wgJiYgdGhpcy5wcm9wcy5jb250cm9sLmhhc0Vycm9yKGUpKSB7XG4gICAgICAgIC8vIE5vcm1hbCBmaWVsZFxuICAgICAgICBlcnJvcnMucHVzaCh0aGlzLnByb3BzLmVycm9yc1tlXSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuZnJvbUNvbnRyb2wgJiYgdGhpcy5wcm9wcy50b0NvbnRyb2wpIHtcbiAgICAgICAgLy8gTlVNQkVSX0ZST01fVE8gZmllbGQgLSBjaGVjayBib3RoIGNvbnRyb2xzXG4gICAgICAgIGNvbnN0IGZyb21MYWJlbCA9IHRoaXMucHJvcHMuZnJvbUxhYmVsIHx8IHRoaXMuaTE4bi50KCdmcm9tJyk7XG4gICAgICAgIGNvbnN0IHRvTGFiZWwgPSB0aGlzLnByb3BzLnRvTGFiZWwgfHwgdGhpcy5pMThuLnQoJ3RvJyk7XG5cbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZnJvbUNvbnRyb2wuaGFzRXJyb3IoZSkpIHtcbiAgICAgICAgICBlcnJvcnMucHVzaChgJHtmcm9tTGFiZWx9OiAke3RoaXMucHJvcHMuZXJyb3JzW2VdfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnRvQ29udHJvbC5oYXNFcnJvcihlKSkge1xuICAgICAgICAgIGVycm9ycy5wdXNoKGAke3RvTGFiZWx9OiAke3RoaXMucHJvcHMuZXJyb3JzW2VdfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG59XG4iXX0=