valtech-components 2.0.276 → 2.0.278

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/README.md +149 -6
  2. package/esm2022/lib/components/_examples/global-content-example-content.mjs +23 -0
  3. package/esm2022/lib/components/_examples/global-content-example.component.mjs +504 -0
  4. package/esm2022/lib/components/_examples/reactive-content-example-content.mjs +43 -0
  5. package/esm2022/lib/components/_examples/reactive-content-example.component.mjs +347 -0
  6. package/esm2022/lib/components/atoms/text/text.component.mjs +143 -15
  7. package/esm2022/lib/components/atoms/text/types.mjs +1 -1
  8. package/esm2022/lib/services/content.service.mjs +327 -0
  9. package/esm2022/lib/services/icons.service.mjs +3 -2
  10. package/esm2022/lib/services/lang-provider/content.mjs +136 -1
  11. package/esm2022/lib/services/lang-provider/lang-provider.service.mjs +118 -8
  12. package/esm2022/lib/shared/utils/content.mjs +186 -0
  13. package/esm2022/public-api.mjs +11 -5
  14. package/fesm2022/valtech-components.mjs +2938 -1359
  15. package/fesm2022/valtech-components.mjs.map +1 -1
  16. package/lib/components/_examples/global-content-example-content.d.ts +9 -0
  17. package/lib/components/_examples/global-content-example.component.d.ts +73 -0
  18. package/lib/components/_examples/reactive-content-example-content.d.ts +32 -0
  19. package/lib/components/_examples/reactive-content-example.component.d.ts +47 -0
  20. package/lib/components/atoms/text/text.component.d.ts +57 -8
  21. package/lib/components/atoms/text/types.d.ts +26 -5
  22. package/lib/services/content.service.d.ts +296 -0
  23. package/lib/services/lang-provider/lang-provider.service.d.ts +87 -7
  24. package/lib/shared/utils/content.d.ts +199 -0
  25. package/package.json +1 -1
  26. package/public-api.d.ts +9 -4
@@ -0,0 +1,327 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { createContentHelper, fromContent, fromMultipleContent, interpolateContent, } from '../shared/utils/content';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./lang-provider/lang-provider.service";
5
+ /**
6
+ * ContentService - High-level reactive content management service.
7
+ *
8
+ * This service provides a clean, convenient API for reactive content management
9
+ * without requiring direct interaction with LangService. It acts as a facade
10
+ * that simplifies the most common content operations.
11
+ *
12
+ * @example Basic usage:
13
+ * ```typescript
14
+ * @Component({})
15
+ * export class MyComponent {
16
+ * content = inject(ContentService);
17
+ *
18
+ * title$ = this.content.fromContent({
19
+ * className: 'MyComponent',
20
+ * key: 'title'
21
+ * });
22
+ *
23
+ * constructor() {}
24
+ * }
25
+ * ```
26
+ */
27
+ export class ContentService {
28
+ constructor(langService) {
29
+ this.langService = langService;
30
+ }
31
+ /**
32
+ * Get current language as an observable stream.
33
+ * Emits whenever the language changes.
34
+ */
35
+ get currentLang$() {
36
+ return this.langService.currentLang$;
37
+ }
38
+ /**
39
+ * Get current language synchronously.
40
+ */
41
+ get currentLang() {
42
+ return this.langService.currentLang;
43
+ }
44
+ /**
45
+ * Set the current language.
46
+ * This will trigger updates in all reactive content.
47
+ *
48
+ * @param lang - The language to set
49
+ */
50
+ setLang(lang) {
51
+ this.langService.setLang(lang);
52
+ }
53
+ /**
54
+ * Create a reactive content observable from a content key.
55
+ * This is the primary method for reactive content with unified support
56
+ * for both simple content and content with interpolation.
57
+ *
58
+ * @param config - Content configuration with optional interpolation. If className is omitted, searches in global content.
59
+ * @returns Observable that emits the content string and updates on language change
60
+ *
61
+ * @example Simple global content:
62
+ * ```typescript
63
+ * // Searches in global content (no className needed)
64
+ * okButton$ = this.content.fromContent({
65
+ * key: 'ok',
66
+ * fallback: 'OK'
67
+ * });
68
+ * ```
69
+ *
70
+ * @example Component-specific content:
71
+ * ```typescript
72
+ * title$ = this.content.fromContent({
73
+ * className: 'HeaderComponent',
74
+ * key: 'title',
75
+ * fallback: 'Default Title'
76
+ * });
77
+ * ```
78
+ *
79
+ * @example Content with interpolation:
80
+ * ```typescript
81
+ * // Global content with interpolation
82
+ * confirmation$ = this.content.fromContent({
83
+ * key: 'deleteConfirmation',
84
+ * interpolation: { itemName: 'archivo' }
85
+ * });
86
+ *
87
+ * // Component content with interpolation
88
+ * greeting$ = this.content.fromContent({
89
+ * className: 'WelcomeComponent',
90
+ * key: 'greeting',
91
+ * interpolation: { name: 'John', count: 5 }
92
+ * });
93
+ * ```
94
+ */
95
+ fromContent(config) {
96
+ return fromContent(this.langService, config);
97
+ }
98
+ /**
99
+ * Create a reactive content observable with interpolation support.
100
+ *
101
+ * @deprecated Use fromContent() with interpolation property instead.
102
+ * This method is kept for backward compatibility.
103
+ *
104
+ * @param config - Interpolated content configuration. If className is omitted, searches in global content.
105
+ * @returns Observable that emits the interpolated content string
106
+ *
107
+ * @example Migration:
108
+ * ```typescript
109
+ * // OLD (deprecated):
110
+ * greeting$ = this.content.fromContentWithInterpolation({
111
+ * className: 'WelcomeComponent',
112
+ * key: 'greeting',
113
+ * interpolation: { name: 'John', count: 5 }
114
+ * });
115
+ *
116
+ * // NEW (recommended):
117
+ * greeting$ = this.content.fromContent({
118
+ * className: 'WelcomeComponent',
119
+ * key: 'greeting',
120
+ * interpolation: { name: 'John', count: 5 }
121
+ * });
122
+ * ```
123
+ */
124
+ fromContentWithInterpolation(config) {
125
+ // Delegate to the unified fromContent method
126
+ return this.fromContent(config);
127
+ }
128
+ /**
129
+ * Create multiple reactive content observables at once.
130
+ * Useful when a component needs several content strings.
131
+ *
132
+ * @param className - The component class name
133
+ * @param keys - Array of content keys to retrieve
134
+ * @returns Observable that emits an object with all requested content
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * content$ = this.content.fromMultipleContent('FormComponent', [
139
+ * 'title', 'submitButton', 'cancelButton'
140
+ * ]);
141
+ *
142
+ * // In template
143
+ * <ng-container *ngIf="content$ | async as content">
144
+ * <h2>{{ content['title'] }}</h2>
145
+ * <button>{{ content['submitButton'] }}</button>
146
+ * <button>{{ content['cancelButton'] }}</button>
147
+ * </ng-container>
148
+ * ```
149
+ */
150
+ fromMultipleContent(className, keys) {
151
+ return fromMultipleContent(this.langService, className, keys);
152
+ }
153
+ getText(classNameOrKey, keyOrFallback, fallback) {
154
+ // Handle overloaded signatures
155
+ if (keyOrFallback === undefined ||
156
+ (typeof keyOrFallback === 'string' && fallback === undefined)) {
157
+ // Single parameter or two parameters (key, fallback) - treat as global content
158
+ return this.langService.getText('_global', classNameOrKey, keyOrFallback);
159
+ }
160
+ else {
161
+ // Three parameters (className, key, fallback) - treat as component content
162
+ return this.langService.getText(classNameOrKey, keyOrFallback, fallback);
163
+ }
164
+ }
165
+ /**
166
+ * Get a single global content string synchronously.
167
+ * This is a convenience method that's equivalent to getText(key, fallback).
168
+ *
169
+ * @param key - The text key
170
+ * @param fallback - Optional fallback text if key is not found
171
+ * @returns The text string or fallback
172
+ *
173
+ * @example
174
+ * ```typescript
175
+ * const okText = this.content.getGlobalText('ok');
176
+ * const cancelText = this.content.getGlobalText('cancel', 'Cancel');
177
+ * ```
178
+ */
179
+ getGlobalText(key, fallback) {
180
+ return this.langService.getText('_global', key, fallback);
181
+ }
182
+ /**
183
+ * Check if a content key exists for a component.
184
+ *
185
+ * @param className - The component class name
186
+ * @param key - The text key
187
+ * @returns True if the key exists in any language
188
+ *
189
+ * @example
190
+ * ```typescript
191
+ * if (this.content.hasContent('MyComponent', 'optionalText')) {
192
+ * // Show optional content
193
+ * }
194
+ * ```
195
+ */
196
+ hasContent(className, key) {
197
+ return this.langService.hasContent(className, key);
198
+ }
199
+ /**
200
+ * Helper function to interpolate values into a content string.
201
+ * Useful for processing content strings manually.
202
+ *
203
+ * @param content - The content string with placeholders
204
+ * @param values - Object with values to interpolate
205
+ * @returns The interpolated string
206
+ *
207
+ * @example
208
+ * ```typescript
209
+ * const result = this.content.interpolate("Hello {name}!", { name: "World" });
210
+ * // Returns: "Hello World!"
211
+ * ```
212
+ */
213
+ interpolate(content, values) {
214
+ return interpolateContent(content, values);
215
+ }
216
+ /**
217
+ * Create a content helper bound to a specific component class.
218
+ * This provides a scoped API for components that need multiple content strings.
219
+ *
220
+ * @param className - The component class name
221
+ * @returns Content helper with methods scoped to the class
222
+ *
223
+ * @example
224
+ * ```typescript
225
+ * export class MyComponent {
226
+ * private contentHelper = this.content.createHelper('MyComponent');
227
+ *
228
+ * ngOnInit() {
229
+ * this.title$ = this.contentHelper.get('title');
230
+ * this.allContent$ = this.contentHelper.getMultiple(['title', 'description']);
231
+ * }
232
+ *
233
+ * constructor(private content: ContentService) {}
234
+ * }
235
+ * ```
236
+ */
237
+ createHelper(className) {
238
+ return createContentHelper(this.langService, className);
239
+ }
240
+ /**
241
+ * Create a scoped content service for a specific component class.
242
+ * This provides an even more convenient API for components with many content needs.
243
+ *
244
+ * @param className - The component class name
245
+ * @returns Scoped content service
246
+ *
247
+ * @example
248
+ * ```typescript
249
+ * export class MyComponent {
250
+ * private content = inject(ContentService).forComponent('MyComponent');
251
+ *
252
+ * // Simple content
253
+ * title$ = this.content.get('title');
254
+ *
255
+ * // Content with interpolation
256
+ * greeting$ = this.content.get('greeting', {
257
+ * interpolation: { name: 'John' }
258
+ * });
259
+ *
260
+ * // Content with fallback
261
+ * subtitle$ = this.content.get('subtitle', {
262
+ * fallback: 'Default Subtitle'
263
+ * });
264
+ *
265
+ * // Multiple texts
266
+ * allTexts$ = this.content.getMultiple(['title', 'subtitle', 'description']);
267
+ *
268
+ * constructor() {}
269
+ * }
270
+ * ```
271
+ */
272
+ forComponent(className) {
273
+ return {
274
+ /**
275
+ * Get a single content string reactively for this component.
276
+ * Supports optional interpolation.
277
+ */
278
+ get: (key, options) => {
279
+ return this.fromContent({
280
+ className,
281
+ key,
282
+ fallback: options?.fallback,
283
+ interpolation: options?.interpolation,
284
+ });
285
+ },
286
+ /**
287
+ * Get content with interpolation for this component.
288
+ * @deprecated Use get() with interpolation option instead.
289
+ */
290
+ getWithInterpolation: (key, interpolation, fallback) => {
291
+ return this.fromContent({
292
+ className,
293
+ key,
294
+ interpolation,
295
+ fallback,
296
+ });
297
+ },
298
+ /**
299
+ * Get multiple content strings for this component.
300
+ */
301
+ getMultiple: (keys) => {
302
+ return this.fromMultipleContent(className, keys);
303
+ },
304
+ /**
305
+ * Get a single content string synchronously for this component.
306
+ */
307
+ getText: (key, fallback) => {
308
+ return this.getText(className, key, fallback);
309
+ },
310
+ /**
311
+ * Check if a content key exists for this component.
312
+ */
313
+ hasContent: (key) => {
314
+ return this.hasContent(className, key);
315
+ },
316
+ };
317
+ }
318
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContentService, deps: [{ token: i1.LangService }], target: i0.ɵɵFactoryTarget.Injectable }); }
319
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContentService, providedIn: 'root' }); }
320
+ }
321
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContentService, decorators: [{
322
+ type: Injectable,
323
+ args: [{
324
+ providedIn: 'root',
325
+ }]
326
+ }], ctorParameters: () => [{ type: i1.LangService }] });
327
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGVjaC1jb21wb25lbnRzL3NyYy9saWIvc2VydmljZXMvY29udGVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUdMLG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLGtCQUFrQixHQUNuQixNQUFNLHlCQUF5QixDQUFDOzs7QUFJakM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUlILE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUcsQ0FBQztJQUVoRDs7O09BR0c7SUFDSCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLElBQWdCO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F5Q0c7SUFDSCxXQUFXLENBQUMsTUFBcUI7UUFDL0IsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F5Qkc7SUFDSCw0QkFBNEIsQ0FDMUIsTUFBZ0Y7UUFFaEYsNkNBQTZDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUF1QixDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FxQkc7SUFDSCxtQkFBbUIsQ0FBQyxTQUFpQixFQUFFLElBQWM7UUFDbkQsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBd0JELE9BQU8sQ0FBQyxjQUFzQixFQUFFLGFBQXNCLEVBQUUsUUFBaUI7UUFDdkUsK0JBQStCO1FBQy9CLElBQ0UsYUFBYSxLQUFLLFNBQVM7WUFDM0IsQ0FBQyxPQUFPLGFBQWEsS0FBSyxRQUFRLElBQUksUUFBUSxLQUFLLFNBQVMsQ0FBQyxFQUM3RCxDQUFDO1lBQ0QsK0VBQStFO1lBQy9FLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUM1RSxDQUFDO2FBQU0sQ0FBQztZQUNOLDJFQUEyRTtZQUMzRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0UsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsYUFBYSxDQUFDLEdBQVcsRUFBRSxRQUFpQjtRQUMxQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCxVQUFVLENBQUMsU0FBaUIsRUFBRSxHQUFXO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsV0FBVyxDQUFDLE9BQWUsRUFBRSxNQUF3QztRQUNuRSxPQUFPLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bb0JHO0lBQ0gsWUFBWSxDQUFDLFNBQWlCO1FBQzVCLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0ErQkc7SUFDSCxZQUFZLENBQUMsU0FBaUI7UUFDNUIsT0FBTztZQUNMOzs7ZUFHRztZQUNILEdBQUcsRUFBRSxDQUNILEdBQVcsRUFDWCxPQUFnRixFQUM1RCxFQUFFO2dCQUN0QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7b0JBQ3RCLFNBQVM7b0JBQ1QsR0FBRztvQkFDSCxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVE7b0JBQzNCLGFBQWEsRUFBRSxPQUFPLEVBQUUsYUFBYTtpQkFDdEMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVEOzs7ZUFHRztZQUNILG9CQUFvQixFQUFFLENBQ3BCLEdBQVcsRUFDWCxhQUE4QyxFQUM5QyxRQUFpQixFQUNHLEVBQUU7Z0JBQ3RCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztvQkFDdEIsU0FBUztvQkFDVCxHQUFHO29CQUNILGFBQWE7b0JBQ2IsUUFBUTtpQkFDVCxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQ7O2VBRUc7WUFDSCxXQUFXLEVBQUUsQ0FBQyxJQUFjLEVBQXNDLEVBQUU7Z0JBQ2xFLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBRUQ7O2VBRUc7WUFDSCxPQUFPLEVBQUUsQ0FBQyxHQUFXLEVBQUUsUUFBaUIsRUFBVSxFQUFFO2dCQUNsRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNoRCxDQUFDO1lBRUQ7O2VBRUc7WUFDSCxVQUFVLEVBQUUsQ0FBQyxHQUFXLEVBQVcsRUFBRTtnQkFDbkMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN6QyxDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7K0dBaFZVLGNBQWM7bUhBQWQsY0FBYyxjQUZiLE1BQU07OzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQ29udGVudENvbmZpZyxcbiAgSW50ZXJwb2xhdGVkQ29udGVudENvbmZpZyxcbiAgY3JlYXRlQ29udGVudEhlbHBlcixcbiAgZnJvbUNvbnRlbnQsXG4gIGZyb21NdWx0aXBsZUNvbnRlbnQsXG4gIGludGVycG9sYXRlQ29udGVudCxcbn0gZnJvbSAnLi4vc2hhcmVkL3V0aWxzL2NvbnRlbnQnO1xuaW1wb3J0IHsgTGFuZ1NlcnZpY2UgfSBmcm9tICcuL2xhbmctcHJvdmlkZXIvbGFuZy1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IExhbmdPcHRpb24gfSBmcm9tICcuL2xhbmctcHJvdmlkZXIvdHlwZXMnO1xuXG4vKipcbiAqIENvbnRlbnRTZXJ2aWNlIC0gSGlnaC1sZXZlbCByZWFjdGl2ZSBjb250ZW50IG1hbmFnZW1lbnQgc2VydmljZS5cbiAqXG4gKiBUaGlzIHNlcnZpY2UgcHJvdmlkZXMgYSBjbGVhbiwgY29udmVuaWVudCBBUEkgZm9yIHJlYWN0aXZlIGNvbnRlbnQgbWFuYWdlbWVudFxuICogd2l0aG91dCByZXF1aXJpbmcgZGlyZWN0IGludGVyYWN0aW9uIHdpdGggTGFuZ1NlcnZpY2UuIEl0IGFjdHMgYXMgYSBmYWNhZGVcbiAqIHRoYXQgc2ltcGxpZmllcyB0aGUgbW9zdCBjb21tb24gY29udGVudCBvcGVyYXRpb25zLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlOlxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7fSlcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIGNvbnRlbnQgPSBpbmplY3QoQ29udGVudFNlcnZpY2UpO1xuICpcbiAqICAgdGl0bGUkID0gdGhpcy5jb250ZW50LmZyb21Db250ZW50KHtcbiAqICAgICBjbGFzc05hbWU6ICdNeUNvbXBvbmVudCcsXG4gKiAgICAga2V5OiAndGl0bGUnXG4gKiAgIH0pO1xuICpcbiAqICAgY29uc3RydWN0b3IoKSB7fVxuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbGFuZ1NlcnZpY2U6IExhbmdTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCBsYW5ndWFnZSBhcyBhbiBvYnNlcnZhYmxlIHN0cmVhbS5cbiAgICogRW1pdHMgd2hlbmV2ZXIgdGhlIGxhbmd1YWdlIGNoYW5nZXMuXG4gICAqL1xuICBnZXQgY3VycmVudExhbmckKCk6IE9ic2VydmFibGU8TGFuZ09wdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmxhbmdTZXJ2aWNlLmN1cnJlbnRMYW5nJDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCBsYW5ndWFnZSBzeW5jaHJvbm91c2x5LlxuICAgKi9cbiAgZ2V0IGN1cnJlbnRMYW5nKCk6IExhbmdPcHRpb24ge1xuICAgIHJldHVybiB0aGlzLmxhbmdTZXJ2aWNlLmN1cnJlbnRMYW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgY3VycmVudCBsYW5ndWFnZS5cbiAgICogVGhpcyB3aWxsIHRyaWdnZXIgdXBkYXRlcyBpbiBhbGwgcmVhY3RpdmUgY29udGVudC5cbiAgICpcbiAgICogQHBhcmFtIGxhbmcgLSBUaGUgbGFuZ3VhZ2UgdG8gc2V0XG4gICAqL1xuICBzZXRMYW5nKGxhbmc6IExhbmdPcHRpb24pOiB2b2lkIHtcbiAgICB0aGlzLmxhbmdTZXJ2aWNlLnNldExhbmcobGFuZyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgcmVhY3RpdmUgY29udGVudCBvYnNlcnZhYmxlIGZyb20gYSBjb250ZW50IGtleS5cbiAgICogVGhpcyBpcyB0aGUgcHJpbWFyeSBtZXRob2QgZm9yIHJlYWN0aXZlIGNvbnRlbnQgd2l0aCB1bmlmaWVkIHN1cHBvcnRcbiAgICogZm9yIGJvdGggc2ltcGxlIGNvbnRlbnQgYW5kIGNvbnRlbnQgd2l0aCBpbnRlcnBvbGF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnIC0gQ29udGVudCBjb25maWd1cmF0aW9uIHdpdGggb3B0aW9uYWwgaW50ZXJwb2xhdGlvbi4gSWYgY2xhc3NOYW1lIGlzIG9taXR0ZWQsIHNlYXJjaGVzIGluIGdsb2JhbCBjb250ZW50LlxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGNvbnRlbnQgc3RyaW5nIGFuZCB1cGRhdGVzIG9uIGxhbmd1YWdlIGNoYW5nZVxuICAgKlxuICAgKiBAZXhhbXBsZSBTaW1wbGUgZ2xvYmFsIGNvbnRlbnQ6XG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gU2VhcmNoZXMgaW4gZ2xvYmFsIGNvbnRlbnQgKG5vIGNsYXNzTmFtZSBuZWVkZWQpXG4gICAqIG9rQnV0dG9uJCA9IHRoaXMuY29udGVudC5mcm9tQ29udGVudCh7XG4gICAqICAga2V5OiAnb2snLFxuICAgKiAgIGZhbGxiYWNrOiAnT0snXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGUgQ29tcG9uZW50LXNwZWNpZmljIGNvbnRlbnQ6XG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogdGl0bGUkID0gdGhpcy5jb250ZW50LmZyb21Db250ZW50KHtcbiAgICogICBjbGFzc05hbWU6ICdIZWFkZXJDb21wb25lbnQnLFxuICAgKiAgIGtleTogJ3RpdGxlJyxcbiAgICogICBmYWxsYmFjazogJ0RlZmF1bHQgVGl0bGUnXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGUgQ29udGVudCB3aXRoIGludGVycG9sYXRpb246XG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gR2xvYmFsIGNvbnRlbnQgd2l0aCBpbnRlcnBvbGF0aW9uXG4gICAqIGNvbmZpcm1hdGlvbiQgPSB0aGlzLmNvbnRlbnQuZnJvbUNvbnRlbnQoe1xuICAgKiAgIGtleTogJ2RlbGV0ZUNvbmZpcm1hdGlvbicsXG4gICAqICAgaW50ZXJwb2xhdGlvbjogeyBpdGVtTmFtZTogJ2FyY2hpdm8nIH1cbiAgICogfSk7XG4gICAqXG4gICAqIC8vIENvbXBvbmVudCBjb250ZW50IHdpdGggaW50ZXJwb2xhdGlvblxuICAgKiBncmVldGluZyQgPSB0aGlzLmNvbnRlbnQuZnJvbUNvbnRlbnQoe1xuICAgKiAgIGNsYXNzTmFtZTogJ1dlbGNvbWVDb21wb25lbnQnLFxuICAgKiAgIGtleTogJ2dyZWV0aW5nJyxcbiAgICogICBpbnRlcnBvbGF0aW9uOiB7IG5hbWU6ICdKb2huJywgY291bnQ6IDUgfVxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBmcm9tQ29udGVudChjb25maWc6IENvbnRlbnRDb25maWcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiBmcm9tQ29udGVudCh0aGlzLmxhbmdTZXJ2aWNlLCBjb25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHJlYWN0aXZlIGNvbnRlbnQgb2JzZXJ2YWJsZSB3aXRoIGludGVycG9sYXRpb24gc3VwcG9ydC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGZyb21Db250ZW50KCkgd2l0aCBpbnRlcnBvbGF0aW9uIHByb3BlcnR5IGluc3RlYWQuXG4gICAqIFRoaXMgbWV0aG9kIGlzIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgLSBJbnRlcnBvbGF0ZWQgY29udGVudCBjb25maWd1cmF0aW9uLiBJZiBjbGFzc05hbWUgaXMgb21pdHRlZCwgc2VhcmNoZXMgaW4gZ2xvYmFsIGNvbnRlbnQuXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgaW50ZXJwb2xhdGVkIGNvbnRlbnQgc3RyaW5nXG4gICAqXG4gICAqIEBleGFtcGxlIE1pZ3JhdGlvbjpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBPTEQgKGRlcHJlY2F0ZWQpOlxuICAgKiBncmVldGluZyQgPSB0aGlzLmNvbnRlbnQuZnJvbUNvbnRlbnRXaXRoSW50ZXJwb2xhdGlvbih7XG4gICAqICAgY2xhc3NOYW1lOiAnV2VsY29tZUNvbXBvbmVudCcsXG4gICAqICAga2V5OiAnZ3JlZXRpbmcnLFxuICAgKiAgIGludGVycG9sYXRpb246IHsgbmFtZTogJ0pvaG4nLCBjb3VudDogNSB9XG4gICAqIH0pO1xuICAgKlxuICAgKiAvLyBORVcgKHJlY29tbWVuZGVkKTpcbiAgICogZ3JlZXRpbmckID0gdGhpcy5jb250ZW50LmZyb21Db250ZW50KHtcbiAgICogICBjbGFzc05hbWU6ICdXZWxjb21lQ29tcG9uZW50JyxcbiAgICogICBrZXk6ICdncmVldGluZycsXG4gICAqICAgaW50ZXJwb2xhdGlvbjogeyBuYW1lOiAnSm9obicsIGNvdW50OiA1IH1cbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgZnJvbUNvbnRlbnRXaXRoSW50ZXJwb2xhdGlvbihcbiAgICBjb25maWc6IEludGVycG9sYXRlZENvbnRlbnRDb25maWcgfCBPbWl0PEludGVycG9sYXRlZENvbnRlbnRDb25maWcsICdjbGFzc05hbWUnPlxuICApOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIC8vIERlbGVnYXRlIHRvIHRoZSB1bmlmaWVkIGZyb21Db250ZW50IG1ldGhvZFxuICAgIHJldHVybiB0aGlzLmZyb21Db250ZW50KGNvbmZpZyBhcyBDb250ZW50Q29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgbXVsdGlwbGUgcmVhY3RpdmUgY29udGVudCBvYnNlcnZhYmxlcyBhdCBvbmNlLlxuICAgKiBVc2VmdWwgd2hlbiBhIGNvbXBvbmVudCBuZWVkcyBzZXZlcmFsIGNvbnRlbnQgc3RyaW5ncy5cbiAgICpcbiAgICogQHBhcmFtIGNsYXNzTmFtZSAtIFRoZSBjb21wb25lbnQgY2xhc3MgbmFtZVxuICAgKiBAcGFyYW0ga2V5cyAtIEFycmF5IG9mIGNvbnRlbnQga2V5cyB0byByZXRyaWV2ZVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgYW4gb2JqZWN0IHdpdGggYWxsIHJlcXVlc3RlZCBjb250ZW50XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29udGVudCQgPSB0aGlzLmNvbnRlbnQuZnJvbU11bHRpcGxlQ29udGVudCgnRm9ybUNvbXBvbmVudCcsIFtcbiAgICogICAndGl0bGUnLCAnc3VibWl0QnV0dG9uJywgJ2NhbmNlbEJ1dHRvbidcbiAgICogXSk7XG4gICAqXG4gICAqIC8vIEluIHRlbXBsYXRlXG4gICAqIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50JCB8IGFzeW5jIGFzIGNvbnRlbnRcIj5cbiAgICogICA8aDI+e3sgY29udGVudFsndGl0bGUnXSB9fTwvaDI+XG4gICAqICAgPGJ1dHRvbj57eyBjb250ZW50WydzdWJtaXRCdXR0b24nXSB9fTwvYnV0dG9uPlxuICAgKiAgIDxidXR0b24+e3sgY29udGVudFsnY2FuY2VsQnV0dG9uJ10gfX08L2J1dHRvbj5cbiAgICogPC9uZy1jb250YWluZXI+XG4gICAqIGBgYFxuICAgKi9cbiAgZnJvbU11bHRpcGxlQ29udGVudChjbGFzc05hbWU6IHN0cmluZywga2V5czogc3RyaW5nW10pOiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgICByZXR1cm4gZnJvbU11bHRpcGxlQ29udGVudCh0aGlzLmxhbmdTZXJ2aWNlLCBjbGFzc05hbWUsIGtleXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHNpbmdsZSBjb250ZW50IHN0cmluZyBzeW5jaHJvbm91c2x5IGZvciB0aGUgY3VycmVudCBsYW5ndWFnZS5cbiAgICpcbiAgICogQHBhcmFtIGNsYXNzTmFtZSAtIFRoZSBjb21wb25lbnQgY2xhc3MgbmFtZS4gSWYgb21pdHRlZCwgc2VhcmNoZXMgaW4gZ2xvYmFsIGNvbnRlbnQuXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUgdGV4dCBrZXlcbiAgICogQHBhcmFtIGZhbGxiYWNrIC0gT3B0aW9uYWwgZmFsbGJhY2sgdGV4dCBpZiBrZXkgaXMgbm90IGZvdW5kXG4gICAqIEByZXR1cm5zIFRoZSB0ZXh0IHN0cmluZyBvciBmYWxsYmFja1xuICAgKlxuICAgKiBAZXhhbXBsZSBDb21wb25lbnQtc3BlY2lmaWM6XG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgdGl0bGUgPSB0aGlzLmNvbnRlbnQuZ2V0VGV4dCgnTXlDb21wb25lbnQnLCAndGl0bGUnKTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBleGFtcGxlIEdsb2JhbCBjb250ZW50OlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IG9rVGV4dCA9IHRoaXMuY29udGVudC5nZXRUZXh0KCdvaycpOyAvLyBGaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIGtleVxuICAgKiAvLyBvciBtb3JlIGV4cGxpY2l0bHk6XG4gICAqIGNvbnN0IG9rVGV4dCA9IHRoaXMuY29udGVudC5nZXRHbG9iYWxUZXh0KCdvaycpO1xuICAgKiBgYGBcbiAgICovXG4gIGdldFRleHQoY2xhc3NOYW1lOiBzdHJpbmcsIGtleT86IHN0cmluZywgZmFsbGJhY2s/OiBzdHJpbmcpOiBzdHJpbmc7XG4gIGdldFRleHQoa2V5OiBzdHJpbmcsIGZhbGxiYWNrPzogc3RyaW5nKTogc3RyaW5nO1xuICBnZXRUZXh0KGNsYXNzTmFtZU9yS2V5OiBzdHJpbmcsIGtleU9yRmFsbGJhY2s/OiBzdHJpbmcsIGZhbGxiYWNrPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBIYW5kbGUgb3ZlcmxvYWRlZCBzaWduYXR1cmVzXG4gICAgaWYgKFxuICAgICAga2V5T3JGYWxsYmFjayA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAodHlwZW9mIGtleU9yRmFsbGJhY2sgPT09ICdzdHJpbmcnICYmIGZhbGxiYWNrID09PSB1bmRlZmluZWQpXG4gICAgKSB7XG4gICAgICAvLyBTaW5nbGUgcGFyYW1ldGVyIG9yIHR3byBwYXJhbWV0ZXJzIChrZXksIGZhbGxiYWNrKSAtIHRyZWF0IGFzIGdsb2JhbCBjb250ZW50XG4gICAgICByZXR1cm4gdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KCdfZ2xvYmFsJywgY2xhc3NOYW1lT3JLZXksIGtleU9yRmFsbGJhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaHJlZSBwYXJhbWV0ZXJzIChjbGFzc05hbWUsIGtleSwgZmFsbGJhY2spIC0gdHJlYXQgYXMgY29tcG9uZW50IGNvbnRlbnRcbiAgICAgIHJldHVybiB0aGlzLmxhbmdTZXJ2aWNlLmdldFRleHQoY2xhc3NOYW1lT3JLZXksIGtleU9yRmFsbGJhY2ssIGZhbGxiYWNrKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc2luZ2xlIGdsb2JhbCBjb250ZW50IHN0cmluZyBzeW5jaHJvbm91c2x5LlxuICAgKiBUaGlzIGlzIGEgY29udmVuaWVuY2UgbWV0aG9kIHRoYXQncyBlcXVpdmFsZW50IHRvIGdldFRleHQoa2V5LCBmYWxsYmFjaykuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUgdGV4dCBrZXlcbiAgICogQHBhcmFtIGZhbGxiYWNrIC0gT3B0aW9uYWwgZmFsbGJhY2sgdGV4dCBpZiBrZXkgaXMgbm90IGZvdW5kXG4gICAqIEByZXR1cm5zIFRoZSB0ZXh0IHN0cmluZyBvciBmYWxsYmFja1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IG9rVGV4dCA9IHRoaXMuY29udGVudC5nZXRHbG9iYWxUZXh0KCdvaycpO1xuICAgKiBjb25zdCBjYW5jZWxUZXh0ID0gdGhpcy5jb250ZW50LmdldEdsb2JhbFRleHQoJ2NhbmNlbCcsICdDYW5jZWwnKTtcbiAgICogYGBgXG4gICAqL1xuICBnZXRHbG9iYWxUZXh0KGtleTogc3RyaW5nLCBmYWxsYmFjaz86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubGFuZ1NlcnZpY2UuZ2V0VGV4dCgnX2dsb2JhbCcsIGtleSwgZmFsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgY29udGVudCBrZXkgZXhpc3RzIGZvciBhIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGNsYXNzTmFtZSAtIFRoZSBjb21wb25lbnQgY2xhc3MgbmFtZVxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIHRleHQga2V5XG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGtleSBleGlzdHMgaW4gYW55IGxhbmd1YWdlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogaWYgKHRoaXMuY29udGVudC5oYXNDb250ZW50KCdNeUNvbXBvbmVudCcsICdvcHRpb25hbFRleHQnKSkge1xuICAgKiAgIC8vIFNob3cgb3B0aW9uYWwgY29udGVudFxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgaGFzQ29udGVudChjbGFzc05hbWU6IHN0cmluZywga2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5sYW5nU2VydmljZS5oYXNDb250ZW50KGNsYXNzTmFtZSwga2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gaW50ZXJwb2xhdGUgdmFsdWVzIGludG8gYSBjb250ZW50IHN0cmluZy5cbiAgICogVXNlZnVsIGZvciBwcm9jZXNzaW5nIGNvbnRlbnQgc3RyaW5ncyBtYW51YWxseS5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgY29udGVudCBzdHJpbmcgd2l0aCBwbGFjZWhvbGRlcnNcbiAgICogQHBhcmFtIHZhbHVlcyAtIE9iamVjdCB3aXRoIHZhbHVlcyB0byBpbnRlcnBvbGF0ZVxuICAgKiBAcmV0dXJucyBUaGUgaW50ZXJwb2xhdGVkIHN0cmluZ1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJlc3VsdCA9IHRoaXMuY29udGVudC5pbnRlcnBvbGF0ZShcIkhlbGxvIHtuYW1lfSFcIiwgeyBuYW1lOiBcIldvcmxkXCIgfSk7XG4gICAqIC8vIFJldHVybnM6IFwiSGVsbG8gV29ybGQhXCJcbiAgICogYGBgXG4gICAqL1xuICBpbnRlcnBvbGF0ZShjb250ZW50OiBzdHJpbmcsIHZhbHVlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4pOiBzdHJpbmcge1xuICAgIHJldHVybiBpbnRlcnBvbGF0ZUNvbnRlbnQoY29udGVudCwgdmFsdWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBjb250ZW50IGhlbHBlciBib3VuZCB0byBhIHNwZWNpZmljIGNvbXBvbmVudCBjbGFzcy5cbiAgICogVGhpcyBwcm92aWRlcyBhIHNjb3BlZCBBUEkgZm9yIGNvbXBvbmVudHMgdGhhdCBuZWVkIG11bHRpcGxlIGNvbnRlbnQgc3RyaW5ncy5cbiAgICpcbiAgICogQHBhcmFtIGNsYXNzTmFtZSAtIFRoZSBjb21wb25lbnQgY2xhc3MgbmFtZVxuICAgKiBAcmV0dXJucyBDb250ZW50IGhlbHBlciB3aXRoIG1ldGhvZHMgc2NvcGVkIHRvIHRoZSBjbGFzc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gICAqICAgcHJpdmF0ZSBjb250ZW50SGVscGVyID0gdGhpcy5jb250ZW50LmNyZWF0ZUhlbHBlcignTXlDb21wb25lbnQnKTtcbiAgICpcbiAgICogICBuZ09uSW5pdCgpIHtcbiAgICogICAgIHRoaXMudGl0bGUkID0gdGhpcy5jb250ZW50SGVscGVyLmdldCgndGl0bGUnKTtcbiAgICogICAgIHRoaXMuYWxsQ29udGVudCQgPSB0aGlzLmNvbnRlbnRIZWxwZXIuZ2V0TXVsdGlwbGUoWyd0aXRsZScsICdkZXNjcmlwdGlvbiddKTtcbiAgICogICB9XG4gICAqXG4gICAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb250ZW50OiBDb250ZW50U2VydmljZSkge31cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGNyZWF0ZUhlbHBlcihjbGFzc05hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBjcmVhdGVDb250ZW50SGVscGVyKHRoaXMubGFuZ1NlcnZpY2UsIGNsYXNzTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgc2NvcGVkIGNvbnRlbnQgc2VydmljZSBmb3IgYSBzcGVjaWZpYyBjb21wb25lbnQgY2xhc3MuXG4gICAqIFRoaXMgcHJvdmlkZXMgYW4gZXZlbiBtb3JlIGNvbnZlbmllbnQgQVBJIGZvciBjb21wb25lbnRzIHdpdGggbWFueSBjb250ZW50IG5lZWRzLlxuICAgKlxuICAgKiBAcGFyYW0gY2xhc3NOYW1lIC0gVGhlIGNvbXBvbmVudCBjbGFzcyBuYW1lXG4gICAqIEByZXR1cm5zIFNjb3BlZCBjb250ZW50IHNlcnZpY2VcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBleHBvcnQgY2xhc3MgTXlDb21wb25lbnQge1xuICAgKiAgIHByaXZhdGUgY29udGVudCA9IGluamVjdChDb250ZW50U2VydmljZSkuZm9yQ29tcG9uZW50KCdNeUNvbXBvbmVudCcpO1xuICAgKlxuICAgKiAgIC8vIFNpbXBsZSBjb250ZW50XG4gICAqICAgdGl0bGUkID0gdGhpcy5jb250ZW50LmdldCgndGl0bGUnKTtcbiAgICpcbiAgICogICAvLyBDb250ZW50IHdpdGggaW50ZXJwb2xhdGlvblxuICAgKiAgIGdyZWV0aW5nJCA9IHRoaXMuY29udGVudC5nZXQoJ2dyZWV0aW5nJywge1xuICAgKiAgICAgaW50ZXJwb2xhdGlvbjogeyBuYW1lOiAnSm9obicgfVxuICAgKiAgIH0pO1xuICAgKlxuICAgKiAgIC8vIENvbnRlbnQgd2l0aCBmYWxsYmFja1xuICAgKiAgIHN1YnRpdGxlJCA9IHRoaXMuY29udGVudC5nZXQoJ3N1YnRpdGxlJywge1xuICAgKiAgICAgZmFsbGJhY2s6ICdEZWZhdWx0IFN1YnRpdGxlJ1xuICAgKiAgIH0pO1xuICAgKlxuICAgKiAgIC8vIE11bHRpcGxlIHRleHRzXG4gICAqICAgYWxsVGV4dHMkID0gdGhpcy5jb250ZW50LmdldE11bHRpcGxlKFsndGl0bGUnLCAnc3VidGl0bGUnLCAnZGVzY3JpcHRpb24nXSk7XG4gICAqXG4gICAqICAgY29uc3RydWN0b3IoKSB7fVxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgZm9yQ29tcG9uZW50KGNsYXNzTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8qKlxuICAgICAgICogR2V0IGEgc2luZ2xlIGNvbnRlbnQgc3RyaW5nIHJlYWN0aXZlbHkgZm9yIHRoaXMgY29tcG9uZW50LlxuICAgICAgICogU3VwcG9ydHMgb3B0aW9uYWwgaW50ZXJwb2xhdGlvbi5cbiAgICAgICAqL1xuICAgICAgZ2V0OiAoXG4gICAgICAgIGtleTogc3RyaW5nLFxuICAgICAgICBvcHRpb25zPzogeyBmYWxsYmFjaz86IHN0cmluZzsgaW50ZXJwb2xhdGlvbj86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4gfVxuICAgICAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+ID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbUNvbnRlbnQoe1xuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgZmFsbGJhY2s6IG9wdGlvbnM/LmZhbGxiYWNrLFxuICAgICAgICAgIGludGVycG9sYXRpb246IG9wdGlvbnM/LmludGVycG9sYXRpb24sXG4gICAgICAgIH0pO1xuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBHZXQgY29udGVudCB3aXRoIGludGVycG9sYXRpb24gZm9yIHRoaXMgY29tcG9uZW50LlxuICAgICAgICogQGRlcHJlY2F0ZWQgVXNlIGdldCgpIHdpdGggaW50ZXJwb2xhdGlvbiBvcHRpb24gaW5zdGVhZC5cbiAgICAgICAqL1xuICAgICAgZ2V0V2l0aEludGVycG9sYXRpb246IChcbiAgICAgICAga2V5OiBzdHJpbmcsXG4gICAgICAgIGludGVycG9sYXRpb246IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4sXG4gICAgICAgIGZhbGxiYWNrPzogc3RyaW5nXG4gICAgICApOiBPYnNlcnZhYmxlPHN0cmluZz4gPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tQ29udGVudCh7XG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBpbnRlcnBvbGF0aW9uLFxuICAgICAgICAgIGZhbGxiYWNrLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogR2V0IG11bHRpcGxlIGNvbnRlbnQgc3RyaW5ncyBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAgICAgKi9cbiAgICAgIGdldE11bHRpcGxlOiAoa2V5czogc3RyaW5nW10pOiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbU11bHRpcGxlQ29udGVudChjbGFzc05hbWUsIGtleXMpO1xuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBHZXQgYSBzaW5nbGUgY29udGVudCBzdHJpbmcgc3luY2hyb25vdXNseSBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAgICAgKi9cbiAgICAgIGdldFRleHQ6IChrZXk6IHN0cmluZywgZmFsbGJhY2s/OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUZXh0KGNsYXNzTmFtZSwga2V5LCBmYWxsYmFjayk7XG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIENoZWNrIGlmIGEgY29udGVudCBrZXkgZXhpc3RzIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICAgICAqL1xuICAgICAgaGFzQ29udGVudDogKGtleTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc0NvbnRlbnQoY2xhc3NOYW1lLCBrZXkpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { Injectable } from '@angular/core';
7
7
  import { addIcons } from 'ionicons';
8
- import { addCircleOutline, addOutline, alertCircleOutline, alertOutline, arrowBackOutline, arrowDownOutline, arrowForwardOutline, businessOutline, calendarOutline, chatbubblesOutline, checkmarkCircleOutline, checkmarkOutline, chevronDownOutline, chevronForwardOutline, clipboardOutline, closeOutline, copyOutline, createOutline, documentTextOutline, ellipsisHorizontalOutline, eyeOffOutline, eyeOutline, filterOutline, heart, heartOutline, homeOutline, informationCircleOutline, locationOutline, lockClosedOutline, logoFacebook, logoInstagram, logoLinkedin, logoTiktok, logoTwitter, logoYoutube, notificationsOutline, openOutline, playOutline, refreshOutline, scanOutline, shareOutline, trashOutline, } from 'ionicons/icons';
8
+ import { addCircleOutline, addOutline, alertCircleOutline, alertOutline, arrowBackOutline, arrowDownOutline, arrowForwardOutline, businessOutline, calendarOutline, chatbubblesOutline, checkmarkCircleOutline, checkmarkOutline, chevronDownOutline, chevronForwardOutline, clipboardOutline, closeOutline, copyOutline, createOutline, documentTextOutline, ellipsisHorizontalOutline, eyeOffOutline, eyeOutline, filterOutline, heart, heartOutline, homeOutline, informationCircleOutline, locationOutline, lockClosedOutline, logoFacebook, logoInstagram, logoLinkedin, logoNpm, logoTiktok, logoTwitter, logoYoutube, notificationsOutline, openOutline, playOutline, refreshOutline, scanOutline, shareOutline, trashOutline, } from 'ionicons/icons';
9
9
  import * as i0 from "@angular/core";
10
10
  export class IconService {
11
11
  /**
@@ -55,6 +55,7 @@ export class IconService {
55
55
  documentTextOutline,
56
56
  lockClosedOutline,
57
57
  informationCircleOutline,
58
+ logoNpm,
58
59
  });
59
60
  }
60
61
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IconService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -66,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
66
67
  providedIn: 'root',
67
68
  }]
68
69
  }], ctorParameters: () => [] });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL2ljb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUNBQXlDO0FBRXpDOzs7R0FHRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFdBQVcsRUFDWCxhQUFhLEVBQ2IsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixhQUFhLEVBQ2IsVUFBVSxFQUNWLGFBQWEsRUFDYixLQUFLLEVBQ0wsWUFBWSxFQUNaLFdBQVcsRUFDWCx3QkFBd0IsRUFDeEIsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osYUFBYSxFQUNiLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsV0FBVyxFQUNYLFdBQVcsRUFDWCxjQUFjLEVBQ2QsV0FBVyxFQUNYLFlBQVksRUFDWixZQUFZLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFLeEIsTUFBTSxPQUFPLFdBQVc7SUFDdEI7O09BRUc7SUFDSDtRQUNFLFFBQVEsQ0FBQztZQUNQLFVBQVU7WUFDVixnQkFBZ0I7WUFDaEIsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixnQkFBZ0I7WUFDaEIsbUJBQW1CO1lBQ25CLGdCQUFnQjtZQUNoQixzQkFBc0I7WUFDdEIseUJBQXlCO1lBQ3pCLG9CQUFvQjtZQUNwQixXQUFXO1lBQ1gsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixZQUFZO1lBQ1osS0FBSztZQUNMLFlBQVk7WUFDWixXQUFXO1lBQ1gsYUFBYTtZQUNiLFVBQVU7WUFDVixXQUFXO1lBQ1gsa0JBQWtCO1lBQ2xCLHFCQUFxQjtZQUNyQixnQkFBZ0I7WUFDaEIsZ0JBQWdCO1lBQ2hCLFdBQVc7WUFDWCxhQUFhO1lBQ2IsZUFBZTtZQUNmLGVBQWU7WUFDZixlQUFlO1lBQ2YsV0FBVztZQUNYLGFBQWE7WUFDYixZQUFZO1lBQ1osV0FBVztZQUNYLFVBQVU7WUFDVixZQUFZO1lBQ1osYUFBYTtZQUNiLFlBQVk7WUFDWixXQUFXO1lBQ1gsY0FBYztZQUNkLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsd0JBQXdCO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBakRVLFdBQVc7bUhBQVgsV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZXJzY29yZS1kYW5nbGUgKi9cblxuLyoqXG4gKiBTZXJ2aWNlIGZvciByZWdpc3RlcmluZyBhbmQgbWFuYWdpbmcgY3VzdG9tIElvbmljb25zIGljb25zIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqIEF1dG9tYXRpY2FsbHkgcmVnaXN0ZXJzIGEgc2V0IG9mIGNvbW1vbmx5IHVzZWQgaWNvbnMgb24gaW5pdGlhbGl6YXRpb24uXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBhZGRDaXJjbGVPdXRsaW5lLFxuICBhZGRPdXRsaW5lLFxuICBhbGVydENpcmNsZU91dGxpbmUsXG4gIGFsZXJ0T3V0bGluZSxcbiAgYXJyb3dCYWNrT3V0bGluZSxcbiAgYXJyb3dEb3duT3V0bGluZSxcbiAgYXJyb3dGb3J3YXJkT3V0bGluZSxcbiAgYnVzaW5lc3NPdXRsaW5lLFxuICBjYWxlbmRhck91dGxpbmUsXG4gIGNoYXRidWJibGVzT3V0bGluZSxcbiAgY2hlY2ttYXJrQ2lyY2xlT3V0bGluZSxcbiAgY2hlY2ttYXJrT3V0bGluZSxcbiAgY2hldnJvbkRvd25PdXRsaW5lLFxuICBjaGV2cm9uRm9yd2FyZE91dGxpbmUsXG4gIGNsaXBib2FyZE91dGxpbmUsXG4gIGNsb3NlT3V0bGluZSxcbiAgY29weU91dGxpbmUsXG4gIGNyZWF0ZU91dGxpbmUsXG4gIGRvY3VtZW50VGV4dE91dGxpbmUsXG4gIGVsbGlwc2lzSG9yaXpvbnRhbE91dGxpbmUsXG4gIGV5ZU9mZk91dGxpbmUsXG4gIGV5ZU91dGxpbmUsXG4gIGZpbHRlck91dGxpbmUsXG4gIGhlYXJ0LFxuICBoZWFydE91dGxpbmUsXG4gIGhvbWVPdXRsaW5lLFxuICBpbmZvcm1hdGlvbkNpcmNsZU91dGxpbmUsXG4gIGxvY2F0aW9uT3V0bGluZSxcbiAgbG9ja0Nsb3NlZE91dGxpbmUsXG4gIGxvZ29GYWNlYm9vayxcbiAgbG9nb0luc3RhZ3JhbSxcbiAgbG9nb0xpbmtlZGluLFxuICBsb2dvVGlrdG9rLFxuICBsb2dvVHdpdHRlcixcbiAgbG9nb1lvdXR1YmUsXG4gIG5vdGlmaWNhdGlvbnNPdXRsaW5lLFxuICBvcGVuT3V0bGluZSxcbiAgcGxheU91dGxpbmUsXG4gIHJlZnJlc2hPdXRsaW5lLFxuICBzY2FuT3V0bGluZSxcbiAgc2hhcmVPdXRsaW5lLFxuICB0cmFzaE91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEljb25TZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIHNldCBvZiBJb25pY29ucyBpY29ucyBmb3IgdXNlIHRocm91Z2hvdXQgdGhlIGFwcC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFkZEljb25zKHtcbiAgICAgIGFkZE91dGxpbmUsXG4gICAgICBhZGRDaXJjbGVPdXRsaW5lLFxuICAgICAgYWxlcnRPdXRsaW5lLFxuICAgICAgYWxlcnRDaXJjbGVPdXRsaW5lLFxuICAgICAgYXJyb3dCYWNrT3V0bGluZSxcbiAgICAgIGFycm93Rm9yd2FyZE91dGxpbmUsXG4gICAgICBhcnJvd0Rvd25PdXRsaW5lLFxuICAgICAgY2hlY2ttYXJrQ2lyY2xlT3V0bGluZSxcbiAgICAgIGVsbGlwc2lzSG9yaXpvbnRhbE91dGxpbmUsXG4gICAgICBub3RpZmljYXRpb25zT3V0bGluZSxcbiAgICAgIG9wZW5PdXRsaW5lLFxuICAgICAgY2xvc2VPdXRsaW5lLFxuICAgICAgY2hhdGJ1YmJsZXNPdXRsaW5lLFxuICAgICAgc2hhcmVPdXRsaW5lLFxuICAgICAgaGVhcnQsXG4gICAgICBoZWFydE91dGxpbmUsXG4gICAgICBob21lT3V0bGluZSxcbiAgICAgIGV5ZU9mZk91dGxpbmUsXG4gICAgICBleWVPdXRsaW5lLFxuICAgICAgc2Nhbk91dGxpbmUsXG4gICAgICBjaGV2cm9uRG93bk91dGxpbmUsXG4gICAgICBjaGV2cm9uRm9yd2FyZE91dGxpbmUsXG4gICAgICBjaGVja21hcmtPdXRsaW5lLFxuICAgICAgY2xpcGJvYXJkT3V0bGluZSxcbiAgICAgIGNvcHlPdXRsaW5lLFxuICAgICAgZmlsdGVyT3V0bGluZSxcbiAgICAgIGxvY2F0aW9uT3V0bGluZSxcbiAgICAgIGNhbGVuZGFyT3V0bGluZSxcbiAgICAgIGJ1c2luZXNzT3V0bGluZSxcbiAgICAgIGxvZ29Ud2l0dGVyLFxuICAgICAgbG9nb0luc3RhZ3JhbSxcbiAgICAgIGxvZ29MaW5rZWRpbixcbiAgICAgIGxvZ29Zb3V0dWJlLFxuICAgICAgbG9nb1Rpa3RvayxcbiAgICAgIGxvZ29GYWNlYm9vayxcbiAgICAgIGNyZWF0ZU91dGxpbmUsXG4gICAgICB0cmFzaE91dGxpbmUsXG4gICAgICBwbGF5T3V0bGluZSxcbiAgICAgIHJlZnJlc2hPdXRsaW5lLFxuICAgICAgZG9jdW1lbnRUZXh0T3V0bGluZSxcbiAgICAgIGxvY2tDbG9zZWRPdXRsaW5lLFxuICAgICAgaW5mb3JtYXRpb25DaXJjbGVPdXRsaW5lLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL2ljb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUNBQXlDO0FBRXpDOzs7R0FHRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFdBQVcsRUFDWCxhQUFhLEVBQ2IsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixhQUFhLEVBQ2IsVUFBVSxFQUNWLGFBQWEsRUFDYixLQUFLLEVBQ0wsWUFBWSxFQUNaLFdBQVcsRUFDWCx3QkFBd0IsRUFDeEIsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osYUFBYSxFQUNiLFlBQVksRUFDWixPQUFPLEVBQ1AsVUFBVSxFQUNWLFdBQVcsRUFDWCxXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsY0FBYyxFQUNkLFdBQVcsRUFDWCxZQUFZLEVBQ1osWUFBWSxHQUNiLE1BQU0sZ0JBQWdCLENBQUM7O0FBS3hCLE1BQU0sT0FBTyxXQUFXO0lBQ3RCOztPQUVHO0lBQ0g7UUFDRSxRQUFRLENBQUM7WUFDUCxVQUFVO1lBQ1YsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLG1CQUFtQjtZQUNuQixnQkFBZ0I7WUFDaEIsc0JBQXNCO1lBQ3RCLHlCQUF5QjtZQUN6QixvQkFBb0I7WUFDcEIsV0FBVztZQUNYLFlBQVk7WUFDWixrQkFBa0I7WUFDbEIsWUFBWTtZQUNaLEtBQUs7WUFDTCxZQUFZO1lBQ1osV0FBVztZQUNYLGFBQWE7WUFDYixVQUFVO1lBQ1YsV0FBVztZQUNYLGtCQUFrQjtZQUNsQixxQkFBcUI7WUFDckIsZ0JBQWdCO1lBQ2hCLGdCQUFnQjtZQUNoQixXQUFXO1lBQ1gsYUFBYTtZQUNiLGVBQWU7WUFDZixlQUFlO1lBQ2YsZUFBZTtZQUNmLFdBQVc7WUFDWCxhQUFhO1lBQ2IsWUFBWTtZQUNaLFdBQVc7WUFDWCxVQUFVO1lBQ1YsWUFBWTtZQUNaLGFBQWE7WUFDYixZQUFZO1lBQ1osV0FBVztZQUNYLGNBQWM7WUFDZCxtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLHdCQUF3QjtZQUN4QixPQUFPO1NBQ1IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FsRFUsV0FBVzttSEFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuXG4vKipcbiAqIFNlcnZpY2UgZm9yIHJlZ2lzdGVyaW5nIGFuZCBtYW5hZ2luZyBjdXN0b20gSW9uaWNvbnMgaWNvbnMgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICogQXV0b21hdGljYWxseSByZWdpc3RlcnMgYSBzZXQgb2YgY29tbW9ubHkgdXNlZCBpY29ucyBvbiBpbml0aWFsaXphdGlvbi5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7XG4gIGFkZENpcmNsZU91dGxpbmUsXG4gIGFkZE91dGxpbmUsXG4gIGFsZXJ0Q2lyY2xlT3V0bGluZSxcbiAgYWxlcnRPdXRsaW5lLFxuICBhcnJvd0JhY2tPdXRsaW5lLFxuICBhcnJvd0Rvd25PdXRsaW5lLFxuICBhcnJvd0ZvcndhcmRPdXRsaW5lLFxuICBidXNpbmVzc091dGxpbmUsXG4gIGNhbGVuZGFyT3V0bGluZSxcbiAgY2hhdGJ1YmJsZXNPdXRsaW5lLFxuICBjaGVja21hcmtDaXJjbGVPdXRsaW5lLFxuICBjaGVja21hcmtPdXRsaW5lLFxuICBjaGV2cm9uRG93bk91dGxpbmUsXG4gIGNoZXZyb25Gb3J3YXJkT3V0bGluZSxcbiAgY2xpcGJvYXJkT3V0bGluZSxcbiAgY2xvc2VPdXRsaW5lLFxuICBjb3B5T3V0bGluZSxcbiAgY3JlYXRlT3V0bGluZSxcbiAgZG9jdW1lbnRUZXh0T3V0bGluZSxcbiAgZWxsaXBzaXNIb3Jpem9udGFsT3V0bGluZSxcbiAgZXllT2ZmT3V0bGluZSxcbiAgZXllT3V0bGluZSxcbiAgZmlsdGVyT3V0bGluZSxcbiAgaGVhcnQsXG4gIGhlYXJ0T3V0bGluZSxcbiAgaG9tZU91dGxpbmUsXG4gIGluZm9ybWF0aW9uQ2lyY2xlT3V0bGluZSxcbiAgbG9jYXRpb25PdXRsaW5lLFxuICBsb2NrQ2xvc2VkT3V0bGluZSxcbiAgbG9nb0ZhY2Vib29rLFxuICBsb2dvSW5zdGFncmFtLFxuICBsb2dvTGlua2VkaW4sXG4gIGxvZ29OcG0sXG4gIGxvZ29UaWt0b2ssXG4gIGxvZ29Ud2l0dGVyLFxuICBsb2dvWW91dHViZSxcbiAgbm90aWZpY2F0aW9uc091dGxpbmUsXG4gIG9wZW5PdXRsaW5lLFxuICBwbGF5T3V0bGluZSxcbiAgcmVmcmVzaE91dGxpbmUsXG4gIHNjYW5PdXRsaW5lLFxuICBzaGFyZU91dGxpbmUsXG4gIHRyYXNoT3V0bGluZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSWNvblNlcnZpY2Uge1xuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgc2V0IG9mIElvbmljb25zIGljb25zIGZvciB1c2UgdGhyb3VnaG91dCB0aGUgYXBwLlxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgYWRkSWNvbnMoe1xuICAgICAgYWRkT3V0bGluZSxcbiAgICAgIGFkZENpcmNsZU91dGxpbmUsXG4gICAgICBhbGVydE91dGxpbmUsXG4gICAgICBhbGVydENpcmNsZU91dGxpbmUsXG4gICAgICBhcnJvd0JhY2tPdXRsaW5lLFxuICAgICAgYXJyb3dGb3J3YXJkT3V0bGluZSxcbiAgICAgIGFycm93RG93bk91dGxpbmUsXG4gICAgICBjaGVja21hcmtDaXJjbGVPdXRsaW5lLFxuICAgICAgZWxsaXBzaXNIb3Jpem9udGFsT3V0bGluZSxcbiAgICAgIG5vdGlmaWNhdGlvbnNPdXRsaW5lLFxuICAgICAgb3Blbk91dGxpbmUsXG4gICAgICBjbG9zZU91dGxpbmUsXG4gICAgICBjaGF0YnViYmxlc091dGxpbmUsXG4gICAgICBzaGFyZU91dGxpbmUsXG4gICAgICBoZWFydCxcbiAgICAgIGhlYXJ0T3V0bGluZSxcbiAgICAgIGhvbWVPdXRsaW5lLFxuICAgICAgZXllT2ZmT3V0bGluZSxcbiAgICAgIGV5ZU91dGxpbmUsXG4gICAgICBzY2FuT3V0bGluZSxcbiAgICAgIGNoZXZyb25Eb3duT3V0bGluZSxcbiAgICAgIGNoZXZyb25Gb3J3YXJkT3V0bGluZSxcbiAgICAgIGNoZWNrbWFya091dGxpbmUsXG4gICAgICBjbGlwYm9hcmRPdXRsaW5lLFxuICAgICAgY29weU91dGxpbmUsXG4gICAgICBmaWx0ZXJPdXRsaW5lLFxuICAgICAgbG9jYXRpb25PdXRsaW5lLFxuICAgICAgY2FsZW5kYXJPdXRsaW5lLFxuICAgICAgYnVzaW5lc3NPdXRsaW5lLFxuICAgICAgbG9nb1R3aXR0ZXIsXG4gICAgICBsb2dvSW5zdGFncmFtLFxuICAgICAgbG9nb0xpbmtlZGluLFxuICAgICAgbG9nb1lvdXR1YmUsXG4gICAgICBsb2dvVGlrdG9rLFxuICAgICAgbG9nb0ZhY2Vib29rLFxuICAgICAgY3JlYXRlT3V0bGluZSxcbiAgICAgIHRyYXNoT3V0bGluZSxcbiAgICAgIHBsYXlPdXRsaW5lLFxuICAgICAgcmVmcmVzaE91dGxpbmUsXG4gICAgICBkb2N1bWVudFRleHRPdXRsaW5lLFxuICAgICAgbG9ja0Nsb3NlZE91dGxpbmUsXG4gICAgICBpbmZvcm1hdGlvbkNpcmNsZU91dGxpbmUsXG4gICAgICBsb2dvTnBtLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,8 +1,143 @@
1
+ import GlobalContentExample from '../../components/_examples/global-content-example-content';
2
+ import ReactiveContentExample from '../../components/_examples/reactive-content-example-content';
1
3
  import LangSettings from './components/lang-settings';
2
4
  import ThemeSettings from './components/theme-settings';
5
+ import { TextContent } from './types';
6
+ /**
7
+ * Global content that can be used across all components.
8
+ * These are common texts like buttons, actions, states, etc.
9
+ */
10
+ const globalContentData = {
11
+ // Common buttons
12
+ ok: {
13
+ es: 'Aceptar',
14
+ en: 'OK',
15
+ },
16
+ cancel: {
17
+ es: 'Cancelar',
18
+ en: 'Cancel',
19
+ },
20
+ save: {
21
+ es: 'Guardar',
22
+ en: 'Save',
23
+ },
24
+ delete: {
25
+ es: 'Eliminar',
26
+ en: 'Delete',
27
+ },
28
+ edit: {
29
+ es: 'Editar',
30
+ en: 'Edit',
31
+ },
32
+ close: {
33
+ es: 'Cerrar',
34
+ en: 'Close',
35
+ },
36
+ back: {
37
+ es: 'Volver',
38
+ en: 'Back',
39
+ },
40
+ next: {
41
+ es: 'Siguiente',
42
+ en: 'Next',
43
+ },
44
+ previous: {
45
+ es: 'Anterior',
46
+ en: 'Previous',
47
+ },
48
+ finish: {
49
+ es: 'Finalizar',
50
+ en: 'Finish',
51
+ },
52
+ continue: {
53
+ es: 'Continuar',
54
+ en: 'Continue',
55
+ },
56
+ // Common actions
57
+ add: {
58
+ es: 'Agregar',
59
+ en: 'Add',
60
+ },
61
+ remove: {
62
+ es: 'Quitar',
63
+ en: 'Remove',
64
+ },
65
+ search: {
66
+ es: 'Buscar',
67
+ en: 'Search',
68
+ },
69
+ filter: {
70
+ es: 'Filtrar',
71
+ en: 'Filter',
72
+ },
73
+ sort: {
74
+ es: 'Ordenar',
75
+ en: 'Sort',
76
+ },
77
+ refresh: {
78
+ es: 'Actualizar',
79
+ en: 'Refresh',
80
+ },
81
+ // Common states and messages
82
+ loading: {
83
+ es: 'Cargando...',
84
+ en: 'Loading...',
85
+ },
86
+ noData: {
87
+ es: 'No hay datos disponibles',
88
+ en: 'No data available',
89
+ },
90
+ error: {
91
+ es: 'Error',
92
+ en: 'Error',
93
+ },
94
+ success: {
95
+ es: 'Éxito',
96
+ en: 'Success',
97
+ },
98
+ warning: {
99
+ es: 'Advertencia',
100
+ en: 'Warning',
101
+ },
102
+ info: {
103
+ es: 'Información',
104
+ en: 'Information',
105
+ },
106
+ // Common confirmations
107
+ areYouSure: {
108
+ es: '¿Estás seguro?',
109
+ en: 'Are you sure?',
110
+ },
111
+ deleteConfirmation: {
112
+ es: '¿Estás seguro de que deseas eliminar {itemName}?',
113
+ en: 'Are you sure you want to delete {itemName}?',
114
+ },
115
+ unsavedChanges: {
116
+ es: 'Tienes cambios sin guardar. ¿Deseas continuar?',
117
+ en: 'You have unsaved changes. Do you want to continue?',
118
+ },
119
+ // Common form labels
120
+ required: {
121
+ es: 'Requerido',
122
+ en: 'Required',
123
+ },
124
+ optional: {
125
+ es: 'Opcional',
126
+ en: 'Optional',
127
+ },
128
+ // Common placeholders
129
+ searchPlaceholder: {
130
+ es: 'Buscar...',
131
+ en: 'Search...',
132
+ },
133
+ };
134
+ const GlobalContent = new TextContent(globalContentData);
3
135
  const content = {
136
+ _global: GlobalContent,
4
137
  LangSettings,
5
138
  ThemeSettings,
139
+ ReactiveContentExample,
140
+ GlobalContentExample,
6
141
  };
7
142
  export default content;
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvY29udGVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFlBQVksTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLGFBQWEsTUFBTSw2QkFBNkIsQ0FBQztBQU94RCxNQUFNLE9BQU8sR0FBYTtJQUN4QixZQUFZO0lBQ1osYUFBYTtDQUNkLENBQUM7QUFFRixlQUFlLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMYW5nU2V0dGluZ3MgZnJvbSAnLi9jb21wb25lbnRzL2xhbmctc2V0dGluZ3MnO1xuaW1wb3J0IFRoZW1lU2V0dGluZ3MgZnJvbSAnLi9jb21wb25lbnRzL3RoZW1lLXNldHRpbmdzJztcbmltcG9ydCB7IFRleHRDb250ZW50IH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZXIge1xuICBbeDogc3RyaW5nXTogVGV4dENvbnRlbnQ7XG59XG5cbmNvbnN0IGNvbnRlbnQ6IFByb3ZpZGVyID0ge1xuICBMYW5nU2V0dGluZ3MsXG4gIFRoZW1lU2V0dGluZ3MsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50O1xuIl19
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvY29udGVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLG9CQUFvQixNQUFNLDJEQUEyRCxDQUFDO0FBQzdGLE9BQU8sc0JBQXNCLE1BQU0sNkRBQTZELENBQUM7QUFDakcsT0FBTyxZQUFZLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxhQUFhLE1BQU0sNkJBQTZCLENBQUM7QUFDeEQsT0FBTyxFQUFvQixXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFNeEQ7OztHQUdHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBcUI7SUFDMUMsaUJBQWlCO0lBQ2pCLEVBQUUsRUFBRTtRQUNGLEVBQUUsRUFBRSxTQUFTO1FBQ2IsRUFBRSxFQUFFLElBQUk7S0FDVDtJQUNELE1BQU0sRUFBRTtRQUNOLEVBQUUsRUFBRSxVQUFVO1FBQ2QsRUFBRSxFQUFFLFFBQVE7S0FDYjtJQUNELElBQUksRUFBRTtRQUNKLEVBQUUsRUFBRSxTQUFTO1FBQ2IsRUFBRSxFQUFFLE1BQU07S0FDWDtJQUNELE1BQU0sRUFBRTtRQUNOLEVBQUUsRUFBRSxVQUFVO1FBQ2QsRUFBRSxFQUFFLFFBQVE7S0FDYjtJQUNELElBQUksRUFBRTtRQUNKLEVBQUUsRUFBRSxRQUFRO1FBQ1osRUFBRSxFQUFFLE1BQU07S0FDWDtJQUNELEtBQUssRUFBRTtRQUNMLEVBQUUsRUFBRSxRQUFRO1FBQ1osRUFBRSxFQUFFLE9BQU87S0FDWjtJQUNELElBQUksRUFBRTtRQUNKLEVBQUUsRUFBRSxRQUFRO1FBQ1osRUFBRSxFQUFFLE1BQU07S0FDWDtJQUNELElBQUksRUFBRTtRQUNKLEVBQUUsRUFBRSxXQUFXO1FBQ2YsRUFBRSxFQUFFLE1BQU07S0FDWDtJQUNELFFBQVEsRUFBRTtRQUNSLEVBQUUsRUFBRSxVQUFVO1FBQ2QsRUFBRSxFQUFFLFVBQVU7S0FDZjtJQUNELE1BQU0sRUFBRTtRQUNOLEVBQUUsRUFBRSxXQUFXO1FBQ2YsRUFBRSxFQUFFLFFBQVE7S0FDYjtJQUNELFFBQVEsRUFBRTtRQUNSLEVBQUUsRUFBRSxXQUFXO1FBQ2YsRUFBRSxFQUFFLFVBQVU7S0FDZjtJQUVELGlCQUFpQjtJQUNqQixHQUFHLEVBQUU7UUFDSCxFQUFFLEVBQUUsU0FBUztRQUNiLEVBQUUsRUFBRSxLQUFLO0tBQ1Y7SUFDRCxNQUFNLEVBQUU7UUFDTixFQUFFLEVBQUUsUUFBUTtRQUNaLEVBQUUsRUFBRSxRQUFRO0tBQ2I7SUFDRCxNQUFNLEVBQUU7UUFDTixFQUFFLEVBQUUsUUFBUTtRQUNaLEVBQUUsRUFBRSxRQUFRO0tBQ2I7SUFDRCxNQUFNLEVBQUU7UUFDTixFQUFFLEVBQUUsU0FBUztRQUNiLEVBQUUsRUFBRSxRQUFRO0tBQ2I7SUFDRCxJQUFJLEVBQUU7UUFDSixFQUFFLEVBQUUsU0FBUztRQUNiLEVBQUUsRUFBRSxNQUFNO0tBQ1g7SUFDRCxPQUFPLEVBQUU7UUFDUCxFQUFFLEVBQUUsWUFBWTtRQUNoQixFQUFFLEVBQUUsU0FBUztLQUNkO0lBRUQsNkJBQTZCO0lBQzdCLE9BQU8sRUFBRTtRQUNQLEVBQUUsRUFBRSxhQUFhO1FBQ2pCLEVBQUUsRUFBRSxZQUFZO0tBQ2pCO0lBQ0QsTUFBTSxFQUFFO1FBQ04sRUFBRSxFQUFFLDBCQUEwQjtRQUM5QixFQUFFLEVBQUUsbUJBQW1CO0tBQ3hCO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsRUFBRSxFQUFFLE9BQU87UUFDWCxFQUFFLEVBQUUsT0FBTztLQUNaO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsRUFBRSxFQUFFLE9BQU87UUFDWCxFQUFFLEVBQUUsU0FBUztLQUNkO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsRUFBRSxFQUFFLGFBQWE7UUFDakIsRUFBRSxFQUFFLFNBQVM7S0FDZDtJQUNELElBQUksRUFBRTtRQUNKLEVBQUUsRUFBRSxhQUFhO1FBQ2pCLEVBQUUsRUFBRSxhQUFhO0tBQ2xCO0lBRUQsdUJBQXVCO0lBQ3ZCLFVBQVUsRUFBRTtRQUNWLEVBQUUsRUFBRSxnQkFBZ0I7UUFDcEIsRUFBRSxFQUFFLGVBQWU7S0FDcEI7SUFDRCxrQkFBa0IsRUFBRTtRQUNsQixFQUFFLEVBQUUsa0RBQWtEO1FBQ3RELEVBQUUsRUFBRSw2Q0FBNkM7S0FDbEQ7SUFDRCxjQUFjLEVBQUU7UUFDZCxFQUFFLEVBQUUsZ0RBQWdEO1FBQ3BELEVBQUUsRUFBRSxvREFBb0Q7S0FDekQ7SUFFRCxxQkFBcUI7SUFDckIsUUFBUSxFQUFFO1FBQ1IsRUFBRSxFQUFFLFdBQVc7UUFDZixFQUFFLEVBQUUsVUFBVTtLQUNmO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsRUFBRSxFQUFFLFVBQVU7UUFDZCxFQUFFLEVBQUUsVUFBVTtLQUNmO0lBRUQsc0JBQXNCO0lBQ3RCLGlCQUFpQixFQUFFO1FBQ2pCLEVBQUUsRUFBRSxXQUFXO1FBQ2YsRUFBRSxFQUFFLFdBQVc7S0FDaEI7Q0FDRixDQUFDO0FBRUYsTUFBTSxhQUFhLEdBQUcsSUFBSSxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUV6RCxNQUFNLE9BQU8sR0FBYTtJQUN4QixPQUFPLEVBQUUsYUFBYTtJQUN0QixZQUFZO0lBQ1osYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixvQkFBb0I7Q0FDckIsQ0FBQztBQUVGLGVBQWUsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEdsb2JhbENvbnRlbnRFeGFtcGxlIGZyb20gJy4uLy4uL2NvbXBvbmVudHMvX2V4YW1wbGVzL2dsb2JhbC1jb250ZW50LWV4YW1wbGUtY29udGVudCc7XG5pbXBvcnQgUmVhY3RpdmVDb250ZW50RXhhbXBsZSBmcm9tICcuLi8uLi9jb21wb25lbnRzL19leGFtcGxlcy9yZWFjdGl2ZS1jb250ZW50LWV4YW1wbGUtY29udGVudCc7XG5pbXBvcnQgTGFuZ1NldHRpbmdzIGZyb20gJy4vY29tcG9uZW50cy9sYW5nLXNldHRpbmdzJztcbmltcG9ydCBUaGVtZVNldHRpbmdzIGZyb20gJy4vY29tcG9uZW50cy90aGVtZS1zZXR0aW5ncyc7XG5pbXBvcnQgeyBMYW5ndWFnZXNDb250ZW50LCBUZXh0Q29udGVudCB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3ZpZGVyIHtcbiAgW3g6IHN0cmluZ106IFRleHRDb250ZW50O1xufVxuXG4vKipcbiAqIEdsb2JhbCBjb250ZW50IHRoYXQgY2FuIGJlIHVzZWQgYWNyb3NzIGFsbCBjb21wb25lbnRzLlxuICogVGhlc2UgYXJlIGNvbW1vbiB0ZXh0cyBsaWtlIGJ1dHRvbnMsIGFjdGlvbnMsIHN0YXRlcywgZXRjLlxuICovXG5jb25zdCBnbG9iYWxDb250ZW50RGF0YTogTGFuZ3VhZ2VzQ29udGVudCA9IHtcbiAgLy8gQ29tbW9uIGJ1dHRvbnNcbiAgb2s6IHtcbiAgICBlczogJ0FjZXB0YXInLFxuICAgIGVuOiAnT0snLFxuICB9LFxuICBjYW5jZWw6IHtcbiAgICBlczogJ0NhbmNlbGFyJyxcbiAgICBlbjogJ0NhbmNlbCcsXG4gIH0sXG4gIHNhdmU6IHtcbiAgICBlczogJ0d1YXJkYXInLFxuICAgIGVuOiAnU2F2ZScsXG4gIH0sXG4gIGRlbGV0ZToge1xuICAgIGVzOiAnRWxpbWluYXInLFxuICAgIGVuOiAnRGVsZXRlJyxcbiAgfSxcbiAgZWRpdDoge1xuICAgIGVzOiAnRWRpdGFyJyxcbiAgICBlbjogJ0VkaXQnLFxuICB9LFxuICBjbG9zZToge1xuICAgIGVzOiAnQ2VycmFyJyxcbiAgICBlbjogJ0Nsb3NlJyxcbiAgfSxcbiAgYmFjazoge1xuICAgIGVzOiAnVm9sdmVyJyxcbiAgICBlbjogJ0JhY2snLFxuICB9LFxuICBuZXh0OiB7XG4gICAgZXM6ICdTaWd1aWVudGUnLFxuICAgIGVuOiAnTmV4dCcsXG4gIH0sXG4gIHByZXZpb3VzOiB7XG4gICAgZXM6ICdBbnRlcmlvcicsXG4gICAgZW46ICdQcmV2aW91cycsXG4gIH0sXG4gIGZpbmlzaDoge1xuICAgIGVzOiAnRmluYWxpemFyJyxcbiAgICBlbjogJ0ZpbmlzaCcsXG4gIH0sXG4gIGNvbnRpbnVlOiB7XG4gICAgZXM6ICdDb250aW51YXInLFxuICAgIGVuOiAnQ29udGludWUnLFxuICB9LFxuXG4gIC8vIENvbW1vbiBhY3Rpb25zXG4gIGFkZDoge1xuICAgIGVzOiAnQWdyZWdhcicsXG4gICAgZW46ICdBZGQnLFxuICB9LFxuICByZW1vdmU6IHtcbiAgICBlczogJ1F1aXRhcicsXG4gICAgZW46ICdSZW1vdmUnLFxuICB9LFxuICBzZWFyY2g6IHtcbiAgICBlczogJ0J1c2NhcicsXG4gICAgZW46ICdTZWFyY2gnLFxuICB9LFxuICBmaWx0ZXI6IHtcbiAgICBlczogJ0ZpbHRyYXInLFxuICAgIGVuOiAnRmlsdGVyJyxcbiAgfSxcbiAgc29ydDoge1xuICAgIGVzOiAnT3JkZW5hcicsXG4gICAgZW46ICdTb3J0JyxcbiAgfSxcbiAgcmVmcmVzaDoge1xuICAgIGVzOiAnQWN0dWFsaXphcicsXG4gICAgZW46ICdSZWZyZXNoJyxcbiAgfSxcblxuICAvLyBDb21tb24gc3RhdGVzIGFuZCBtZXNzYWdlc1xuICBsb2FkaW5nOiB7XG4gICAgZXM6ICdDYXJnYW5kby4uLicsXG4gICAgZW46ICdMb2FkaW5nLi4uJyxcbiAgfSxcbiAgbm9EYXRhOiB7XG4gICAgZXM6ICdObyBoYXkgZGF0b3MgZGlzcG9uaWJsZXMnLFxuICAgIGVuOiAnTm8gZGF0YSBhdmFpbGFibGUnLFxuICB9LFxuICBlcnJvcjoge1xuICAgIGVzOiAnRXJyb3InLFxuICAgIGVuOiAnRXJyb3InLFxuICB9LFxuICBzdWNjZXNzOiB7XG4gICAgZXM6ICfDiXhpdG8nLFxuICAgIGVuOiAnU3VjY2VzcycsXG4gIH0sXG4gIHdhcm5pbmc6IHtcbiAgICBlczogJ0FkdmVydGVuY2lhJyxcbiAgICBlbjogJ1dhcm5pbmcnLFxuICB9LFxuICBpbmZvOiB7XG4gICAgZXM6ICdJbmZvcm1hY2nDs24nLFxuICAgIGVuOiAnSW5mb3JtYXRpb24nLFxuICB9LFxuXG4gIC8vIENvbW1vbiBjb25maXJtYXRpb25zXG4gIGFyZVlvdVN1cmU6IHtcbiAgICBlczogJ8K/RXN0w6FzIHNlZ3Vybz8nLFxuICAgIGVuOiAnQXJlIHlvdSBzdXJlPycsXG4gIH0sXG4gIGRlbGV0ZUNvbmZpcm1hdGlvbjoge1xuICAgIGVzOiAnwr9Fc3TDoXMgc2VndXJvIGRlIHF1ZSBkZXNlYXMgZWxpbWluYXIge2l0ZW1OYW1lfT8nLFxuICAgIGVuOiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB7aXRlbU5hbWV9PycsXG4gIH0sXG4gIHVuc2F2ZWRDaGFuZ2VzOiB7XG4gICAgZXM6ICdUaWVuZXMgY2FtYmlvcyBzaW4gZ3VhcmRhci4gwr9EZXNlYXMgY29udGludWFyPycsXG4gICAgZW46ICdZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMuIERvIHlvdSB3YW50IHRvIGNvbnRpbnVlPycsXG4gIH0sXG5cbiAgLy8gQ29tbW9uIGZvcm0gbGFiZWxzXG4gIHJlcXVpcmVkOiB7XG4gICAgZXM6ICdSZXF1ZXJpZG8nLFxuICAgIGVuOiAnUmVxdWlyZWQnLFxuICB9LFxuICBvcHRpb25hbDoge1xuICAgIGVzOiAnT3BjaW9uYWwnLFxuICAgIGVuOiAnT3B0aW9uYWwnLFxuICB9LFxuXG4gIC8vIENvbW1vbiBwbGFjZWhvbGRlcnNcbiAgc2VhcmNoUGxhY2Vob2xkZXI6IHtcbiAgICBlczogJ0J1c2Nhci4uLicsXG4gICAgZW46ICdTZWFyY2guLi4nLFxuICB9LFxufTtcblxuY29uc3QgR2xvYmFsQ29udGVudCA9IG5ldyBUZXh0Q29udGVudChnbG9iYWxDb250ZW50RGF0YSk7XG5cbmNvbnN0IGNvbnRlbnQ6IFByb3ZpZGVyID0ge1xuICBfZ2xvYmFsOiBHbG9iYWxDb250ZW50LFxuICBMYW5nU2V0dGluZ3MsXG4gIFRoZW1lU2V0dGluZ3MsXG4gIFJlYWN0aXZlQ29udGVudEV4YW1wbGUsXG4gIEdsb2JhbENvbnRlbnRFeGFtcGxlLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY29udGVudDtcbiJdfQ==