valtech-components 2.0.1007 → 2.0.1009

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 (44) hide show
  1. package/esm2022/lib/components/molecules/comment/comment.component.mjs +3 -3
  2. package/esm2022/lib/components/organisms/account-view/account-view.component.mjs +2 -2
  3. package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +3 -141
  4. package/esm2022/lib/components/organisms/organization-view/organization-view.i18n.mjs +1 -21
  5. package/esm2022/lib/components/organisms/profile-view/profile-view.component.mjs +6 -16
  6. package/esm2022/lib/components/templates/auth-background/auth-background.component.mjs +55 -23
  7. package/esm2022/lib/services/auth/auth.service.mjs +1 -14
  8. package/esm2022/lib/services/auth/types.mjs +1 -1
  9. package/esm2022/lib/services/org/org.service.mjs +1 -8
  10. package/esm2022/lib/services/org/types.mjs +1 -1
  11. package/esm2022/lib/services/preferences/preferences.service.mjs +36 -11
  12. package/esm2022/lib/version.mjs +2 -2
  13. package/esm2022/public-api.mjs +1 -7
  14. package/fesm2022/valtech-components.mjs +407 -1912
  15. package/fesm2022/valtech-components.mjs.map +1 -1
  16. package/lib/components/organisms/organization-view/organization-view.component.d.ts +0 -6
  17. package/lib/components/templates/auth-background/auth-background.component.d.ts +6 -2
  18. package/lib/services/auth/auth.service.d.ts +1 -7
  19. package/lib/services/auth/types.d.ts +0 -23
  20. package/lib/services/org/org.service.d.ts +1 -6
  21. package/lib/services/org/types.d.ts +0 -30
  22. package/lib/version.d.ts +1 -1
  23. package/package.json +1 -1
  24. package/public-api.d.ts +1 -8
  25. package/esm2022/lib/components/organisms/about-view/about-view.component.mjs +0 -436
  26. package/esm2022/lib/components/organisms/about-view/about-view.i18n.mjs +0 -61
  27. package/esm2022/lib/components/organisms/about-view/about.routes.mjs +0 -36
  28. package/esm2022/lib/components/organisms/about-view/types.mjs +0 -19
  29. package/esm2022/lib/components/organisms/api-keys-modal/api-keys-modal.component.mjs +0 -385
  30. package/esm2022/lib/components/organisms/api-keys-modal/api-keys-modal.i18n.mjs +0 -63
  31. package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.component.mjs +0 -313
  32. package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.i18n.mjs +0 -63
  33. package/esm2022/lib/services/apikeys/api-keys.service.mjs +0 -46
  34. package/esm2022/lib/services/apikeys/types.mjs +0 -7
  35. package/lib/components/organisms/about-view/about-view.component.d.ts +0 -88
  36. package/lib/components/organisms/about-view/about-view.i18n.d.ts +0 -14
  37. package/lib/components/organisms/about-view/about.routes.d.ts +0 -31
  38. package/lib/components/organisms/about-view/types.d.ts +0 -76
  39. package/lib/components/organisms/api-keys-modal/api-keys-modal.component.d.ts +0 -44
  40. package/lib/components/organisms/api-keys-modal/api-keys-modal.i18n.d.ts +0 -6
  41. package/lib/components/organisms/member-import-modal/member-import-modal.component.d.ts +0 -47
  42. package/lib/components/organisms/member-import-modal/member-import-modal.i18n.d.ts +0 -6
  43. package/lib/services/apikeys/api-keys.service.d.ts +0 -25
  44. package/lib/services/apikeys/types.d.ts +0 -46
@@ -44,7 +44,7 @@ export class AuthBackgroundComponent {
44
44
  this.config = computed(() => {
45
45
  const props = this._props();
46
46
  return {
47
- waveCount: props.waveCount ?? 45,
47
+ waveCount: props.waveCount ?? 16,
48
48
  waveColors: props.waveColors ?? this.defaultColors,
49
49
  showGrain: props.showGrain !== false,
50
50
  showGlass: props.showGlass !== false,
@@ -61,14 +61,22 @@ export class AuthBackgroundComponent {
61
61
  const newWaves = Array.from({ length: count }, (_, i) => {
62
62
  // Distribuir uniforme a lo largo del viewBox (0..800) — sin huecos arriba
63
63
  const y = ((i + 0.5) / count) * 800;
64
- const isThick = i % 5 === 0;
65
- const isMedium = i % 3 === 0 && !isThick;
66
- const amplitude = 10 + Math.random() * 20;
67
- const frequency = 1 + Math.random() * 2;
64
+ // Tiers (look "aurora"): pocas hero gruesas y luminosas, algunas mid, el
65
+ // resto tenues de fondo. Acentos de marca en las hero + alguna suelta.
66
+ const isHero = i % 5 === 0;
67
+ const isMedium = !isHero && i % 2 === 0;
68
+ const accent = isHero || i % 7 === 3;
69
+ // Hero más amplias para cintas que "respiran"; el resto, contenidas.
70
+ const amplitude = isHero ? 22 + Math.random() * 18 : 10 + Math.random() * 16;
71
+ // Frecuencia ENTERA (ciclos completos sobre el ancho 1440). Imprescindible
72
+ // para el loop seamless: con freq entero, path(x) === path(x ± 1440), así
73
+ // el translateX de una vuelta (1440px) calza exacto y NO hay salto/corte.
74
+ const frequency = 1 + Math.floor(Math.random() * 3); // 1 | 2 | 3
68
75
  const phase = Math.random() * Math.PI * 2;
69
- // Path extendido off-canvas (-400 .. 1840) para que translateX no deje huecos
70
- let path = `M-400,${y}`;
71
- for (let x = -400; x <= 1840; x += 40) {
76
+ // Path extendido a -1480 .. 2920 (≥ una vuelta de bleed a cada lado) para
77
+ // que el desplazamiento de ±1440px nunca deje el viewBox sin onda.
78
+ let path = `M-1480,${y}`;
79
+ for (let x = -1480; x <= 2920; x += 40) {
72
80
  const waveY = y + amplitude * Math.sin((x / 1440) * Math.PI * frequency * 2 + phase);
73
81
  path += ` L${x},${waveY.toFixed(1)}`;
74
82
  }
@@ -77,14 +85,16 @@ export class AuthBackgroundComponent {
77
85
  id: i,
78
86
  path,
79
87
  color,
80
- thickness: isThick ? 1.2 : isMedium ? 0.7 : 0.3,
81
- opacity: isThick ? 0.5 : isMedium ? 0.4 : 0.3,
82
- // Pulse vertical (equalizer) — ~1/3 de las waves son "rápidas"
83
- pulseDuration: Math.random() < 0.33 ? 0.8 + Math.random() * 0.8 : 1.6 + Math.random() * 2.4,
84
- pulseDelay: -Math.random() * 4,
85
- // Traveling horizontal ~1/3 más rápidas para sensación de ecualizador
86
- travelDuration: Math.random() < 0.33 ? 5 + Math.random() * 4 : 10 + Math.random() * 12,
87
- travelDelay: -Math.random() * 12,
88
+ thickness: isHero ? 2.2 + Math.random() * 0.8 : isMedium ? 1 : 0.5,
89
+ opacity: isHero ? 0.55 : isMedium ? 0.3 : 0.16,
90
+ glow: isHero,
91
+ accent,
92
+ // Drift vertical sutil (no "equalizer"): da vida sin saltos.
93
+ bob: 4 + Math.random() * 10,
94
+ // Flujo horizontal continuo. Duraciones variadas = parallax/profundidad.
95
+ // delay negativo desincroniza el arranque de cada capa.
96
+ travelDuration: 14 + Math.random() * 22,
97
+ travelDelay: -Math.random() * 30,
88
98
  travelDirection: i % 2 === 0 ? 'right' : 'left',
89
99
  };
90
100
  });
@@ -101,6 +111,16 @@ export class AuthBackgroundComponent {
101
111
  }
102
112
  <div class="wave-bg">
103
113
  <svg class="waves" viewBox="0 0 1440 800" preserveAspectRatio="none">
114
+ <defs>
115
+ <!-- Halo: blur por debajo del trazo nítido = cinta luminosa. -->
116
+ <filter id="wave-glow" x="-10%" y="-60%" width="120%" height="220%">
117
+ <feGaussianBlur stdDeviation="2.6" result="b" />
118
+ <feMerge>
119
+ <feMergeNode in="b" />
120
+ <feMergeNode in="SourceGraphic" />
121
+ </feMerge>
122
+ </filter>
123
+ </defs>
104
124
  @for (wave of waves(); track wave.id) {
105
125
  <path
106
126
  [attr.d]="wave.path"
@@ -108,9 +128,10 @@ export class AuthBackgroundComponent {
108
128
  [attr.stroke-width]="wave.thickness"
109
129
  [class.travel-left]="wave.travelDirection === 'left'"
110
130
  [class.travel-right]="wave.travelDirection === 'right'"
131
+ [class.glow]="wave.glow"
132
+ [class.accent]="wave.accent"
111
133
  [style.opacity]="wave.opacity"
112
- [style.--pulse-duration]="wave.pulseDuration + 's'"
113
- [style.--pulse-delay]="wave.pulseDelay + 's'"
134
+ [style.--bob]="wave.bob + 'px'"
114
135
  [style.--travel-duration]="wave.travelDuration + 's'"
115
136
  [style.--travel-delay]="wave.travelDelay + 's'"
116
137
  />
@@ -122,7 +143,7 @@ export class AuthBackgroundComponent {
122
143
  <ng-content></ng-content>
123
144
  </div>
124
145
  </section>
125
- `, isInline: true, styles: [":host{display:block;--auth-bg-start: #ffffff;--auth-bg-mid: #f8f9fa;--auth-bg-end: #f0f0f0;--auth-glass-bg: rgba(255, 255, 255, .3);--auth-grain-opacity: .035;--auth-wave-color: var(--ion-color-primary, #6366f1)}:host-context(body.dark),:host-context(.dark),:host-context(.ion-palette-dark),:host-context(html.ion-palette-dark),:host-context([data-theme=\"dark\"]){--auth-bg-start: #0f0f1a;--auth-bg-mid: #1a1a2e;--auth-bg-end: #16213e;--auth-glass-bg: rgba(0, 0, 0, .3);--auth-grain-opacity: .05;--auth-wave-color: var(--ion-color-primary, #818cf8)}.auth-background{position:relative;display:flex;align-items:center;padding:0;background:linear-gradient(135deg,var(--auth-bg-start) 0%,var(--auth-bg-mid) 50%,var(--auth-bg-end) 100%);overflow:hidden}.grain{position:absolute;inset:0;pointer-events:none;z-index:0;opacity:var(--auth-grain-opacity);background-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.5' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E\")}.glass-layer{position:absolute;inset:0;pointer-events:none;z-index:1;background:var(--auth-glass-bg);backdrop-filter:blur(3px) saturate(120%);-webkit-backdrop-filter:blur(3px) saturate(120%)}.wave-bg{position:absolute;inset:0;pointer-events:none;z-index:0;transition:filter .3s ease}:host-context(body.dark) .wave-bg,:host-context(.dark) .wave-bg,:host-context(.ion-palette-dark) .wave-bg,:host-context(html.ion-palette-dark) .wave-bg,:host-context([data-theme=\"dark\"]) .wave-bg{filter:invert(1) opacity(.6)}.waves{width:100%;height:100%;overflow:visible}.waves path{fill:none;transform-box:fill-box;transform-origin:center;will-change:transform;animation:wave-pulse var(--pulse-duration, 3s) ease-in-out var(--pulse-delay, 0s) infinite alternate,wave-travel-right var(--travel-duration, 12s) linear var(--travel-delay, 0s) infinite}.waves path.travel-left{animation:wave-pulse var(--pulse-duration, 3s) ease-in-out var(--pulse-delay, 0s) infinite alternate,wave-travel-left var(--travel-duration, 12s) linear var(--travel-delay, 0s) infinite}@keyframes wave-pulse{0%{transform:scaleY(.85)}50%{transform:scaleY(1.25)}to{transform:scaleY(.85)}}@keyframes wave-travel-right{0%{transform:translate(-300px)}to{transform:translate(300px)}}@keyframes wave-travel-left{0%{transform:translate(300px)}to{transform:translate(-300px)}}@media (prefers-reduced-motion: reduce){.waves path{animation:none}}.content-layer{position:relative;z-index:2;width:100%;height:100%;display:flex;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
146
+ `, isInline: true, styles: [":host{display:block;--auth-bg-start: #ffffff;--auth-bg-mid: #f8f9fa;--auth-bg-end: #f0f0f0;--auth-glass-bg: rgba(255, 255, 255, .3);--auth-grain-opacity: .035;--auth-wave-color: var(--ion-color-primary, #6366f1)}:host-context(body.dark),:host-context(.dark),:host-context(.ion-palette-dark),:host-context(html.ion-palette-dark),:host-context([data-theme=\"dark\"]){--auth-bg-start: #0f0f1a;--auth-bg-mid: #1a1a2e;--auth-bg-end: #16213e;--auth-glass-bg: rgba(0, 0, 0, .3);--auth-grain-opacity: .05;--auth-wave-color: var(--ion-color-primary, #818cf8)}.auth-background{position:relative;display:flex;align-items:center;padding:0;background:linear-gradient(135deg,var(--auth-bg-start) 0%,var(--auth-bg-mid) 50%,var(--auth-bg-end) 100%);overflow:hidden}.grain{position:absolute;inset:0;pointer-events:none;z-index:0;opacity:var(--auth-grain-opacity);background-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.5' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E\")}.glass-layer{position:absolute;inset:0;pointer-events:none;z-index:1;background:var(--auth-glass-bg);backdrop-filter:blur(3px) saturate(120%);-webkit-backdrop-filter:blur(3px) saturate(120%)}.wave-bg{position:absolute;inset:0;pointer-events:none;z-index:0;transition:filter .3s ease}:host-context(body.dark) .wave-bg,:host-context(.dark) .wave-bg,:host-context(.ion-palette-dark) .wave-bg,:host-context(html.ion-palette-dark) .wave-bg,:host-context([data-theme=\"dark\"]) .wave-bg{filter:invert(1) opacity(.6)}.waves{width:100%;height:100%;overflow:visible;-webkit-mask-image:linear-gradient(to right,transparent 0%,#000 16%,#000 84%,transparent 100%);mask-image:linear-gradient(to right,transparent 0%,#000 16%,#000 84%,transparent 100%)}.waves path{fill:none;stroke-linecap:round;will-change:transform;animation:wave-flow-right var(--travel-duration, 18s) linear var(--travel-delay, 0s) infinite}.waves path.travel-left{animation:wave-flow-left var(--travel-duration, 18s) linear var(--travel-delay, 0s) infinite}.waves path.accent{stroke:var(--auth-wave-color)}.waves path.glow{filter:url(#wave-glow)}@keyframes wave-flow-right{0%{transform:translate(0)}25%{transform:translate(-360px,calc(var(--bob, 0px) * -1))}50%{transform:translate(-720px)}75%{transform:translate(-1080px,var(--bob, 0px))}to{transform:translate(-1440px)}}@keyframes wave-flow-left{0%{transform:translate(0)}25%{transform:translate(360px,var(--bob, 0px))}50%{transform:translate(720px)}75%{transform:translate(1080px,calc(var(--bob, 0px) * -1))}to{transform:translate(1440px)}}@media (prefers-reduced-motion: reduce){.waves path{animation:none}}.content-layer{position:relative;z-index:2;width:100%;height:100%;display:flex;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
126
147
  }
127
148
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthBackgroundComponent, decorators: [{
128
149
  type: Component,
@@ -136,6 +157,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
136
157
  }
137
158
  <div class="wave-bg">
138
159
  <svg class="waves" viewBox="0 0 1440 800" preserveAspectRatio="none">
160
+ <defs>
161
+ <!-- Halo: blur por debajo del trazo nítido = cinta luminosa. -->
162
+ <filter id="wave-glow" x="-10%" y="-60%" width="120%" height="220%">
163
+ <feGaussianBlur stdDeviation="2.6" result="b" />
164
+ <feMerge>
165
+ <feMergeNode in="b" />
166
+ <feMergeNode in="SourceGraphic" />
167
+ </feMerge>
168
+ </filter>
169
+ </defs>
139
170
  @for (wave of waves(); track wave.id) {
140
171
  <path
141
172
  [attr.d]="wave.path"
@@ -143,9 +174,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
143
174
  [attr.stroke-width]="wave.thickness"
144
175
  [class.travel-left]="wave.travelDirection === 'left'"
145
176
  [class.travel-right]="wave.travelDirection === 'right'"
177
+ [class.glow]="wave.glow"
178
+ [class.accent]="wave.accent"
146
179
  [style.opacity]="wave.opacity"
147
- [style.--pulse-duration]="wave.pulseDuration + 's'"
148
- [style.--pulse-delay]="wave.pulseDelay + 's'"
180
+ [style.--bob]="wave.bob + 'px'"
149
181
  [style.--travel-duration]="wave.travelDuration + 's'"
150
182
  [style.--travel-delay]="wave.travelDelay + 's'"
151
183
  />
@@ -157,8 +189,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
157
189
  <ng-content></ng-content>
158
190
  </div>
159
191
  </section>
160
- `, styles: [":host{display:block;--auth-bg-start: #ffffff;--auth-bg-mid: #f8f9fa;--auth-bg-end: #f0f0f0;--auth-glass-bg: rgba(255, 255, 255, .3);--auth-grain-opacity: .035;--auth-wave-color: var(--ion-color-primary, #6366f1)}:host-context(body.dark),:host-context(.dark),:host-context(.ion-palette-dark),:host-context(html.ion-palette-dark),:host-context([data-theme=\"dark\"]){--auth-bg-start: #0f0f1a;--auth-bg-mid: #1a1a2e;--auth-bg-end: #16213e;--auth-glass-bg: rgba(0, 0, 0, .3);--auth-grain-opacity: .05;--auth-wave-color: var(--ion-color-primary, #818cf8)}.auth-background{position:relative;display:flex;align-items:center;padding:0;background:linear-gradient(135deg,var(--auth-bg-start) 0%,var(--auth-bg-mid) 50%,var(--auth-bg-end) 100%);overflow:hidden}.grain{position:absolute;inset:0;pointer-events:none;z-index:0;opacity:var(--auth-grain-opacity);background-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.5' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E\")}.glass-layer{position:absolute;inset:0;pointer-events:none;z-index:1;background:var(--auth-glass-bg);backdrop-filter:blur(3px) saturate(120%);-webkit-backdrop-filter:blur(3px) saturate(120%)}.wave-bg{position:absolute;inset:0;pointer-events:none;z-index:0;transition:filter .3s ease}:host-context(body.dark) .wave-bg,:host-context(.dark) .wave-bg,:host-context(.ion-palette-dark) .wave-bg,:host-context(html.ion-palette-dark) .wave-bg,:host-context([data-theme=\"dark\"]) .wave-bg{filter:invert(1) opacity(.6)}.waves{width:100%;height:100%;overflow:visible}.waves path{fill:none;transform-box:fill-box;transform-origin:center;will-change:transform;animation:wave-pulse var(--pulse-duration, 3s) ease-in-out var(--pulse-delay, 0s) infinite alternate,wave-travel-right var(--travel-duration, 12s) linear var(--travel-delay, 0s) infinite}.waves path.travel-left{animation:wave-pulse var(--pulse-duration, 3s) ease-in-out var(--pulse-delay, 0s) infinite alternate,wave-travel-left var(--travel-duration, 12s) linear var(--travel-delay, 0s) infinite}@keyframes wave-pulse{0%{transform:scaleY(.85)}50%{transform:scaleY(1.25)}to{transform:scaleY(.85)}}@keyframes wave-travel-right{0%{transform:translate(-300px)}to{transform:translate(300px)}}@keyframes wave-travel-left{0%{transform:translate(300px)}to{transform:translate(-300px)}}@media (prefers-reduced-motion: reduce){.waves path{animation:none}}.content-layer{position:relative;z-index:2;width:100%;height:100%;display:flex;align-items:center}\n"] }]
192
+ `, styles: [":host{display:block;--auth-bg-start: #ffffff;--auth-bg-mid: #f8f9fa;--auth-bg-end: #f0f0f0;--auth-glass-bg: rgba(255, 255, 255, .3);--auth-grain-opacity: .035;--auth-wave-color: var(--ion-color-primary, #6366f1)}:host-context(body.dark),:host-context(.dark),:host-context(.ion-palette-dark),:host-context(html.ion-palette-dark),:host-context([data-theme=\"dark\"]){--auth-bg-start: #0f0f1a;--auth-bg-mid: #1a1a2e;--auth-bg-end: #16213e;--auth-glass-bg: rgba(0, 0, 0, .3);--auth-grain-opacity: .05;--auth-wave-color: var(--ion-color-primary, #818cf8)}.auth-background{position:relative;display:flex;align-items:center;padding:0;background:linear-gradient(135deg,var(--auth-bg-start) 0%,var(--auth-bg-mid) 50%,var(--auth-bg-end) 100%);overflow:hidden}.grain{position:absolute;inset:0;pointer-events:none;z-index:0;opacity:var(--auth-grain-opacity);background-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.5' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E\")}.glass-layer{position:absolute;inset:0;pointer-events:none;z-index:1;background:var(--auth-glass-bg);backdrop-filter:blur(3px) saturate(120%);-webkit-backdrop-filter:blur(3px) saturate(120%)}.wave-bg{position:absolute;inset:0;pointer-events:none;z-index:0;transition:filter .3s ease}:host-context(body.dark) .wave-bg,:host-context(.dark) .wave-bg,:host-context(.ion-palette-dark) .wave-bg,:host-context(html.ion-palette-dark) .wave-bg,:host-context([data-theme=\"dark\"]) .wave-bg{filter:invert(1) opacity(.6)}.waves{width:100%;height:100%;overflow:visible;-webkit-mask-image:linear-gradient(to right,transparent 0%,#000 16%,#000 84%,transparent 100%);mask-image:linear-gradient(to right,transparent 0%,#000 16%,#000 84%,transparent 100%)}.waves path{fill:none;stroke-linecap:round;will-change:transform;animation:wave-flow-right var(--travel-duration, 18s) linear var(--travel-delay, 0s) infinite}.waves path.travel-left{animation:wave-flow-left var(--travel-duration, 18s) linear var(--travel-delay, 0s) infinite}.waves path.accent{stroke:var(--auth-wave-color)}.waves path.glow{filter:url(#wave-glow)}@keyframes wave-flow-right{0%{transform:translate(0)}25%{transform:translate(-360px,calc(var(--bob, 0px) * -1))}50%{transform:translate(-720px)}75%{transform:translate(-1080px,var(--bob, 0px))}to{transform:translate(-1440px)}}@keyframes wave-flow-left{0%{transform:translate(0)}25%{transform:translate(360px,var(--bob, 0px))}50%{transform:translate(720px)}75%{transform:translate(1080px,calc(var(--bob, 0px) * -1))}to{transform:translate(1440px)}}@media (prefers-reduced-motion: reduce){.waves path{animation:none}}.content-layer{position:relative;z-index:2;width:100%;height:100%;display:flex;align-items:center}\n"] }]
161
193
  }], ctorParameters: () => [], propDecorators: { props: [{
162
194
  type: Input
163
195
  }] } });
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1iYWNrZ3JvdW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvYXV0aC1iYWNrZ3JvdW5kL2F1dGgtYmFja2dyb3VuZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBZ0IvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBc0xILE1BQU0sT0FBTyx1QkFBdUI7SUFHbEMsSUFDSSxLQUFLLENBQUMsS0FBNkI7UUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBa0JEO1FBM0JRLFdBQU0sR0FBRyxNQUFNLENBQXlCLEVBQUUsQ0FBQyxDQUFDO1FBVzVDLGtCQUFhLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25GLGdCQUFXLEdBQUcsTUFBTSxDQUFhLEVBQUUsQ0FBQyxDQUFDO1FBRTdDLFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QixPQUFPO2dCQUNMLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUU7Z0JBQ2hDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxJ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LENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUc7Z0JBQzNGLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO2dCQUM5Qix3RUFBd0U7Z0JBQ3hFLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO2dCQUN0RixXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtnQkFDaEMsZUFBZSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBRSxPQUFpQixDQUFDLENBQUMsQ0FBRSxNQUFnQjthQUN0RSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDOytHQXpFVSx1QkFBdUI7bUdBQXZCLHVCQUF1QiwyR0FqTHhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JULDJxRkFoQ1MsWUFBWTs7NEZBa0xYLHVCQUF1QjtrQkFyTG5DLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JUO3dEQXNKRyxLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBzaWduYWwsIGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQXV0aEJhY2tncm91bmRNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgV2F2ZURhdGEge1xuICBpZDogbnVtYmVyO1xuICBwYXRoOiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIHRoaWNrbmVzczogbnVtYmVyO1xuICBvcGFjaXR5OiBudW1iZXI7XG4gIHB1bHNlRHVyYXRpb246IG51bWJlcjtcbiAgcHVsc2VEZWxheTogbnVtYmVyO1xuICB0cmF2ZWxEdXJhdGlvbjogbnVtYmVyO1xuICB0cmF2ZWxEZWxheTogbnVtYmVyO1xuICB0cmF2ZWxEaXJlY3Rpb246ICdsZWZ0JyB8ICdyaWdodCc7XG59XG5cbi8qKlxuICogdmFsLWF1dGgtYmFja2dyb3VuZFxuICpcbiAqIEEgdmlzdWFsbHkgc3RyaWtpbmcgYmFja2dyb3VuZCBjb21wb25lbnQgZm9yIGF1dGhlbnRpY2F0aW9uIHBhZ2VzLlxuICogRmVhdHVyZXMgYW5pbWF0ZWQgd2F2ZSBwYXR0ZXJucywgZ3JhaW4gdGV4dHVyZSwgYW5kIGdsYXNzbW9ycGhpc20gZWZmZWN0cy5cbiAqIFN1cHBvcnRzIGRhcmsgbW9kZSBhdXRvbWF0aWNhbGx5IHZpYSBDU1MgdmFyaWFibGVzLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGBodG1sXG4gKiA8dmFsLWF1dGgtYmFja2dyb3VuZD5cbiAqICAgPGRpdiBjbGFzcz1cIm15LWNvbnRlbnRcIj5cbiAqICAgICA8aDE+V2VsY29tZTwvaDE+XG4gKiAgICAgPHZhbC1sb2dpbiBbcHJvcHNdPVwibG9naW5Qcm9wc1wiIC8+XG4gKiAgIDwvZGl2PlxuICogPC92YWwtYXV0aC1iYWNrZ3JvdW5kPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQ3VzdG9tIGNvbmZpZ3VyYXRpb25cbiAqIGBgYGh0bWxcbiAqIDx2YWwtYXV0aC1iYWNrZ3JvdW5kIFtwcm9wc109XCJ7XG4gKiAgIHdhdmVDb3VudDogMzAsXG4gKiAgIHNob3dHcmFpbjogZmFsc2UsXG4gKiAgIG1pbkhlaWdodDogJzEwMHZoJ1xuICogfVwiPlxuICogICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPi4uLjwvZGl2PlxuICogPC92YWwtYXV0aC1iYWNrZ3JvdW5kPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1hdXRoLWJhY2tncm91bmQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8c2VjdGlvbiBjbGFzcz1cImF1dGgtYmFja2dyb3VuZFwiIFtzdHlsZS5taW4taGVpZ2h0XT1cImNvbmZpZygpLm1pbkhlaWdodFwiPlxuICAgICAgQGlmIChjb25maWcoKS5zaG93R3JhaW4pIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyYWluXCI+PC9kaXY+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbmZpZygpLnNob3dHbGFzcykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2xhc3MtbGF5ZXJcIj48L2Rpdj5cbiAgICAgIH1cbiAgICAgIDxkaXYgY2xhc3M9XCJ3YXZlLWJnXCI+XG4gICAgICAgIDxzdmcgY2xhc3M9XCJ3YXZlc1wiIHZpZXdCb3g9XCIwIDAgMTQ0MCA4MDBcIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiPlxuICAgICAgICAgIEBmb3IgKHdhdmUgb2Ygd2F2ZXMoKTsgdHJhY2sgd2F2ZS5pZCkge1xuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgW2F0dHIuZF09XCJ3YXZlLnBhdGhcIlxuICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwid2F2ZS5jb2xvclwiXG4gICAgICAgICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJ3YXZlLnRoaWNrbmVzc1wiXG4gICAgICAgICAgICAgIFtjbGFzcy50cmF2ZWwtbGVmdF09XCJ3YXZlLnRyYXZlbERpcmVjdGlvbiA9PT0gJ2xlZnQnXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnRyYXZlbC1yaWdodF09XCJ3YXZlLnRyYXZlbERpcmVjdGlvbiA9PT0gJ3JpZ2h0J1wiXG4gICAgICAgICAgICAgIFtzdHlsZS5vcGFjaXR5XT1cIndhdmUub3BhY2l0eVwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLXB1bHNlLWR1cmF0aW9uXT1cIndhdmUucHVsc2VEdXJhdGlvbiArICdzJ1wiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLXB1bHNlLWRlbGF5XT1cIndhdmUucHVsc2VEZWxheSArICdzJ1wiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLXRyYXZlbC1kdXJhdGlvbl09XCJ3YXZlLnRyYXZlbER1cmF0aW9uICsgJ3MnXCJcbiAgICAgICAgICAgICAgW3N0eWxlLi0tdHJhdmVsLWRlbGF5XT1cIndhdmUudHJhdmVsRGVsYXkgKyAncydcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWxheWVyXCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLyogVGhlbWUgdmFyaWFibGVzIC0gTGlnaHQgbW9kZSAoZGVmYXVsdCkgKi9cbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIC0tYXV0aC1iZy1zdGFydDogI2ZmZmZmZjtcbiAgICAgICAgLS1hdXRoLWJnLW1pZDogI2Y4ZjlmYTtcbiAgICAgICAgLS1hdXRoLWJnLWVuZDogI2YwZjBmMDtcbiAgICAgICAgLS1hdXRoLWdsYXNzLWJnOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG4gICAgICAgIC0tYXV0aC1ncmFpbi1vcGFjaXR5OiAwLjAzNTtcbiAgICAgICAgLS1hdXRoLXdhdmUtY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjNjM2NmYxKTtcbiAgICAgIH1cblxuICAgICAgLyogRGFyayBtb2RlIC0gQ2xhc3MtYmFzZWQgT05MWSAoVGhlbWVTZXJ2aWNlIHRvZ2dsZXMgYm9keS5kYXJrL2h0bWwuaW9uLXBhbGV0dGUtZGFyaykuXG4gICAgICAgICBObyBAbWVkaWEgcHJlZmVycy1jb2xvci1zY2hlbWUg4oCUIHBpc2FiYSBlbCBtYW51YWwgdG9nZ2xlIGRlbCB1c2VyLiAqL1xuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspLFxuICAgICAgOmhvc3QtY29udGV4dCguZGFyayksXG4gICAgICA6aG9zdC1jb250ZXh0KC5pb24tcGFsZXR0ZS1kYXJrKSxcbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkge1xuICAgICAgICAtLWF1dGgtYmctc3RhcnQ6ICMwZjBmMWE7XG4gICAgICAgIC0tYXV0aC1iZy1taWQ6ICMxYTFhMmU7XG4gICAgICAgIC0tYXV0aC1iZy1lbmQ6ICMxNjIxM2U7XG4gICAgICAgIC0tYXV0aC1nbGFzcy1iZzogcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgICAgICAtLWF1dGgtZ3JhaW4tb3BhY2l0eTogMC4wNTtcbiAgICAgICAgLS1hdXRoLXdhdmUtY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjODE4Y2Y4KTtcbiAgICAgIH1cblxuICAgICAgLmF1dGgtYmFja2dyb3VuZCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tYXV0aC1iZy1zdGFydCkgMCUsIHZhcigtLWF1dGgtYmctbWlkKSA1MCUsIHZhcigtLWF1dGgtYmctZW5kKSAxMDAlKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLmdyYWluIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIG9wYWNpdHk6IHZhcigtLWF1dGgtZ3JhaW4tb3BhY2l0eSk7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDI1NiAyNTYnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NmaWx0ZXIgaWQ9J25vaXNlJyUzRSUzQ2ZlVHVyYnVsZW5jZSB0eXBlPSdmcmFjdGFsTm9pc2UnIGJhc2VGcmVxdWVuY3k9JzAuNScgbnVtT2N0YXZlcz0nMicgc3RpdGNoVGlsZXM9J3N0aXRjaCcvJTNFJTNDL2ZpbHRlciUzRSUzQ3JlY3Qgd2lkdGg9JzEwMCUyNScgaGVpZ2h0PScxMDAlMjUnIGZpbHRlcj0ndXJsKCUyM25vaXNlKScvJTNFJTNDL3N2ZyUzRVwiKTtcbiAgICAgIH1cblxuICAgICAgLmdsYXNzLWxheWVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF1dGgtZ2xhc3MtYmcpO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoM3B4KSBzYXR1cmF0ZSgxMjAlKTtcbiAgICAgICAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoM3B4KSBzYXR1cmF0ZSgxMjAlKTtcbiAgICAgIH1cblxuICAgICAgLndhdmUtYmcge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgei1pbmRleDogMDtcbiAgICAgICAgdHJhbnNpdGlvbjogZmlsdGVyIDAuM3MgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLyogSW52ZXJ0IHdhdmVzIGVuIGRhcmsg4oCUIGNsYXNzLWJhc2VkIG9ubHkgKFRoZW1lU2VydmljZSB0b2dnbGUpLiAqL1xuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspIC53YXZlLWJnLFxuICAgICAgOmhvc3QtY29udGV4dCguZGFyaykgLndhdmUtYmcsXG4gICAgICA6aG9zdC1jb250ZXh0KC5pb24tcGFsZXR0ZS1kYXJrKSAud2F2ZS1iZyxcbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAud2F2ZS1iZyxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLndhdmUtYmcge1xuICAgICAgICBmaWx0ZXI6IGludmVydCgxKSBvcGFjaXR5KDAuNik7XG4gICAgICB9XG5cbiAgICAgIC53YXZlcyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgfVxuXG4gICAgICAud2F2ZXMgcGF0aCB7XG4gICAgICAgIGZpbGw6IG5vbmU7XG4gICAgICAgIHRyYW5zZm9ybS1ib3g6IGZpbGwtYm94O1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7XG4gICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG4gICAgICAgIGFuaW1hdGlvbjpcbiAgICAgICAgICB3YXZlLXB1bHNlIHZhcigtLXB1bHNlLWR1cmF0aW9uLCAzcykgZWFzZS1pbi1vdXQgdmFyKC0tcHVsc2UtZGVsYXksIDBzKSBpbmZpbml0ZSBhbHRlcm5hdGUsXG4gICAgICAgICAgd2F2ZS10cmF2ZWwtcmlnaHQgdmFyKC0tdHJhdmVsLWR1cmF0aW9uLCAxMnMpIGxpbmVhciB2YXIoLS10cmF2ZWwtZGVsYXksIDBzKSBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLndhdmVzIHBhdGgudHJhdmVsLWxlZnQge1xuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgd2F2ZS1wdWxzZSB2YXIoLS1wdWxzZS1kdXJhdGlvbiwgM3MpIGVhc2UtaW4tb3V0IHZhcigtLXB1bHNlLWRlbGF5LCAwcykgaW5maW5pdGUgYWx0ZXJuYXRlLFxuICAgICAgICAgIHdhdmUtdHJhdmVsLWxlZnQgdmFyKC0tdHJhdmVsLWR1cmF0aW9uLCAxMnMpIGxpbmVhciB2YXIoLS10cmF2ZWwtZGVsYXksIDBzKSBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLyogVmVydGljYWwgYnJlYXRoaW5nIOKAlCBlcXVhbGl6ZXItc3R5bGUgcHVsc2UgcGVyIHdhdmUgKi9cbiAgICAgIEBrZXlmcmFtZXMgd2F2ZS1wdWxzZSB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWSgwLjg1KTtcbiAgICAgICAgfVxuICAgICAgICA1MCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVZKDEuMjUpO1xuICAgICAgICB9XG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVZKDAuODUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8qIEhvcml6b250YWwgdHJhdmVsaW5nIOKAlCBsaWtlIHNvdW5kIHRyYXZlbGluZyBhY3Jvc3MgdGhlIGNhbnZhcyAqL1xuICAgICAgQGtleWZyYW1lcyB3YXZlLXRyYXZlbC1yaWdodCB7XG4gICAgICAgIGZyb20ge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMzAwcHgpO1xuICAgICAgICB9XG4gICAgICAgIHRvIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMzAwcHgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgd2F2ZS10cmF2ZWwtbGVmdCB7XG4gICAgICAgIGZyb20ge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgzMDBweCk7XG4gICAgICAgIH1cbiAgICAgICAgdG8ge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMzAwcHgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8qIFJlZHVjZWQgbW90aW9uIOKAlCBrZWVwIHdhdmVzIHN0aWxsICovXG4gICAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgICAgICAud2F2ZXMgcGF0aCB7XG4gICAgICAgICAgYW5pbWF0aW9uOiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jb250ZW50LWxheWVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhCYWNrZ3JvdW5kQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBfcHJvcHMgPSBzaWduYWw8QXV0aEJhY2tncm91bmRNZXRhZGF0YT4oe30pO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBwcm9wcyh2YWx1ZTogQXV0aEJhY2tncm91bmRNZXRhZGF0YSkge1xuICAgIHRoaXMuX3Byb3BzLnNldCh2YWx1ZSk7XG4gICAgdGhpcy5yZWdlbmVyYXRlV2F2ZXMoKTtcbiAgfVxuICBnZXQgcHJvcHMoKTogQXV0aEJhY2tncm91bmRNZXRhZGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuX3Byb3BzKCk7XG4gIH1cblxuICBwcml2YXRlIGRlZmF1bHRDb2xvcnMgPSBbJyNlMGUwZTAnLCAnI2JkYmRiZCcsICcjOWU5ZTllJywgJyM3NTc1NzUnLCAnIzYxNjE2MScsICcjNDI0MjQyJ107XG4gIHByaXZhdGUgd2F2ZXNTaWduYWwgPSBzaWduYWw8V2F2ZURhdGFbXT4oW10pO1xuXG4gIGNvbmZpZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwcm9wcyA9IHRoaXMuX3Byb3BzKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdhdmVDb3VudDogcHJvcHMud2F2ZUNvdW50ID8/IDQ1LFxuICAgICAgd2F2ZUNvbG9yczogcHJvcHMud2F2ZUNvbG9ycyA/PyB0aGlzLmRlZmF1bHRDb2xvcnMsXG4gICAgICBzaG93R3JhaW46IHByb3BzLnNob3dHcmFpbiAhPT0gZmFsc2UsXG4gICAgICBzaG93R2xhc3M6IHByb3BzLnNob3dHbGFzcyAhPT0gZmFsc2UsXG4gICAgICBtaW5IZWlnaHQ6IHByb3BzLm1pbkhlaWdodCA/PyAnY2FsYygxMDB2aCAtIDEyMHB4KScsXG4gICAgfTtcbiAgfSk7XG5cbiAgd2F2ZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLndhdmVzU2lnbmFsKCkpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucmVnZW5lcmF0ZVdhdmVzKCk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2VuZXJhdGVXYXZlcygpOiB2b2lkIHtcbiAgICBjb25zdCBjZmcgPSB0aGlzLmNvbmZpZygpO1xuICAgIGNvbnN0IGNvbG9ycyA9IGNmZy53YXZlQ29sb3JzO1xuICAgIGNvbnN0IGNvdW50ID0gY2ZnLndhdmVDb3VudDtcblxuICAgIGNvbnN0IG5ld1dhdmVzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogY291bnQgfSwgKF8sIGkpID0+IHtcbiAgICAgIC8vIERpc3RyaWJ1aXIgdW5pZm9ybWUgYSBsbyBsYXJnbyBkZWwgdmlld0JveCAoMC4uODAwKSDigJQgc2luIGh1ZWNvcyBhcnJpYmFcbiAgICAgIGNvbnN0IHkgPSAoKGkgKyAwLjUpIC8gY291bnQpICogODAwO1xuICAgICAgY29uc3QgaXNUaGljayA9IGkgJSA1ID09PSAwO1xuICAgICAgY29uc3QgaXNNZWRpdW0gPSBpICUgMyA9PT0gMCAmJiAhaXNUaGljaztcblxuICAgICAgY29uc3QgYW1wbGl0dWRlID0gMTAgKyBNYXRoLnJhbmRvbSgpICogMjA7XG4gICAgICBjb25zdCBmcmVxdWVuY3kgPSAxICsgTWF0aC5yYW5kb20oKSAqIDI7XG4gICAgICBjb25zdCBwaGFzZSA9IE1hdGgucmFuZG9tKCkgKiBNYXRoLlBJICogMjtcblxuICAgICAgLy8gUGF0aCBleHRlbmRpZG8gb2ZmLWNhbnZhcyAoLTQwMCAuLiAxODQwKSBwYXJhIHF1ZSB0cmFuc2xhdGVYIG5vIGRlamUgaHVlY29zXG4gICAgICBsZXQgcGF0aCA9IGBNLTQwMCwke3l9YDtcbiAgICAgIGZvciAobGV0IHggPSAtNDAwOyB4IDw9IDE4NDA7IHggKz0gNDApIHtcbiAgICAgICAgY29uc3Qgd2F2ZVkgPSB5ICsgYW1wbGl0dWRlICogTWF0aC5zaW4oKHggLyAxNDQwKSAqIE1hdGguUEkgKiBmcmVxdWVuY3kgKiAyICsgcGhhc2UpO1xuICAgICAgICBwYXRoICs9IGAgTCR7eH0sJHt3YXZlWS50b0ZpeGVkKDEpfWA7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbG9yID0gY29sb3JzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNvbG9ycy5sZW5ndGgpXTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGksXG4gICAgICAgIHBhdGgsXG4gICAgICAgIGNvbG9yLFxuICAgICAgICB0aGlja25lc3M6IGlzVGhpY2sgPyAxLjIgOiBpc01lZGl1bSA/IDAuNyA6IDAuMyxcbiAgICAgICAgb3BhY2l0eTogaXNUaGljayA/IDAuNSA6IGlzTWVkaXVtID8gMC40IDogMC4zLFxuICAgICAgICAvLyBQdWxzZSB2ZXJ0aWNhbCAoZXF1YWxpemVyKSDigJQgfjEvMyBkZSBsYXMgd2F2ZXMgc29uIFwicsOhcGlkYXNcIlxuICAgICAgICBwdWxzZUR1cmF0aW9uOiBNYXRoLnJhbmRvbSgpIDwgMC4zMyA/IDAuOCArIE1hdGgucmFuZG9tKCkgKiAwLjggOiAxLjYgKyBNYXRoLnJhbmRvbSgpICogMi40LFxuICAgICAgICBwdWxzZURlbGF5OiAtTWF0aC5yYW5kb20oKSAqIDQsXG4gICAgICAgIC8vIFRyYXZlbGluZyBob3Jpem9udGFsIOKAlCB+MS8zIG3DoXMgcsOhcGlkYXMgcGFyYSBzZW5zYWNpw7NuIGRlIGVjdWFsaXphZG9yXG4gICAgICAgIHRyYXZlbER1cmF0aW9uOiBNYXRoLnJhbmRvbSgpIDwgMC4zMyA/IDUgKyBNYXRoLnJhbmRvbSgpICogNCA6IDEwICsgTWF0aC5yYW5kb20oKSAqIDEyLFxuICAgICAgICB0cmF2ZWxEZWxheTogLU1hdGgucmFuZG9tKCkgKiAxMixcbiAgICAgICAgdHJhdmVsRGlyZWN0aW9uOiBpICUgMiA9PT0gMCA/ICgncmlnaHQnIGFzIGNvbnN0KSA6ICgnbGVmdCcgYXMgY29uc3QpLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRoaXMud2F2ZXNTaWduYWwuc2V0KG5ld1dhdmVzKTtcbiAgfVxufVxuIl19
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1iYWNrZ3JvdW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvYXV0aC1iYWNrZ3JvdW5kL2F1dGgtYmFja2dyb3VuZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBb0IvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBc05ILE1BQU0sT0FBTyx1QkFBdUI7SUFHbEMsSUFDSSxLQUFLLENBQUMsS0FBNkI7UUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBa0JEO1FBM0JRLFdBQU0sR0FBRyxNQUFNLENBQXlCLEVBQUUsQ0FBQyxDQUFDO1FBVzVDLGtCQUFhLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25GLGdCQUFXLEdBQUcsTUFBTSxDQUFhLEVBQUUsQ0FBQyxDQUFDO1FBRTdDLFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QixPQUFPO2dCQUNMLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUU7Z0JBQ2hDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxJ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fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBdXRoQmFja2dyb3VuZE1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbmludGVyZmFjZSBXYXZlRGF0YSB7XG4gIGlkOiBudW1iZXI7XG4gIHBhdGg6IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbiAgdGhpY2tuZXNzOiBudW1iZXI7XG4gIG9wYWNpdHk6IG51bWJlcjtcbiAgLyoqIEFtcGxpdHVkIGRlbCBkcmlmdCB2ZXJ0aWNhbCBzdXRpbCAocHgpIGR1cmFudGUgZWwgZmx1am8uICovXG4gIGJvYjogbnVtYmVyO1xuICAvKiogT25kYSBcImhlcm9cIjogdHJhem8gZ3J1ZXNvIGNvbiBoYWxvIChnbG93KS4gKi9cbiAgZ2xvdzogYm9vbGVhbjtcbiAgLyoqIFVzYSBlbCBjb2xvciBkZSBtYXJjYSAodmFyIC0tYXV0aC13YXZlLWNvbG9yKSBlbiB2ZXogZGVsIGdyaXMuICovXG4gIGFjY2VudDogYm9vbGVhbjtcbiAgdHJhdmVsRHVyYXRpb246IG51bWJlcjtcbiAgdHJhdmVsRGVsYXk6IG51bWJlcjtcbiAgdHJhdmVsRGlyZWN0aW9uOiAnbGVmdCcgfCAncmlnaHQnO1xufVxuXG4vKipcbiAqIHZhbC1hdXRoLWJhY2tncm91bmRcbiAqXG4gKiBBIHZpc3VhbGx5IHN0cmlraW5nIGJhY2tncm91bmQgY29tcG9uZW50IGZvciBhdXRoZW50aWNhdGlvbiBwYWdlcy5cbiAqIEZlYXR1cmVzIGFuaW1hdGVkIHdhdmUgcGF0dGVybnMsIGdyYWluIHRleHR1cmUsIGFuZCBnbGFzc21vcnBoaXNtIGVmZmVjdHMuXG4gKiBTdXBwb3J0cyBkYXJrIG1vZGUgYXV0b21hdGljYWxseSB2aWEgQ1NTIHZhcmlhYmxlcy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgaHRtbFxuICogPHZhbC1hdXRoLWJhY2tncm91bmQ+XG4gKiAgIDxkaXYgY2xhc3M9XCJteS1jb250ZW50XCI+XG4gKiAgICAgPGgxPldlbGNvbWU8L2gxPlxuICogICAgIDx2YWwtbG9naW4gW3Byb3BzXT1cImxvZ2luUHJvcHNcIiAvPlxuICogICA8L2Rpdj5cbiAqIDwvdmFsLWF1dGgtYmFja2dyb3VuZD5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIEN1c3RvbSBjb25maWd1cmF0aW9uXG4gKiBgYGBodG1sXG4gKiA8dmFsLWF1dGgtYmFja2dyb3VuZCBbcHJvcHNdPVwie1xuICogICB3YXZlQ291bnQ6IDMwLFxuICogICBzaG93R3JhaW46IGZhbHNlLFxuICogICBtaW5IZWlnaHQ6ICcxMDB2aCdcbiAqIH1cIj5cbiAqICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj4uLi48L2Rpdj5cbiAqIDwvdmFsLWF1dGgtYmFja2dyb3VuZD5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtYXV0aC1iYWNrZ3JvdW5kJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJhdXRoLWJhY2tncm91bmRcIiBbc3R5bGUubWluLWhlaWdodF09XCJjb25maWcoKS5taW5IZWlnaHRcIj5cbiAgICAgIEBpZiAoY29uZmlnKCkuc2hvd0dyYWluKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmFpblwiPjwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmIChjb25maWcoKS5zaG93R2xhc3MpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImdsYXNzLWxheWVyXCI+PC9kaXY+XG4gICAgICB9XG4gICAgICA8ZGl2IGNsYXNzPVwid2F2ZS1iZ1wiPlxuICAgICAgICA8c3ZnIGNsYXNzPVwid2F2ZXNcIiB2aWV3Qm94PVwiMCAwIDE0NDAgODAwXCIgcHJlc2VydmVBc3BlY3RSYXRpbz1cIm5vbmVcIj5cbiAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgIDwhLS0gSGFsbzogYmx1ciBwb3IgZGViYWpvIGRlbCB0cmF6byBuw610aWRvID0gY2ludGEgbHVtaW5vc2EuIC0tPlxuICAgICAgICAgICAgPGZpbHRlciBpZD1cIndhdmUtZ2xvd1wiIHg9XCItMTAlXCIgeT1cIi02MCVcIiB3aWR0aD1cIjEyMCVcIiBoZWlnaHQ9XCIyMjAlXCI+XG4gICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIyLjZcIiByZXN1bHQ9XCJiXCIgLz5cbiAgICAgICAgICAgICAgPGZlTWVyZ2U+XG4gICAgICAgICAgICAgICAgPGZlTWVyZ2VOb2RlIGluPVwiYlwiIC8+XG4gICAgICAgICAgICAgICAgPGZlTWVyZ2VOb2RlIGluPVwiU291cmNlR3JhcGhpY1wiIC8+XG4gICAgICAgICAgICAgIDwvZmVNZXJnZT5cbiAgICAgICAgICAgIDwvZmlsdGVyPlxuICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICBAZm9yICh3YXZlIG9mIHdhdmVzKCk7IHRyYWNrIHdhdmUuaWQpIHtcbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIFthdHRyLmRdPVwid2F2ZS5wYXRoXCJcbiAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cIndhdmUuY29sb3JcIlxuICAgICAgICAgICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPVwid2F2ZS50aGlja25lc3NcIlxuICAgICAgICAgICAgICBbY2xhc3MudHJhdmVsLWxlZnRdPVwid2F2ZS50cmF2ZWxEaXJlY3Rpb24gPT09ICdsZWZ0J1wiXG4gICAgICAgICAgICAgIFtjbGFzcy50cmF2ZWwtcmlnaHRdPVwid2F2ZS50cmF2ZWxEaXJlY3Rpb24gPT09ICdyaWdodCdcIlxuICAgICAgICAgICAgICBbY2xhc3MuZ2xvd109XCJ3YXZlLmdsb3dcIlxuICAgICAgICAgICAgICBbY2xhc3MuYWNjZW50XT1cIndhdmUuYWNjZW50XCJcbiAgICAgICAgICAgICAgW3N0eWxlLm9wYWNpdHldPVwid2F2ZS5vcGFjaXR5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLi0tYm9iXT1cIndhdmUuYm9iICsgJ3B4J1wiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLXRyYXZlbC1kdXJhdGlvbl09XCJ3YXZlLnRyYXZlbER1cmF0aW9uICsgJ3MnXCJcbiAgICAgICAgICAgICAgW3N0eWxlLi0tdHJhdmVsLWRlbGF5XT1cIndhdmUudHJhdmVsRGVsYXkgKyAncydcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWxheWVyXCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLyogVGhlbWUgdmFyaWFibGVzIC0gTGlnaHQgbW9kZSAoZGVmYXVsdCkgKi9cbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIC0tYXV0aC1iZy1zdGFydDogI2ZmZmZmZjtcbiAgICAgICAgLS1hdXRoLWJnLW1pZDogI2Y4ZjlmYTtcbiAgICAgICAgLS1hdXRoLWJnLWVuZDogI2YwZjBmMDtcbiAgICAgICAgLS1hdXRoLWdsYXNzLWJnOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG4gICAgICAgIC0tYXV0aC1ncmFpbi1vcGFjaXR5OiAwLjAzNTtcbiAgICAgICAgLS1hdXRoLXdhdmUtY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjNjM2NmYxKTtcbiAgICAgIH1cblxuICAgICAgLyogRGFyayBtb2RlIC0gQ2xhc3MtYmFzZWQgT05MWSAoVGhlbWVTZXJ2aWNlIHRvZ2dsZXMgYm9keS5kYXJrL2h0bWwuaW9uLXBhbGV0dGUtZGFyaykuXG4gICAgICAgICBObyBAbWVkaWEgcHJlZmVycy1jb2xvci1zY2hlbWUg4oCUIHBpc2FiYSBlbCBtYW51YWwgdG9nZ2xlIGRlbCB1c2VyLiAqL1xuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspLFxuICAgICAgOmhvc3QtY29udGV4dCguZGFyayksXG4gICAgICA6aG9zdC1jb250ZXh0KC5pb24tcGFsZXR0ZS1kYXJrKSxcbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkge1xuICAgICAgICAtLWF1dGgtYmctc3RhcnQ6ICMwZjBmMWE7XG4gICAgICAgIC0tYXV0aC1iZy1taWQ6ICMxYTFhMmU7XG4gICAgICAgIC0tYXV0aC1iZy1lbmQ6ICMxNjIxM2U7XG4gICAgICAgIC0tYXV0aC1nbGFzcy1iZzogcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgICAgICAtLWF1dGgtZ3JhaW4tb3BhY2l0eTogMC4wNTtcbiAgICAgICAgLS1hdXRoLXdhdmUtY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjODE4Y2Y4KTtcbiAgICAgIH1cblxuICAgICAgLmF1dGgtYmFja2dyb3VuZCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tYXV0aC1iZy1zdGFydCkgMCUsIHZhcigtLWF1dGgtYmctbWlkKSA1MCUsIHZhcigtLWF1dGgtYmctZW5kKSAxMDAlKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLmdyYWluIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIG9wYWNpdHk6IHZhcigtLWF1dGgtZ3JhaW4tb3BhY2l0eSk7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDI1NiAyNTYnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NmaWx0ZXIgaWQ9J25vaXNlJyUzRSUzQ2ZlVHVyYnVsZW5jZSB0eXBlPSdmcmFjdGFsTm9pc2UnIGJhc2VGcmVxdWVuY3k9JzAuNScgbnVtT2N0YXZlcz0nMicgc3RpdGNoVGlsZXM9J3N0aXRjaCcvJTNFJTNDL2ZpbHRlciUzRSUzQ3JlY3Qgd2lkdGg9JzEwMCUyNScgaGVpZ2h0PScxMDAlMjUnIGZpbHRlcj0ndXJsKCUyM25vaXNlKScvJTNFJTNDL3N2ZyUzRVwiKTtcbiAgICAgIH1cblxuICAgICAgLmdsYXNzLWxheWVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF1dGgtZ2xhc3MtYmcpO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoM3B4KSBzYXR1cmF0ZSgxMjAlKTtcbiAgICAgICAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoM3B4KSBzYXR1cmF0ZSgxMjAlKTtcbiAgICAgIH1cblxuICAgICAgLndhdmUtYmcge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgei1pbmRleDogMDtcbiAgICAgICAgdHJhbnNpdGlvbjogZmlsdGVyIDAuM3MgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLyogSW52ZXJ0IHdhdmVzIGVuIGRhcmsg4oCUIGNsYXNzLWJhc2VkIG9ubHkgKFRoZW1lU2VydmljZSB0b2dnbGUpLiAqL1xuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspIC53YXZlLWJnLFxuICAgICAgOmhvc3QtY29udGV4dCguZGFyaykgLndhdmUtYmcsXG4gICAgICA6aG9zdC1jb250ZXh0KC5pb24tcGFsZXR0ZS1kYXJrKSAud2F2ZS1iZyxcbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAud2F2ZS1iZyxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLndhdmUtYmcge1xuICAgICAgICBmaWx0ZXI6IGludmVydCgxKSBvcGFjaXR5KDAuNik7XG4gICAgICB9XG5cbiAgICAgIC53YXZlcyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICAvKiBEZXN2YW5lY2UgbGFzIGNpbnRhcyBoYWNpYSBsb3MgYm9yZGVzIGxhdGVyYWxlczogZW5tYXJjYSBlbCBjZW50cm9cbiAgICAgICAgICAgKGxvb2sgcHJlbWl1bSkgeSwgZGUgcGFzbywgZXNjb25kZSBjdWFscXVpZXIgY29zdHVyYSBkZWwgbG9vcC4gKi9cbiAgICAgICAgLXdlYmtpdC1tYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHRyYW5zcGFyZW50IDAlLCAjMDAwIDE2JSwgIzAwMCA4NCUsIHRyYW5zcGFyZW50IDEwMCUpO1xuICAgICAgICBtYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHRyYW5zcGFyZW50IDAlLCAjMDAwIDE2JSwgIzAwMCA4NCUsIHRyYW5zcGFyZW50IDEwMCUpO1xuICAgICAgfVxuXG4gICAgICAvKiBVbmEgc29sYSBhbmltYWNpw7NuIHBvciBwYXRoICh0cmFuc2xhdGUgWCtZIGNvbWJpbmFkb3MpIHBhcmEgbm8gdGVuZXIgZG9zXG4gICAgICAgICBrZXlmcmFtZXMgcGVsZWFuZG8gcG9yIGxhIG1pc21hIHByb3BpZWRhZCB0cmFuc2Zvcm0uIEVsIGxvb3AgZXMgc2VhbWxlc3M6XG4gICAgICAgICBYIHJlY29ycmUgZXhhY3RhbWVudGUgdW5hIHZ1ZWx0YSAoMTQ0MHB4KSBzb2JyZSB1biBwYXRoIHBlcmnDs2RpY28sIGFzw60gZWxcbiAgICAgICAgIHJlaW5pY2lvIGRlbCBjaWNsbyBlcyBpbnZpc2libGUuICovXG4gICAgICAud2F2ZXMgcGF0aCB7XG4gICAgICAgIGZpbGw6IG5vbmU7XG4gICAgICAgIHN0cm9rZS1saW5lY2FwOiByb3VuZDtcbiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgICAgICAgYW5pbWF0aW9uOiB3YXZlLWZsb3ctcmlnaHQgdmFyKC0tdHJhdmVsLWR1cmF0aW9uLCAxOHMpIGxpbmVhciB2YXIoLS10cmF2ZWwtZGVsYXksIDBzKSBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLndhdmVzIHBhdGgudHJhdmVsLWxlZnQge1xuICAgICAgICBhbmltYXRpb246IHdhdmUtZmxvdy1sZWZ0IHZhcigtLXRyYXZlbC1kdXJhdGlvbiwgMThzKSBsaW5lYXIgdmFyKC0tdHJhdmVsLWRlbGF5LCAwcykgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC8qIEFjZW50byBkZSBtYXJjYSAodGhlbWVhIGNsYXJvL29zY3VybyB2w61hIGxhIHZhcikuICovXG4gICAgICAud2F2ZXMgcGF0aC5hY2NlbnQge1xuICAgICAgICBzdHJva2U6IHZhcigtLWF1dGgtd2F2ZS1jb2xvcik7XG4gICAgICB9XG5cbiAgICAgIC8qIENpbnRhcyBoZXJvIGNvbiBoYWxvIGx1bWlub3NvLiAqL1xuICAgICAgLndhdmVzIHBhdGguZ2xvdyB7XG4gICAgICAgIGZpbHRlcjogdXJsKCN3YXZlLWdsb3cpO1xuICAgICAgfVxuXG4gICAgICAvKiBGbHVqbyBjb250aW51byB5IHNlYW1sZXNzLiBYIHJlY29ycmUgdW5hIHZ1ZWx0YSBjb21wbGV0YSAoMTQ0MHB4KSBlblxuICAgICAgICAgcGFzb3MgbGluZWFsZXMgY29uc3RhbnRlcyDihpIgdmVsb2NpZGFkIHVuaWZvcm1lIHksIHBvciBsYSBwZXJpb2RpY2lkYWRcbiAgICAgICAgIGRlbCBwYXRoLCBlbCBzYWx0byBkZSAxMDAl4oaSMCUgZXMgaW52aXNpYmxlLiBZIGhhY2UgdW4gZHJpZnQgc3V0aWwgcXVlXG4gICAgICAgICB2dWVsdmUgYSAwIGFsIGNlcnJhciBlbCBjaWNsbyAoc2luIGVxdWFsaXplciwgc2luIHNhbHRvcykuICovXG4gICAgICBAa2V5ZnJhbWVzIHdhdmUtZmxvdy1yaWdodCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgICAgICAgfVxuICAgICAgICAyNSUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0zNjBweCwgY2FsYyh2YXIoLS1ib2IsIDBweCkgKiAtMSkpO1xuICAgICAgICB9XG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTcyMHB4LCAwKTtcbiAgICAgICAgfVxuICAgICAgICA3NSUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xMDgwcHgsIHZhcigtLWJvYiwgMHB4KSk7XG4gICAgICAgIH1cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE0NDBweCwgMCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyB3YXZlLWZsb3ctbGVmdCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgICAgICAgfVxuICAgICAgICAyNSUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDM2MHB4LCB2YXIoLS1ib2IsIDBweCkpO1xuICAgICAgICB9XG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoNzIwcHgsIDApO1xuICAgICAgICB9XG4gICAgICAgIDc1JSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTA4MHB4LCBjYWxjKHZhcigtLWJvYiwgMHB4KSAqIC0xKSk7XG4gICAgICAgIH1cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTQ0MHB4LCAwKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvKiBSZWR1Y2VkIG1vdGlvbiDigJQga2VlcCB3YXZlcyBzdGlsbCAqL1xuICAgICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAgICAgLndhdmVzIHBhdGgge1xuICAgICAgICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY29udGVudC1sYXllciB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoQmFja2dyb3VuZENvbXBvbmVudCB7XG4gIHByaXZhdGUgX3Byb3BzID0gc2lnbmFsPEF1dGhCYWNrZ3JvdW5kTWV0YWRhdGE+KHt9KTtcblxuICBASW5wdXQoKVxuICBzZXQgcHJvcHModmFsdWU6IEF1dGhCYWNrZ3JvdW5kTWV0YWRhdGEpIHtcbiAgICB0aGlzLl9wcm9wcy5zZXQodmFsdWUpO1xuICAgIHRoaXMucmVnZW5lcmF0ZVdhdmVzKCk7XG4gIH1cbiAgZ2V0IHByb3BzKCk6IEF1dGhCYWNrZ3JvdW5kTWV0YWRhdGEge1xuICAgIHJldHVybiB0aGlzLl9wcm9wcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWZhdWx0Q29sb3JzID0gWycjZTBlMGUwJywgJyNiZGJkYmQnLCAnIzllOWU5ZScsICcjNzU3NTc1JywgJyM2MTYxNjEnLCAnIzQyNDI0MiddO1xuICBwcml2YXRlIHdhdmVzU2lnbmFsID0gc2lnbmFsPFdhdmVEYXRhW10+KFtdKTtcblxuICBjb25maWcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLl9wcm9wcygpO1xuICAgIHJldHVybiB7XG4gICAgICB3YXZlQ291bnQ6IHByb3BzLndhdmVDb3VudCA/PyAxNixcbiAgICAgIHdhdmVDb2xvcnM6IHByb3BzLndhdmVDb2xvcnMgPz8gdGhpcy5kZWZhdWx0Q29sb3JzLFxuICAgICAgc2hvd0dyYWluOiBwcm9wcy5zaG93R3JhaW4gIT09IGZhbHNlLFxuICAgICAgc2hvd0dsYXNzOiBwcm9wcy5zaG93R2xhc3MgIT09IGZhbHNlLFxuICAgICAgbWluSGVpZ2h0OiBwcm9wcy5taW5IZWlnaHQgPz8gJ2NhbGMoMTAwdmggLSAxMjBweCknLFxuICAgIH07XG4gIH0pO1xuXG4gIHdhdmVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy53YXZlc1NpZ25hbCgpKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnJlZ2VuZXJhdGVXYXZlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdlbmVyYXRlV2F2ZXMoKTogdm9pZCB7XG4gICAgY29uc3QgY2ZnID0gdGhpcy5jb25maWcoKTtcbiAgICBjb25zdCBjb2xvcnMgPSBjZmcud2F2ZUNvbG9ycztcbiAgICBjb25zdCBjb3VudCA9IGNmZy53YXZlQ291bnQ7XG5cbiAgICBjb25zdCBuZXdXYXZlcyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IGNvdW50IH0sIChfLCBpKSA9PiB7XG4gICAgICAvLyBEaXN0cmlidWlyIHVuaWZvcm1lIGEgbG8gbGFyZ28gZGVsIHZpZXdCb3ggKDAuLjgwMCkg4oCUIHNpbiBodWVjb3MgYXJyaWJhXG4gICAgICBjb25zdCB5ID0gKChpICsgMC41KSAvIGNvdW50KSAqIDgwMDtcbiAgICAgIC8vIFRpZXJzIChsb29rIFwiYXVyb3JhXCIpOiBwb2NhcyBoZXJvIGdydWVzYXMgeSBsdW1pbm9zYXMsIGFsZ3VuYXMgbWlkLCBlbFxuICAgICAgLy8gcmVzdG8gdGVudWVzIGRlIGZvbmRvLiBBY2VudG9zIGRlIG1hcmNhIGVuIGxhcyBoZXJvICsgYWxndW5hIHN1ZWx0YS5cbiAgICAgIGNvbnN0IGlzSGVybyA9IGkgJSA1ID09PSAwO1xuICAgICAgY29uc3QgaXNNZWRpdW0gPSAhaXNIZXJvICYmIGkgJSAyID09PSAwO1xuICAgICAgY29uc3QgYWNjZW50ID0gaXNIZXJvIHx8IGkgJSA3ID09PSAzO1xuXG4gICAgICAvLyBIZXJvIG3DoXMgYW1wbGlhcyBwYXJhIGNpbnRhcyBxdWUgXCJyZXNwaXJhblwiOyBlbCByZXN0bywgY29udGVuaWRhcy5cbiAgICAgIGNvbnN0IGFtcGxpdHVkZSA9IGlzSGVybyA/IDIyICsgTWF0aC5yYW5kb20oKSAqIDE4IDogMTAgKyBNYXRoLnJhbmRvbSgpICogMTY7XG4gICAgICAvLyBGcmVjdWVuY2lhIEVOVEVSQSAoY2ljbG9zIGNvbXBsZXRvcyBzb2JyZSBlbCBhbmNobyAxNDQwKS4gSW1wcmVzY2luZGlibGVcbiAgICAgIC8vIHBhcmEgZWwgbG9vcCBzZWFtbGVzczogY29uIGZyZXEgZW50ZXJvLCBwYXRoKHgpID09PSBwYXRoKHggwrEgMTQ0MCksIGFzw61cbiAgICAgIC8vIGVsIHRyYW5zbGF0ZVggZGUgdW5hIHZ1ZWx0YSAoMTQ0MHB4KSBjYWx6YSBleGFjdG8geSBOTyBoYXkgc2FsdG8vY29ydGUuXG4gICAgICBjb25zdCBmcmVxdWVuY3kgPSAxICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMyk7IC8vIDEgfCAyIHwgM1xuICAgICAgY29uc3QgcGhhc2UgPSBNYXRoLnJhbmRvbSgpICogTWF0aC5QSSAqIDI7XG5cbiAgICAgIC8vIFBhdGggZXh0ZW5kaWRvIGEgLTE0ODAgLi4gMjkyMCAo4omlIHVuYSB2dWVsdGEgZGUgYmxlZWQgYSBjYWRhIGxhZG8pIHBhcmFcbiAgICAgIC8vIHF1ZSBlbCBkZXNwbGF6YW1pZW50byBkZSDCsTE0NDBweCBudW5jYSBkZWplIGVsIHZpZXdCb3ggc2luIG9uZGEuXG4gICAgICBsZXQgcGF0aCA9IGBNLTE0ODAsJHt5fWA7XG4gICAgICBmb3IgKGxldCB4ID0gLTE0ODA7IHggPD0gMjkyMDsgeCArPSA0MCkge1xuICAgICAgICBjb25zdCB3YXZlWSA9IHkgKyBhbXBsaXR1ZGUgKiBNYXRoLnNpbigoeCAvIDE0NDApICogTWF0aC5QSSAqIGZyZXF1ZW5jeSAqIDIgKyBwaGFzZSk7XG4gICAgICAgIHBhdGggKz0gYCBMJHt4fSwke3dhdmVZLnRvRml4ZWQoMSl9YDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29sb3IgPSBjb2xvcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY29sb3JzLmxlbmd0aCldO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogaSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgY29sb3IsXG4gICAgICAgIHRoaWNrbmVzczogaXNIZXJvID8gMi4yICsgTWF0aC5yYW5kb20oKSAqIDAuOCA6IGlzTWVkaXVtID8gMSA6IDAuNSxcbiAgICAgICAgb3BhY2l0eTogaXNIZXJvID8gMC41NSA6IGlzTWVkaXVtID8gMC4zIDogMC4xNixcbiAgICAgICAgZ2xvdzogaXNIZXJvLFxuICAgICAgICBhY2NlbnQsXG4gICAgICAgIC8vIERyaWZ0IHZlcnRpY2FsIHN1dGlsIChubyBcImVxdWFsaXplclwiKTogZGEgdmlkYSBzaW4gc2FsdG9zLlxuICAgICAgICBib2I6IDQgKyBNYXRoLnJhbmRvbSgpICogMTAsXG4gICAgICAgIC8vIEZsdWpvIGhvcml6b250YWwgY29udGludW8uIER1cmFjaW9uZXMgdmFyaWFkYXMgPSBwYXJhbGxheC9wcm9mdW5kaWRhZC5cbiAgICAgICAgLy8gZGVsYXkgbmVnYXRpdm8gZGVzaW5jcm9uaXphIGVsIGFycmFucXVlIGRlIGNhZGEgY2FwYS5cbiAgICAgICAgdHJhdmVsRHVyYXRpb246IDE0ICsgTWF0aC5yYW5kb20oKSAqIDIyLFxuICAgICAgICB0cmF2ZWxEZWxheTogLU1hdGgucmFuZG9tKCkgKiAzMCxcbiAgICAgICAgdHJhdmVsRGlyZWN0aW9uOiBpICUgMiA9PT0gMCA/ICgncmlnaHQnIGFzIGNvbnN0KSA6ICgnbGVmdCcgYXMgY29uc3QpLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRoaXMud2F2ZXNTaWduYWwuc2V0KG5ld1dhdmVzKTtcbiAgfVxufVxuIl19