valtech-components 2.0.632 → 2.0.633

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.
@@ -0,0 +1,366 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, computed, EventEmitter, inject, input, Output, signal, } from '@angular/core';
3
+ import { NavigationEnd, Router } from '@angular/router';
4
+ import { IonIcon, IonRippleEffect } from '@ionic/angular/standalone';
5
+ import { addIcons } from 'ionicons';
6
+ import { filter } from 'rxjs';
7
+ import { I18nService } from '../../../services/i18n';
8
+ import { NavigationService } from '../../../services/navigation.service';
9
+ import { BOTTOM_NAV_DEFAULTS, } from './types';
10
+ // Register common navigation icons
11
+ import { home, homeOutline, search, searchOutline, person, personOutline, settings, settingsOutline, notifications, notificationsOutline, add, addOutline, heart, heartOutline, cart, cartOutline, chatbubble, chatbubbleOutline, compass, compassOutline, grid, gridOutline, list, listOutline, calendar, calendarOutline, folder, folderOutline, documents, documentsOutline, statsChart, statsChartOutline, } from 'ionicons/icons';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@angular/common";
14
+ addIcons({
15
+ home,
16
+ homeOutline,
17
+ search,
18
+ searchOutline,
19
+ person,
20
+ personOutline,
21
+ settings,
22
+ settingsOutline,
23
+ notifications,
24
+ notificationsOutline,
25
+ add,
26
+ addOutline,
27
+ heart,
28
+ heartOutline,
29
+ cart,
30
+ cartOutline,
31
+ chatbubble,
32
+ chatbubbleOutline,
33
+ compass,
34
+ compassOutline,
35
+ grid,
36
+ gridOutline,
37
+ list,
38
+ listOutline,
39
+ calendar,
40
+ calendarOutline,
41
+ folder,
42
+ folderOutline,
43
+ documents,
44
+ documentsOutline,
45
+ statsChart,
46
+ statsChartOutline,
47
+ });
48
+ /**
49
+ * val-bottom-nav
50
+ *
51
+ * A modern bottom navigation bar component with support for tabs,
52
+ * optional central FAB button, badges, and route-based active state detection.
53
+ *
54
+ * @example Basic usage
55
+ * ```html
56
+ * <val-bottom-nav
57
+ * [props]="{
58
+ * tabs: [
59
+ * { token: 'home', icon: { default: 'home-outline', active: 'home' }, label: 'Home', route: '/app/home' },
60
+ * { token: 'settings', icon: { default: 'settings-outline', active: 'settings' }, label: 'Settings', route: '/app/settings' }
61
+ * ]
62
+ * }"
63
+ * (tabClick)="onTabClick($event)"
64
+ * />
65
+ * ```
66
+ *
67
+ * @example With i18n and translucent theme
68
+ * ```html
69
+ * <val-bottom-nav
70
+ * [props]="{
71
+ * tabs: [
72
+ * { token: 'home', icon: { default: 'home-outline' }, labelKey: 'menuHome', route: '/app/home' },
73
+ * { token: 'settings', icon: { default: 'settings-outline' }, labelKey: 'menuSettings', route: '/app/settings' }
74
+ * ],
75
+ * i18nNamespace: 'Menu',
76
+ * theme: { translucent: true }
77
+ * }"
78
+ * />
79
+ * ```
80
+ */
81
+ export class BottomNavComponent {
82
+ constructor() {
83
+ this.router = inject(Router);
84
+ this.navigation = inject(NavigationService);
85
+ this.i18n = inject(I18nService);
86
+ /** Component configuration */
87
+ this.props = input({ tabs: [] });
88
+ /** Event emitted when a tab is clicked */
89
+ this.tabClick = new EventEmitter();
90
+ /** Event emitted when the FAB button is clicked */
91
+ this.fabClick = new EventEmitter();
92
+ /** Current active route signal for reactive updates */
93
+ this.currentRoute = signal('');
94
+ /** Merged configuration with defaults */
95
+ this.config = computed(() => ({
96
+ ...BOTTOM_NAV_DEFAULTS,
97
+ ...this.props(),
98
+ theme: {
99
+ ...BOTTOM_NAV_DEFAULTS.theme,
100
+ ...this.props().theme,
101
+ },
102
+ }));
103
+ /** Computed tabs with FAB inserted if present */
104
+ this.displayTabs = computed(() => {
105
+ const tabs = this.config().tabs;
106
+ const fab = this.config().fab;
107
+ if (!fab)
108
+ return tabs;
109
+ // Insert placeholder at center for FAB positioning
110
+ const midpoint = Math.floor(tabs.length / 2);
111
+ return [
112
+ ...tabs.slice(0, midpoint),
113
+ null, // FAB placeholder
114
+ ...tabs.slice(midpoint),
115
+ ];
116
+ });
117
+ }
118
+ /** Check if a tab is currently active */
119
+ isActive(tab) {
120
+ const route = this.currentRoute();
121
+ if (!route)
122
+ return false;
123
+ // Check main route
124
+ const tabRoute = Array.isArray(tab.route) ? tab.route.join('/') : tab.route;
125
+ if (route.startsWith(tabRoute))
126
+ return true;
127
+ // Check additional active routes
128
+ if (tab.activeRoutes) {
129
+ return tab.activeRoutes.some((r) => route.startsWith(r));
130
+ }
131
+ return false;
132
+ }
133
+ /** Get the appropriate icon for a tab based on active state */
134
+ getIcon(tab) {
135
+ const active = this.isActive(tab);
136
+ if (active && tab.icon.active) {
137
+ return tab.icon.active;
138
+ }
139
+ return tab.icon.default;
140
+ }
141
+ /** Get translated label for a tab */
142
+ getLabel(tab) {
143
+ if (tab.label)
144
+ return tab.label;
145
+ if (tab.labelKey) {
146
+ this.i18n.lang(); // Track language changes for reactivity
147
+ return this.i18n.t(tab.labelKey, this.config().i18nNamespace);
148
+ }
149
+ return '';
150
+ }
151
+ /** Get CSS variables for theming */
152
+ getThemeStyles() {
153
+ const theme = this.config().theme;
154
+ return {
155
+ '--bottom-nav-bg': theme.background || '',
156
+ '--bottom-nav-active': this.resolveColor(theme.activeColor),
157
+ '--bottom-nav-inactive': this.resolveColor(theme.inactiveColor),
158
+ '--bottom-nav-radius': theme.borderRadius || '',
159
+ };
160
+ }
161
+ ngOnInit() {
162
+ // Set initial route
163
+ this.currentRoute.set(this.router.url);
164
+ // Subscribe to route changes
165
+ this.routerSubscription = this.router.events
166
+ .pipe(filter((event) => event instanceof NavigationEnd))
167
+ .subscribe((event) => {
168
+ this.currentRoute.set(event.urlAfterRedirects);
169
+ });
170
+ }
171
+ ngOnDestroy() {
172
+ this.routerSubscription?.unsubscribe();
173
+ }
174
+ /** Handle tab click */
175
+ onTabClick(tab) {
176
+ if (tab.disabled)
177
+ return;
178
+ // Emit event
179
+ this.tabClick.emit({
180
+ token: tab.token,
181
+ isFab: false,
182
+ route: tab.route,
183
+ });
184
+ // Navigate
185
+ const route = Array.isArray(tab.route) ? tab.route : [tab.route];
186
+ this.router.navigate(route);
187
+ }
188
+ /** Handle FAB click */
189
+ onFabClick() {
190
+ const fab = this.config().fab;
191
+ if (!fab)
192
+ return;
193
+ // Emit event
194
+ this.fabClick.emit();
195
+ // Navigate if route is defined and not an action-only button
196
+ if (fab.route && !fab.isAction) {
197
+ const route = Array.isArray(fab.route) ? fab.route : [fab.route];
198
+ this.router.navigate(route);
199
+ }
200
+ }
201
+ /** Resolve Ionic color name to CSS variable */
202
+ resolveColor(color) {
203
+ if (!color)
204
+ return '';
205
+ const ionicColors = [
206
+ 'primary',
207
+ 'secondary',
208
+ 'tertiary',
209
+ 'success',
210
+ 'warning',
211
+ 'danger',
212
+ 'light',
213
+ 'medium',
214
+ 'dark',
215
+ ];
216
+ if (ionicColors.includes(color)) {
217
+ return `var(--ion-color-${color})`;
218
+ }
219
+ return color;
220
+ }
221
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BottomNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
222
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BottomNavComponent, isStandalone: true, selector: "val-bottom-nav", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tabClick: "tabClick", fabClick: "fabClick" }, ngImport: i0, template: `
223
+ <nav
224
+ class="bottom-nav"
225
+ [class.bottom-nav--elevated]="config().theme.elevated"
226
+ [class.bottom-nav--translucent]="config().theme.translucent"
227
+ [class.bottom-nav--safe-area]="config().safeArea"
228
+ [class.bottom-nav--hide-labels]="config().hideLabels"
229
+ [ngStyle]="getThemeStyles()"
230
+ role="navigation"
231
+ aria-label="Bottom navigation"
232
+ >
233
+ <div class="bottom-nav__container">
234
+ @for (item of displayTabs(); track item?.token ?? 'fab') {
235
+ @if (item === null && config().fab) {
236
+ <!-- FAB Button -->
237
+ <button
238
+ class="bottom-nav__fab"
239
+ [class.bottom-nav__fab--small]="config().fab!.size === 'small'"
240
+ [style.--fab-color]="resolveColor(config().fab!.color || 'primary')"
241
+ (click)="onFabClick()"
242
+ [attr.aria-label]="config().fab!.ariaLabel || 'Action button'"
243
+ type="button"
244
+ >
245
+ <ion-ripple-effect></ion-ripple-effect>
246
+ <ion-icon [name]="config().fab!.icon"></ion-icon>
247
+ </button>
248
+ } @else if (item) {
249
+ <!-- Tab Item -->
250
+ <button
251
+ class="bottom-nav__tab"
252
+ [class.bottom-nav__tab--active]="isActive(item)"
253
+ [class.bottom-nav__tab--disabled]="item.disabled"
254
+ [attr.data-animation]="config().animation"
255
+ (click)="onTabClick(item)"
256
+ [attr.aria-label]="item.ariaLabel || getLabel(item)"
257
+ [attr.aria-current]="isActive(item) ? 'page' : null"
258
+ [disabled]="item.disabled"
259
+ type="button"
260
+ >
261
+ <ion-ripple-effect></ion-ripple-effect>
262
+
263
+ <div class="bottom-nav__tab-icon">
264
+ <ion-icon [name]="getIcon(item)"></ion-icon>
265
+
266
+ <!-- Badge -->
267
+ @if (item.badge) {
268
+ <span
269
+ class="bottom-nav__badge"
270
+ [class.bottom-nav__badge--dot]="item.badge.dot"
271
+ [style.color]="item.badge.color ? resolveColor(item.badge.color) : null"
272
+ [style.background-color]="item.badge.backgroundColor ? resolveColor(item.badge.backgroundColor) : null"
273
+ >
274
+ @if (!item.badge.dot && item.badge.text) {
275
+ {{ item.badge.text }}
276
+ }
277
+ </span>
278
+ }
279
+ </div>
280
+
281
+ @if (!config().hideLabels && getLabel(item)) {
282
+ <span class="bottom-nav__tab-label">{{ getLabel(item) }}</span>
283
+ }
284
+ </button>
285
+ }
286
+ }
287
+ </div>
288
+ </nav>
289
+ `, isInline: true, styles: [":host{display:block;position:fixed;bottom:0;left:0;right:0;z-index:100;pointer-events:none}.bottom-nav{--bottom-nav-bg: var(--ion-background-color);--bottom-nav-active: var(--ion-color-primary);--bottom-nav-inactive: var(--ion-color-medium);--bottom-nav-radius: 16px 16px 0 0;--bottom-nav-height: 64px;--bottom-nav-fab-size: 56px;--fab-color: var(--ion-color-primary);pointer-events:auto;background:var(--bottom-nav-bg);border-radius:var(--bottom-nav-radius);height:var(--bottom-nav-height);padding:0 8px}.bottom-nav--elevated{box-shadow:0 -4px 20px #00000014}.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 255, 255, 255),.75);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border-top:1px solid rgba(var(--ion-text-color-rgb, 0, 0, 0),.06)}.bottom-nav--safe-area{padding-bottom:env(safe-area-inset-bottom,0);height:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom,0))}.bottom-nav__container{display:flex;align-items:center;justify-content:space-around;height:var(--bottom-nav-height);max-width:500px;margin:0 auto}.bottom-nav__tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;height:100%;padding:8px 4px;background:transparent;border:none;cursor:pointer;position:relative;overflow:hidden;color:var(--bottom-nav-inactive);transition:color .2s ease;max-width:80px;--ripple-color: var(--bottom-nav-active)}.bottom-nav__tab:focus-visible{outline:2px solid var(--bottom-nav-active);outline-offset:-2px;border-radius:8px}.bottom-nav__tab--active{color:var(--bottom-nav-active)}.bottom-nav__tab--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.bottom-nav__tab[data-animation=scale] .bottom-nav__tab-icon{transition:transform .2s cubic-bezier(.4,0,.2,1)}.bottom-nav__tab[data-animation=scale].bottom-nav__tab--active .bottom-nav__tab-icon{transform:scale(1.15)}.bottom-nav__tab[data-animation=fade]{transition:opacity .2s ease,color .2s ease}.bottom-nav__tab[data-animation=fade]:not(.bottom-nav__tab--active){opacity:.6}.bottom-nav__tab[data-animation=slide] .bottom-nav__tab-label{transition:transform .2s ease,opacity .2s ease;transform:translateY(6px);opacity:0}.bottom-nav__tab[data-animation=slide].bottom-nav__tab--active .bottom-nav__tab-label{transform:translateY(0);opacity:1}.bottom-nav__tab-icon{position:relative;font-size:24px;line-height:1}.bottom-nav__tab-icon ion-icon{display:block}.bottom-nav__tab-label{font-size:11px;font-weight:500;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;letter-spacing:.01em}.bottom-nav__badge{position:absolute;top:-4px;right:-10px;min-width:18px;height:18px;padding:0 5px;font-size:10px;font-weight:600;line-height:18px;text-align:center;color:#fff;background-color:var(--ion-color-danger);border-radius:9px;box-shadow:0 1px 3px #0003}.bottom-nav__badge--dot{min-width:10px;width:10px;height:10px;padding:0;top:-2px;right:-4px;border-radius:50%}.bottom-nav__fab{position:relative;flex-shrink:0;width:var(--bottom-nav-fab-size);height:var(--bottom-nav-fab-size);margin:0 12px;margin-top:calc(var(--bottom-nav-fab-size) * -.35);background:var(--fab-color);border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;font-size:28px;box-shadow:0 4px 14px rgba(var(--ion-color-primary-rgb, 56, 128, 255),.4);transition:transform .2s cubic-bezier(.4,0,.2,1),box-shadow .2s ease;overflow:hidden;--ripple-color: rgba(255, 255, 255, .3)}.bottom-nav__fab:hover{transform:scale(1.08);box-shadow:0 6px 20px rgba(var(--ion-color-primary-rgb, 56, 128, 255),.5)}.bottom-nav__fab:active{transform:scale(.95)}.bottom-nav__fab:focus-visible{outline:3px solid white;outline-offset:2px}.bottom-nav__fab--small{--bottom-nav-fab-size: 48px;font-size:24px;margin-top:-14.4px}.bottom-nav__fab ion-icon{display:block}.bottom-nav--hide-labels{--bottom-nav-height: 56px}.bottom-nav--hide-labels .bottom-nav__tab-label{display:none}.bottom-nav--hide-labels .bottom-nav__tab-icon{font-size:26px}@media (prefers-color-scheme: dark){.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 0, 0, 0),.8);border-top-color:#ffffff14}.bottom-nav--elevated{box-shadow:0 -4px 20px #00000040}.bottom-nav__fab{box-shadow:0 4px 14px #0006}.bottom-nav__fab:hover{box-shadow:0 6px 20px #00000080}}:host-context(.dark) .bottom-nav--translucent,:host-context(body.dark) .bottom-nav--translucent,:host-context([data-theme=dark]) .bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 18, 18, 18),.85);border-top-color:#ffffff14}:host-context(.dark) .bottom-nav--elevated,:host-context(body.dark) .bottom-nav--elevated,:host-context([data-theme=dark]) .bottom-nav--elevated{box-shadow:0 -4px 20px #0000004d}:host-context(.dark) .bottom-nav__fab,:host-context(body.dark) .bottom-nav__fab,:host-context([data-theme=dark]) .bottom-nav__fab{box-shadow:0 4px 14px #00000080}:host-context(.dark) .bottom-nav__fab:hover,:host-context(body.dark) .bottom-nav__fab:hover,:host-context([data-theme=dark]) .bottom-nav__fab:hover{box-shadow:0 6px 20px #0009}@supports (padding-bottom: env(safe-area-inset-bottom)){.bottom-nav--safe-area .bottom-nav__container{height:var(--bottom-nav-height)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonRippleEffect, selector: "ion-ripple-effect", inputs: ["type"] }] }); }
290
+ }
291
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BottomNavComponent, decorators: [{
292
+ type: Component,
293
+ args: [{ selector: 'val-bottom-nav', standalone: true, imports: [CommonModule, IonIcon, IonRippleEffect], template: `
294
+ <nav
295
+ class="bottom-nav"
296
+ [class.bottom-nav--elevated]="config().theme.elevated"
297
+ [class.bottom-nav--translucent]="config().theme.translucent"
298
+ [class.bottom-nav--safe-area]="config().safeArea"
299
+ [class.bottom-nav--hide-labels]="config().hideLabels"
300
+ [ngStyle]="getThemeStyles()"
301
+ role="navigation"
302
+ aria-label="Bottom navigation"
303
+ >
304
+ <div class="bottom-nav__container">
305
+ @for (item of displayTabs(); track item?.token ?? 'fab') {
306
+ @if (item === null && config().fab) {
307
+ <!-- FAB Button -->
308
+ <button
309
+ class="bottom-nav__fab"
310
+ [class.bottom-nav__fab--small]="config().fab!.size === 'small'"
311
+ [style.--fab-color]="resolveColor(config().fab!.color || 'primary')"
312
+ (click)="onFabClick()"
313
+ [attr.aria-label]="config().fab!.ariaLabel || 'Action button'"
314
+ type="button"
315
+ >
316
+ <ion-ripple-effect></ion-ripple-effect>
317
+ <ion-icon [name]="config().fab!.icon"></ion-icon>
318
+ </button>
319
+ } @else if (item) {
320
+ <!-- Tab Item -->
321
+ <button
322
+ class="bottom-nav__tab"
323
+ [class.bottom-nav__tab--active]="isActive(item)"
324
+ [class.bottom-nav__tab--disabled]="item.disabled"
325
+ [attr.data-animation]="config().animation"
326
+ (click)="onTabClick(item)"
327
+ [attr.aria-label]="item.ariaLabel || getLabel(item)"
328
+ [attr.aria-current]="isActive(item) ? 'page' : null"
329
+ [disabled]="item.disabled"
330
+ type="button"
331
+ >
332
+ <ion-ripple-effect></ion-ripple-effect>
333
+
334
+ <div class="bottom-nav__tab-icon">
335
+ <ion-icon [name]="getIcon(item)"></ion-icon>
336
+
337
+ <!-- Badge -->
338
+ @if (item.badge) {
339
+ <span
340
+ class="bottom-nav__badge"
341
+ [class.bottom-nav__badge--dot]="item.badge.dot"
342
+ [style.color]="item.badge.color ? resolveColor(item.badge.color) : null"
343
+ [style.background-color]="item.badge.backgroundColor ? resolveColor(item.badge.backgroundColor) : null"
344
+ >
345
+ @if (!item.badge.dot && item.badge.text) {
346
+ {{ item.badge.text }}
347
+ }
348
+ </span>
349
+ }
350
+ </div>
351
+
352
+ @if (!config().hideLabels && getLabel(item)) {
353
+ <span class="bottom-nav__tab-label">{{ getLabel(item) }}</span>
354
+ }
355
+ </button>
356
+ }
357
+ }
358
+ </div>
359
+ </nav>
360
+ `, styles: [":host{display:block;position:fixed;bottom:0;left:0;right:0;z-index:100;pointer-events:none}.bottom-nav{--bottom-nav-bg: var(--ion-background-color);--bottom-nav-active: var(--ion-color-primary);--bottom-nav-inactive: var(--ion-color-medium);--bottom-nav-radius: 16px 16px 0 0;--bottom-nav-height: 64px;--bottom-nav-fab-size: 56px;--fab-color: var(--ion-color-primary);pointer-events:auto;background:var(--bottom-nav-bg);border-radius:var(--bottom-nav-radius);height:var(--bottom-nav-height);padding:0 8px}.bottom-nav--elevated{box-shadow:0 -4px 20px #00000014}.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 255, 255, 255),.75);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border-top:1px solid rgba(var(--ion-text-color-rgb, 0, 0, 0),.06)}.bottom-nav--safe-area{padding-bottom:env(safe-area-inset-bottom,0);height:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom,0))}.bottom-nav__container{display:flex;align-items:center;justify-content:space-around;height:var(--bottom-nav-height);max-width:500px;margin:0 auto}.bottom-nav__tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;height:100%;padding:8px 4px;background:transparent;border:none;cursor:pointer;position:relative;overflow:hidden;color:var(--bottom-nav-inactive);transition:color .2s ease;max-width:80px;--ripple-color: var(--bottom-nav-active)}.bottom-nav__tab:focus-visible{outline:2px solid var(--bottom-nav-active);outline-offset:-2px;border-radius:8px}.bottom-nav__tab--active{color:var(--bottom-nav-active)}.bottom-nav__tab--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.bottom-nav__tab[data-animation=scale] .bottom-nav__tab-icon{transition:transform .2s cubic-bezier(.4,0,.2,1)}.bottom-nav__tab[data-animation=scale].bottom-nav__tab--active .bottom-nav__tab-icon{transform:scale(1.15)}.bottom-nav__tab[data-animation=fade]{transition:opacity .2s ease,color .2s ease}.bottom-nav__tab[data-animation=fade]:not(.bottom-nav__tab--active){opacity:.6}.bottom-nav__tab[data-animation=slide] .bottom-nav__tab-label{transition:transform .2s ease,opacity .2s ease;transform:translateY(6px);opacity:0}.bottom-nav__tab[data-animation=slide].bottom-nav__tab--active .bottom-nav__tab-label{transform:translateY(0);opacity:1}.bottom-nav__tab-icon{position:relative;font-size:24px;line-height:1}.bottom-nav__tab-icon ion-icon{display:block}.bottom-nav__tab-label{font-size:11px;font-weight:500;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;letter-spacing:.01em}.bottom-nav__badge{position:absolute;top:-4px;right:-10px;min-width:18px;height:18px;padding:0 5px;font-size:10px;font-weight:600;line-height:18px;text-align:center;color:#fff;background-color:var(--ion-color-danger);border-radius:9px;box-shadow:0 1px 3px #0003}.bottom-nav__badge--dot{min-width:10px;width:10px;height:10px;padding:0;top:-2px;right:-4px;border-radius:50%}.bottom-nav__fab{position:relative;flex-shrink:0;width:var(--bottom-nav-fab-size);height:var(--bottom-nav-fab-size);margin:0 12px;margin-top:calc(var(--bottom-nav-fab-size) * -.35);background:var(--fab-color);border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;font-size:28px;box-shadow:0 4px 14px rgba(var(--ion-color-primary-rgb, 56, 128, 255),.4);transition:transform .2s cubic-bezier(.4,0,.2,1),box-shadow .2s ease;overflow:hidden;--ripple-color: rgba(255, 255, 255, .3)}.bottom-nav__fab:hover{transform:scale(1.08);box-shadow:0 6px 20px rgba(var(--ion-color-primary-rgb, 56, 128, 255),.5)}.bottom-nav__fab:active{transform:scale(.95)}.bottom-nav__fab:focus-visible{outline:3px solid white;outline-offset:2px}.bottom-nav__fab--small{--bottom-nav-fab-size: 48px;font-size:24px;margin-top:-14.4px}.bottom-nav__fab ion-icon{display:block}.bottom-nav--hide-labels{--bottom-nav-height: 56px}.bottom-nav--hide-labels .bottom-nav__tab-label{display:none}.bottom-nav--hide-labels .bottom-nav__tab-icon{font-size:26px}@media (prefers-color-scheme: dark){.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 0, 0, 0),.8);border-top-color:#ffffff14}.bottom-nav--elevated{box-shadow:0 -4px 20px #00000040}.bottom-nav__fab{box-shadow:0 4px 14px #0006}.bottom-nav__fab:hover{box-shadow:0 6px 20px #00000080}}:host-context(.dark) .bottom-nav--translucent,:host-context(body.dark) .bottom-nav--translucent,:host-context([data-theme=dark]) .bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 18, 18, 18),.85);border-top-color:#ffffff14}:host-context(.dark) .bottom-nav--elevated,:host-context(body.dark) .bottom-nav--elevated,:host-context([data-theme=dark]) .bottom-nav--elevated{box-shadow:0 -4px 20px #0000004d}:host-context(.dark) .bottom-nav__fab,:host-context(body.dark) .bottom-nav__fab,:host-context([data-theme=dark]) .bottom-nav__fab{box-shadow:0 4px 14px #00000080}:host-context(.dark) .bottom-nav__fab:hover,:host-context(body.dark) .bottom-nav__fab:hover,:host-context([data-theme=dark]) .bottom-nav__fab:hover{box-shadow:0 6px 20px #0009}@supports (padding-bottom: env(safe-area-inset-bottom)){.bottom-nav--safe-area .bottom-nav__container{height:var(--bottom-nav-height)}}\n"] }]
361
+ }], propDecorators: { tabClick: [{
362
+ type: Output
363
+ }], fabClick: [{
364
+ type: Output
365
+ }] } });
366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90dG9tLW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2JvdHRvbS1uYXYvYm90dG9tLW5hdi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLE1BQU0sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFJTCxtQkFBbUIsR0FDcEIsTUFBTSxTQUFTLENBQUM7QUFFakIsbUNBQW1DO0FBQ25DLE9BQU8sRUFDTCxJQUFJLEVBQ0osV0FBVyxFQUNYLE1BQU0sRUFDTixhQUFhLEVBQ2IsTUFBTSxFQUNOLGFBQWEsRUFDYixRQUFRLEVBQ1IsZUFBZSxFQUNmLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILFVBQVUsRUFDVixLQUFLLEVBQ0wsWUFBWSxFQUNaLElBQUksRUFDSixXQUFXLEVBQ1gsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixPQUFPLEVBQ1AsY0FBYyxFQUNkLElBQUksRUFDSixXQUFXLEVB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LENBQUM7UUFDRixJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFPLG1CQUFtQixLQUFLLEdBQUcsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOytHQTVKVSxrQkFBa0I7bUdBQWxCLGtCQUFrQix1UUF0RW5COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUVULHFzS0FwRVMsWUFBWSxvSEFBRSxPQUFPLDJKQUFFLGVBQWU7OzRGQXVFckMsa0JBQWtCO2tCQTFFOUIsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxZQUN2Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1FVDs4QkFhUyxRQUFRO3NCQUFqQixNQUFNO2dCQUdHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElvbkljb24sIElvblJpcHBsZUVmZmVjdCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBmaWx0ZXIsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEJvdHRvbU5hdk1ldGFkYXRhLFxuICBCb3R0b21OYXZUYWIsXG4gIEJvdHRvbU5hdkNsaWNrRXZlbnQsXG4gIEJPVFRPTV9OQVZfREVGQVVMVFMsXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vLyBSZWdpc3RlciBjb21tb24gbmF2aWdhdGlvbiBpY29uc1xuaW1wb3J0IHtcbiAgaG9tZSxcbiAgaG9tZU91dGxpbmUsXG4gIHNlYXJjaCxcbiAgc2VhcmNoT3V0bGluZSxcbiAgcGVyc29uLFxuICBwZXJzb25PdXRsaW5lLFxuICBzZXR0aW5ncyxcbiAgc2V0dGluZ3NPdXRsaW5lLFxuICBub3RpZmljYXRpb25zLFxuICBub3RpZmljYXRpb25zT3V0bGluZSxcbiAgYWRkLFxuICBhZGRPdXRsaW5lLFxuICBoZWFydCxcbiAgaGVhcnRPdXRsaW5lLFxuICBjYXJ0LFxuICBjYXJ0T3V0bGluZSxcbiAgY2hhdGJ1YmJsZSxcbiAgY2hhdGJ1YmJsZU91dGxpbmUsXG4gIGNvbXBhc3MsXG4gIGNvbXBhc3NPdXRsaW5lLFxuICBncmlkLFxuICBncmlkT3V0bGluZSxcbiAgbGlzdCxcbiAgbGlzdE91dGxpbmUsXG4gIGNhbGVuZGFyLFxuICBjYWxlbmRhck91dGxpbmUsXG4gIGZvbGRlcixcbiAgZm9sZGVyT3V0bGluZSxcbiAgZG9jdW1lbnRzLFxuICBkb2N1bWVudHNPdXRsaW5lLFxuICBzdGF0c0NoYXJ0LFxuICBzdGF0c0NoYXJ0T3V0bGluZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5hZGRJY29ucyh7XG4gIGhvbWUsXG4gIGhvbWVPdXRsaW5lLFxuICBzZWFyY2gsXG4gIHNlYXJjaE91dGxpbmUsXG4gIHBlcnNvbixcbiAgcGVyc29uT3V0bGluZSxcbiAgc2V0dGluZ3MsXG4gIHNldHRpbmdzT3V0bGluZSxcbiAgbm90aWZpY2F0aW9ucyxcbiAgbm90aWZpY2F0aW9uc091dGxpbmUsXG4gIGFkZCxcbiAgYWRkT3V0bGluZSxcbiAgaGVhcnQsXG4gIGhlYXJ0T3V0bGluZSxcbiAgY2FydCxcbiAgY2FydE91dGxpbmUsXG4gIGNoYXRidWJibGUsXG4gIGNoYXRidWJibGVPdXRsaW5lLFxuICBjb21wYXNzLFxuICBjb21wYXNzT3V0bGluZSxcbiAgZ3JpZCxcbiAgZ3JpZE91dGxpbmUsXG4gIGxpc3QsXG4gIGxpc3RPdXRsaW5lLFxuICBjYWxlbmRhcixcbiAgY2FsZW5kYXJPdXRsaW5lLFxuICBmb2xkZXIsXG4gIGZvbGRlck91dGxpbmUsXG4gIGRvY3VtZW50cyxcbiAgZG9jdW1lbnRzT3V0bGluZSxcbiAgc3RhdHNDaGFydCxcbiAgc3RhdHNDaGFydE91dGxpbmUsXG59KTtcblxuLyoqXG4gKiB2YWwtYm90dG9tLW5hdlxuICpcbiAqIEEgbW9kZXJuIGJvdHRvbSBuYXZpZ2F0aW9uIGJhciBjb21wb25lbnQgd2l0aCBzdXBwb3J0IGZvciB0YWJzLFxuICogb3B0aW9uYWwgY2VudHJhbCBGQUIgYnV0dG9uLCBiYWRnZXMsIGFuZCByb3V0ZS1iYXNlZCBhY3RpdmUgc3RhdGUgZGV0ZWN0aW9uLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGBodG1sXG4gKiA8dmFsLWJvdHRvbS1uYXZcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICB0YWJzOiBbXG4gKiAgICAgICB7IHRva2VuOiAnaG9tZScsIGljb246IHsgZGVmYXVsdDogJ2hvbWUtb3V0bGluZScsIGFjdGl2ZTogJ2hvbWUnIH0sIGxhYmVsOiAnSG9tZScsIHJvdXRlOiAnL2FwcC9ob21lJyB9LFxuICogICAgICAgeyB0b2tlbjogJ3NldHRpbmdzJywgaWNvbjogeyBkZWZhdWx0OiAnc2V0dGluZ3Mtb3V0bGluZScsIGFjdGl2ZTogJ3NldHRpbmdzJyB9LCBsYWJlbDogJ1NldHRpbmdzJywgcm91dGU6ICcvYXBwL3NldHRpbmdzJyB9XG4gKiAgICAgXVxuICogICB9XCJcbiAqICAgKHRhYkNsaWNrKT1cIm9uVGFiQ2xpY2soJGV2ZW50KVwiXG4gKiAvPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgV2l0aCBpMThuIGFuZCB0cmFuc2x1Y2VudCB0aGVtZVxuICogYGBgaHRtbFxuICogPHZhbC1ib3R0b20tbmF2XG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgdGFiczogW1xuICogICAgICAgeyB0b2tlbjogJ2hvbWUnLCBpY29uOiB7IGRlZmF1bHQ6ICdob21lLW91dGxpbmUnIH0sIGxhYmVsS2V5OiAnbWVudUhvbWUnLCByb3V0ZTogJy9hcHAvaG9tZScgfSxcbiAqICAgICAgIHsgdG9rZW46ICdzZXR0aW5ncycsIGljb246IHsgZGVmYXVsdDogJ3NldHRpbmdzLW91dGxpbmUnIH0sIGxhYmVsS2V5OiAnbWVudVNldHRpbmdzJywgcm91dGU6ICcvYXBwL3NldHRpbmdzJyB9XG4gKiAgICAgXSxcbiAqICAgICBpMThuTmFtZXNwYWNlOiAnTWVudScsXG4gKiAgICAgdGhlbWU6IHsgdHJhbnNsdWNlbnQ6IHRydWUgfVxuICogICB9XCJcbiAqIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWJvdHRvbS1uYXYnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uLCBJb25SaXBwbGVFZmZlY3RdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuYXZcbiAgICAgIGNsYXNzPVwiYm90dG9tLW5hdlwiXG4gICAgICBbY2xhc3MuYm90dG9tLW5hdi0tZWxldmF0ZWRdPVwiY29uZmlnKCkudGhlbWUuZWxldmF0ZWRcIlxuICAgICAgW2NsYXNzLmJvdHRvbS1uYXYtLXRyYW5zbHVjZW50XT1cImNvbmZpZygpLnRoZW1lLnRyYW5zbHVjZW50XCJcbiAgICAgIFtjbGFzcy5ib3R0b20tbmF2LS1zYWZlLWFyZWFdPVwiY29uZmlnKCkuc2FmZUFyZWFcIlxuICAgICAgW2NsYXNzLmJvdHRvbS1uYXYtLWhpZGUtbGFiZWxzXT1cImNvbmZpZygpLmhpZGVMYWJlbHNcIlxuICAgICAgW25nU3R5bGVdPVwiZ2V0VGhlbWVTdHlsZXMoKVwiXG4gICAgICByb2xlPVwibmF2aWdhdGlvblwiXG4gICAgICBhcmlhLWxhYmVsPVwiQm90dG9tIG5hdmlnYXRpb25cIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJib3R0b20tbmF2X19jb250YWluZXJcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBkaXNwbGF5VGFicygpOyB0cmFjayBpdGVtPy50b2tlbiA/PyAnZmFiJykge1xuICAgICAgICAgIEBpZiAoaXRlbSA9PT0gbnVsbCAmJiBjb25maWcoKS5mYWIpIHtcbiAgICAgICAgICAgIDwhLS0gRkFCIEJ1dHRvbiAtLT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJib3R0b20tbmF2X19mYWJcIlxuICAgICAgICAgICAgICBbY2xhc3MuYm90dG9tLW5hdl9fZmFiLS1zbWFsbF09XCJjb25maWcoKS5mYWIhLnNpemUgPT09ICdzbWFsbCdcIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1mYWItY29sb3JdPVwicmVzb2x2ZUNvbG9yKGNvbmZpZygpLmZhYiEuY29sb3IgfHwgJ3ByaW1hcnknKVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkZhYkNsaWNrKClcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbmZpZygpLmZhYiEuYXJpYUxhYmVsIHx8ICdBY3Rpb24gYnV0dG9uJ1wiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW9uLXJpcHBsZS1lZmZlY3Q+PC9pb24tcmlwcGxlLWVmZmVjdD5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cImNvbmZpZygpLmZhYiEuaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9IEBlbHNlIGlmIChpdGVtKSB7XG4gICAgICAgICAgICA8IS0tIFRhYiBJdGVtIC0tPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJvdHRvbS1uYXZfX3RhYlwiXG4gICAgICAgICAgICAgIFtjbGFzcy5ib3R0b20tbmF2X190YWItLWFjdGl2ZV09XCJpc0FjdGl2ZShpdGVtKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5ib3R0b20tbmF2X190YWItLWRpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWFuaW1hdGlvbl09XCJjb25maWcoKS5hbmltYXRpb25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25UYWJDbGljayhpdGVtKVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiaXRlbS5hcmlhTGFiZWwgfHwgZ2V0TGFiZWwoaXRlbSlcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiaXNBY3RpdmUoaXRlbSkgPyAncGFnZScgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1yaXBwbGUtZWZmZWN0PjwvaW9uLXJpcHBsZS1lZmZlY3Q+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1uYXZfX3RhYi1pY29uXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cImdldEljb24oaXRlbSlcIj48L2lvbi1pY29uPlxuXG4gICAgICAgICAgICAgICAgPCEtLSBCYWRnZSAtLT5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uYmFkZ2UpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm90dG9tLW5hdl9fYmFkZ2VcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYm90dG9tLW5hdl9fYmFkZ2UtLWRvdF09XCJpdGVtLmJhZGdlLmRvdFwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJpdGVtLmJhZGdlLmNvbG9yID8gcmVzb2x2ZUNvbG9yKGl0ZW0uYmFkZ2UuY29sb3IpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIml0ZW0uYmFkZ2UuYmFja2dyb3VuZENvbG9yID8gcmVzb2x2ZUNvbG9yKGl0ZW0uYmFkZ2UuYmFja2dyb3VuZENvbG9yKSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKCFpdGVtLmJhZGdlLmRvdCAmJiBpdGVtLmJhZGdlLnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmJhZGdlLnRleHQgfX1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgQGlmICghY29uZmlnKCkuaGlkZUxhYmVscyAmJiBnZXRMYWJlbChpdGVtKSkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm90dG9tLW5hdl9fdGFiLWxhYmVsXCI+e3sgZ2V0TGFiZWwoaXRlbSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9uYXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2JvdHRvbS1uYXYuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQm90dG9tTmF2Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIG5hdmlnYXRpb24gPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlclN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICAvKiogQ29tcG9uZW50IGNvbmZpZ3VyYXRpb24gKi9cbiAgcmVhZG9ubHkgcHJvcHMgPSBpbnB1dDxCb3R0b21OYXZNZXRhZGF0YT4oeyB0YWJzOiBbXSB9KTtcblxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGEgdGFiIGlzIGNsaWNrZWQgKi9cbiAgQE91dHB1dCgpIHRhYkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxCb3R0b21OYXZDbGlja0V2ZW50PigpO1xuXG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIEZBQiBidXR0b24gaXMgY2xpY2tlZCAqL1xuICBAT3V0cHV0KCkgZmFiQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqIEN1cnJlbnQgYWN0aXZlIHJvdXRlIHNpZ25hbCBmb3IgcmVhY3RpdmUgdXBkYXRlcyAqL1xuICBwcml2YXRlIGN1cnJlbnRSb3V0ZSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICAvKiogTWVyZ2VkIGNvbmZpZ3VyYXRpb24gd2l0aCBkZWZhdWx0cyAqL1xuICBjb25maWcgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIC4uLkJPVFRPTV9OQVZfREVGQVVMVFMsXG4gICAgLi4udGhpcy5wcm9wcygpLFxuICAgIHRoZW1lOiB7XG4gICAgICAuLi5CT1RUT01fTkFWX0RFRkFVTFRTLnRoZW1lLFxuICAgICAgLi4udGhpcy5wcm9wcygpLnRoZW1lLFxuICAgIH0sXG4gIH0pKTtcblxuICAvKiogQ29tcHV0ZWQgdGFicyB3aXRoIEZBQiBpbnNlcnRlZCBpZiBwcmVzZW50ICovXG4gIGRpc3BsYXlUYWJzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHRhYnMgPSB0aGlzLmNvbmZpZygpLnRhYnM7XG4gICAgY29uc3QgZmFiID0gdGhpcy5jb25maWcoKS5mYWI7XG5cbiAgICBpZiAoIWZhYikgcmV0dXJuIHRhYnM7XG5cbiAgICAvLyBJbnNlcnQgcGxhY2Vob2xkZXIgYXQgY2VudGVyIGZvciBGQUIgcG9zaXRpb25pbmdcbiAgICBjb25zdCBtaWRwb2ludCA9IE1hdGguZmxvb3IodGFicy5sZW5ndGggLyAyKTtcbiAgICByZXR1cm4gW1xuICAgICAgLi4udGFicy5zbGljZSgwLCBtaWRwb2ludCksXG4gICAgICBudWxsIGFzIHVua25vd24gYXMgQm90dG9tTmF2VGFiLCAvLyBGQUIgcGxhY2Vob2xkZXJcbiAgICAgIC4uLnRhYnMuc2xpY2UobWlkcG9pbnQpLFxuICAgIF07XG4gIH0pO1xuXG4gIC8qKiBDaGVjayBpZiBhIHRhYiBpcyBjdXJyZW50bHkgYWN0aXZlICovXG4gIGlzQWN0aXZlKHRhYjogQm90dG9tTmF2VGFiKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgcm91dGUgPSB0aGlzLmN1cnJlbnRSb3V0ZSgpO1xuICAgIGlmICghcm91dGUpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENoZWNrIG1haW4gcm91dGVcbiAgICBjb25zdCB0YWJSb3V0ZSA9IEFycmF5LmlzQXJyYXkodGFiLnJvdXRlKSA/IHRhYi5yb3V0ZS5qb2luKCcvJykgOiB0YWIucm91dGU7XG4gICAgaWYgKHJvdXRlLnN0YXJ0c1dpdGgodGFiUm91dGUpKSByZXR1cm4gdHJ1ZTtcblxuICAgIC8vIENoZWNrIGFkZGl0aW9uYWwgYWN0aXZlIHJvdXRlc1xuICAgIGlmICh0YWIuYWN0aXZlUm91dGVzKSB7XG4gICAgICByZXR1cm4gdGFiLmFjdGl2ZVJvdXRlcy5zb21lKChyKSA9PiByb3V0ZS5zdGFydHNXaXRoKHIpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKiogR2V0IHRoZSBhcHByb3ByaWF0ZSBpY29uIGZvciBhIHRhYiBiYXNlZCBvbiBhY3RpdmUgc3RhdGUgKi9cbiAgZ2V0SWNvbih0YWI6IEJvdHRvbU5hdlRhYik6IHN0cmluZyB7XG4gICAgY29uc3QgYWN0aXZlID0gdGhpcy5pc0FjdGl2ZSh0YWIpO1xuICAgIGlmIChhY3RpdmUgJiYgdGFiLmljb24uYWN0aXZlKSB7XG4gICAgICByZXR1cm4gdGFiLmljb24uYWN0aXZlO1xuICAgIH1cbiAgICByZXR1cm4gdGFiLmljb24uZGVmYXVsdDtcbiAgfVxuXG4gIC8qKiBHZXQgdHJhbnNsYXRlZCBsYWJlbCBmb3IgYSB0YWIgKi9cbiAgZ2V0TGFiZWwodGFiOiBCb3R0b21OYXZUYWIpOiBzdHJpbmcge1xuICAgIGlmICh0YWIubGFiZWwpIHJldHVybiB0YWIubGFiZWw7XG4gICAgaWYgKHRhYi5sYWJlbEtleSkge1xuICAgICAgdGhpcy5pMThuLmxhbmcoKTsgLy8gVHJhY2sgbGFuZ3VhZ2UgY2hhbmdlcyBmb3IgcmVhY3Rpdml0eVxuICAgICAgcmV0dXJuIHRoaXMuaTE4bi50KHRhYi5sYWJlbEtleSwgdGhpcy5jb25maWcoKS5pMThuTmFtZXNwYWNlKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLyoqIEdldCBDU1MgdmFyaWFibGVzIGZvciB0aGVtaW5nICovXG4gIGdldFRoZW1lU3R5bGVzKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IHRoZW1lID0gdGhpcy5jb25maWcoKS50aGVtZTtcbiAgICByZXR1cm4ge1xuICAgICAgJy0tYm90dG9tLW5hdi1iZyc6IHRoZW1lLmJhY2tncm91bmQgfHwgJycsXG4gICAgICAnLS1ib3R0b20tbmF2LWFjdGl2ZSc6IHRoaXMucmVzb2x2ZUNvbG9yKHRoZW1lLmFjdGl2ZUNvbG9yKSxcbiAgICAgICctLWJvdHRvbS1uYXYtaW5hY3RpdmUnOiB0aGlzLnJlc29sdmVDb2xvcih0aGVtZS5pbmFjdGl2ZUNvbG9yKSxcbiAgICAgICctLWJvdHRvbS1uYXYtcmFkaXVzJzogdGhlbWUuYm9yZGVyUmFkaXVzIHx8ICcnLFxuICAgIH07XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBTZXQgaW5pdGlhbCByb3V0ZVxuICAgIHRoaXMuY3VycmVudFJvdXRlLnNldCh0aGlzLnJvdXRlci51cmwpO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHJvdXRlIGNoYW5nZXNcbiAgICB0aGlzLnJvdXRlclN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudFJvdXRlLnNldCgoZXZlbnQgYXMgTmF2aWdhdGlvbkVuZCkudXJsQWZ0ZXJSZWRpcmVjdHMpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKiBIYW5kbGUgdGFiIGNsaWNrICovXG4gIG9uVGFiQ2xpY2sodGFiOiBCb3R0b21OYXZUYWIpOiB2b2lkIHtcbiAgICBpZiAodGFiLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICAvLyBFbWl0IGV2ZW50XG4gICAgdGhpcy50YWJDbGljay5lbWl0KHtcbiAgICAgIHRva2VuOiB0YWIudG9rZW4sXG4gICAgICBpc0ZhYjogZmFsc2UsXG4gICAgICByb3V0ZTogdGFiLnJvdXRlLFxuICAgIH0pO1xuXG4gICAgLy8gTmF2aWdhdGVcbiAgICBjb25zdCByb3V0ZSA9IEFycmF5LmlzQXJyYXkodGFiLnJvdXRlKSA/IHRhYi5yb3V0ZSA6IFt0YWIucm91dGVdO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHJvdXRlKTtcbiAgfVxuXG4gIC8qKiBIYW5kbGUgRkFCIGNsaWNrICovXG4gIG9uRmFiQ2xpY2soKTogdm9pZCB7XG4gICAgY29uc3QgZmFiID0gdGhpcy5jb25maWcoKS5mYWI7XG4gICAgaWYgKCFmYWIpIHJldHVybjtcblxuICAgIC8vIEVtaXQgZXZlbnRcbiAgICB0aGlzLmZhYkNsaWNrLmVtaXQoKTtcblxuICAgIC8vIE5hdmlnYXRlIGlmIHJvdXRlIGlzIGRlZmluZWQgYW5kIG5vdCBhbiBhY3Rpb24tb25seSBidXR0b25cbiAgICBpZiAoZmFiLnJvdXRlICYmICFmYWIuaXNBY3Rpb24pIHtcbiAgICAgIGNvbnN0IHJvdXRlID0gQXJyYXkuaXNBcnJheShmYWIucm91dGUpID8gZmFiLnJvdXRlIDogW2ZhYi5yb3V0ZV07XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShyb3V0ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJlc29sdmUgSW9uaWMgY29sb3IgbmFtZSB0byBDU1MgdmFyaWFibGUgKi9cbiAgcmVzb2x2ZUNvbG9yKGNvbG9yPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWNvbG9yKSByZXR1cm4gJyc7XG4gICAgY29uc3QgaW9uaWNDb2xvcnMgPSBbXG4gICAgICAncHJpbWFyeScsXG4gICAgICAnc2Vjb25kYXJ5JyxcbiAgICAgICd0ZXJ0aWFyeScsXG4gICAgICAnc3VjY2VzcycsXG4gICAgICAnd2FybmluZycsXG4gICAgICAnZGFuZ2VyJyxcbiAgICAgICdsaWdodCcsXG4gICAgICAnbWVkaXVtJyxcbiAgICAgICdkYXJrJyxcbiAgICBdO1xuICAgIGlmIChpb25pY0NvbG9ycy5pbmNsdWRlcyhjb2xvcikpIHtcbiAgICAgIHJldHVybiBgdmFyKC0taW9uLWNvbG9yLSR7Y29sb3J9KWA7XG4gICAgfVxuICAgIHJldHVybiBjb2xvcjtcbiAgfVxufVxuIl19
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Default values for BottomNavMetadata
3
+ */
4
+ export const BOTTOM_NAV_DEFAULTS = {
5
+ hideLabels: false,
6
+ safeArea: true,
7
+ animation: 'scale',
8
+ theme: {
9
+ background: 'var(--ion-background-color)',
10
+ activeColor: 'primary',
11
+ inactiveColor: 'medium',
12
+ borderRadius: '16px 16px 0 0',
13
+ elevated: false,
14
+ translucent: true,
15
+ },
16
+ };
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2JvdHRvbS1uYXYvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0hBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBRVU7SUFDeEMsVUFBVSxFQUFFLEtBQUs7SUFDakIsUUFBUSxFQUFFLElBQUk7SUFDZCxTQUFTLEVBQUUsT0FBTztJQUNsQixLQUFLLEVBQUU7UUFDTCxVQUFVLEVBQUUsNkJBQTZCO1FBQ3pDLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLGFBQWEsRUFBRSxRQUFRO1FBQ3ZCLFlBQVksRUFBRSxlQUFlO1FBQzdCLFFBQVEsRUFBRSxLQUFLO1FBQ2YsV0FBVyxFQUFFLElBQUk7S0FDbEI7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sb3IgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5cbi8qKlxuICogQmFkZ2UgY29uZmlndXJhdGlvbiBmb3IgYSBuYXYgaXRlbVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJvdHRvbU5hdkJhZGdlIHtcbiAgLyoqIEJhZGdlIHRleHQgKGUuZy4sIFwiM1wiLCBcIk5FV1wiKSAqL1xuICB0ZXh0Pzogc3RyaW5nO1xuICAvKiogQmFkZ2UgY29sb3IgKi9cbiAgY29sb3I/OiBDb2xvciB8IHN0cmluZztcbiAgLyoqIEJhZGdlIGJhY2tncm91bmQgY29sb3IgKi9cbiAgYmFja2dyb3VuZENvbG9yPzogQ29sb3IgfCBzdHJpbmc7XG4gIC8qKiBTaG93IGFzIGRvdCBvbmx5IChubyB0ZXh0KSAqL1xuICBkb3Q/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEljb24gY29uZmlndXJhdGlvbiAtIHN1cHBvcnRzIG11bHRpcGxlIGljb24gc291cmNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEJvdHRvbU5hdkljb24ge1xuICAvKiogSW9uaWNvbiBuYW1lIGZvciBpbmFjdGl2ZSBzdGF0ZSAoZS5nLiwgJ2hvbWUtb3V0bGluZScpICovXG4gIGRlZmF1bHQ6IHN0cmluZztcbiAgLyoqIElvbmljb24gbmFtZSBmb3IgYWN0aXZlIHN0YXRlIChlLmcuLCAnaG9tZScpIC0gZGVmYXVsdHMgdG8gZGVmYXVsdCBpZiBub3QgcHJvdmlkZWQgKi9cbiAgYWN0aXZlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGEgc2luZ2xlIG5hdiB0YWIgaXRlbVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJvdHRvbU5hdlRhYiB7XG4gIC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHRhYiAqL1xuICB0b2tlbjogc3RyaW5nO1xuICAvKiogSWNvbiBjb25maWd1cmF0aW9uICovXG4gIGljb246IEJvdHRvbU5hdkljb247XG4gIC8qKiBTdGF0aWMgbGFiZWwgdGV4dCAqL1xuICBsYWJlbD86IHN0cmluZztcbiAgLyoqIGkxOG4ga2V5IGZvciBsYWJlbCAqL1xuICBsYWJlbEtleT86IHN0cmluZztcbiAgLyoqIFJvdXRlIHRvIG5hdmlnYXRlIHRvIChzdXBwb3J0cyBzdHJpbmcgb3IgYXJyYXkgZm9ybWF0KSAqL1xuICByb3V0ZTogc3RyaW5nIHwgc3RyaW5nW107XG4gIC8qKiBSb3V0ZXMgdGhhdCBzaG91bGQgYWxzbyBtYXJrIHRoaXMgdGFiIGFzIGFjdGl2ZSAoZm9yIG5lc3RlZCByb3V0ZXMpICovXG4gIGFjdGl2ZVJvdXRlcz86IHN0cmluZ1tdO1xuICAvKiogQmFkZ2UgY29uZmlndXJhdGlvbiAqL1xuICBiYWRnZT86IEJvdHRvbU5hdkJhZGdlO1xuICAvKiogV2hldGhlciB0aGUgdGFiIGlzIGRpc2FibGVkICovXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqIEFyaWEgbGFiZWwgZm9yIGFjY2Vzc2liaWxpdHkgKi9cbiAgYXJpYUxhYmVsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBjZW50cmFsIEZBQiBidXR0b24gKG9wdGlvbmFsKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJvdHRvbU5hdkZhYiB7XG4gIC8qKiBJY29uIG5hbWUgKi9cbiAgaWNvbjogc3RyaW5nO1xuICAvKiogRkFCIGNvbG9yICovXG4gIGNvbG9yPzogQ29sb3IgfCBzdHJpbmc7XG4gIC8qKiBGQUIgc2l6ZSAqL1xuICBzaXplPzogJ3NtYWxsJyB8ICdkZWZhdWx0JztcbiAgLyoqIFJvdXRlIHRvIG5hdmlnYXRlIHRvIChpZiBuYXZpZ2F0aW9uIGFjdGlvbikgKi9cbiAgcm91dGU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBhbiBhY3Rpb24gKGVtaXRzIGV2ZW50KSBvciBuYXZpZ2F0aW9uICovXG4gIGlzQWN0aW9uPzogYm9vbGVhbjtcbiAgLyoqIEFyaWEgbGFiZWwgZm9yIGFjY2Vzc2liaWxpdHkgKi9cbiAgYXJpYUxhYmVsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZW1lIGNvbmZpZ3VyYXRpb24gZm9yIGJvdHRvbSBuYXZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCb3R0b21OYXZUaGVtZSB7XG4gIC8qKiBCYWNrZ3JvdW5kIGNvbG9yIChDU1MgdmFyaWFibGUgb3IgY29sb3IgdmFsdWUpICovXG4gIGJhY2tncm91bmQ/OiBzdHJpbmc7XG4gIC8qKiBBY3RpdmUgdGFiIGNvbG9yICovXG4gIGFjdGl2ZUNvbG9yPzogQ29sb3IgfCBzdHJpbmc7XG4gIC8qKiBJbmFjdGl2ZSB0YWIgY29sb3IgKi9cbiAgaW5hY3RpdmVDb2xvcj86IENvbG9yIHwgc3RyaW5nO1xuICAvKiogQm9yZGVyIHJhZGl1cyBmb3IgdGhlIG5hdiBiYXIgKi9cbiAgYm9yZGVyUmFkaXVzPzogc3RyaW5nO1xuICAvKiogV2hldGhlciB0byBzaG93IGEgdG9wIGJvcmRlci9zaGFkb3cgKi9cbiAgZWxldmF0ZWQ/OiBib29sZWFuO1xuICAvKiogQmx1ciBlZmZlY3QgZm9yIHRyYW5zbHVjZW50IGJhY2tncm91bmQgKi9cbiAgdHJhbnNsdWNlbnQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENsaWNrIGV2ZW50IGVtaXR0ZWQgYnkgYm90dG9tIG5hdlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJvdHRvbU5hdkNsaWNrRXZlbnQge1xuICAvKiogVG9rZW4gb2YgdGhlIGNsaWNrZWQgaXRlbSAqL1xuICB0b2tlbjogc3RyaW5nO1xuICAvKiogV2hldGhlciBpdCdzIHRoZSBGQUIgYnV0dG9uICovXG4gIGlzRmFiOiBib29sZWFuO1xuICAvKiogVGhlIHJvdXRlIGlmIG5hdmlnYXRpb24gb2NjdXJyZWQgKi9cbiAgcm91dGU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBNYWluIG1ldGFkYXRhIGZvciB2YWwtYm90dG9tLW5hdiBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCb3R0b21OYXZNZXRhZGF0YSB7XG4gIC8qKiBBcnJheSBvZiB0YWIgY29uZmlndXJhdGlvbnMgKi9cbiAgdGFiczogQm90dG9tTmF2VGFiW107XG4gIC8qKiBDZW50cmFsIEZBQiBidXR0b24gY29uZmlndXJhdGlvbiAob3B0aW9uYWwpICovXG4gIGZhYj86IEJvdHRvbU5hdkZhYjtcbiAgLyoqIGkxOG4gbmFtZXNwYWNlIGZvciBsYWJlbHMgKi9cbiAgaTE4bk5hbWVzcGFjZT86IHN0cmluZztcbiAgLyoqIFRoZW1lIGNvbmZpZ3VyYXRpb24gKi9cbiAgdGhlbWU/OiBCb3R0b21OYXZUaGVtZTtcbiAgLyoqIEhpZGUgbGFiZWxzIChpY29uLW9ubHkgbW9kZSkgKi9cbiAgaGlkZUxhYmVscz86IGJvb2xlYW47XG4gIC8qKiBTYWZlIGFyZWEgcGFkZGluZyBmb3IgaU9TIG5vdGNoICovXG4gIHNhZmVBcmVhPzogYm9vbGVhbjtcbiAgLyoqIEFuaW1hdGlvbiBzdHlsZSAqL1xuICBhbmltYXRpb24/OiAnZmFkZScgfCAnc2NhbGUnIHwgJ3NsaWRlJyB8ICdub25lJztcbn1cblxuLyoqXG4gKiBEZWZhdWx0IHZhbHVlcyBmb3IgQm90dG9tTmF2TWV0YWRhdGFcbiAqL1xuZXhwb3J0IGNvbnN0IEJPVFRPTV9OQVZfREVGQVVMVFM6IFJlcXVpcmVkPFxuICBQaWNrPEJvdHRvbU5hdk1ldGFkYXRhLCAnaGlkZUxhYmVscycgfCAnc2FmZUFyZWEnIHwgJ2FuaW1hdGlvbic+XG4+ICYgeyB0aGVtZTogUmVxdWlyZWQ8Qm90dG9tTmF2VGhlbWU+IH0gPSB7XG4gIGhpZGVMYWJlbHM6IGZhbHNlLFxuICBzYWZlQXJlYTogdHJ1ZSxcbiAgYW5pbWF0aW9uOiAnc2NhbGUnLFxuICB0aGVtZToge1xuICAgIGJhY2tncm91bmQ6ICd2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciknLFxuICAgIGFjdGl2ZUNvbG9yOiAncHJpbWFyeScsXG4gICAgaW5hY3RpdmVDb2xvcjogJ21lZGl1bScsXG4gICAgYm9yZGVyUmFkaXVzOiAnMTZweCAxNnB4IDAgMCcsXG4gICAgZWxldmF0ZWQ6IGZhbHNlLFxuICAgIHRyYW5zbHVjZW50OiB0cnVlLFxuICB9LFxufTtcbiJdfQ==
@@ -192,7 +192,7 @@ export class DocsSidebarComponent {
192
192
  }
193
193
  </div>
194
194
  </nav>
195
- `, isInline: true, styles: [".docs-sidebar{--sidebar-text-color: var(--ion-text-color, #1a1a1a);--sidebar-text-secondary: var(--ion-color-medium, #666);--sidebar-active-color: #1a1a1a;--sidebar-active-bg: rgba(0, 0, 0, .05);--sidebar-hover-bg: rgba(0, 0, 0, .03);--sidebar-border-color: var(--ion-border-color, #e0e0e0);font-family:var(--ion-font-family, system-ui, sans-serif)}.docs-sidebar__logo{display:flex;align-items:center;gap:.75rem;padding:1rem 0;margin-bottom:1rem;border-bottom:1px solid var(--sidebar-border-color)}.docs-sidebar__logo--clickable{cursor:pointer;transition:opacity .2s ease}.docs-sidebar__logo--clickable:hover{opacity:.8}.docs-sidebar__logo img{height:32px;width:auto}.docs-sidebar__logo-title{font-size:1.25rem;font-weight:600;color:var(--sidebar-text-color);letter-spacing:.5px}.docs-sidebar__nav{display:flex;flex-direction:column;gap:.25rem}.docs-sidebar__section{margin-bottom:.25rem}.docs-sidebar__section-header{appearance:none;background:transparent;border:none;width:100%;text-align:left;display:flex;align-items:center;gap:.5rem;padding:.625rem .75rem;border-radius:6px;font-size:.875rem;font-weight:600;color:var(--sidebar-text-color);transition:all .15s ease}.docs-sidebar__section-header:focus-visible{outline:2px solid var(--sidebar-active-color);outline-offset:2px}.docs-sidebar__section-header--clickable{cursor:pointer}.docs-sidebar__section-header--clickable:hover{background:var(--sidebar-hover-bg)}.docs-sidebar__section-header--active{color:var(--sidebar-active-color)}.docs-sidebar__section-header--expanded .docs-sidebar__chevron{transform:rotate(0)}.docs-sidebar__section-icon{font-size:1.125rem;color:var(--sidebar-text-secondary)}.docs-sidebar__section-title{flex:1}.docs-sidebar__chevron{font-size:.875rem;color:var(--sidebar-text-secondary);transition:transform .2s ease}.docs-sidebar__children{padding-left:1rem;margin-top:.25rem;border-left:1px solid var(--sidebar-border-color);margin-left:.75rem}.docs-sidebar__link{appearance:none;background:transparent;border:none;width:100%;text-align:left;display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:6px;font-size:.8125rem;color:var(--sidebar-text-secondary);cursor:pointer;transition:all .15s ease}.docs-sidebar__link:focus-visible{outline:2px solid var(--sidebar-active-color);outline-offset:2px}.docs-sidebar__link:hover{background:var(--sidebar-hover-bg);color:var(--sidebar-text-color)}.docs-sidebar__link--active{background:var(--sidebar-active-bg);color:var(--sidebar-active-color);font-weight:500}.docs-sidebar__link--active:hover{background:var(--sidebar-active-bg);color:var(--sidebar-active-color)}.docs-sidebar__link-label{flex:1}.docs-sidebar__badge{display:inline-flex;align-items:center;padding:.125rem .5rem;border-radius:10px;font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;background:#0000000f;color:#555}.docs-sidebar__badge--section{margin-left:auto}.docs-sidebar__badge--primary{background:#0000000f;color:#555}.docs-sidebar__badge--success{background:#e8f5e9;color:#2e7d32}.docs-sidebar__badge--warning{background:#fff8e1;color:#f57c00}.docs-sidebar__badge--danger{background:#ffebee;color:#c62828}:host-context(.dark) .docs-sidebar,:host-context([color-scheme=dark]) .docs-sidebar{--sidebar-text-color: #f4f5f8;--sidebar-text-secondary: #a0a0a0;--sidebar-hover-bg: rgba(255, 255, 255, .05);--sidebar-border-color: #3a3a3a}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
195
+ `, isInline: true, styles: [".docs-sidebar{--sidebar-text-color: var(--ion-text-color, #1a1a1a);--sidebar-text-secondary: var(--ion-color-medium, #666);--sidebar-active-color: #1a1a1a;--sidebar-active-bg: rgba(0, 0, 0, .05);--sidebar-hover-bg: rgba(0, 0, 0, .03);--sidebar-border-color: var(--ion-border-color, #e0e0e0);font-family:var(--ion-font-family, system-ui, sans-serif)}.docs-sidebar__logo{display:flex;align-items:center;gap:.75rem;padding:1rem 0;margin-bottom:1rem;border-bottom:1px solid var(--sidebar-border-color)}.docs-sidebar__logo--clickable{cursor:pointer;transition:opacity .2s ease}.docs-sidebar__logo--clickable:hover{opacity:.8}.docs-sidebar__logo img{height:32px;width:auto}.docs-sidebar__logo-title{font-size:1.25rem;font-weight:600;color:var(--sidebar-text-color);letter-spacing:.5px}.docs-sidebar__nav{display:flex;flex-direction:column;gap:.25rem}.docs-sidebar__section{margin-bottom:.25rem}.docs-sidebar__section-header{appearance:none;background:transparent;border:none;width:100%;text-align:left;display:flex;align-items:center;gap:.5rem;padding:.625rem .75rem;border-radius:6px;font-size:.875rem;font-weight:600;color:var(--sidebar-text-color);transition:all .15s ease}.docs-sidebar__section-header:focus-visible{outline:2px solid var(--sidebar-active-color);outline-offset:2px}.docs-sidebar__section-header--clickable{cursor:pointer}.docs-sidebar__section-header--clickable:hover{background:var(--sidebar-hover-bg)}.docs-sidebar__section-header--active{color:var(--sidebar-active-color)}.docs-sidebar__section-header--expanded .docs-sidebar__chevron{transform:rotate(0)}.docs-sidebar__section-icon{font-size:1.125rem;color:var(--sidebar-text-secondary)}.docs-sidebar__section-title{flex:1}.docs-sidebar__chevron{font-size:.875rem;color:var(--sidebar-text-secondary);transition:transform .2s ease}.docs-sidebar__children{padding-left:1rem;margin-top:.25rem;border-left:1px solid var(--sidebar-border-color);margin-left:.75rem}.docs-sidebar__link{appearance:none;background:transparent;border:none;width:100%;text-align:left;display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:6px;font-size:.8125rem;color:var(--sidebar-text-secondary);cursor:pointer;transition:all .15s ease}.docs-sidebar__link:focus-visible{outline:2px solid var(--sidebar-active-color);outline-offset:2px}.docs-sidebar__link:hover{background:var(--sidebar-hover-bg);color:var(--sidebar-text-color)}.docs-sidebar__link--active{background:var(--sidebar-active-bg);color:var(--sidebar-active-color);font-weight:500}.docs-sidebar__link--active:hover{background:var(--sidebar-active-bg);color:var(--sidebar-active-color)}.docs-sidebar__link-label{flex:1}.docs-sidebar__badge{display:inline-flex;align-items:center;padding:.125rem .5rem;border-radius:10px;font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;background:#0000000f;color:#555}.docs-sidebar__badge--section{margin-left:auto}.docs-sidebar__badge--primary,.docs-sidebar__badge--success,.docs-sidebar__badge--warning,.docs-sidebar__badge--danger{background:#0000000f;color:#555}:host-context(.dark) .docs-sidebar,:host-context([color-scheme=dark]) .docs-sidebar{--sidebar-text-color: #f4f5f8;--sidebar-text-secondary: #a0a0a0;--sidebar-hover-bg: rgba(255, 255, 255, .05);--sidebar-border-color: #3a3a3a}:host-context(.dark) .docs-sidebar__badge,:host-context([color-scheme=dark]) .docs-sidebar__badge{background:#ffffff14;color:#999}:host-context(.dark) .docs-sidebar__badge--primary,:host-context(.dark) .docs-sidebar__badge--success,:host-context(.dark) .docs-sidebar__badge--warning,:host-context(.dark) .docs-sidebar__badge--danger,:host-context([color-scheme=dark]) .docs-sidebar__badge--primary,:host-context([color-scheme=dark]) .docs-sidebar__badge--success,:host-context([color-scheme=dark]) .docs-sidebar__badge--warning,:host-context([color-scheme=dark]) .docs-sidebar__badge--danger{background:#ffffff14;color:#999}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
196
196
  }
197
197
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DocsSidebarComponent, decorators: [{
198
198
  type: Component,
@@ -281,10 +281,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
281
281
  }
282
282
  </div>
283
283
  </nav>
284
- `, styles: [".docs-sidebar{--sidebar-text-color: var(--ion-text-color, #1a1a1a);--sidebar-text-secondary: var(--ion-color-medium, #666);--sidebar-active-color: #1a1a1a;--sidebar-active-bg: rgba(0, 0, 0, .05);--sidebar-hover-bg: rgba(0, 0, 0, .03);--sidebar-border-color: var(--ion-border-color, #e0e0e0);font-family:var(--ion-font-family, system-ui, sans-serif)}.docs-sidebar__logo{display:flex;align-items:center;gap:.75rem;padding:1rem 0;margin-bottom:1rem;border-bottom:1px solid var(--sidebar-border-color)}.docs-sidebar__logo--clickable{cursor:pointer;transition:opacity .2s ease}.docs-sidebar__logo--clickable:hover{opacity:.8}.docs-sidebar__logo img{height:32px;width:auto}.docs-sidebar__logo-title{font-size:1.25rem;font-weight:600;color:var(--sidebar-text-color);letter-spacing:.5px}.docs-sidebar__nav{display:flex;flex-direction:column;gap:.25rem}.docs-sidebar__section{margin-bottom:.25rem}.docs-sidebar__section-header{appearance:none;background:transparent;border:none;width:100%;text-align:left;display:flex;align-items:center;gap:.5rem;padding:.625rem .75rem;border-radius:6px;font-size:.875rem;font-weight:600;color:var(--sidebar-text-color);transition:all .15s ease}.docs-sidebar__section-header:focus-visible{outline:2px solid var(--sidebar-active-color);outline-offset:2px}.docs-sidebar__section-header--clickable{cursor:pointer}.docs-sidebar__section-header--clickable:hover{background:var(--sidebar-hover-bg)}.docs-sidebar__section-header--active{color:var(--sidebar-active-color)}.docs-sidebar__section-header--expanded .docs-sidebar__chevron{transform:rotate(0)}.docs-sidebar__section-icon{font-size:1.125rem;color:var(--sidebar-text-secondary)}.docs-sidebar__section-title{flex:1}.docs-sidebar__chevron{font-size:.875rem;color:var(--sidebar-text-secondary);transition:transform .2s ease}.docs-sidebar__children{padding-left:1rem;margin-top:.25rem;border-left:1px solid var(--sidebar-border-color);margin-left:.75rem}.docs-sidebar__link{appearance:none;background:transparent;border:none;width:100%;text-align:left;display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:6px;font-size:.8125rem;color:var(--sidebar-text-secondary);cursor:pointer;transition:all .15s ease}.docs-sidebar__link:focus-visible{outline:2px solid var(--sidebar-active-color);outline-offset:2px}.docs-sidebar__link:hover{background:var(--sidebar-hover-bg);color:var(--sidebar-text-color)}.docs-sidebar__link--active{background:var(--sidebar-active-bg);color:var(--sidebar-active-color);font-weight:500}.docs-sidebar__link--active:hover{background:var(--sidebar-active-bg);color:var(--sidebar-active-color)}.docs-sidebar__link-label{flex:1}.docs-sidebar__badge{display:inline-flex;align-items:center;padding:.125rem .5rem;border-radius:10px;font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;background:#0000000f;color:#555}.docs-sidebar__badge--section{margin-left:auto}.docs-sidebar__badge--primary{background:#0000000f;color:#555}.docs-sidebar__badge--success{background:#e8f5e9;color:#2e7d32}.docs-sidebar__badge--warning{background:#fff8e1;color:#f57c00}.docs-sidebar__badge--danger{background:#ffebee;color:#c62828}:host-context(.dark) .docs-sidebar,:host-context([color-scheme=dark]) .docs-sidebar{--sidebar-text-color: #f4f5f8;--sidebar-text-secondary: #a0a0a0;--sidebar-hover-bg: rgba(255, 255, 255, .05);--sidebar-border-color: #3a3a3a}\n"] }]
284
+ `, styles: [".docs-sidebar{--sidebar-text-color: var(--ion-text-color, #1a1a1a);--sidebar-text-secondary: var(--ion-color-medium, #666);--sidebar-active-color: #1a1a1a;--sidebar-active-bg: rgba(0, 0, 0, .05);--sidebar-hover-bg: rgba(0, 0, 0, .03);--sidebar-border-color: var(--ion-border-color, #e0e0e0);font-family:var(--ion-font-family, system-ui, sans-serif)}.docs-sidebar__logo{display:flex;align-items:center;gap:.75rem;padding:1rem 0;margin-bottom:1rem;border-bottom:1px solid var(--sidebar-border-color)}.docs-sidebar__logo--clickable{cursor:pointer;transition:opacity .2s ease}.docs-sidebar__logo--clickable:hover{opacity:.8}.docs-sidebar__logo img{height:32px;width:auto}.docs-sidebar__logo-title{font-size:1.25rem;font-weight:600;color:var(--sidebar-text-color);letter-spacing:.5px}.docs-sidebar__nav{display:flex;flex-direction:column;gap:.25rem}.docs-sidebar__section{margin-bottom:.25rem}.docs-sidebar__section-header{appearance:none;background:transparent;border:none;width:100%;text-align:left;display:flex;align-items:center;gap:.5rem;padding:.625rem .75rem;border-radius:6px;font-size:.875rem;font-weight:600;color:var(--sidebar-text-color);transition:all .15s ease}.docs-sidebar__section-header:focus-visible{outline:2px solid var(--sidebar-active-color);outline-offset:2px}.docs-sidebar__section-header--clickable{cursor:pointer}.docs-sidebar__section-header--clickable:hover{background:var(--sidebar-hover-bg)}.docs-sidebar__section-header--active{color:var(--sidebar-active-color)}.docs-sidebar__section-header--expanded .docs-sidebar__chevron{transform:rotate(0)}.docs-sidebar__section-icon{font-size:1.125rem;color:var(--sidebar-text-secondary)}.docs-sidebar__section-title{flex:1}.docs-sidebar__chevron{font-size:.875rem;color:var(--sidebar-text-secondary);transition:transform .2s ease}.docs-sidebar__children{padding-left:1rem;margin-top:.25rem;border-left:1px solid var(--sidebar-border-color);margin-left:.75rem}.docs-sidebar__link{appearance:none;background:transparent;border:none;width:100%;text-align:left;display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:6px;font-size:.8125rem;color:var(--sidebar-text-secondary);cursor:pointer;transition:all .15s ease}.docs-sidebar__link:focus-visible{outline:2px solid var(--sidebar-active-color);outline-offset:2px}.docs-sidebar__link:hover{background:var(--sidebar-hover-bg);color:var(--sidebar-text-color)}.docs-sidebar__link--active{background:var(--sidebar-active-bg);color:var(--sidebar-active-color);font-weight:500}.docs-sidebar__link--active:hover{background:var(--sidebar-active-bg);color:var(--sidebar-active-color)}.docs-sidebar__link-label{flex:1}.docs-sidebar__badge{display:inline-flex;align-items:center;padding:.125rem .5rem;border-radius:10px;font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;background:#0000000f;color:#555}.docs-sidebar__badge--section{margin-left:auto}.docs-sidebar__badge--primary,.docs-sidebar__badge--success,.docs-sidebar__badge--warning,.docs-sidebar__badge--danger{background:#0000000f;color:#555}:host-context(.dark) .docs-sidebar,:host-context([color-scheme=dark]) .docs-sidebar{--sidebar-text-color: #f4f5f8;--sidebar-text-secondary: #a0a0a0;--sidebar-hover-bg: rgba(255, 255, 255, .05);--sidebar-border-color: #3a3a3a}:host-context(.dark) .docs-sidebar__badge,:host-context([color-scheme=dark]) .docs-sidebar__badge{background:#ffffff14;color:#999}:host-context(.dark) .docs-sidebar__badge--primary,:host-context(.dark) .docs-sidebar__badge--success,:host-context(.dark) .docs-sidebar__badge--warning,:host-context(.dark) .docs-sidebar__badge--danger,:host-context([color-scheme=dark]) .docs-sidebar__badge--primary,:host-context([color-scheme=dark]) .docs-sidebar__badge--success,:host-context([color-scheme=dark]) .docs-sidebar__badge--warning,:host-context([color-scheme=dark]) .docs-sidebar__badge--danger{background:#ffffff14;color:#999}\n"] }]
285
285
  }], ctorParameters: () => [{ type: i1.Router }], propDecorators: { props: [{
286
286
  type: Input
287
287
  }], navigate: [{
288
288
  type: Output
289
289
  }] } });
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy1zaWRlYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvZG9jcy1zaWRlYmFyL2RvY3Mtc2lkZWJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBVSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUd4QyxRQUFRLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUM7QUFFeEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBNkZILE1BQU0sT0FBTyxvQkFBb0I7SUFRL0IsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFQekIsVUFBSyxHQUF3QixFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUU3QyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUVsRCxxQkFBZ0IsR0FBNEIsRUFBRSxDQUFDO1FBQ3ZDLGlCQUFZLEdBQWEsRUFBRSxDQUFDO0lBRUMsQ0FBQztJQUV0QyxRQUFRO1FBQ04sSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGtC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QUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUMxRSxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQXFCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQWUsRUFBRSxPQUFpQjtRQUNwRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxPQUFPLFdBQVcsS0FBSyxTQUFTLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDOUUsQ0FBQzsrR0FqRlUsb0JBQW9CO21HQUFwQixvQkFBb0IsZ0tBeEZyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFGVCw2M0dBdEZTLFlBQVksK0JBQUUsT0FBTzs7NEZBeUZwQixvQkFBb0I7a0JBNUZoQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQ3RCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUZUOzJFQUlRLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2hldnJvbkRvd25PdXRsaW5lLCBjaGV2cm9uRm9yd2FyZE91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEb2NzU2lkZWJhck1ldGFkYXRhLCBEb2NzU2lkZWJhclNlY3Rpb24sIERvY3NTaWRlYmFyTGluayB9IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7IGNoZXZyb25Eb3duT3V0bGluZSwgY2hldnJvbkZvcndhcmRPdXRsaW5lIH0pO1xuXG4vKipcbiAqIHZhbC1kb2NzLXNpZGViYXJcbiAqXG4gKiBBIGhpZXJhcmNoaWNhbCBuYXZpZ2F0aW9uIHNpZGViYXIgZm9yIGRvY3VtZW50YXRpb24gc2l0ZXMuXG4gKiBTdXBwb3J0cyBjb2xsYXBzaWJsZSBzZWN0aW9ucywgYWN0aXZlIHJvdXRlIGhpZ2hsaWdodGluZywgYW5kIGJhZGdlcy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgaHRtbFxuICogPHZhbC1kb2NzLXNpZGViYXJcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBsb2dvOiB7IHNyYzogJy9hc3NldHMvbG9nby5zdmcnLCBhbHQ6ICdEb2NzJywgdGl0bGU6ICdET0NTJyB9LFxuICogICAgIHNlY3Rpb25zOiBbXG4gKiAgICAgICB7IHRpdGxlOiAnR2V0dGluZyBTdGFydGVkJywgcm91dGU6IFsnL2RvY3MnLCAnZ2V0dGluZy1zdGFydGVkJ10gfSxcbiAqICAgICAgIHtcbiAqICAgICAgICAgdGl0bGU6ICdDb21wb25lbnRzJyxcbiAqICAgICAgICAgZXhwYW5kZWQ6IHRydWUsXG4gKiAgICAgICAgIGNoaWxkcmVuOiBbXG4gKiAgICAgICAgICAgeyBsYWJlbDogJ0J1dHRvbicsIHJvdXRlOiBbJy9kb2NzJywgJ2NvbXBvbmVudHMnLCAnYnV0dG9uJ10gfSxcbiAqICAgICAgICAgICB7IGxhYmVsOiAnQ2FyZCcsIHJvdXRlOiBbJy9kb2NzJywgJ2NvbXBvbmVudHMnLCAnY2FyZCddLCBiYWRnZTogJ05ldycgfVxuICogICAgICAgICBdXG4gKiAgICAgICB9XG4gKiAgICAgXVxuICogICB9XCJcbiAqICAgKG5hdmlnYXRlKT1cIm9uTmF2aWdhdGUoJGV2ZW50KVwiXG4gKiA+PC92YWwtZG9jcy1zaWRlYmFyPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1kb2NzLXNpZGViYXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmF2XG4gICAgICBjbGFzcz1cImRvY3Mtc2lkZWJhclwiXG4gICAgICBbY2xhc3NdPVwicHJvcHMuY3NzQ2xhc3NcIlxuICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwicHJvcHMuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgIHJvbGU9XCJuYXZpZ2F0aW9uXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJEb2N1bWVudGF0aW9uIG5hdmlnYXRpb25cIlxuICAgID5cbiAgICAgIDwhLS0gTG9nbyAtLT5cbiAgICAgIEBpZiAocHJvcHMubG9nbykge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJkb2NzLXNpZGViYXJfX2xvZ29cIlxuICAgICAgICAgIFtjbGFzcy5kb2NzLXNpZGViYXJfX2xvZ28tLWNsaWNrYWJsZV09XCJwcm9wcy5sb2dvLnJvdXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwicHJvcHMubG9nby5yb3V0ZSA/IG9uTmF2aWdhdGUocHJvcHMubG9nby5yb3V0ZSkgOiBudWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIFtzcmNdPVwicHJvcHMubG9nby5zcmNcIlxuICAgICAgICAgICAgW2FsdF09XCJwcm9wcy5sb2dvLmFsdFwiXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cInByb3BzLmxvZ28uaGVpZ2h0IHx8ICczMnB4J1wiXG4gICAgICAgICAgLz5cbiAgICAgICAgICBAaWYgKHByb3BzLmxvZ28udGl0bGUpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG9jcy1zaWRlYmFyX19sb2dvLXRpdGxlXCI+e3sgcHJvcHMubG9nby50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8IS0tIE5hdmlnYXRpb24gc2VjdGlvbnMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZG9jcy1zaWRlYmFyX19uYXZcIj5cbiAgICAgICAgQGZvciAoc2VjdGlvbiBvZiBwcm9wcy5zZWN0aW9uczsgdHJhY2sgc2VjdGlvbi50aXRsZSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2NzLXNpZGViYXJfX3NlY3Rpb25cIj5cbiAgICAgICAgICAgIDwhLS0gU2VjdGlvbiBoZWFkZXIgLS0+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImRvY3Mtc2lkZWJhcl9fc2VjdGlvbi1oZWFkZXJcIlxuICAgICAgICAgICAgICBbY2xhc3MuZG9jcy1zaWRlYmFyX19zZWN0aW9uLWhlYWRlci0tYWN0aXZlXT1cImlzU2VjdGlvbkFjdGl2ZShzZWN0aW9uKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kb2NzLXNpZGViYXJfX3NlY3Rpb24taGVhZGVyLS1leHBhbmRlZF09XCJleHBhbmRlZFNlY3Rpb25zW3NlY3Rpb24udGl0bGVdXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRvY3Mtc2lkZWJhcl9fc2VjdGlvbi1oZWFkZXItLWNsaWNrYWJsZV09XCJzZWN0aW9uLnJvdXRlIHx8IHNlY3Rpb24uY2hpbGRyZW4/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwic2VjdGlvbi5jaGlsZHJlbj8ubGVuZ3RoID8gZXhwYW5kZWRTZWN0aW9uc1tzZWN0aW9uLnRpdGxlXSA6IG51bGxcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwic2VjdGlvbi5yb3V0ZSAmJiBpc1NlY3Rpb25BY3RpdmUoc2VjdGlvbikgPyAncGFnZScgOiBudWxsXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VjdGlvbkNsaWNrKHNlY3Rpb24pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQGlmIChzZWN0aW9uLmljb24pIHtcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwic2VjdGlvbi5pY29uXCIgY2xhc3M9XCJkb2NzLXNpZGViYXJfX3NlY3Rpb24taWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb2NzLXNpZGViYXJfX3NlY3Rpb24tdGl0bGVcIj57eyBzZWN0aW9uLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICBAaWYgKHNlY3Rpb24uYmFkZ2UpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvY3Mtc2lkZWJhcl9fYmFkZ2UgZG9jcy1zaWRlYmFyX19iYWRnZS0tc2VjdGlvblwiPnt7IHNlY3Rpb24uYmFkZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChzZWN0aW9uLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICA8aW9uLWljb25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZG9jcy1zaWRlYmFyX19jaGV2cm9uXCJcbiAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImV4cGFuZGVkU2VjdGlvbnNbc2VjdGlvbi50aXRsZV0gPyAnY2hldnJvbi1kb3duLW91dGxpbmUnIDogJ2NoZXZyb24tZm9yd2FyZC1vdXRsaW5lJ1wiXG4gICAgICAgICAgICAgICAgPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8IS0tIFNlY3Rpb24gY2hpbGRyZW4gLS0+XG4gICAgICAgICAgICBAaWYgKHNlY3Rpb24uY2hpbGRyZW4/Lmxlbmd0aCAmJiBleHBhbmRlZFNlY3Rpb25zW3NlY3Rpb24udGl0bGVdKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2NzLXNpZGViYXJfX2NoaWxkcmVuXCI+XG4gICAgICAgICAgICAgICAgQGZvciAobGluayBvZiBzZWN0aW9uLmNoaWxkcmVuOyB0cmFjayBsaW5rLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRvY3Mtc2lkZWJhcl9fbGlua1wiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kb2NzLXNpZGViYXJfX2xpbmstLWFjdGl2ZV09XCJpc0xpbmtBY3RpdmUobGluaylcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiaXNMaW5rQWN0aXZlKGxpbmspID8gJ3BhZ2UnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk5hdmlnYXRlKGxpbmsucm91dGUpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb2NzLXNpZGViYXJfX2xpbmstbGFiZWxcIj57eyBsaW5rLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGxpbmsuYmFkZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkb2NzLXNpZGViYXJfX2JhZGdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kb2NzLXNpZGViYXJfX2JhZGdlLS1wcmltYXJ5XT1cImxpbmsuYmFkZ2VDb2xvciA9PT0gJ3ByaW1hcnknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kb2NzLXNpZGViYXJfX2JhZGdlLS1zdWNjZXNzXT1cImxpbmsuYmFkZ2VDb2xvciA9PT0gJ3N1Y2Nlc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kb2NzLXNpZGViYXJfX2JhZGdlLS13YXJuaW5nXT1cImxpbmsuYmFkZ2VDb2xvciA9PT0gJ3dhcm5pbmcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kb2NzLXNpZGViYXJfX2JhZGdlLS1kYW5nZXJdPVwibGluay5iYWRnZUNvbG9yID09PSAnZGFuZ2VyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgPnt7IGxpbmsuYmFkZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvbmF2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9kb2NzLXNpZGViYXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9jc1NpZGViYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHByb3BzOiBEb2NzU2lkZWJhck1ldGFkYXRhID0geyBzZWN0aW9uczogW10gfTtcblxuICBAT3V0cHV0KCkgbmF2aWdhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xuXG4gIGV4cGFuZGVkU2VjdGlvbnM6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG4gIHByaXZhdGUgY3VycmVudFJvdXRlOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplRXhwYW5kZWRTZWN0aW9ucygpO1xuICAgIHRoaXMudXBkYXRlQ3VycmVudFJvdXRlKCk7XG5cbiAgICAvLyBMaXN0ZW4gZm9yIHJvdXRlIGNoYW5nZXNcbiAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlQ3VycmVudFJvdXRlKCk7XG4gICAgICAgIHRoaXMuYXV0b0V4cGFuZEFjdGl2ZVNlY3Rpb24oKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydwcm9wcyddKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVFeHBhbmRlZFNlY3Rpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplRXhwYW5kZWRTZWN0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BzLnNlY3Rpb25zLmZvckVhY2goc2VjdGlvbiA9PiB7XG4gICAgICBpZiAodGhpcy5leHBhbmRlZFNlY3Rpb25zW3NlY3Rpb24udGl0bGVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZFNlY3Rpb25zW3NlY3Rpb24udGl0bGVdID0gc2VjdGlvbi5leHBhbmRlZCA/PyBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ3VycmVudFJvdXRlKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFJvdXRlID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJykuZmlsdGVyKEJvb2xlYW4pO1xuICAgIC8vIFVzZSBhY3RpdmVSb3V0ZSBmcm9tIHByb3BzIGlmIHByb3ZpZGVkXG4gICAgaWYgKHRoaXMucHJvcHMuYWN0aXZlUm91dGUpIHtcbiAgICAgIHRoaXMuY3VycmVudFJvdXRlID0gdGhpcy5wcm9wcy5hY3RpdmVSb3V0ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGF1dG9FeHBhbmRBY3RpdmVTZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMucHJvcHMuc2VjdGlvbnMuZm9yRWFjaChzZWN0aW9uID0+IHtcbiAgICAgIGlmIChzZWN0aW9uLmNoaWxkcmVuPy5zb21lKGxpbmsgPT4gdGhpcy5pc0xpbmtBY3RpdmUobGluaykpKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRTZWN0aW9uc1tzZWN0aW9uLnRpdGxlXSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvblNlY3Rpb25DbGljayhzZWN0aW9uOiBEb2NzU2lkZWJhclNlY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAoc2VjdGlvbi5yb3V0ZSkge1xuICAgICAgdGhpcy5vbk5hdmlnYXRlKHNlY3Rpb24ucm91dGUpO1xuICAgIH0gZWxzZSBpZiAoc2VjdGlvbi5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmV4cGFuZGVkU2VjdGlvbnNbc2VjdGlvbi50aXRsZV0gPSAhdGhpcy5leHBhbmRlZFNlY3Rpb25zW3NlY3Rpb24udGl0bGVdO1xuICAgIH1cbiAgfVxuXG4gIG9uTmF2aWdhdGUocm91dGU6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy5uYXZpZ2F0ZS5lbWl0KHJvdXRlKTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShyb3V0ZSk7XG4gIH1cblxuICBpc1NlY3Rpb25BY3RpdmUoc2VjdGlvbjogRG9jc1NpZGViYXJTZWN0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKHNlY3Rpb24ucm91dGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJvdXRlc01hdGNoKHNlY3Rpb24ucm91dGUsIHRoaXMuY3VycmVudFJvdXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlY3Rpb24uY2hpbGRyZW4/LnNvbWUobGluayA9PiB0aGlzLmlzTGlua0FjdGl2ZShsaW5rKSkgPz8gZmFsc2U7XG4gIH1cblxuICBpc0xpbmtBY3RpdmUobGluazogRG9jc1NpZGViYXJMaW5rKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVzTWF0Y2gobGluay5yb3V0ZSwgdGhpcy5jdXJyZW50Um91dGUpO1xuICB9XG5cbiAgcHJpdmF0ZSByb3V0ZXNNYXRjaChyb3V0ZTogc3RyaW5nW10sIGN1cnJlbnQ6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgcm91dGVQYXRoID0gcm91dGUuam9pbignLycpLnJlcGxhY2UoL15cXC8vLCAnJyk7XG4gICAgY29uc3QgY3VycmVudFBhdGggPSBjdXJyZW50LmpvaW4oJy8nKTtcbiAgICByZXR1cm4gY3VycmVudFBhdGggPT09IHJvdXRlUGF0aCB8fCBjdXJyZW50UGF0aC5zdGFydHNXaXRoKHJvdXRlUGF0aCArICcvJyk7XG4gIH1cbn1cbiJdfQ==
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy1zaWRlYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvZG9jcy1zaWRlYmFyL2RvY3Mtc2lkZWJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBVSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUd4QyxRQUFRLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUM7QUFFeEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBNkZILE1BQU0sT0FBTyxvQkFBb0I7SUFRL0IsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFQekIsVUFBSyxHQUF3QixFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUU3QyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUVsRCxxQkFBZ0IsR0FBNEIsRUFBRSxDQUFDO1FBQ3ZDLGlCQUFZLEdBQWEsRUFBRSxDQUFDO0lBRUMsQ0FBQztJQUV0QyxRQUFRO1FBQ04sSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGtC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QUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUMxRSxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQXFCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQWUsRUFBRSxPQUFpQjtRQUNwRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxPQUFPLFdBQVcsS0FBSyxTQUFTLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDOUUsQ0FBQzsrR0FqRlUsb0JBQW9CO21HQUFwQixvQkFBb0IsZ0tBeEZyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFGVCwwNEhBdEZTLFlBQVksK0JBQUUsT0FBTzs7NEZBeUZwQixvQkFBb0I7a0JBNUZoQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQ3RCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUZUOzJFQUlRLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2hldnJvbkRvd25PdXRsaW5lLCBjaGV2cm9uRm9yd2FyZE91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEb2NzU2lkZWJhck1ldGFkYXRhLCBEb2NzU2lkZWJhclNlY3Rpb24sIERvY3NTaWRlYmFyTGluayB9IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7IGNoZXZyb25Eb3duT3V0bGluZSwgY2hldnJvbkZvcndhcmRPdXRsaW5lIH0pO1xuXG4vKipcbiAqIHZhbC1kb2NzLXNpZGViYXJcbiAqXG4gKiBBIGhpZXJhcmNoaWNhbCBuYXZpZ2F0aW9uIHNpZGViYXIgZm9yIGRvY3VtZW50YXRpb24gc2l0ZXMuXG4gKiBTdXBwb3J0cyBjb2xsYXBzaWJsZSBzZWN0aW9ucywgYWN0aXZlIHJvdXRlIGhpZ2hsaWdodGluZywgYW5kIGJhZGdlcy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgaHRtbFxuICogPHZhbC1kb2NzLXNpZGViYXJcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBsb2dvOiB7IHNyYzogJy9hc3NldHMvbG9nby5zdmcnLCBhbHQ6ICdEb2NzJywgdGl0bGU6ICdET0NTJyB9LFxuICogICAgIHNlY3Rpb25zOiBbXG4gKiAgICAgICB7IHRpdGxlOiAnR2V0dGluZyBTdGFydGVkJywgcm91dGU6IFsnL2RvY3MnLCAnZ2V0dGluZy1zdGFydGVkJ10gfSxcbiAqICAgICAgIHtcbiAqICAgICAgICAgdGl0bGU6ICdDb21wb25lbnRzJyxcbiAqICAgICAgICAgZXhwYW5kZWQ6IHRydWUsXG4gKiAgICAgICAgIGNoaWxkcmVuOiBbXG4gKiAgICAgICAgICAgeyBsYWJlbDogJ0J1dHRvbicsIHJvdXRlOiBbJy9kb2NzJywgJ2NvbXBvbmVudHMnLCAnYnV0dG9uJ10gfSxcbiAqICAgICAgICAgICB7IGxhYmVsOiAnQ2FyZCcsIHJvdXRlOiBbJy9kb2NzJywgJ2NvbXBvbmVudHMnLCAnY2FyZCddLCBiYWRnZTogJ05ldycgfVxuICogICAgICAgICBdXG4gKiAgICAgICB9XG4gKiAgICAgXVxuICogICB9XCJcbiAqICAgKG5hdmlnYXRlKT1cIm9uTmF2aWdhdGUoJGV2ZW50KVwiXG4gKiA+PC92YWwtZG9jcy1zaWRlYmFyPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1kb2NzLXNpZGViYXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmF2XG4gICAgICBjbGFzcz1cImRvY3Mtc2lkZWJhclwiXG4gICAgICBbY2xhc3NdPVwicHJvcHMuY3NzQ2xhc3NcIlxuICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwicHJvcHMuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgIHJvbGU9XCJuYXZpZ2F0aW9uXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJEb2N1bWVudGF0aW9uIG5hdmlnYXRpb25cIlxuICAgID5cbiAgICAgIDwhLS0gTG9nbyAtLT5cbiAgICAgIEBpZiAocHJvcHMubG9nbykge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJkb2NzLXNpZGViYXJfX2xvZ29cIlxuICAgICAgICAgIFtjbGFzcy5kb2NzLXNpZGViYXJfX2xvZ28tLWNsaWNrYWJsZV09XCJwcm9wcy5sb2dvLnJvdXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwicHJvcHMubG9nby5yb3V0ZSA/IG9uTmF2aWdhdGUocHJvcHMubG9nby5yb3V0ZSkgOiBudWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIFtzcmNdPVwicHJvcHMubG9nby5zcmNcIlxuICAgICAgICAgICAgW2FsdF09XCJwcm9wcy5sb2dvLmFsdFwiXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cInByb3BzLmxvZ28uaGVpZ2h0IHx8ICczMnB4J1wiXG4gICAgICAgICAgLz5cbiAgICAgICAgICBAaWYgKHByb3BzLmxvZ28udGl0bGUpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG9jcy1zaWRlYmFyX19sb2dvLXRpdGxlXCI+e3sgcHJvcHMubG9nby50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8IS0tIE5hdmlnYXRpb24gc2VjdGlvbnMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZG9jcy1zaWRlYmFyX19uYXZcIj5cbiAgICAgICAgQGZvciAoc2VjdGlvbiBvZiBwcm9wcy5zZWN0aW9uczsgdHJhY2sgc2VjdGlvbi50aXRsZSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2NzLXNpZGViYXJfX3NlY3Rpb25cIj5cbiAgICAgICAgICAgIDwhLS0gU2VjdGlvbiBoZWFkZXIgLS0+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImRvY3Mtc2lkZWJhcl9fc2VjdGlvbi1oZWFkZXJcIlxuICAgICAgICAgICAgICBbY2xhc3MuZG9jcy1zaWRlYmFyX19zZWN0aW9uLWhlYWRlci0tYWN0aXZlXT1cImlzU2VjdGlvbkFjdGl2ZShzZWN0aW9uKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kb2NzLXNpZGViYXJfX3NlY3Rpb24taGVhZGVyLS1leHBhbmRlZF09XCJleHBhbmRlZFNlY3Rpb25zW3NlY3Rpb24udGl0bGVdXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRvY3Mtc2lkZWJhcl9fc2VjdGlvbi1oZWFkZXItLWNsaWNrYWJsZV09XCJzZWN0aW9uLnJvdXRlIHx8IHNlY3Rpb24uY2hpbGRyZW4/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwic2VjdGlvbi5jaGlsZHJlbj8ubGVuZ3RoID8gZXhwYW5kZWRTZWN0aW9uc1tzZWN0aW9uLnRpdGxlXSA6IG51bGxcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwic2VjdGlvbi5yb3V0ZSAmJiBpc1NlY3Rpb25BY3RpdmUoc2VjdGlvbikgPyAncGFnZScgOiBudWxsXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VjdGlvbkNsaWNrKHNlY3Rpb24pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQGlmIChzZWN0aW9uLmljb24pIHtcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwic2VjdGlvbi5pY29uXCIgY2xhc3M9XCJkb2NzLXNpZGViYXJfX3NlY3Rpb24taWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb2NzLXNpZGViYXJfX3NlY3Rpb24tdGl0bGVcIj57eyBzZWN0aW9uLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICBAaWYgKHNlY3Rpb24uYmFkZ2UpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvY3Mtc2lkZWJhcl9fYmFkZ2UgZG9jcy1zaWRlYmFyX19iYWRnZS0tc2VjdGlvblwiPnt7IHNlY3Rpb24uYmFkZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChzZWN0aW9uLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICA8aW9uLWljb25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZG9jcy1zaWRlYmFyX19jaGV2cm9uXCJcbiAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImV4cGFuZGVkU2VjdGlvbnNbc2VjdGlvbi50aXRsZV0gPyAnY2hldnJvbi1kb3duLW91dGxpbmUnIDogJ2NoZXZyb24tZm9yd2FyZC1vdXRsaW5lJ1wiXG4gICAgICAgICAgICAgICAgPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8IS0tIFNlY3Rpb24gY2hpbGRyZW4gLS0+XG4gICAgICAgICAgICBAaWYgKHNlY3Rpb24uY2hpbGRyZW4/Lmxlbmd0aCAmJiBleHBhbmRlZFNlY3Rpb25zW3NlY3Rpb24udGl0bGVdKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2NzLXNpZGViYXJfX2NoaWxkcmVuXCI+XG4gICAgICAgICAgICAgICAgQGZvciAobGluayBvZiBzZWN0aW9uLmNoaWxkcmVuOyB0cmFjayBsaW5rLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRvY3Mtc2lkZWJhcl9fbGlua1wiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kb2NzLXNpZGViYXJfX2xpbmstLWFjdGl2ZV09XCJpc0xpbmtBY3RpdmUobGluaylcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiaXNMaW5rQWN0aXZlKGxpbmspID8gJ3BhZ2UnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk5hdmlnYXRlKGxpbmsucm91dGUpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb2NzLXNpZGViYXJfX2xpbmstbGFiZWxcIj57eyBsaW5rLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGxpbmsuYmFkZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkb2NzLXNpZGViYXJfX2JhZGdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kb2NzLXNpZGViYXJfX2JhZGdlLS1wcmltYXJ5XT1cImxpbmsuYmFkZ2VDb2xvciA9PT0gJ3ByaW1hcnknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kb2NzLXNpZGViYXJfX2JhZGdlLS1zdWNjZXNzXT1cImxpbmsuYmFkZ2VDb2xvciA9PT0gJ3N1Y2Nlc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kb2NzLXNpZGViYXJfX2JhZGdlLS13YXJuaW5nXT1cImxpbmsuYmFkZ2VDb2xvciA9PT0gJ3dhcm5pbmcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kb2NzLXNpZGViYXJfX2JhZGdlLS1kYW5nZXJdPVwibGluay5iYWRnZUNvbG9yID09PSAnZGFuZ2VyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgPnt7IGxpbmsuYmFkZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvbmF2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9kb2NzLXNpZGViYXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9jc1NpZGViYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHByb3BzOiBEb2NzU2lkZWJhck1ldGFkYXRhID0geyBzZWN0aW9uczogW10gfTtcblxuICBAT3V0cHV0KCkgbmF2aWdhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xuXG4gIGV4cGFuZGVkU2VjdGlvbnM6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG4gIHByaXZhdGUgY3VycmVudFJvdXRlOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplRXhwYW5kZWRTZWN0aW9ucygpO1xuICAgIHRoaXMudXBkYXRlQ3VycmVudFJvdXRlKCk7XG5cbiAgICAvLyBMaXN0ZW4gZm9yIHJvdXRlIGNoYW5nZXNcbiAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlQ3VycmVudFJvdXRlKCk7XG4gICAgICAgIHRoaXMuYXV0b0V4cGFuZEFjdGl2ZVNlY3Rpb24oKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydwcm9wcyddKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVFeHBhbmRlZFNlY3Rpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplRXhwYW5kZWRTZWN0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BzLnNlY3Rpb25zLmZvckVhY2goc2VjdGlvbiA9PiB7XG4gICAgICBpZiAodGhpcy5leHBhbmRlZFNlY3Rpb25zW3NlY3Rpb24udGl0bGVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZFNlY3Rpb25zW3NlY3Rpb24udGl0bGVdID0gc2VjdGlvbi5leHBhbmRlZCA/PyBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ3VycmVudFJvdXRlKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFJvdXRlID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJykuZmlsdGVyKEJvb2xlYW4pO1xuICAgIC8vIFVzZSBhY3RpdmVSb3V0ZSBmcm9tIHByb3BzIGlmIHByb3ZpZGVkXG4gICAgaWYgKHRoaXMucHJvcHMuYWN0aXZlUm91dGUpIHtcbiAgICAgIHRoaXMuY3VycmVudFJvdXRlID0gdGhpcy5wcm9wcy5hY3RpdmVSb3V0ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGF1dG9FeHBhbmRBY3RpdmVTZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMucHJvcHMuc2VjdGlvbnMuZm9yRWFjaChzZWN0aW9uID0+IHtcbiAgICAgIGlmIChzZWN0aW9uLmNoaWxkcmVuPy5zb21lKGxpbmsgPT4gdGhpcy5pc0xpbmtBY3RpdmUobGluaykpKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRTZWN0aW9uc1tzZWN0aW9uLnRpdGxlXSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvblNlY3Rpb25DbGljayhzZWN0aW9uOiBEb2NzU2lkZWJhclNlY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAoc2VjdGlvbi5yb3V0ZSkge1xuICAgICAgdGhpcy5vbk5hdmlnYXRlKHNlY3Rpb24ucm91dGUpO1xuICAgIH0gZWxzZSBpZiAoc2VjdGlvbi5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmV4cGFuZGVkU2VjdGlvbnNbc2VjdGlvbi50aXRsZV0gPSAhdGhpcy5leHBhbmRlZFNlY3Rpb25zW3NlY3Rpb24udGl0bGVdO1xuICAgIH1cbiAgfVxuXG4gIG9uTmF2aWdhdGUocm91dGU6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy5uYXZpZ2F0ZS5lbWl0KHJvdXRlKTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShyb3V0ZSk7XG4gIH1cblxuICBpc1NlY3Rpb25BY3RpdmUoc2VjdGlvbjogRG9jc1NpZGViYXJTZWN0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKHNlY3Rpb24ucm91dGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJvdXRlc01hdGNoKHNlY3Rpb24ucm91dGUsIHRoaXMuY3VycmVudFJvdXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlY3Rpb24uY2hpbGRyZW4/LnNvbWUobGluayA9PiB0aGlzLmlzTGlua0FjdGl2ZShsaW5rKSkgPz8gZmFsc2U7XG4gIH1cblxuICBpc0xpbmtBY3RpdmUobGluazogRG9jc1NpZGViYXJMaW5rKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVzTWF0Y2gobGluay5yb3V0ZSwgdGhpcy5jdXJyZW50Um91dGUpO1xuICB9XG5cbiAgcHJpdmF0ZSByb3V0ZXNNYXRjaChyb3V0ZTogc3RyaW5nW10sIGN1cnJlbnQ6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgcm91dGVQYXRoID0gcm91dGUuam9pbignLycpLnJlcGxhY2UoL15cXC8vLCAnJyk7XG4gICAgY29uc3QgY3VycmVudFBhdGggPSBjdXJyZW50LmpvaW4oJy8nKTtcbiAgICByZXR1cm4gY3VycmVudFBhdGggPT09IHJvdXRlUGF0aCB8fCBjdXJyZW50UGF0aC5zdGFydHNXaXRoKHJvdXRlUGF0aCArICcvJyk7XG4gIH1cbn1cbiJdfQ==