@tolle_/tolle-ui 0.0.18-beta → 0.0.21-beta
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.
- package/esm2022/lib/alert.component.mjs +116 -0
- package/esm2022/lib/avatar-fallback.component.mjs +19 -0
- package/esm2022/lib/avatar.component.mjs +86 -0
- package/esm2022/lib/badge.component.mjs +4 -4
- package/esm2022/lib/breadcrumb-item.component.mjs +19 -0
- package/esm2022/lib/breadcrumb-link.component.mjs +60 -0
- package/esm2022/lib/breadcrumb-separator.component.mjs +23 -0
- package/esm2022/lib/breadcrumb.component.mjs +28 -0
- package/esm2022/lib/button.component.mjs +20 -24
- package/esm2022/lib/card.component.mjs +3 -3
- package/esm2022/lib/data-table.component.mjs +1 -1
- package/esm2022/lib/date-picker.component.mjs +2 -2
- package/esm2022/lib/date-range-picker.component.mjs +1 -1
- package/esm2022/lib/empty-state.component.mjs +111 -0
- package/esm2022/lib/input.component.mjs +125 -32
- package/esm2022/lib/masked-input.component.mjs +210 -46
- package/esm2022/lib/multi-select.component.mjs +1 -1
- package/esm2022/lib/otp-group.component.mjs +15 -0
- package/esm2022/lib/otp-slot.component.mjs +74 -0
- package/esm2022/lib/otp.component.mjs +127 -0
- package/esm2022/lib/popover-content.component.mjs +44 -0
- package/esm2022/lib/popover.component.mjs +105 -0
- package/esm2022/lib/radio-group.component.mjs +78 -0
- package/esm2022/lib/radio-item.component.mjs +112 -0
- package/esm2022/lib/radio-service.mjs +23 -0
- package/esm2022/lib/select.component.mjs +38 -9
- package/esm2022/lib/textarea.component.mjs +130 -26
- package/esm2022/lib/theme.service.mjs +227 -56
- package/esm2022/public-api.mjs +16 -1
- package/esm2022/tolle-ui.mjs +5 -0
- package/fesm2022/{tolle_-tolle-ui.mjs → tolle-ui.mjs} +1730 -201
- package/fesm2022/tolle-ui.mjs.map +1 -0
- package/lib/alert.component.d.ts +25 -0
- package/lib/avatar-fallback.component.d.ts +5 -0
- package/lib/avatar.component.d.ts +17 -0
- package/lib/breadcrumb-item.component.d.ts +5 -0
- package/lib/breadcrumb-link.component.d.ts +6 -0
- package/lib/breadcrumb-separator.component.d.ts +5 -0
- package/lib/breadcrumb.component.d.ts +8 -0
- package/lib/button.component.d.ts +1 -4
- package/lib/empty-state.component.d.ts +20 -0
- package/lib/input.component.d.ts +11 -3
- package/lib/masked-input.component.d.ts +14 -1
- package/lib/otp-group.component.d.ts +5 -0
- package/lib/otp-slot.component.d.ts +13 -0
- package/lib/otp.component.d.ts +21 -0
- package/lib/popover-content.component.d.ts +8 -0
- package/lib/popover.component.d.ts +19 -0
- package/lib/radio-group.component.d.ts +23 -0
- package/lib/radio-item.component.d.ts +22 -0
- package/lib/radio-service.d.ts +11 -0
- package/lib/select.component.d.ts +1 -0
- package/lib/textarea.component.d.ts +8 -1
- package/lib/theme.service.d.ts +37 -3
- package/package.json +7 -6
- package/preset.js +47 -33
- package/public-api.d.ts +15 -0
- package/theme.css +208 -163
- package/esm2022/tolle_-tolle-ui.mjs +0 -5
- package/fesm2022/tolle_-tolle-ui.mjs.map +0 -1
|
@@ -34,93 +34,212 @@ export class ThemeService {
|
|
|
34
34
|
else {
|
|
35
35
|
this.disableDarkMode();
|
|
36
36
|
}
|
|
37
|
-
|
|
38
|
-
if (
|
|
39
|
-
this.
|
|
37
|
+
const savedPrimary = localStorage.getItem('tolle-primary-color');
|
|
38
|
+
if (savedPrimary) {
|
|
39
|
+
this.setPrimaryColor(savedPrimary, false);
|
|
40
|
+
}
|
|
41
|
+
else if (this.config?.primaryColor) {
|
|
42
|
+
this.setPrimaryColor(this.config.primaryColor, false);
|
|
43
|
+
}
|
|
44
|
+
// Set radius from config
|
|
45
|
+
if (this.config?.radius) {
|
|
46
|
+
this.setRadius(this.config.radius, false);
|
|
40
47
|
}
|
|
41
48
|
}
|
|
42
49
|
/**
|
|
43
|
-
*
|
|
50
|
+
* Sets the border radius for all components
|
|
44
51
|
*/
|
|
45
|
-
|
|
52
|
+
setRadius(radius, persist = true) {
|
|
46
53
|
if (!isPlatformBrowser(this.platformId))
|
|
47
54
|
return;
|
|
48
55
|
const root = this.document.documentElement;
|
|
49
|
-
// Set
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
56
|
+
// Set the CSS variable
|
|
57
|
+
this.renderer.setStyle(root, '--radius', radius);
|
|
58
|
+
// Also update the dynamic styles to include radius calculations
|
|
59
|
+
this.updateRadiusInDynamicStyles(radius);
|
|
60
|
+
// Persist if needed
|
|
61
|
+
if (persist) {
|
|
62
|
+
localStorage.setItem('tolle-radius', radius);
|
|
53
63
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Updates the radius calculations in dynamic styles
|
|
67
|
+
*/
|
|
68
|
+
updateRadiusInDynamicStyles(radius) {
|
|
69
|
+
const existingStyle = this.document.getElementById(this.styleId);
|
|
70
|
+
if (existingStyle) {
|
|
71
|
+
let css = existingStyle.textContent || '';
|
|
72
|
+
// Update or add radius calculations
|
|
73
|
+
if (css.includes('--radius:')) {
|
|
74
|
+
// Replace existing radius declarations
|
|
75
|
+
css = css.replace(/--radius:[^;]+;/g, `--radius: ${radius};`);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
// Add radius to the beginning of :root
|
|
79
|
+
css = css.replace(/:root\s*{/, `:root {\n --radius: ${radius};`);
|
|
80
|
+
}
|
|
81
|
+
// Update the calculated radius values in the CSS
|
|
82
|
+
const radiusCalcRegex = /calc\(var\(--radius[^)]+\)/g;
|
|
83
|
+
css = css.replace(radiusCalcRegex, (match) => {
|
|
84
|
+
if (match.includes('- 2px')) {
|
|
85
|
+
return `calc(${radius} - 2px)`;
|
|
86
|
+
}
|
|
87
|
+
else if (match.includes('- 4px')) {
|
|
88
|
+
return `calc(${radius} - 4px)`;
|
|
89
|
+
}
|
|
90
|
+
return match;
|
|
91
|
+
});
|
|
92
|
+
existingStyle.textContent = css;
|
|
57
93
|
}
|
|
58
94
|
}
|
|
59
95
|
/**
|
|
60
96
|
* Generates full primary color palette (50-900) based on base color
|
|
61
|
-
* Uses color-mix() for consistency with your existing approach
|
|
62
97
|
*/
|
|
63
98
|
generatePrimaryShades(baseColor) {
|
|
99
|
+
// Convert hex to RGB
|
|
100
|
+
const rgb = this.hexToRgb(baseColor);
|
|
101
|
+
const rgbString = rgb ? `${rgb.r} ${rgb.g} ${rgb.b}` : '37 99 235';
|
|
102
|
+
// Create lighter ring colors in RGB
|
|
103
|
+
const ringLight = this.lightenColor(baseColor, 40);
|
|
104
|
+
const ringLightRgb = this.hexToRgb(ringLight);
|
|
105
|
+
const ringLightRgbString = ringLightRgb ? `${ringLightRgb.r} ${ringLightRgb.g} ${ringLightRgb.b}` : '96 165 250';
|
|
106
|
+
const ringDark = this.lightenColor(baseColor, 20);
|
|
107
|
+
const ringDarkRgb = this.hexToRgb(ringDark);
|
|
108
|
+
const ringDarkRgbString = ringDarkRgb ? `${ringDarkRgb.r} ${ringDarkRgb.g} ${ringDarkRgb.b}` : '147 197 253';
|
|
109
|
+
// Get current radius or use default
|
|
110
|
+
const root = this.document.documentElement;
|
|
111
|
+
const currentRadius = getComputedStyle(root).getPropertyValue('--radius').trim() || '0.5rem';
|
|
64
112
|
const css = `
|
|
113
|
+
/* Override primary colors - this needs to come AFTER your main CSS */
|
|
65
114
|
:root {
|
|
66
|
-
/* Primary
|
|
67
|
-
--primary
|
|
68
|
-
--primary-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
--
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
--primary-
|
|
75
|
-
--primary-
|
|
76
|
-
--primary-
|
|
115
|
+
/* Primary in RGB format for Tailwind opacity support */
|
|
116
|
+
--primary: ${rgbString};
|
|
117
|
+
--primary-foreground: ${this.getContrastColorRgb(baseColor)};
|
|
118
|
+
|
|
119
|
+
/* Radius */
|
|
120
|
+
--radius: ${currentRadius};
|
|
121
|
+
|
|
122
|
+
/* Primary shades for light mode */
|
|
123
|
+
--primary-50: ${this.hexToRgbString(this.lightenColor(baseColor, 90))};
|
|
124
|
+
--primary-100: ${this.hexToRgbString(this.lightenColor(baseColor, 80))};
|
|
125
|
+
--primary-200: ${this.hexToRgbString(this.lightenColor(baseColor, 60))};
|
|
126
|
+
--primary-300: ${this.hexToRgbString(this.lightenColor(baseColor, 40))};
|
|
127
|
+
--primary-400: ${this.hexToRgbString(this.lightenColor(baseColor, 20))};
|
|
128
|
+
--primary-500: ${rgbString};
|
|
129
|
+
--primary-600: ${this.hexToRgbString(this.darkenColor(baseColor, 20))};
|
|
130
|
+
--primary-700: ${this.hexToRgbString(this.darkenColor(baseColor, 40))};
|
|
131
|
+
--primary-800: ${this.hexToRgbString(this.darkenColor(baseColor, 60))};
|
|
132
|
+
--primary-900: ${this.hexToRgbString(this.darkenColor(baseColor, 80))};
|
|
77
133
|
|
|
78
|
-
/*
|
|
79
|
-
--
|
|
80
|
-
--secondary: color-mix(in srgb, var(--primary-200), transparent 40%);
|
|
81
|
-
--secondary-foreground: var(--primary-900);
|
|
82
|
-
--muted: color-mix(in srgb, var(--primary-50), #f3f4f6 50%);
|
|
83
|
-
--muted-foreground: color-mix(in srgb, var(--primary-400), #4b5563 60%);
|
|
84
|
-
--accent: color-mix(in srgb, var(--primary-100), transparent 70%);
|
|
85
|
-
--accent-foreground: var(--primary-700);
|
|
86
|
-
--ring: color-mix(in srgb, var(--primary-300), transparent 50%);
|
|
134
|
+
/* Update ring color to be lighter */
|
|
135
|
+
--ring: ${ringLightRgbString};
|
|
87
136
|
}
|
|
88
137
|
|
|
89
138
|
.dark {
|
|
90
|
-
/*
|
|
91
|
-
--primary
|
|
92
|
-
--primary-
|
|
93
|
-
--primary-200: color-mix(in srgb, ${baseColor}, black 65%);
|
|
94
|
-
--primary-300: color-mix(in srgb, ${baseColor}, black 55%);
|
|
95
|
-
--primary-400: color-mix(in srgb, ${baseColor}, black 45%);
|
|
96
|
-
--primary-500: ${baseColor};
|
|
97
|
-
--primary-600: color-mix(in srgb, ${baseColor}, white 20%);
|
|
98
|
-
--primary-700: color-mix(in srgb, ${baseColor}, white 35%);
|
|
99
|
-
--primary-800: color-mix(in srgb, ${baseColor}, white 50%);
|
|
100
|
-
--primary-900: color-mix(in srgb, ${baseColor}, white 65%);
|
|
139
|
+
/* For dark mode, we keep the primary color but adjust shades */
|
|
140
|
+
--primary: ${rgbString};
|
|
141
|
+
--primary-foreground: ${this.getContrastColorRgb(baseColor)};
|
|
101
142
|
|
|
102
|
-
/* Dark mode
|
|
103
|
-
--primary-
|
|
104
|
-
--
|
|
105
|
-
--
|
|
106
|
-
--
|
|
107
|
-
--
|
|
108
|
-
--
|
|
109
|
-
--
|
|
110
|
-
--
|
|
143
|
+
/* Dark mode shades */
|
|
144
|
+
--primary-50: ${this.hexToRgbString(this.darkenColor(baseColor, 85))};
|
|
145
|
+
--primary-100: ${this.hexToRgbString(this.darkenColor(baseColor, 75))};
|
|
146
|
+
--primary-200: ${this.hexToRgbString(this.darkenColor(baseColor, 65))};
|
|
147
|
+
--primary-300: ${this.hexToRgbString(this.darkenColor(baseColor, 55))};
|
|
148
|
+
--primary-400: ${this.hexToRgbString(this.darkenColor(baseColor, 45))};
|
|
149
|
+
--primary-500: ${rgbString};
|
|
150
|
+
--primary-600: ${this.hexToRgbString(this.lightenColor(baseColor, 20))};
|
|
151
|
+
--primary-700: ${this.hexToRgbString(this.lightenColor(baseColor, 35))};
|
|
152
|
+
--primary-800: ${this.hexToRgbString(this.lightenColor(baseColor, 50))};
|
|
153
|
+
--primary-900: ${this.hexToRgbString(this.lightenColor(baseColor, 65))};
|
|
154
|
+
|
|
155
|
+
/* Update ring color for dark mode - lighter variant */
|
|
156
|
+
--ring: ${ringDarkRgbString};
|
|
111
157
|
}
|
|
112
158
|
`;
|
|
113
159
|
this.injectDynamicStyles(css);
|
|
114
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* Convert hex color to RGB object
|
|
163
|
+
*/
|
|
164
|
+
hexToRgb(hex) {
|
|
165
|
+
// Remove # if present
|
|
166
|
+
const cleanedHex = hex.replace('#', '');
|
|
167
|
+
let r = 0, g = 0, b = 0;
|
|
168
|
+
if (cleanedHex.length === 3) {
|
|
169
|
+
r = parseInt(cleanedHex[0] + cleanedHex[0], 16);
|
|
170
|
+
g = parseInt(cleanedHex[1] + cleanedHex[1], 16);
|
|
171
|
+
b = parseInt(cleanedHex[2] + cleanedHex[2], 16);
|
|
172
|
+
return { r, g, b };
|
|
173
|
+
}
|
|
174
|
+
if (cleanedHex.length === 6) {
|
|
175
|
+
r = parseInt(cleanedHex.substring(0, 2), 16);
|
|
176
|
+
g = parseInt(cleanedHex.substring(2, 4), 16);
|
|
177
|
+
b = parseInt(cleanedHex.substring(4, 6), 16);
|
|
178
|
+
return { r, g, b };
|
|
179
|
+
}
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Convert hex to RGB string format for CSS (space-separated)
|
|
184
|
+
*/
|
|
185
|
+
hexToRgbString(hexColor) {
|
|
186
|
+
const rgb = this.hexToRgb(hexColor);
|
|
187
|
+
return rgb ? `${rgb.r} ${rgb.g} ${rgb.b}` : '37 99 235';
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Get contrast color in RGB format
|
|
191
|
+
*/
|
|
192
|
+
getContrastColorRgb(hexColor) {
|
|
193
|
+
const contrast = this.getContrastColor(hexColor);
|
|
194
|
+
const rgb = this.hexToRgb(contrast);
|
|
195
|
+
return rgb ? `${rgb.r} ${rgb.g} ${rgb.b}` : '255 255 255';
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Lighten a hex color by a percentage
|
|
199
|
+
*/
|
|
200
|
+
lightenColor(color, percent) {
|
|
201
|
+
const rgb = this.hexToRgb(color);
|
|
202
|
+
if (!rgb)
|
|
203
|
+
return color;
|
|
204
|
+
// Lighten by percentage
|
|
205
|
+
const r = Math.min(255, Math.floor(rgb.r + (255 - rgb.r) * (percent / 100)));
|
|
206
|
+
const g = Math.min(255, Math.floor(rgb.g + (255 - rgb.g) * (percent / 100)));
|
|
207
|
+
const b = Math.min(255, Math.floor(rgb.b + (255 - rgb.b) * (percent / 100)));
|
|
208
|
+
// Convert back to hex
|
|
209
|
+
return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Darken a hex color by a percentage
|
|
213
|
+
*/
|
|
214
|
+
darkenColor(color, percent) {
|
|
215
|
+
const rgb = this.hexToRgb(color);
|
|
216
|
+
if (!rgb)
|
|
217
|
+
return color;
|
|
218
|
+
const factor = 1 - (percent / 100);
|
|
219
|
+
const r = Math.max(0, Math.floor(rgb.r * factor));
|
|
220
|
+
const g = Math.max(0, Math.floor(rgb.g * factor));
|
|
221
|
+
const b = Math.max(0, Math.floor(rgb.b * factor));
|
|
222
|
+
return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Calculate contrast color (black or white) based on background color
|
|
226
|
+
*/
|
|
227
|
+
getContrastColor(hexColor) {
|
|
228
|
+
const rgb = this.hexToRgb(hexColor);
|
|
229
|
+
if (!rgb)
|
|
230
|
+
return '#ffffff';
|
|
231
|
+
// Calculate relative luminance
|
|
232
|
+
const luminance = (0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b) / 255;
|
|
233
|
+
// Return black for light colors, white for dark colors
|
|
234
|
+
return luminance > 0.5 ? '#000000' : '#ffffff';
|
|
235
|
+
}
|
|
115
236
|
injectDynamicStyles(css) {
|
|
116
237
|
if (!isPlatformBrowser(this.platformId))
|
|
117
238
|
return;
|
|
118
|
-
// Remove existing dynamic styles
|
|
119
239
|
const existingStyle = this.document.getElementById(this.styleId);
|
|
120
240
|
if (existingStyle) {
|
|
121
241
|
existingStyle.remove();
|
|
122
242
|
}
|
|
123
|
-
// Create and inject new styles
|
|
124
243
|
const styleElement = this.document.createElement('style');
|
|
125
244
|
styleElement.id = this.styleId;
|
|
126
245
|
styleElement.textContent = css;
|
|
@@ -140,9 +259,61 @@ export class ThemeService {
|
|
|
140
259
|
localStorage.setItem('tolle-theme', 'light');
|
|
141
260
|
this.isDarkSubject.next(false);
|
|
142
261
|
}
|
|
262
|
+
setPrimaryColor(color, persist = true) {
|
|
263
|
+
if (!isPlatformBrowser(this.platformId))
|
|
264
|
+
return;
|
|
265
|
+
this.generatePrimaryShades(color);
|
|
266
|
+
// Also set inline for immediate update
|
|
267
|
+
const rgb = this.hexToRgb(color);
|
|
268
|
+
if (rgb) {
|
|
269
|
+
this.renderer.setStyle(this.document.documentElement, '--primary', `${rgb.r} ${rgb.g} ${rgb.b}`);
|
|
270
|
+
}
|
|
271
|
+
if (persist) {
|
|
272
|
+
localStorage.setItem('tolle-primary-color', color);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
143
275
|
get currentTheme() {
|
|
144
276
|
return this.isDarkSubject.value ? 'dark' : 'light';
|
|
145
277
|
}
|
|
278
|
+
get primaryColor() {
|
|
279
|
+
if (!isPlatformBrowser(this.platformId))
|
|
280
|
+
return null;
|
|
281
|
+
const root = this.document.documentElement;
|
|
282
|
+
const cssValue = getComputedStyle(root).getPropertyValue('--primary').trim();
|
|
283
|
+
if (cssValue && cssValue !== '') {
|
|
284
|
+
// Convert RGB string back to hex for external use
|
|
285
|
+
const rgbParts = cssValue.split(' ').map(Number);
|
|
286
|
+
if (rgbParts.length === 3) {
|
|
287
|
+
return `#${rgbParts[0].toString(16).padStart(2, '0')}${rgbParts[1].toString(16).padStart(2, '0')}${rgbParts[2].toString(16).padStart(2, '0')}`;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return localStorage.getItem('tolle-primary-color');
|
|
291
|
+
}
|
|
292
|
+
get radius() {
|
|
293
|
+
if (!isPlatformBrowser(this.platformId))
|
|
294
|
+
return null;
|
|
295
|
+
const root = this.document.documentElement;
|
|
296
|
+
const cssValue = getComputedStyle(root).getPropertyValue('--radius').trim();
|
|
297
|
+
if (cssValue && cssValue !== '') {
|
|
298
|
+
return cssValue;
|
|
299
|
+
}
|
|
300
|
+
return localStorage.getItem('tolle-radius') || '0.5rem';
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Applies the brand identity variables with full shade palette
|
|
304
|
+
*/
|
|
305
|
+
applyBrandConfig(config) {
|
|
306
|
+
if (!isPlatformBrowser(this.platformId))
|
|
307
|
+
return;
|
|
308
|
+
// Set primary color if provided
|
|
309
|
+
if (config.primaryColor) {
|
|
310
|
+
this.setPrimaryColor(config.primaryColor, false);
|
|
311
|
+
}
|
|
312
|
+
// Set border radius if provided
|
|
313
|
+
if (config.radius) {
|
|
314
|
+
this.setRadius(config.radius, false);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
146
317
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ThemeService, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: TOLLE_CONFIG, optional: true }, { token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
147
318
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ThemeService, providedIn: 'root' });
|
|
148
319
|
}
|
|
@@ -161,4 +332,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
161
332
|
type: Inject,
|
|
162
333
|
args: [TOLLE_CONFIG]
|
|
163
334
|
}] }, { type: i0.RendererFactory2 }] });
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvdGhlbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7O0FBRzNELE1BQU0sT0FBTyxZQUFZO0lBT0s7SUFDRztJQUNhO0lBUnBDLFFBQVEsQ0FBWTtJQUNwQixhQUFhLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDNUQsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEMsT0FBTyxHQUFHLHFCQUFxQixDQUFDO0lBRXhDLFlBQzRCLFFBQWtCLEVBQ2YsVUFBa0IsRUFDTCxNQUFtQixFQUM3RCxlQUFpQztRQUhQLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ0wsV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUc3RCxJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFFaEQseUNBQXlDO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxD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OzswQkFBSSxNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIFBMQVRGT1JNX0lELCBPcHRpb25hbCwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUT0xMRV9DT05GSUcsIFRvbGxlQ29uZmlnIH0gZnJvbSAnLi90b2xsZS1jb25maWcnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRoZW1lU2VydmljZSB7XG4gIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcbiAgcHJpdmF0ZSBpc0RhcmtTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGlzRGFyayQgPSB0aGlzLmlzRGFya1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIHByaXZhdGUgc3R5bGVJZCA9ICd0b2xsZS1keW5hbWljLXRoZW1lJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFRPTExFX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFRvbGxlQ29uZmlnLFxuICAgIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MlxuICApIHtcbiAgICB0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVRoZW1lKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVUaGVtZSgpIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblxuICAgIC8vIDEuIERldGVybWluZSBJbml0aWFsIE1vZGUgKERhcmsvTGlnaHQpXG4gICAgY29uc3Qgc2F2ZWRUaGVtZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0b2xsZS10aGVtZScpO1xuICAgIGNvbnN0IHN5c3RlbVByZWZlcnNEYXJrID0gd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzO1xuXG4gICAgLy8gTG9naWM6IFNhdmVkIFByZWZlcmVuY2UgPiBDb25maWcgRGVmYXVsdCA+IFN5c3RlbSBQcmVmZXJlbmNlXG4gICAgY29uc3Qgc2hvdWxkQmVEYXJrID0gc2F2ZWRUaGVtZVxuICAgICAgPyBzYXZlZFRoZW1lID09PSAnZGFyaydcbiAgICAgIDogKHRoaXMuY29uZmlnPy5kYXJrQnlEZWZhdWx0ID8/IHN5c3RlbVByZWZlcnNEYXJrKTtcblxuICAgIGlmIChzaG91bGRCZURhcmspIHtcbiAgICAgIHRoaXMuZW5hYmxlRGFya01vZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXNhYmxlRGFya01vZGUoKTtcbiAgICB9XG5cbiAgICAvLyAyLiBBcHBseSBCcmFuZCBDb25maWcgLSBUaGlzIHdpbGwgZ2VuZXJhdGUgZnVsbCBwYWxldHRlXG4gICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICB0aGlzLmFwcGx5QnJhbmRDb25maWcodGhpcy5jb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSBicmFuZCBpZGVudGl0eSB2YXJpYWJsZXMgd2l0aCBmdWxsIHNoYWRlIHBhbGV0dGVcbiAgICovXG4gIGFwcGx5QnJhbmRDb25maWcoY29uZmlnOiBUb2xsZUNvbmZpZykge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgY29uc3Qgcm9vdCA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gICAgLy8gU2V0IHByaW1hcnkgY29sb3IgaWYgcHJvdmlkZWRcbiAgICBpZiAoY29uZmlnLnByaW1hcnlDb2xvcikge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShyb290LCAnLS1wcmltYXJ5JywgY29uZmlnLnByaW1hcnlDb2xvcik7XG4gICAgICB0aGlzLmdlbmVyYXRlUHJpbWFyeVNoYWRlcyhjb25maWcucHJpbWFyeUNvbG9yKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgYm9yZGVyIHJhZGl1cyBpZiBwcm92aWRlZFxuICAgIGlmIChjb25maWcucmFkaXVzKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHJvb3QsICctLXJhZGl1cycsIGNvbmZpZy5yYWRpdXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgZnVsbCBwcmltYXJ5IGNvbG9yIHBhbGV0dGUgKDUwLTkwMCkgYmFzZWQgb24gYmFzZSBjb2xvclxuICAgKiBVc2VzIGNvbG9yLW1peCgpIGZvciBjb25zaXN0ZW5jeSB3aXRoIHlvdXIgZXhpc3RpbmcgYXBwcm9hY2hcbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVQcmltYXJ5U2hhZGVzKGJhc2VDb2xvcjogc3RyaW5nKSB7XG4gICAgY29uc3QgY3NzID0gYFxuICAgICAgOnJvb3Qge1xuICAgICAgICAvKiBQcmltYXJ5IFNoYWRlcyAqL1xuICAgICAgICAtLXByaW1hcnktNTA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIHdoaXRlIDkwJSk7XG4gICAgICAgIC0tcHJpbWFyeS0xMDA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIHdoaXRlIDgwJSk7XG4gICAgICAgIC0tcHJpbWFyeS0yMDA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIHdoaXRlIDYwJSk7XG4gICAgICAgIC0tcHJpbWFyeS0zMDA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIHdoaXRlIDQwJSk7XG4gICAgICAgIC0tcHJpbWFyeS00MDA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIHdoaXRlIDIwJSk7XG4gICAgICAgIC0tcHJpbWFyeS01MDA6ICR7YmFzZUNvbG9yfTtcbiAgICAgICAgLS1wcmltYXJ5LTYwMDogY29sb3ItbWl4KGluIHNyZ2IsICR7YmFzZUNvbG9yfSwgYmxhY2sgMjAlKTtcbiAgICAgICAgLS1wcmltYXJ5LTcwMDogY29sb3ItbWl4KGluIHNyZ2IsICR7YmFzZUNvbG9yfSwgYmxhY2sgNDAlKTtcbiAgICAgICAgLS1wcmltYXJ5LTgwMDogY29sb3ItbWl4KGluIHNyZ2IsICR7YmFzZUNvbG9yfSwgYmxhY2sgNjAlKTtcbiAgICAgICAgLS1wcmltYXJ5LTkwMDogY29sb3ItbWl4KGluIHNyZ2IsICR7YmFzZUNvbG9yfSwgYmxhY2sgODAlKTtcblxuICAgICAgICAvKiBZb3VyIGV4aXN0aW5nIGRlcml2ZWQgY29sb3JzIC0gdXBkYXRlZCB0byB1c2UgbmV3IHNoYWRlcyAqL1xuICAgICAgICAtLXByaW1hcnktZm9yZWdyb3VuZDogd2hpdGU7XG4gICAgICAgIC0tc2Vjb25kYXJ5OiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcHJpbWFyeS0yMDApLCB0cmFuc3BhcmVudCA0MCUpO1xuICAgICAgICAtLXNlY29uZGFyeS1mb3JlZ3JvdW5kOiB2YXIoLS1wcmltYXJ5LTkwMCk7XG4gICAgICAgIC0tbXV0ZWQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1wcmltYXJ5LTUwKSwgI2YzZjRmNiA1MCUpO1xuICAgICAgICAtLW11dGVkLWZvcmVncm91bmQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1wcmltYXJ5LTQwMCksICM0YjU1NjMgNjAlKTtcbiAgICAgICAgLS1hY2NlbnQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1wcmltYXJ5LTEwMCksIHRyYW5zcGFyZW50IDcwJSk7XG4gICAgICAgIC0tYWNjZW50LWZvcmVncm91bmQ6IHZhcigtLXByaW1hcnktNzAwKTtcbiAgICAgICAgLS1yaW5nOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcHJpbWFyeS0zMDApLCB0cmFuc3BhcmVudCA1MCUpO1xuICAgICAgfVxuXG4gICAgICAuZGFyayB7XG4gICAgICAgIC8qIERhcmsgbW9kZSB2YXJpYW50cyAqL1xuICAgICAgICAtLXByaW1hcnktNTA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIGJsYWNrIDg1JSk7XG4gICAgICAgIC0tcHJpbWFyeS0xMDA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIGJsYWNrIDc1JSk7XG4gICAgICAgIC0tcHJpbWFyeS0yMDA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIGJsYWNrIDY1JSk7XG4gICAgICAgIC0tcHJpbWFyeS0zMDA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIGJsYWNrIDU1JSk7XG4gICAgICAgIC0tcHJpbWFyeS00MDA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIGJsYWNrIDQ1JSk7XG4gICAgICAgIC0tcHJpbWFyeS01MDA6ICR7YmFzZUNvbG9yfTtcbiAgICAgICAgLS1wcmltYXJ5LTYwMDogY29sb3ItbWl4KGluIHNyZ2IsICR7YmFzZUNvbG9yfSwgd2hpdGUgMjAlKTtcbiAgICAgICAgLS1wcmltYXJ5LTcwMDogY29sb3ItbWl4KGluIHNyZ2IsICR7YmFzZUNvbG9yfSwgd2hpdGUgMzUlKTtcbiAgICAgICAgLS1wcmltYXJ5LTgwMDogY29sb3ItbWl4KGluIHNyZ2IsICR7YmFzZUNvbG9yfSwgd2hpdGUgNTAlKTtcbiAgICAgICAgLS1wcmltYXJ5LTkwMDogY29sb3ItbWl4KGluIHNyZ2IsICR7YmFzZUNvbG9yfSwgd2hpdGUgNjUlKTtcblxuICAgICAgICAvKiBEYXJrIG1vZGUgZGVyaXZlZCBjb2xvcnMgKi9cbiAgICAgICAgLS1wcmltYXJ5LWZvcmVncm91bmQ6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIHdoaXRlIDkwJSk7XG4gICAgICAgIC0tc2Vjb25kYXJ5OiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcHJpbWFyeS05MDApLCB0cmFuc3BhcmVudCA3MCUpO1xuICAgICAgICAtLXNlY29uZGFyeS1mb3JlZ3JvdW5kOiB2YXIoLS1wcmltYXJ5LTEwMCk7XG4gICAgICAgIC0tbXV0ZWQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1wcmltYXJ5LTk1MCksICMxZjI5MzcgNTAlKTtcbiAgICAgICAgLS1tdXRlZC1mb3JlZ3JvdW5kOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcHJpbWFyeS0zMDApLCAjOWNhM2FmIDQwJSk7XG4gICAgICAgIC0tYWNjZW50OiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcHJpbWFyeS04MDApLCB0cmFuc3BhcmVudCA4MCUpO1xuICAgICAgICAtLWFjY2VudC1mb3JlZ3JvdW5kOiB2YXIoLS1wcmltYXJ5LTIwMCk7XG4gICAgICAgIC0tcmluZzogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXByaW1hcnktNjAwKSwgdHJhbnNwYXJlbnQgNjAlKTtcbiAgICAgIH1cbiAgICBgO1xuXG4gICAgdGhpcy5pbmplY3REeW5hbWljU3R5bGVzKGNzcyk7XG4gIH1cblxuICBwcml2YXRlIGluamVjdER5bmFtaWNTdHlsZXMoY3NzOiBzdHJpbmcpIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblxuICAgIC8vIFJlbW92ZSBleGlzdGluZyBkeW5hbWljIHN0eWxlc1xuICAgIGNvbnN0IGV4aXN0aW5nU3R5bGUgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuc3R5bGVJZCk7XG4gICAgaWYgKGV4aXN0aW5nU3R5bGUpIHtcbiAgICAgIGV4aXN0aW5nU3R5bGUucmVtb3ZlKCk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGFuZCBpbmplY3QgbmV3IHN0eWxlc1xuICAgIGNvbnN0IHN0eWxlRWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICBzdHlsZUVsZW1lbnQuaWQgPSB0aGlzLnN0eWxlSWQ7XG4gICAgc3R5bGVFbGVtZW50LnRleHRDb250ZW50ID0gY3NzO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCBzdHlsZUVsZW1lbnQpO1xuICB9XG5cbiAgdG9nZ2xlVGhlbWUoKSB7XG4gICAgY29uc3QgaXNDdXJyZW50bHlEYXJrID0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkYXJrJyk7XG4gICAgaXNDdXJyZW50bHlEYXJrID8gdGhpcy5kaXNhYmxlRGFya01vZGUoKSA6IHRoaXMuZW5hYmxlRGFya01vZGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlRGFya01vZGUoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ2RhcmsnKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9sbGUtdGhlbWUnLCAnZGFyaycpO1xuICAgIHRoaXMuaXNEYXJrU3ViamVjdC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNhYmxlRGFya01vZGUoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ2RhcmsnKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9sbGUtdGhlbWUnLCAnbGlnaHQnKTtcbiAgICB0aGlzLmlzRGFya1N1YmplY3QubmV4dChmYWxzZSk7XG4gIH1cblxuICBnZXQgY3VycmVudFRoZW1lKCk6ICdkYXJrJyB8ICdsaWdodCcge1xuICAgIHJldHVybiB0aGlzLmlzRGFya1N1YmplY3QudmFsdWUgPyAnZGFyaycgOiAnbGlnaHQnO1xuICB9XG59XG4iXX0=
|
|
335
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvdGhlbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7O0FBRzNELE1BQU0sT0FBTyxZQUFZO0lBT0s7SUFDRztJQUNhO0lBUnBDLFFBQVEsQ0FBWTtJQUNwQixhQUFhLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDNUQsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEMsT0FBTyxHQUFHLHFCQUFxQixDQUFDO0lBRXhDLFlBQzRCLFFBQWtCLEVBQ2YsVUFBa0IsRUFDTCxNQUFtQixFQUM3RCxlQUFpQztRQUhQLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ0wsV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUc3RCxJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFFaEQseUNBQXlDO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxD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QUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdFLHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDNUUsQ0FBQztJQUVEOztPQUVHO0lBQ0ssV0FBVyxDQUFDLEtBQWEsRUFBRSxPQUFlO1FBQ2hELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUV2QixNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDbkMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFD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TUFBbUI7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFBRSxPQUFPO1FBRWhELGdDQUFnQztRQUNoQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVELGdDQUFnQztRQUNoQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7d0dBeldVLFlBQVksa0JBT2IsUUFBUSxhQUNSLFdBQVcsYUFDQyxZQUFZOzRHQVR2QixZQUFZLGNBREMsTUFBTTs7NEZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFRN0IsTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIFBMQVRGT1JNX0lELCBPcHRpb25hbCwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUT0xMRV9DT05GSUcsIFRvbGxlQ29uZmlnIH0gZnJvbSAnLi90b2xsZS1jb25maWcnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRoZW1lU2VydmljZSB7XG4gIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcbiAgcHJpdmF0ZSBpc0RhcmtTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGlzRGFyayQgPSB0aGlzLmlzRGFya1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIHByaXZhdGUgc3R5bGVJZCA9ICd0b2xsZS1keW5hbWljLXRoZW1lJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFRPTExFX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFRvbGxlQ29uZmlnLFxuICAgIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MlxuICApIHtcbiAgICB0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVRoZW1lKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVUaGVtZSgpIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblxuICAgIC8vIDEuIERldGVybWluZSBJbml0aWFsIE1vZGUgKERhcmsvTGlnaHQpXG4gICAgY29uc3Qgc2F2ZWRUaGVtZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0b2xsZS10aGVtZScpO1xuICAgIGNvbnN0IHN5c3RlbVByZWZlcnNEYXJrID0gd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzO1xuXG4gICAgLy8gTG9naWM6IFNhdmVkIFByZWZlcmVuY2UgPiBDb25maWcgRGVmYXVsdCA+IFN5c3RlbSBQcmVmZXJlbmNlXG4gICAgY29uc3Qgc2hvdWxkQmVEYXJrID0gc2F2ZWRUaGVtZVxuICAgICAgPyBzYXZlZFRoZW1lID09PSAnZGFyaydcbiAgICAgIDogKHRoaXMuY29uZmlnPy5kYXJrQnlEZWZhdWx0ID8/IHN5c3RlbVByZWZlcnNEYXJrKTtcblxuICAgIGlmIChzaG91bGRCZURhcmspIHtcbiAgICAgIHRoaXMuZW5hYmxlRGFya01vZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXNhYmxlRGFya01vZGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzYXZlZFByaW1hcnkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9sbGUtcHJpbWFyeS1jb2xvcicpO1xuXG4gICAgaWYgKHNhdmVkUHJpbWFyeSkge1xuICAgICAgdGhpcy5zZXRQcmltYXJ5Q29sb3Ioc2F2ZWRQcmltYXJ5LCBmYWxzZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZz8ucHJpbWFyeUNvbG9yKSB7XG4gICAgICB0aGlzLnNldFByaW1hcnlDb2xvcih0aGlzLmNvbmZpZy5wcmltYXJ5Q29sb3IsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgcmFkaXVzIGZyb20gY29uZmlnXG4gICAgaWYgKHRoaXMuY29uZmlnPy5yYWRpdXMpIHtcbiAgICAgIHRoaXMuc2V0UmFkaXVzKHRoaXMuY29uZmlnLnJhZGl1cywgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBib3JkZXIgcmFkaXVzIGZvciBhbGwgY29tcG9uZW50c1xuICAgKi9cbiAgc2V0UmFkaXVzKHJhZGl1czogc3RyaW5nLCBwZXJzaXN0ID0gdHJ1ZSkge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgY29uc3Qgcm9vdCA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gICAgLy8gU2V0IHRoZSBDU1MgdmFyaWFibGVcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHJvb3QsICctLXJhZGl1cycsIHJhZGl1cyk7XG5cbiAgICAvLyBBbHNvIHVwZGF0ZSB0aGUgZHluYW1pYyBzdHlsZXMgdG8gaW5jbHVkZSByYWRpdXMgY2FsY3VsYXRpb25zXG4gICAgdGhpcy51cGRhdGVSYWRpdXNJbkR5bmFtaWNTdHlsZXMocmFkaXVzKTtcblxuICAgIC8vIFBlcnNpc3QgaWYgbmVlZGVkXG4gICAgaWYgKHBlcnNpc3QpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b2xsZS1yYWRpdXMnLCByYWRpdXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSByYWRpdXMgY2FsY3VsYXRpb25zIGluIGR5bmFtaWMgc3R5bGVzXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVJhZGl1c0luRHluYW1pY1N0eWxlcyhyYWRpdXM6IHN0cmluZykge1xuICAgIGNvbnN0IGV4aXN0aW5nU3R5bGUgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuc3R5bGVJZCk7XG5cbiAgICBpZiAoZXhpc3RpbmdTdHlsZSkge1xuICAgICAgbGV0IGNzcyA9IGV4aXN0aW5nU3R5bGUudGV4dENvbnRlbnQgfHwgJyc7XG5cbiAgICAgIC8vIFVwZGF0ZSBvciBhZGQgcmFkaXVzIGNhbGN1bGF0aW9uc1xuICAgICAgaWYgKGNzcy5pbmNsdWRlcygnLS1yYWRpdXM6JykpIHtcbiAgICAgICAgLy8gUmVwbGFjZSBleGlzdGluZyByYWRpdXMgZGVjbGFyYXRpb25zXG4gICAgICAgIGNzcyA9IGNzcy5yZXBsYWNlKC8tLXJhZGl1czpbXjtdKzsvZywgYC0tcmFkaXVzOiAke3JhZGl1c307YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBZGQgcmFkaXVzIHRvIHRoZSBiZWdpbm5pbmcgb2YgOnJvb3RcbiAgICAgICAgY3NzID0gY3NzLnJlcGxhY2UoLzpyb290XFxzKnsvLCBgOnJvb3Qge1xcbiAgICAgIC0tcmFkaXVzOiAke3JhZGl1c307YCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSB0aGUgY2FsY3VsYXRlZCByYWRpdXMgdmFsdWVzIGluIHRoZSBDU1NcbiAgICAgIGNvbnN0IHJhZGl1c0NhbGNSZWdleCA9IC9jYWxjXFwodmFyXFwoLS1yYWRpdXNbXildK1xcKS9nO1xuICAgICAgY3NzID0gY3NzLnJlcGxhY2UocmFkaXVzQ2FsY1JlZ2V4LCAobWF0Y2gpID0+IHtcbiAgICAgICAgaWYgKG1hdGNoLmluY2x1ZGVzKCctIDJweCcpKSB7XG4gICAgICAgICAgcmV0dXJuIGBjYWxjKCR7cmFkaXVzfSAtIDJweClgO1xuICAgICAgICB9IGVsc2UgaWYgKG1hdGNoLmluY2x1ZGVzKCctIDRweCcpKSB7XG4gICAgICAgICAgcmV0dXJuIGBjYWxjKCR7cmFkaXVzfSAtIDRweClgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgIH0pO1xuXG4gICAgICBleGlzdGluZ1N0eWxlLnRleHRDb250ZW50ID0gY3NzO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgZnVsbCBwcmltYXJ5IGNvbG9yIHBhbGV0dGUgKDUwLTkwMCkgYmFzZWQgb24gYmFzZSBjb2xvclxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZVByaW1hcnlTaGFkZXMoYmFzZUNvbG9yOiBzdHJpbmcpIHtcbiAgICAvLyBDb252ZXJ0IGhleCB0byBSR0JcbiAgICBjb25zdCByZ2IgPSB0aGlzLmhleFRvUmdiKGJhc2VDb2xvcik7XG4gICAgY29uc3QgcmdiU3RyaW5nID0gcmdiID8gYCR7cmdiLnJ9ICR7cmdiLmd9ICR7cmdiLmJ9YCA6ICczNyA5OSAyMzUnO1xuXG4gICAgLy8gQ3JlYXRlIGxpZ2h0ZXIgcmluZyBjb2xvcnMgaW4gUkdCXG4gICAgY29uc3QgcmluZ0xpZ2h0ID0gdGhpcy5saWdodGVuQ29sb3IoYmFzZUNvbG9yLCA0MCk7XG4gICAgY29uc3QgcmluZ0xpZ2h0UmdiID0gdGhpcy5oZXhUb1JnYihyaW5nTGlnaHQpO1xuICAgIGNvbnN0IHJpbmdMaWdodFJnYlN0cmluZyA9IHJpbmdMaWdodFJnYiA/IGAke3JpbmdMaWdodFJnYi5yfSAke3JpbmdMaWdodFJnYi5nfSAke3JpbmdMaWdodFJnYi5ifWAgOiAnOTYgMTY1IDI1MCc7XG5cbiAgICBjb25zdCByaW5nRGFyayA9IHRoaXMubGlnaHRlbkNvbG9yKGJhc2VDb2xvciwgMjApO1xuICAgIGNvbnN0IHJpbmdEYXJrUmdiID0gdGhpcy5oZXhUb1JnYihyaW5nRGFyayk7XG4gICAgY29uc3QgcmluZ0RhcmtSZ2JTdHJpbmcgPSByaW5nRGFya1JnYiA/IGAke3JpbmdEYXJrUmdiLnJ9ICR7cmluZ0RhcmtSZ2IuZ30gJHtyaW5nRGFya1JnYi5ifWAgOiAnMTQ3IDE5NyAyNTMnO1xuXG4gICAgLy8gR2V0IGN1cnJlbnQgcmFkaXVzIG9yIHVzZSBkZWZhdWx0XG4gICAgY29uc3Qgcm9vdCA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIGNvbnN0IGN1cnJlbnRSYWRpdXMgPSBnZXRDb21wdXRlZFN0eWxlKHJvb3QpLmdldFByb3BlcnR5VmFsdWUoJy0tcmFkaXVzJykudHJpbSgpIHx8ICcwLjVyZW0nO1xuXG4gICAgY29uc3QgY3NzID0gYFxuICAgICAgLyogT3ZlcnJpZGUgcHJpbWFyeSBjb2xvcnMgLSB0aGlzIG5lZWRzIHRvIGNvbWUgQUZURVIgeW91ciBtYWluIENTUyAqL1xuICAgICAgOnJvb3Qge1xuICAgICAgICAvKiBQcmltYXJ5IGluIFJHQiBmb3JtYXQgZm9yIFRhaWx3aW5kIG9wYWNpdHkgc3VwcG9ydCAqL1xuICAgICAgICAtLXByaW1hcnk6ICR7cmdiU3RyaW5nfTtcbiAgICAgICAgLS1wcmltYXJ5LWZvcmVncm91bmQ6ICR7dGhpcy5nZXRDb250cmFzdENvbG9yUmdiKGJhc2VDb2xvcil9O1xuXG4gICAgICAgIC8qIFJhZGl1cyAqL1xuICAgICAgICAtLXJhZGl1czogJHtjdXJyZW50UmFkaXVzfTtcblxuICAgICAgICAvKiBQcmltYXJ5IHNoYWRlcyBmb3IgbGlnaHQgbW9kZSAqL1xuICAgICAgICAtLXByaW1hcnktNTA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmxpZ2h0ZW5Db2xvcihiYXNlQ29sb3IsIDkwKSl9O1xuICAgICAgICAtLXByaW1hcnktMTAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5saWdodGVuQ29sb3IoYmFzZUNvbG9yLCA4MCkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTIwMDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMubGlnaHRlbkNvbG9yKGJhc2VDb2xvciwgNjApKX07XG4gICAgICAgIC0tcHJpbWFyeS0zMDA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmxpZ2h0ZW5Db2xvcihiYXNlQ29sb3IsIDQwKSl9O1xuICAgICAgICAtLXByaW1hcnktNDAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5saWdodGVuQ29sb3IoYmFzZUNvbG9yLCAyMCkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTUwMDogJHtyZ2JTdHJpbmd9O1xuICAgICAgICAtLXByaW1hcnktNjAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5kYXJrZW5Db2xvcihiYXNlQ29sb3IsIDIwKSl9O1xuICAgICAgICAtLXByaW1hcnktNzAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5kYXJrZW5Db2xvcihiYXNlQ29sb3IsIDQwKSl9O1xuICAgICAgICAtLXByaW1hcnktODAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5kYXJrZW5Db2xvcihiYXNlQ29sb3IsIDYwKSl9O1xuICAgICAgICAtLXByaW1hcnktOTAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5kYXJrZW5Db2xvcihiYXNlQ29sb3IsIDgwKSl9O1xuXG4gICAgICAgIC8qIFVwZGF0ZSByaW5nIGNvbG9yIHRvIGJlIGxpZ2h0ZXIgKi9cbiAgICAgICAgLS1yaW5nOiAke3JpbmdMaWdodFJnYlN0cmluZ307XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIHtcbiAgICAgICAgLyogRm9yIGRhcmsgbW9kZSwgd2Uga2VlcCB0aGUgcHJpbWFyeSBjb2xvciBidXQgYWRqdXN0IHNoYWRlcyAqL1xuICAgICAgICAtLXByaW1hcnk6ICR7cmdiU3RyaW5nfTtcbiAgICAgICAgLS1wcmltYXJ5LWZvcmVncm91bmQ6ICR7dGhpcy5nZXRDb250cmFzdENvbG9yUmdiKGJhc2VDb2xvcil9O1xuXG4gICAgICAgIC8qIERhcmsgbW9kZSBzaGFkZXMgKi9cbiAgICAgICAgLS1wcmltYXJ5LTUwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5kYXJrZW5Db2xvcihiYXNlQ29sb3IsIDg1KSl9O1xuICAgICAgICAtLXByaW1hcnktMTAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5kYXJrZW5Db2xvcihiYXNlQ29sb3IsIDc1KSl9O1xuICAgICAgICAtLXByaW1hcnktMjAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5kYXJrZW5Db2xvcihiYXNlQ29sb3IsIDY1KSl9O1xuICAgICAgICAtLXByaW1hcnktMzAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5kYXJrZW5Db2xvcihiYXNlQ29sb3IsIDU1KSl9O1xuICAgICAgICAtLXByaW1hcnktNDAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5kYXJrZW5Db2xvcihiYXNlQ29sb3IsIDQ1KSl9O1xuICAgICAgICAtLXByaW1hcnktNTAwOiAke3JnYlN0cmluZ307XG4gICAgICAgIC0tcHJpbWFyeS02MDA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmxpZ2h0ZW5Db2xvcihiYXNlQ29sb3IsIDIwKSl9O1xuICAgICAgICAtLXByaW1hcnktNzAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5saWdodGVuQ29sb3IoYmFzZUNvbG9yLCAzNSkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTgwMDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMubGlnaHRlbkNvbG9yKGJhc2VDb2xvciwgNTApKX07XG4gICAgICAgIC0tcHJpbWFyeS05MDA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmxpZ2h0ZW5Db2xvcihiYXNlQ29sb3IsIDY1KSl9O1xuXG4gICAgICAgIC8qIFVwZGF0ZSByaW5nIGNvbG9yIGZvciBkYXJrIG1vZGUgLSBsaWdodGVyIHZhcmlhbnQgKi9cbiAgICAgICAgLS1yaW5nOiAke3JpbmdEYXJrUmdiU3RyaW5nfTtcbiAgICAgIH1cbiAgICBgO1xuXG4gICAgdGhpcy5pbmplY3REeW5hbWljU3R5bGVzKGNzcyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBoZXggY29sb3IgdG8gUkdCIG9iamVjdFxuICAgKi9cbiAgcHJpdmF0ZSBoZXhUb1JnYihoZXg6IHN0cmluZyk6IHsgcjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlciB9IHwgbnVsbCB7XG4gICAgLy8gUmVtb3ZlICMgaWYgcHJlc2VudFxuICAgIGNvbnN0IGNsZWFuZWRIZXggPSBoZXgucmVwbGFjZSgnIycsICcnKTtcblxuICAgIGxldCByID0gMCwgZyA9IDAsIGIgPSAwO1xuXG4gICAgaWYgKGNsZWFuZWRIZXgubGVuZ3RoID09PSAzKSB7XG4gICAgICByID0gcGFyc2VJbnQoY2xlYW5lZEhleFswXSArIGNsZWFuZWRIZXhbMF0sIDE2KTtcbiAgICAgIGcgPSBwYXJzZUludChjbGVhbmVkSGV4WzFdICsgY2xlYW5lZEhleFsxXSwgMTYpO1xuICAgICAgYiA9IHBhcnNlSW50KGNsZWFuZWRIZXhbMl0gKyBjbGVhbmVkSGV4WzJdLCAxNik7XG4gICAgICByZXR1cm4geyByLCBnLCBiIH07XG4gICAgfVxuXG4gICAgaWYgKGNsZWFuZWRIZXgubGVuZ3RoID09PSA2KSB7XG4gICAgICByID0gcGFyc2VJbnQoY2xlYW5lZEhleC5zdWJzdHJpbmcoMCwgMiksIDE2KTtcbiAgICAgIGcgPSBwYXJzZUludChjbGVhbmVkSGV4LnN1YnN0cmluZygyLCA0KSwgMTYpO1xuICAgICAgYiA9IHBhcnNlSW50KGNsZWFuZWRIZXguc3Vic3RyaW5nKDQsIDYpLCAxNik7XG4gICAgICByZXR1cm4geyByLCBnLCBiIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBoZXggdG8gUkdCIHN0cmluZyBmb3JtYXQgZm9yIENTUyAoc3BhY2Utc2VwYXJhdGVkKVxuICAgKi9cbiAgcHJpdmF0ZSBoZXhUb1JnYlN0cmluZyhoZXhDb2xvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCByZ2IgPSB0aGlzLmhleFRvUmdiKGhleENvbG9yKTtcbiAgICByZXR1cm4gcmdiID8gYCR7cmdiLnJ9ICR7cmdiLmd9ICR7cmdiLmJ9YCA6ICczNyA5OSAyMzUnO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb250cmFzdCBjb2xvciBpbiBSR0IgZm9ybWF0XG4gICAqL1xuICBwcml2YXRlIGdldENvbnRyYXN0Q29sb3JSZ2IoaGV4Q29sb3I6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgY29udHJhc3QgPSB0aGlzLmdldENvbnRyYXN0Q29sb3IoaGV4Q29sb3IpO1xuICAgIGNvbnN0IHJnYiA9IHRoaXMuaGV4VG9SZ2IoY29udHJhc3QpO1xuICAgIHJldHVybiByZ2IgPyBgJHtyZ2Iucn0gJHtyZ2IuZ30gJHtyZ2IuYn1gIDogJzI1NSAyNTUgMjU1JztcbiAgfVxuXG4gIC8qKlxuICAgKiBMaWdodGVuIGEgaGV4IGNvbG9yIGJ5IGEgcGVyY2VudGFnZVxuICAgKi9cbiAgcHJpdmF0ZSBsaWdodGVuQ29sb3IoY29sb3I6IHN0cmluZywgcGVyY2VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCByZ2IgPSB0aGlzLmhleFRvUmdiKGNvbG9yKTtcbiAgICBpZiAoIXJnYikgcmV0dXJuIGNvbG9yO1xuXG4gICAgLy8gTGlnaHRlbiBieSBwZXJjZW50YWdlXG4gICAgY29uc3QgciA9IE1hdGgubWluKDI1NSwgTWF0aC5mbG9vcihyZ2IuciArICgyNTUgLSByZ2IucikgKiAocGVyY2VudCAvIDEwMCkpKTtcbiAgICBjb25zdCBnID0gTWF0aC5taW4oMjU1LCBNYXRoLmZsb29yKHJnYi5nICsgKDI1NSAtIHJnYi5nKSAqIChwZXJjZW50IC8gMTAwKSkpO1xuICAgIGNvbnN0IGIgPSBNYXRoLm1pbigyNTUsIE1hdGguZmxvb3IocmdiLmIgKyAoMjU1IC0gcmdiLmIpICogKHBlcmNlbnQgLyAxMDApKSk7XG5cbiAgICAvLyBDb252ZXJ0IGJhY2sgdG8gaGV4XG4gICAgcmV0dXJuIGAjJHsoKDEgPDwgMjQpICsgKHIgPDwgMTYpICsgKGcgPDwgOCkgKyBiKS50b1N0cmluZygxNikuc2xpY2UoMSl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEYXJrZW4gYSBoZXggY29sb3IgYnkgYSBwZXJjZW50YWdlXG4gICAqL1xuICBwcml2YXRlIGRhcmtlbkNvbG9yKGNvbG9yOiBzdHJpbmcsIHBlcmNlbnQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgcmdiID0gdGhpcy5oZXhUb1JnYihjb2xvcik7XG4gICAgaWYgKCFyZ2IpIHJldHVybiBjb2xvcjtcblxuICAgIGNvbnN0IGZhY3RvciA9IDEgLSAocGVyY2VudCAvIDEwMCk7XG4gICAgY29uc3QgciA9IE1hdGgubWF4KDAsIE1hdGguZmxvb3IocmdiLnIgKiBmYWN0b3IpKTtcbiAgICBjb25zdCBnID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcihyZ2IuZyAqIGZhY3RvcikpO1xuICAgIGNvbnN0IGIgPSBNYXRoLm1heCgwLCBNYXRoLmZsb29yKHJnYi5iICogZmFjdG9yKSk7XG5cbiAgICByZXR1cm4gYCMke3IudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJyl9JHtnLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpfSR7Yi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSBjb250cmFzdCBjb2xvciAoYmxhY2sgb3Igd2hpdGUpIGJhc2VkIG9uIGJhY2tncm91bmQgY29sb3JcbiAgICovXG4gIHByaXZhdGUgZ2V0Q29udHJhc3RDb2xvcihoZXhDb2xvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCByZ2IgPSB0aGlzLmhleFRvUmdiKGhleENvbG9yKTtcbiAgICBpZiAoIXJnYikgcmV0dXJuICcjZmZmZmZmJztcblxuICAgIC8vIENhbGN1bGF0ZSByZWxhdGl2ZSBsdW1pbmFuY2VcbiAgICBjb25zdCBsdW1pbmFuY2UgPSAoMC4yOTkgKiByZ2IuciArIDAuNTg3ICogcmdiLmcgKyAwLjExNCAqIHJnYi5iKSAvIDI1NTtcblxuICAgIC8vIFJldHVybiBibGFjayBmb3IgbGlnaHQgY29sb3JzLCB3aGl0ZSBmb3IgZGFyayBjb2xvcnNcbiAgICByZXR1cm4gbHVtaW5hbmNlID4gMC41ID8gJyMwMDAwMDAnIDogJyNmZmZmZmYnO1xuICB9XG5cbiAgcHJpdmF0ZSBpbmplY3REeW5hbWljU3R5bGVzKGNzczogc3RyaW5nKSB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG5cbiAgICBjb25zdCBleGlzdGluZ1N0eWxlID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLnN0eWxlSWQpO1xuICAgIGlmIChleGlzdGluZ1N0eWxlKSB7XG4gICAgICBleGlzdGluZ1N0eWxlLnJlbW92ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0eWxlRWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICBzdHlsZUVsZW1lbnQuaWQgPSB0aGlzLnN0eWxlSWQ7XG4gICAgc3R5bGVFbGVtZW50LnRleHRDb250ZW50ID0gY3NzO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCBzdHlsZUVsZW1lbnQpO1xuICB9XG5cbiAgdG9nZ2xlVGhlbWUoKSB7XG4gICAgY29uc3QgaXNDdXJyZW50bHlEYXJrID0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkYXJrJyk7XG4gICAgaXNDdXJyZW50bHlEYXJrID8gdGhpcy5kaXNhYmxlRGFya01vZGUoKSA6IHRoaXMuZW5hYmxlRGFya01vZGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlRGFya01vZGUoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ2RhcmsnKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9sbGUtdGhlbWUnLCAnZGFyaycpO1xuICAgIHRoaXMuaXNEYXJrU3ViamVjdC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNhYmxlRGFya01vZGUoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ2RhcmsnKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9sbGUtdGhlbWUnLCAnbGlnaHQnKTtcbiAgICB0aGlzLmlzRGFya1N1YmplY3QubmV4dChmYWxzZSk7XG4gIH1cblxuICBzZXRQcmltYXJ5Q29sb3IoY29sb3I6IHN0cmluZywgcGVyc2lzdCA9IHRydWUpIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblxuICAgIHRoaXMuZ2VuZXJhdGVQcmltYXJ5U2hhZGVzKGNvbG9yKTtcblxuICAgIC8vIEFsc28gc2V0IGlubGluZSBmb3IgaW1tZWRpYXRlIHVwZGF0ZVxuICAgIGNvbnN0IHJnYiA9IHRoaXMuaGV4VG9SZ2IoY29sb3IpO1xuICAgIGlmIChyZ2IpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuICAgICAgICAnLS1wcmltYXJ5JyxcbiAgICAgICAgYCR7cmdiLnJ9ICR7cmdiLmd9ICR7cmdiLmJ9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocGVyc2lzdCkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3RvbGxlLXByaW1hcnktY29sb3InLCBjb2xvcik7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGN1cnJlbnRUaGVtZSgpOiAnZGFyaycgfCAnbGlnaHQnIHtcbiAgICByZXR1cm4gdGhpcy5pc0RhcmtTdWJqZWN0LnZhbHVlID8gJ2RhcmsnIDogJ2xpZ2h0JztcbiAgfVxuXG4gIGdldCBwcmltYXJ5Q29sb3IoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IHJvb3QgPSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBjb25zdCBjc3NWYWx1ZSA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1wcmltYXJ5JykudHJpbSgpO1xuXG4gICAgaWYgKGNzc1ZhbHVlICYmIGNzc1ZhbHVlICE9PSAnJykge1xuICAgICAgLy8gQ29udmVydCBSR0Igc3RyaW5nIGJhY2sgdG8gaGV4IGZvciBleHRlcm5hbCB1c2VcbiAgICAgIGNvbnN0IHJnYlBhcnRzID0gY3NzVmFsdWUuc3BsaXQoJyAnKS5tYXAoTnVtYmVyKTtcbiAgICAgIGlmIChyZ2JQYXJ0cy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgcmV0dXJuIGAjJHtyZ2JQYXJ0c1swXS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKX0ke3JnYlBhcnRzWzFdLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpfSR7cmdiUGFydHNbMl0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RvbGxlLXByaW1hcnktY29sb3InKTtcbiAgfVxuXG4gIGdldCByYWRpdXMoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IHJvb3QgPSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBjb25zdCBjc3NWYWx1ZSA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1yYWRpdXMnKS50cmltKCk7XG5cbiAgICBpZiAoY3NzVmFsdWUgJiYgY3NzVmFsdWUgIT09ICcnKSB7XG4gICAgICByZXR1cm4gY3NzVmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0b2xsZS1yYWRpdXMnKSB8fCAnMC41cmVtJztcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSBicmFuZCBpZGVudGl0eSB2YXJpYWJsZXMgd2l0aCBmdWxsIHNoYWRlIHBhbGV0dGVcbiAgICovXG4gIGFwcGx5QnJhbmRDb25maWcoY29uZmlnOiBUb2xsZUNvbmZpZykge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgLy8gU2V0IHByaW1hcnkgY29sb3IgaWYgcHJvdmlkZWRcbiAgICBpZiAoY29uZmlnLnByaW1hcnlDb2xvcikge1xuICAgICAgdGhpcy5zZXRQcmltYXJ5Q29sb3IoY29uZmlnLnByaW1hcnlDb2xvciwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8vIFNldCBib3JkZXIgcmFkaXVzIGlmIHByb3ZpZGVkXG4gICAgaWYgKGNvbmZpZy5yYWRpdXMpIHtcbiAgICAgIHRoaXMuc2V0UmFkaXVzKGNvbmZpZy5yYWRpdXMsIGZhbHNlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -41,4 +41,19 @@ export * from './lib/dropdown-menu.component';
|
|
|
41
41
|
export * from './lib/dropdown-separator.component';
|
|
42
42
|
export * from './lib/dropdown-trigger.directive';
|
|
43
43
|
export * from './lib/textarea.component';
|
|
44
|
-
|
|
44
|
+
export * from './lib/alert.component';
|
|
45
|
+
export * from './lib/avatar.component';
|
|
46
|
+
export * from './lib/avatar-fallback.component';
|
|
47
|
+
export * from './lib/breadcrumb.component';
|
|
48
|
+
export * from './lib/breadcrumb-link.component';
|
|
49
|
+
export * from './lib/breadcrumb-separator.component';
|
|
50
|
+
export * from './lib/breadcrumb-item.component';
|
|
51
|
+
export * from './lib/empty-state.component';
|
|
52
|
+
export * from './lib/otp.component';
|
|
53
|
+
export * from './lib/otp-slot.component';
|
|
54
|
+
export * from './lib/otp-group.component';
|
|
55
|
+
export * from './lib/popover.component';
|
|
56
|
+
export * from './lib/popover-content.component';
|
|
57
|
+
export * from './lib/radio-group.component';
|
|
58
|
+
export * from './lib/radio-item.component';
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDhCQUE4QixDQUFBO0FBQzVDLGNBQWMsMEJBQTBCLENBQUE7QUFDeEMsY0FBYyw4QkFBOEIsQ0FBQTtBQUM1QyxjQUFjLDZCQUE2QixDQUFBO0FBQzNDLGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYyw0QkFBNEIsQ0FBQTtBQUMxQyxjQUFjLDRCQUE0QixDQUFBO0FBQzFDLGNBQWMsZ0NBQWdDLENBQUE7QUFDOUMsY0FBYywyQkFBMkIsQ0FBQTtBQUN6QyxjQUFjLHVCQUF1QixDQUFBO0FBQ3JDLGNBQWMsaUJBQWlCLENBQUE7QUFDL0IsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLDJCQUEyQixDQUFBO0FBQ3pDLGNBQWMsYUFBYSxDQUFBO0FBQzNCLGNBQWMsOEJBQThCLENBQUE7QUFDNUMsY0FBYyxtQ0FBbUMsQ0FBQTtBQUNqRCxjQUFjLGdDQUFnQyxDQUFBO0FBQzlDLGNBQWMscUJBQXFCLENBQUE7QUFDbkMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGdDQUFnQyxDQUFBO0FBQzlDLGNBQWMsK0JBQStCLENBQUE7QUFDN0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHRvbGxlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvY24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWxlY3QtaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VsZWN0LWdyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWxlY3Qtc2VwYXJhdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zd2l0Y2guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhZGdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9za2VsZXRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hlY2tib3guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rvb2x0aXAuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RvYXN0LnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2FzdGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2xsZS1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbXVsdGktc2VsZWN0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhbGVuZGFyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL21hc2tlZC1pbnB1dC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRlLXBpY2tlci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wYWdpbmF0aW9uLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGEtdGFibGUuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9sbGUtY2VsbC5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY2NvcmRpb24taXRlbS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY2NvcmRpb24uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kYWwuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kYWwtcmVmJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kYWwuc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGFsLXN0YWNrLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RhbCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2J1dHRvbi1ncm91cC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yYW5nZS1jYWxlbmRhci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi90aGVtZS5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24taXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24tbGFiZWwuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24tbWVudS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi1zZXBhcmF0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Ryb3Bkb3duLXRyaWdnZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RleHRhcmVhLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hbGVydC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXZhdGFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdmF0YXItZmFsbGJhY2suY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JyZWFkY3J1bWIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JyZWFkY3J1bWItbGluay5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJlYWRjcnVtYi1zZXBhcmF0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JyZWFkY3J1bWItaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1wdHktc3RhdGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL290cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvb3RwLXNsb3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL290cC1ncm91cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcG9wb3Zlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcG9wb3Zlci1jb250ZW50LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yYWRpby1ncm91cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmFkaW8taXRlbS5jb21wb25lbnQnO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9sbGUtdWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvdG9sbGUtdWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|