@ngxsmk/theme 2.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -9
- package/esm2022/lib/css.mjs +155 -4
- package/esm2022/lib/define-config.mjs +3 -3
- package/esm2022/lib/ionic-provider.mjs +30 -0
- package/esm2022/lib/presets.mjs +167 -1
- package/esm2022/lib/theme-injector.service.mjs +17 -8
- package/esm2022/lib/token-adapter.mjs +154 -49
- package/esm2022/lib/tokens.mjs +10 -1
- package/esm2022/lib/types.mjs +1 -1
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/ngxsmk-theme.mjs +529 -62
- package/fesm2022/ngxsmk-theme.mjs.map +1 -1
- package/lib/css.d.ts.map +1 -1
- package/lib/ionic-provider.d.ts +18 -0
- package/lib/ionic-provider.d.ts.map +1 -0
- package/lib/presets.d.ts +14 -0
- package/lib/presets.d.ts.map +1 -1
- package/lib/theme-injector.service.d.ts.map +1 -1
- package/lib/token-adapter.d.ts +9 -7
- package/lib/token-adapter.d.ts.map +1 -1
- package/lib/tokens.d.ts +9 -0
- package/lib/tokens.d.ts.map +1 -1
- package/lib/types.d.ts +13 -0
- package/lib/types.d.ts.map +1 -1
- package/package.json +6 -2
- package/public-api.d.ts +1 -0
- package/public-api.d.ts.map +1 -1
- package/styles/ngxsmk.css +113 -3
- package/styles/ngxsmk.emerald.css +113 -3
- package/styles/ngxsmk.ink.css +500 -0
- package/styles/ngxsmk.neutral.css +113 -3
- package/styles/ngxsmk.rose.css +113 -3
- package/styles/ngxsmk.violet.css +113 -3
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @ngxsmk/theme
|
|
2
2
|
|
|
3
|
-
The design-token engine of the [NGXSMK UI kit](https://ngxsmk.github.io/ngxsmk-ui-kit). A `ThemeConfig` maps to a flat set of `--ngxsmk-*` CSS custom properties that every `@ngxsmk/core` component reads. Ships
|
|
3
|
+
The design-token engine of the [NGXSMK UI kit](https://ngxsmk.github.io/ngxsmk-ui-kit) ([WhatsApp Channel](https://whatsapp.com/channel/0029Vb8PWpz1XquUOnGPUM2p)). A `ThemeConfig` maps to a flat set of `--ngxsmk-*` CSS custom properties that every `@ngxsmk/core` component reads. Ships Classic emerald (default), opt-in **Ink** premium, plus violet/neutral/rose; light/dark/system strategies; and runtime theme switching via `NgxsmkThemeService`.
|
|
4
4
|
|
|
5
5
|
## Compatibility
|
|
6
6
|
|
|
@@ -35,21 +35,43 @@ import { NgxsmkThemeService, emeraldPreset } from '@ngxsmk/theme';
|
|
|
35
35
|
constructor(private theme: NgxsmkThemeService) {}
|
|
36
36
|
|
|
37
37
|
ngOnInit() {
|
|
38
|
-
this.theme.applyTheme(emeraldPreset); // emerald | violet | neutral | rose
|
|
38
|
+
this.theme.applyTheme(emeraldPreset); // emerald | ink | violet | neutral | rose
|
|
39
39
|
this.theme.setMode('dark'); // 'light' | 'dark' | 'system'
|
|
40
40
|
}
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
## Presets
|
|
44
44
|
|
|
45
|
-
| Preset | Primary color |
|
|
46
|
-
| --------- | ------------------- |
|
|
47
|
-
| `emerald` | `#059669` (default) |
|
|
48
|
-
| `
|
|
49
|
-
| `
|
|
50
|
-
| `
|
|
45
|
+
| Preset | Primary color | Notes |
|
|
46
|
+
| --------- | ------------------- | ---------------------------------------------------------- |
|
|
47
|
+
| `emerald` | `#059669` (default) | Classic look — **stable** for existing apps (`ngxsmk.css`) |
|
|
48
|
+
| `ink` | `#0D9488` | Opt-in premium (graphite, Geist Sans, sharper radii) |
|
|
49
|
+
| `violet` | `#7C3AED` | |
|
|
50
|
+
| `neutral` | `#18181B` | |
|
|
51
|
+
| `rose` | `#E11D48` | |
|
|
51
52
|
|
|
52
|
-
|
|
53
|
+
### Classic vs Ink (existing consumers)
|
|
54
|
+
|
|
55
|
+
Default stylesheet stays Classic emerald so upgrades do not silently restyle your app:
|
|
56
|
+
|
|
57
|
+
```scss
|
|
58
|
+
/* Keep today's look (default) */
|
|
59
|
+
@import '@ngxsmk/theme/styles/ngxsmk.css';
|
|
60
|
+
|
|
61
|
+
/* Opt into the premium Ink look */
|
|
62
|
+
@import '@ngxsmk/theme/styles/ngxsmk.ink.css';
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Or at runtime:
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
import { inkPreset } from '@ngxsmk/theme';
|
|
69
|
+
this.theme.applyTheme(inkPreset);
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
A future **major** may flip the default to Ink and ship `ngxsmk.classic.css` for holdouts. Until then, Classic is the safe default.
|
|
73
|
+
|
|
74
|
+
Presets are plain `ThemeConfig` objects exported from the package, so you can spread and override any of them. Use `radiusScale` / `shadowScale` for ladder overrides without forking the whole engine.
|
|
53
75
|
|
|
54
76
|
## Token model
|
|
55
77
|
|
|
@@ -86,6 +108,25 @@ this.theme.applyTheme({
|
|
|
86
108
|
|
|
87
109
|
Per-mode token overrides are supported via the `overrides: { light, dark }` field for fine control in light and dark modes.
|
|
88
110
|
|
|
111
|
+
## Ionic Angular
|
|
112
|
+
|
|
113
|
+
Sync NGXSMK tokens into Ionic’s `--ion-*` variables so web kit and mobile shell share one palette:
|
|
114
|
+
|
|
115
|
+
```ts
|
|
116
|
+
import { ApplicationConfig } from '@angular/core';
|
|
117
|
+
import { provideIonicAngular } from '@ionic/angular/standalone';
|
|
118
|
+
import { provideNgxsmkIonicTheme, inkPreset } from '@ngxsmk/theme';
|
|
119
|
+
|
|
120
|
+
export const appConfig: ApplicationConfig = {
|
|
121
|
+
providers: [
|
|
122
|
+
provideIonicAngular(),
|
|
123
|
+
provideNgxsmkIonicTheme(), // or provideNgxsmkIonicTheme(inkPreset)
|
|
124
|
+
],
|
|
125
|
+
};
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Keep Ionic for navigation (`ion-tabs`, `ion-menu`, page lifecycle). Use `@ngxsmk/core` components for dense product UI. Agents can call MCP tool `ngxsmk_ionic_setup` for a full recipe.
|
|
129
|
+
|
|
89
130
|
## Tree-shaking & deep imports
|
|
90
131
|
|
|
91
132
|
Prefer deep entry points (e.g. `@ngxsmk/theme/styles/ngxsmk.css`) and import only what you use. The package is side-effect-free except for its stylesheets.
|
package/esm2022/lib/css.mjs
CHANGED
|
@@ -17,12 +17,25 @@ const COMPONENT_TOKEN_DEFAULTS = {
|
|
|
17
17
|
'--ngxsmk-button-font-weight': '500',
|
|
18
18
|
'--ngxsmk-button-radius': 'var(--ngxsmk-radius-base)',
|
|
19
19
|
'--ngxsmk-button-disabled-opacity': '0.5',
|
|
20
|
+
'--ngxsmk-button-border-width': '1px',
|
|
21
|
+
'--ngxsmk-button-gap': 'var(--ngxsmk-space-2)',
|
|
22
|
+
},
|
|
23
|
+
input: {
|
|
24
|
+
'--ngxsmk-input-bg': 'var(--ngxsmk-color-surface)',
|
|
25
|
+
'--ngxsmk-input-color': 'var(--ngxsmk-color-on-surface)',
|
|
26
|
+
'--ngxsmk-input-border': 'var(--ngxsmk-color-outline-strong)',
|
|
27
|
+
'--ngxsmk-input-radius': 'var(--ngxsmk-radius-base)',
|
|
28
|
+
'--ngxsmk-input-height': 'var(--ngxsmk-control-height)',
|
|
29
|
+
'--ngxsmk-input-padding-inline': 'var(--ngxsmk-space-3)',
|
|
30
|
+
'--ngxsmk-input-placeholder': 'var(--ngxsmk-color-on-surface-variant)',
|
|
20
31
|
},
|
|
21
32
|
card: {
|
|
22
33
|
'--ngxsmk-card-bg': 'var(--ngxsmk-color-surface)',
|
|
23
34
|
'--ngxsmk-card-radius': 'var(--ngxsmk-radius-xl)',
|
|
24
35
|
'--ngxsmk-card-shadow': 'var(--ngxsmk-shadow-sm)',
|
|
25
36
|
'--ngxsmk-card-border-color': 'var(--ngxsmk-color-outline)',
|
|
37
|
+
'--ngxsmk-card-border-width': '1px',
|
|
38
|
+
'--ngxsmk-card-padding': 'var(--ngxsmk-space-5)',
|
|
26
39
|
},
|
|
27
40
|
accordion: {
|
|
28
41
|
'--ngxsmk-accordion-bg': 'var(--ngxsmk-color-surface)',
|
|
@@ -44,6 +57,122 @@ const COMPONENT_TOKEN_DEFAULTS = {
|
|
|
44
57
|
'--ngxsmk-switch-thumb-bg': 'var(--ngxsmk-color-surface)',
|
|
45
58
|
'--ngxsmk-switch-checked-bg': 'var(--ngxsmk-color-primary)',
|
|
46
59
|
},
|
|
60
|
+
checkbox: {
|
|
61
|
+
'--ngxsmk-checkbox-size': '1.125rem',
|
|
62
|
+
'--ngxsmk-checkbox-radius': 'var(--ngxsmk-radius-sm)',
|
|
63
|
+
'--ngxsmk-checkbox-border': 'var(--ngxsmk-color-outline-strong)',
|
|
64
|
+
'--ngxsmk-checkbox-checked-bg': 'var(--ngxsmk-color-primary)',
|
|
65
|
+
},
|
|
66
|
+
badge: {
|
|
67
|
+
'--ngxsmk-badge-radius': 'var(--ngxsmk-radius-full)',
|
|
68
|
+
'--ngxsmk-badge-font-weight': '600',
|
|
69
|
+
'--ngxsmk-badge-padding-inline': '0.5rem',
|
|
70
|
+
'--ngxsmk-badge-padding-block': '0.125rem',
|
|
71
|
+
'--ngxsmk-badge-border-mix': '20%',
|
|
72
|
+
},
|
|
73
|
+
alert: {
|
|
74
|
+
'--ngxsmk-alert-radius': 'var(--ngxsmk-radius-lg)',
|
|
75
|
+
'--ngxsmk-alert-border-mix': '22%',
|
|
76
|
+
'--ngxsmk-alert-padding': 'var(--ngxsmk-space-4)',
|
|
77
|
+
},
|
|
78
|
+
dialog: {
|
|
79
|
+
'--ngxsmk-dialog-radius': 'var(--ngxsmk-radius-2xl)',
|
|
80
|
+
'--ngxsmk-dialog-shadow': 'var(--ngxsmk-shadow-xl)',
|
|
81
|
+
'--ngxsmk-dialog-bg': 'var(--ngxsmk-color-surface-elevated)',
|
|
82
|
+
'--ngxsmk-dialog-backdrop': 'var(--ngxsmk-color-backdrop)',
|
|
83
|
+
'--ngxsmk-dialog-blur': '4px',
|
|
84
|
+
'--ngxsmk-dialog-max-width': '28rem',
|
|
85
|
+
},
|
|
86
|
+
sheet: {
|
|
87
|
+
'--ngxsmk-sheet-radius': 'var(--ngxsmk-radius-xl)',
|
|
88
|
+
'--ngxsmk-sheet-shadow': 'var(--ngxsmk-shadow-xl)',
|
|
89
|
+
'--ngxsmk-sheet-bg': 'var(--ngxsmk-color-surface-elevated)',
|
|
90
|
+
'--ngxsmk-sheet-backdrop': 'var(--ngxsmk-color-backdrop)',
|
|
91
|
+
'--ngxsmk-sheet-width': '24rem',
|
|
92
|
+
},
|
|
93
|
+
lightbox: {
|
|
94
|
+
'--ngxsmk-lightbox-backdrop': 'rgb(0 0 0 / 0.9)',
|
|
95
|
+
'--ngxsmk-lightbox-fg': '#ffffff',
|
|
96
|
+
'--ngxsmk-lightbox-control-bg': 'rgb(255 255 255 / 0.12)',
|
|
97
|
+
'--ngxsmk-lightbox-control-bg-hover': 'rgb(255 255 255 / 0.22)',
|
|
98
|
+
},
|
|
99
|
+
toast: {
|
|
100
|
+
'--ngxsmk-toast-radius': 'var(--ngxsmk-radius-lg)',
|
|
101
|
+
'--ngxsmk-toast-shadow': 'var(--ngxsmk-shadow-lg)',
|
|
102
|
+
'--ngxsmk-toast-bg': 'var(--ngxsmk-color-surface-elevated)',
|
|
103
|
+
'--ngxsmk-toast-accent-width': '3px',
|
|
104
|
+
},
|
|
105
|
+
table: {
|
|
106
|
+
'--ngxsmk-table-border': 'var(--ngxsmk-color-outline)',
|
|
107
|
+
'--ngxsmk-table-header-bg': 'color-mix(in srgb, var(--ngxsmk-color-surface-variant) 55%, transparent)',
|
|
108
|
+
'--ngxsmk-table-row-hover': 'var(--ngxsmk-color-surface-hover)',
|
|
109
|
+
'--ngxsmk-table-stripe': 'color-mix(in srgb, var(--ngxsmk-color-surface-variant) 35%, transparent)',
|
|
110
|
+
'--ngxsmk-table-drop-indicator': 'inset 2px 0 0 var(--ngxsmk-color-primary)',
|
|
111
|
+
'--ngxsmk-table-cell-padding': '0.625rem 0.75rem',
|
|
112
|
+
},
|
|
113
|
+
tabs: {
|
|
114
|
+
'--ngxsmk-tabs-indicator': '2px',
|
|
115
|
+
'--ngxsmk-tabs-radius': 'var(--ngxsmk-radius-md)',
|
|
116
|
+
'--ngxsmk-tabs-gap': 'var(--ngxsmk-space-1)',
|
|
117
|
+
},
|
|
118
|
+
select: {
|
|
119
|
+
'--ngxsmk-select-bg': 'var(--ngxsmk-color-surface)',
|
|
120
|
+
'--ngxsmk-select-border': 'var(--ngxsmk-color-outline-strong)',
|
|
121
|
+
'--ngxsmk-select-radius': 'var(--ngxsmk-radius-base)',
|
|
122
|
+
'--ngxsmk-select-list-shadow': 'var(--ngxsmk-shadow-lg)',
|
|
123
|
+
'--ngxsmk-select-list-radius': 'var(--ngxsmk-radius-lg)',
|
|
124
|
+
},
|
|
125
|
+
menu: {
|
|
126
|
+
'--ngxsmk-menu-bg': 'var(--ngxsmk-color-surface-elevated)',
|
|
127
|
+
'--ngxsmk-menu-radius': 'var(--ngxsmk-radius-lg)',
|
|
128
|
+
'--ngxsmk-menu-shadow': 'var(--ngxsmk-shadow-lg)',
|
|
129
|
+
'--ngxsmk-menu-border': 'var(--ngxsmk-color-outline)',
|
|
130
|
+
'--ngxsmk-menu-item-radius': 'var(--ngxsmk-radius-md)',
|
|
131
|
+
},
|
|
132
|
+
pagination: {
|
|
133
|
+
'--ngxsmk-pagination-size': '2.25rem',
|
|
134
|
+
'--ngxsmk-pagination-radius': 'var(--ngxsmk-radius-md)',
|
|
135
|
+
},
|
|
136
|
+
formField: {
|
|
137
|
+
'--ngxsmk-form-field-gap': 'var(--ngxsmk-space-1-5)',
|
|
138
|
+
'--ngxsmk-form-field-label-weight': '500',
|
|
139
|
+
},
|
|
140
|
+
radio: {
|
|
141
|
+
'--ngxsmk-radio-size': '1.125rem',
|
|
142
|
+
'--ngxsmk-radio-dot-size': '0.5rem',
|
|
143
|
+
'--ngxsmk-radio-border': 'var(--ngxsmk-color-outline-strong)',
|
|
144
|
+
},
|
|
145
|
+
dataTable: {
|
|
146
|
+
'--ngxsmk-data-table-border': 'var(--ngxsmk-color-outline)',
|
|
147
|
+
'--ngxsmk-data-table-radius': 'var(--ngxsmk-radius-md)',
|
|
148
|
+
'--ngxsmk-data-table-filter-bg': 'color-mix(in srgb, var(--ngxsmk-color-surface-variant) 40%, transparent)',
|
|
149
|
+
'--ngxsmk-data-table-filter-label-size': '0.7rem',
|
|
150
|
+
'--ngxsmk-data-table-page-size': '2rem',
|
|
151
|
+
'--ngxsmk-data-table-loading-height': '3px',
|
|
152
|
+
},
|
|
153
|
+
aiChat: {
|
|
154
|
+
'--ngxsmk-ai-chat-radius': 'var(--ngxsmk-radius-xl)',
|
|
155
|
+
'--ngxsmk-ai-chat-border': 'var(--ngxsmk-color-outline)',
|
|
156
|
+
'--ngxsmk-ai-chat-bg': 'var(--ngxsmk-color-surface)',
|
|
157
|
+
'--ngxsmk-ai-chat-header-bg': 'var(--ngxsmk-color-surface-variant)',
|
|
158
|
+
'--ngxsmk-ai-chat-bubble-bg': 'var(--ngxsmk-color-surface-variant)',
|
|
159
|
+
'--ngxsmk-ai-chat-bubble-user-bg': 'var(--ngxsmk-color-primary)',
|
|
160
|
+
'--ngxsmk-ai-chat-bubble-radius': 'var(--ngxsmk-radius-lg)',
|
|
161
|
+
'--ngxsmk-ai-chat-composer-radius': 'var(--ngxsmk-radius-full)',
|
|
162
|
+
},
|
|
163
|
+
promptInput: {
|
|
164
|
+
'--ngxsmk-prompt-radius': 'var(--ngxsmk-radius-xl)',
|
|
165
|
+
'--ngxsmk-prompt-border': 'var(--ngxsmk-color-outline-strong)',
|
|
166
|
+
'--ngxsmk-prompt-shadow': 'var(--ngxsmk-shadow-sm)',
|
|
167
|
+
'--ngxsmk-prompt-bg': 'var(--ngxsmk-color-surface)',
|
|
168
|
+
'--ngxsmk-prompt-send-radius': 'var(--ngxsmk-radius-full)',
|
|
169
|
+
},
|
|
170
|
+
chatBubble: {
|
|
171
|
+
'--ngxsmk-chat-bubble-radius': 'var(--ngxsmk-radius-lg)',
|
|
172
|
+
'--ngxsmk-chat-bubble-bg': 'var(--ngxsmk-color-surface-container)',
|
|
173
|
+
'--ngxsmk-chat-bubble-user-bg': 'var(--ngxsmk-color-primary-container)',
|
|
174
|
+
'--ngxsmk-chat-bubble-padding': 'var(--ngxsmk-space-2) var(--ngxsmk-space-3)',
|
|
175
|
+
},
|
|
47
176
|
spreadsheet: {
|
|
48
177
|
'--ngxsmk-spreadsheet-bg': 'var(--ngxsmk-color-surface)',
|
|
49
178
|
'--ngxsmk-spreadsheet-header-bg': 'var(--ngxsmk-color-surface-variant)',
|
|
@@ -75,16 +204,22 @@ const COMPONENT_TOKEN_DEFAULTS = {
|
|
|
75
204
|
'--ngxsmk-input-group-radius': 'var(--ngxsmk-radius-md)',
|
|
76
205
|
'--ngxsmk-input-group-shadow': 'none',
|
|
77
206
|
'--ngxsmk-input-group-focus-border': 'var(--ngxsmk-color-primary)',
|
|
78
|
-
'--ngxsmk-input-group-focus-shadow': '
|
|
207
|
+
'--ngxsmk-input-group-focus-shadow': 'var(--ngxsmk-focus-ring)',
|
|
79
208
|
'--ngxsmk-input-group-error-border': 'var(--ngxsmk-color-error)',
|
|
80
|
-
'--ngxsmk-input-group-error-focus-shadow': '
|
|
209
|
+
'--ngxsmk-input-group-error-focus-shadow': 'var(--ngxsmk-focus-ring-error)',
|
|
81
210
|
'--ngxsmk-input-group-success-border': 'var(--ngxsmk-color-success)',
|
|
82
211
|
'--ngxsmk-input-group-warning-border': 'var(--ngxsmk-color-warning)',
|
|
83
|
-
'--ngxsmk-input-group-height': '
|
|
212
|
+
'--ngxsmk-input-group-height': 'var(--ngxsmk-control-height)',
|
|
84
213
|
'--ngxsmk-input-group-padding': '0.75rem',
|
|
85
214
|
'--ngxsmk-input-group-gap': 'var(--ngxsmk-space-2)',
|
|
86
215
|
'--ngxsmk-input-group-font': 'var(--ngxsmk-font-sans)',
|
|
87
216
|
},
|
|
217
|
+
heatmap: {
|
|
218
|
+
'--ngxsmk-heatmap-level-1': 'color-mix(in srgb, var(--ngxsmk-color-success) 28%, var(--ngxsmk-color-surface-variant))',
|
|
219
|
+
'--ngxsmk-heatmap-level-2': 'color-mix(in srgb, var(--ngxsmk-color-success) 52%, var(--ngxsmk-color-surface-variant))',
|
|
220
|
+
'--ngxsmk-heatmap-level-3': 'color-mix(in srgb, var(--ngxsmk-color-success) 76%, var(--ngxsmk-color-surface-variant))',
|
|
221
|
+
'--ngxsmk-heatmap-level-4': 'var(--ngxsmk-color-success)',
|
|
222
|
+
},
|
|
88
223
|
};
|
|
89
224
|
/** Tokens that do not change between light and dark mode. */
|
|
90
225
|
function staticVars(theme) {
|
|
@@ -109,6 +244,12 @@ function staticVars(theme) {
|
|
|
109
244
|
'--ngxsmk-focus-ring': 'var(--ngxsmk-shadow-focus)',
|
|
110
245
|
'--ngxsmk-focus-ring-error': '0 0 0 2px color-mix(in srgb, var(--ngxsmk-color-error) 15%, transparent), ' +
|
|
111
246
|
'0 0 0 4px color-mix(in srgb, var(--ngxsmk-color-error) 45%, transparent)',
|
|
247
|
+
// Mobile viewport & safe-area tokens (iOS / Android / Ionic)
|
|
248
|
+
'--ngxsmk-safe-area-top': 'env(safe-area-inset-top, 0px)',
|
|
249
|
+
'--ngxsmk-safe-area-bottom': 'env(safe-area-inset-bottom, 0px)',
|
|
250
|
+
'--ngxsmk-safe-area-left': 'env(safe-area-inset-left, 0px)',
|
|
251
|
+
'--ngxsmk-safe-area-right': 'env(safe-area-inset-right, 0px)',
|
|
252
|
+
'--ngxsmk-touch-target-min': '44px',
|
|
112
253
|
// Component-specific token defaults
|
|
113
254
|
...Object.values(COMPONENT_TOKEN_DEFAULTS).reduce((merged, tokens) => ({ ...merged, ...tokens }), {}),
|
|
114
255
|
};
|
|
@@ -187,12 +328,17 @@ function lightVars(theme) {
|
|
|
187
328
|
'--ngxsmk-color-on-surface': '#0A1317',
|
|
188
329
|
'--ngxsmk-color-surface-variant': theme.neutral[100],
|
|
189
330
|
'--ngxsmk-color-on-surface-variant': theme.neutral[500],
|
|
331
|
+
'--ngxsmk-color-surface-muted': theme.neutral[50],
|
|
332
|
+
'--ngxsmk-color-surface-elevated': '#FFFFFF',
|
|
333
|
+
'--ngxsmk-color-surface-overlay': '#FFFFFF',
|
|
334
|
+
'--ngxsmk-color-on-surface-muted': theme.neutral[400],
|
|
190
335
|
'--ngxsmk-color-surface-hover': 'rgb(5 54 89 / 0.05)',
|
|
191
336
|
'--ngxsmk-color-surface-active': 'rgb(5 54 89 / 0.1)',
|
|
192
337
|
'--ngxsmk-color-surface-container': '#FFFFFF',
|
|
193
338
|
'--ngxsmk-color-outline': 'rgb(5 54 89 / 0.1)',
|
|
194
339
|
'--ngxsmk-color-outline-strong': theme.neutral[200],
|
|
195
340
|
'--ngxsmk-color-outline-variant': 'rgb(5 54 89 / 0.06)',
|
|
341
|
+
'--ngxsmk-color-outline-subtle': 'rgb(5 54 89 / 0.05)',
|
|
196
342
|
// Elevation ladder
|
|
197
343
|
'--ngxsmk-color-surface-1': '#FFFFFF',
|
|
198
344
|
'--ngxsmk-color-surface-2': theme.neutral[50],
|
|
@@ -254,12 +400,17 @@ function darkVars(theme) {
|
|
|
254
400
|
'--ngxsmk-color-on-surface': '#DFE2E5',
|
|
255
401
|
'--ngxsmk-color-surface-variant': '#28292C',
|
|
256
402
|
'--ngxsmk-color-on-surface-variant': '#AAAFB5',
|
|
403
|
+
'--ngxsmk-color-surface-muted': '#141416',
|
|
404
|
+
'--ngxsmk-color-surface-elevated': '#28292C',
|
|
405
|
+
'--ngxsmk-color-surface-overlay': '#2F3136',
|
|
406
|
+
'--ngxsmk-color-on-surface-muted': '#777C85',
|
|
257
407
|
'--ngxsmk-color-surface-hover': 'rgb(255 255 255 / 0.05)',
|
|
258
408
|
'--ngxsmk-color-surface-active': 'rgb(255 255 255 / 0.1)',
|
|
259
409
|
'--ngxsmk-color-surface-container': '#28292C',
|
|
260
410
|
'--ngxsmk-color-outline': 'rgb(242 244 246 / 0.1)',
|
|
261
411
|
'--ngxsmk-color-outline-strong': '#494D53',
|
|
262
412
|
'--ngxsmk-color-outline-variant': 'rgb(242 244 246 / 0.06)',
|
|
413
|
+
'--ngxsmk-color-outline-subtle': 'rgb(242 244 246 / 0.05)',
|
|
263
414
|
// Elevation ladder
|
|
264
415
|
'--ngxsmk-color-surface-1': theme.neutral[800],
|
|
265
416
|
'--ngxsmk-color-surface-2': theme.neutral[700],
|
|
@@ -353,4 +504,4 @@ export function buildThemeCss(config) {
|
|
|
353
504
|
].join('\n\n');
|
|
354
505
|
return `/* Generated by @ngxsmk/theme — do not edit by hand. */\n${root}\n\n${darkBlock}\n\n${reducedMotion}\n`;
|
|
355
506
|
}
|
|
356
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvc3JjL2xpYi9jc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLGVBQWUsRUFDZixXQUFXLEVBQ1gsU0FBUyxFQUNULE9BQU8sRUFDUCxPQUFPLEVBQ1AsUUFBUSxHQUNULE1BQU0sVUFBVSxDQUFDO0FBSWxCLFNBQVMsU0FBUyxDQUFDLE1BQWMsRUFBRSxLQUFpQjtJQUNsRCxNQUFNLElBQUksR0FBUyxFQUFFLENBQUM7SUFDdEIsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsa0JBQWtCLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsK0VBQStFO0FBQy9FLE1BQU0sd0JBQXdCLEdBQXlCO0lBQ3JELE1BQU0sRUFBRTtRQUNOLG9CQUFvQixFQUFFLDZCQUE2QjtRQUNuRCx1QkFBdUIsRUFBRSxnQ0FBZ0M7UUFDekQsNkJBQTZCLEVBQUUseUJBQXlCO1FBQ3hELDZCQUE2QixFQUFFLEtBQUs7UUFDcEMsd0JBQXdCLEVBQUUsMkJBQTJCO1FBQ3JELGtDQUFrQyxFQUFFLEtBQUs7S0FDMUM7SUFDRCxJQUFJLEVBQUU7UUFDSixrQkFBa0IsRUFBRSw2QkFBNkI7UUFDakQsc0JBQXNCLEVBQUUseUJBQXlCO1FBQ2pELHNCQUFzQixFQUFFLHlCQUF5QjtRQUNqRCw0QkFBNEIsRUFBRSw2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QUEwQztZQUMxQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztZQUNwQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuRSxDQUFDO0lBQ0gsQ0FBQztJQUVELHlFQUF5RTtJQUN6RSw0RUFBNEU7SUFDNUUseUVBQXlFO0lBQ3pFLE1BQU0sV0FBVyxHQUFTO1FBQ3hCLDBCQUEwQixFQUFFLEtBQUs7UUFDakMscUJBQXFCLEVBQUUsTUFBTTtRQUM3QixzQkFBc0IsRUFBRSxNQUFNO0tBQy9CLENBQUM7SUFDRixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDOUMsV0FBVyxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNsRCxDQUFDO0lBQ0QsTUFBTSxhQUFhLEdBQUc7UUFDcEIsOENBQThDLEtBQUssQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ3BGLEtBQUssQ0FBQyxtREFBbUQsRUFBRSxXQUFXLENBQUM7S0FDeEUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDZixPQUFPLDREQUE0RCxJQUFJLE9BQU8sU0FBUyxPQUFPLGFBQWEsSUFBSSxDQUFDO0FBQ2xILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXJpdmVTY2FsZSwgcm90YXRlSHVlLCBzaGlmdExpZ2h0bmVzcyB9IGZyb20gJy4vY29sb3InO1xuaW1wb3J0IHsgcmVzb2x2ZVRoZW1lIH0gZnJvbSAnLi9kZWZpbmUtY29uZmlnJztcbmltcG9ydCB7IENvbG9yU2NhbGUsIFJlc29sdmVkVGhlbWUsIFRoZW1lQ29uZmlnLCBUeXBlUm9sZVNpemUsIFR5cGVTdHlsZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgQ09OVFJPTF9IRUlHSFQsXG4gIENPTlRST0xfSEVJR0hUUyxcbiAgRk9OVF9XRUlHSFQsXG4gIElDT05fU0laRSxcbiAgTEVBRElORyxcbiAgT1BBQ0lUWSxcbiAgVFJBQ0tJTkcsXG59IGZyb20gJy4vdG9rZW5zJztcblxudHlwZSBWYXJzID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuZnVuY3Rpb24gc2NhbGVWYXJzKHByZWZpeDogc3RyaW5nLCBzY2FsZTogQ29sb3JTY2FsZSk6IFZhcnMge1xuICBjb25zdCB2YXJzOiBWYXJzID0ge307XG4gIGZvciAoY29uc3QgW3N0ZXAsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhzY2FsZSkpIHtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci0ke3ByZWZpeH0tJHtzdGVwfWBdID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHZhcnM7XG59XG5cbi8qKiBEZWZhdWx0IENTUyBjdXN0b20gcHJvcGVydGllcyBmb3IgZWFjaCBjb21wb25lbnQsIGVtaXR0ZWQgb25jZSBpbiA6cm9vdC4gKi9cbmNvbnN0IENPTVBPTkVOVF9UT0tFTl9ERUZBVUxUUzogUmVjb3JkPHN0cmluZywgVmFycz4gPSB7XG4gIGJ1dHRvbjoge1xuICAgICctLW5neHNtay1idXR0b24tYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXByaW1hcnkpJyxcbiAgICAnLS1uZ3hzbWstYnV0dG9uLWNvbG9yJzogJ3ZhcigtLW5neHNtay1jb2xvci1vbi1wcmltYXJ5KScsXG4gICAgJy0tbmd4c21rLWJ1dHRvbi1mb250LWZhbWlseSc6ICd2YXIoLS1uZ3hzbWstZm9udC1zYW5zKScsXG4gICAgJy0tbmd4c21rLWJ1dHRvbi1mb250LXdlaWdodCc6ICc1MDAnLFxuICAgICctLW5neHNtay1idXR0b24tcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMtYmFzZSknLFxuICAgICctLW5neHNtay1idXR0b24tZGlzYWJsZWQtb3BhY2l0eSc6ICcwLjUnLFxuICB9LFxuICBjYXJkOiB7XG4gICAgJy0tbmd4c21rLWNhcmQtYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UpJyxcbiAgICAnLS1uZ3hzbWstY2FyZC1yYWRpdXMnOiAndmFyKC0tbmd4c21rLXJhZGl1cy14bCknLFxuICAgICctLW5neHNtay1jYXJkLXNoYWRvdyc6ICd2YXIoLS1uZ3hzbWstc2hhZG93LXNtKScsXG4gICAgJy0tbmd4c21rLWNhcmQtYm9yZGVyLWNvbG9yJzogJ3ZhcigtLW5neHNtay1jb2xvci1vdXRsaW5lKScsXG4gIH0sXG4gIGFjY29yZGlvbjoge1xuICAgICctLW5neHNtay1hY2NvcmRpb24tYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UpJyxcbiAgICAnLS1uZ3hzbWstYWNjb3JkaW9uLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWxnKScsXG4gICAgJy0tbmd4c21rLWFjY29yZGlvbi1ib3JkZXItY29sb3InOiAndmFyKC0tbmd4c21rLWNvbG9yLW91dGxpbmUpJyxcbiAgfSxcbiAgcHJvZ3Jlc3M6IHtcbiAgICAnLS1uZ3hzbWstcHJvZ3Jlc3MtaGVpZ2h0JzogJzAuNXJlbScsXG4gICAgJy0tbmd4c21rLXByb2dyZXNzLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlLXZhcmlhbnQpJyxcbiAgICAnLS1uZ3hzbWstcHJvZ3Jlc3MtY29sb3InOiAndmFyKC0tbmd4c21rLWNvbG9yLXByaW1hcnkpJyxcbiAgICAnLS1uZ3hzbWstcHJvZ3Jlc3MtcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMtZnVsbCknLFxuICB9LFxuICBzd2l0Y2g6IHtcbiAgICAnLS1uZ3hzbWstc3dpdGNoLXdpZHRoJzogJzIuMjVyZW0nLFxuICAgICctLW5neHNtay1zd2l0Y2gtaGVpZ2h0JzogJzEuMjVyZW0nLFxuICAgICctLW5neHNtay1zd2l0Y2gtcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMtZnVsbCknLFxuICAgICctLW5neHNtay1zd2l0Y2gtYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLW91dGxpbmUtc3Ryb25nKScsXG4gICAgJy0tbmd4c21rLXN3aXRjaC10aHVtYi1zaXplJzogJzAuODc1cmVtJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLXRodW1iLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlKScsXG4gICAgJy0tbmd4c21rLXN3aXRjaC1jaGVja2VkLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1wcmltYXJ5KScsXG4gIH0sXG4gIHNwcmVhZHNoZWV0OiB7XG4gICAgJy0tbmd4c21rLXNwcmVhZHNoZWV0LWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlKScsXG4gICAgJy0tbmd4c21rLXNwcmVhZHNoZWV0LWhlYWRlci1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3Itc3VyZmFjZS12YXJpYW50KScsXG4gICAgJy0tbmd4c21rLXNwcmVhZHNoZWV0LWhlYWRlci1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3Itb24tc3VyZmFjZS12YXJpYW50KScsXG4gICAgJy0tbmd4c21rLXNwcmVhZHNoZWV0LWJvcmRlcic6ICd2YXIoLS1uZ3hzbWstY29sb3Itb3V0bGluZSknLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1ncmlkLWNvbG9yJzogJ3ZhcigtLW5neHNtay1jb2xvci1vdXRsaW5lLXZhcmlhbnQpJyxcbiAgICAnLS1uZ3hzbWstc3ByZWFkc2hlZXQtaG92ZXItYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UtaG92ZXIpJyxcbiAgICAnLS1uZ3hzbWstc3ByZWFkc2hlZXQtc2VsZWN0ZWQtYmcnOlxuICAgICAgJ2NvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSkgMTIlLCB0cmFuc3BhcmVudCknLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1hY3RpdmUtYm9yZGVyJzogJ3ZhcigtLW5neHNtay1jb2xvci1wcmltYXJ5KScsXG4gICAgJy0tbmd4c21rLXNwcmVhZHNoZWV0LWZvbnQnOiAndmFyKC0tbmd4c21rLWZvbnQtc2FucyknLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1mb250LW1vbm8nOiAndmFyKC0tbmd4c21rLWZvbnQtbW9ubyknLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1yb3ctaGVpZ2h0JzogJzIuMjVyZW0nLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1oZWFkZXItaGVpZ2h0JzogJzIuNXJlbScsXG4gICAgJy0tbmd4c21rLXNwcmVhZHNoZWV0LWNlbGwtcGFkZGluZyc6ICc2cHggMTBweCcsXG4gICAgJy0tbmd4c21rLXNwcmVhZHNoZWV0LWNlbGwtZm9udC1zaXplJzogJ3ZhcigtLW5neHNtay10ZXh0LWJvZHktc20tc2l6ZSknLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1zY3JvbGxiYXItc2l6ZSc6ICc4cHgnLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1zaGFkb3cnOiAndmFyKC0tbmd4c21rLXNoYWRvdy1zbSknLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1yYWRpdXMnOiAndmFyKC0tbmd4c21rLXJhZGl1cy1sZyknLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1lZGl0LWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlKScsXG4gICAgJy0tbmd4c21rLXNwcmVhZHNoZWV0LWVkaXQtYm9yZGVyJzogJ3ZhcigtLW5neHNtay1jb2xvci1wcmltYXJ5KScsXG4gICAgJy0tbmd4c21rLXNwcmVhZHNoZWV0LXJvdy1ob3Zlci1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3Itc3VyZmFjZS1ob3ZlciknLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1jb2wtaG92ZXItYmcnOlxuICAgICAgJ2NvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSkgNiUsIHRyYW5zcGFyZW50KScsXG4gICAgJy0tbmd4c21rLXNwcmVhZHNoZWV0LWZyb3plbi1zaGFkb3cnOiAnMnB4IDAgNHB4IHJnYmEoMCwwLDAsMC4wOCknLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1zZWxlY3Rpb24tcmFuZ2UnOlxuICAgICAgJ2NvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSkgOCUsIHRyYW5zcGFyZW50KScsXG4gIH0sXG4gIGlucHV0R3JvdXA6IHtcbiAgICAnLS1uZ3hzbWstaW5wdXQtZ3JvdXAtYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UpJyxcbiAgICAnLS1uZ3hzbWstaW5wdXQtZ3JvdXAtYm9yZGVyJzogJ3ZhcigtLW5neHNtay1jb2xvci1vdXRsaW5lLXN0cm9uZyknLFxuICAgICctLW5neHNtay1pbnB1dC1ncm91cC1yYWRpdXMnOiAndmFyKC0tbmd4c21rLXJhZGl1cy1tZCknLFxuICAgICctLW5neHNtay1pbnB1dC1ncm91cC1zaGFkb3cnOiAnbm9uZScsXG4gICAgJy0tbmd4c21rLWlucHV0LWdyb3VwLWZvY3VzLWJvcmRlcic6ICd2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSknLFxuICAgICctLW5neHNtay1pbnB1dC1ncm91cC1mb2N1cy1zaGFkb3cnOlxuICAgICAgJzAgMCAwIDNweCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tbmd4c21rLWNvbG9yLXByaW1hcnkpIDE1JSwgdHJhbnNwYXJlbnQpJyxcbiAgICAnLS1uZ3hzbWstaW5wdXQtZ3JvdXAtZXJyb3ItYm9yZGVyJzogJ3ZhcigtLW5neHNtay1jb2xvci1lcnJvciknLFxuICAgICctLW5neHNtay1pbnB1dC1ncm91cC1lcnJvci1mb2N1cy1zaGFkb3cnOlxuICAgICAgJzAgMCAwIDNweCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tbmd4c21rLWNvbG9yLWVycm9yKSAxNSUsIHRyYW5zcGFyZW50KScsXG4gICAgJy0tbmd4c21rLWlucHV0LWdyb3VwLXN1Y2Nlc3MtYm9yZGVyJzogJ3ZhcigtLW5neHNtay1jb2xvci1zdWNjZXNzKScsXG4gICAgJy0tbmd4c21rLWlucHV0LWdyb3VwLXdhcm5pbmctYm9yZGVyJzogJ3ZhcigtLW5neHNtay1jb2xvci13YXJuaW5nKScsXG4gICAgJy0tbmd4c21rLWlucHV0LWdyb3VwLWhlaWdodCc6ICcyLjVyZW0nLFxuICAgICctLW5neHNtay1pbnB1dC1ncm91cC1wYWRkaW5nJzogJzAuNzVyZW0nLFxuICAgICctLW5neHNtay1pbnB1dC1ncm91cC1nYXAnOiAndmFyKC0tbmd4c21rLXNwYWNlLTIpJyxcbiAgICAnLS1uZ3hzbWstaW5wdXQtZ3JvdXAtZm9udCc6ICd2YXIoLS1uZ3hzbWstZm9udC1zYW5zKScsXG4gIH0sXG59O1xuXG4vKiogVG9rZW5zIHRoYXQgZG8gbm90IGNoYW5nZSBiZXR3ZWVuIGxpZ2h0IGFuZCBkYXJrIG1vZGUuICovXG5mdW5jdGlvbiBzdGF0aWNWYXJzKHRoZW1lOiBSZXNvbHZlZFRoZW1lKTogVmFycyB7XG4gIGNvbnN0IHZhcnM6IFZhcnMgPSB7XG4gICAgLi4uc2NhbGVWYXJzKCdicmFuZCcsIHRoZW1lLmJyYW5kKSxcbiAgICAuLi5zY2FsZVZhcnMoJ3NlY29uZGFyeScsIHRoZW1lLnNlY29uZGFyeSksXG4gICAgLi4uc2NhbGVWYXJzKCduZXV0cmFsJywgdGhlbWUubmV1dHJhbCksXG4gICAgJy0tbmd4c21rLWZvbnQtc2Fucyc6IHRoZW1lLmZvbnRGYW1pbHkuc2FucyxcbiAgICAnLS1uZ3hzbWstZm9udC1tb25vJzogdGhlbWUuZm9udEZhbWlseS5tb25vLFxuICAgICctLW5neHNtay1yYWRpdXMtYmFzZSc6IHRoZW1lLnJhZGl1c1t0aGVtZS5yYWRpdXNCYXNlXSxcbiAgICAnLS1uZ3hzbWstY29udHJvbC1oZWlnaHQnOiBDT05UUk9MX0hFSUdIVCxcblxuICAgIC8vIE1vdGlvbiBUb2tlbnNcbiAgICAnLS1uZ3hzbWstbW90aW9uLWR1cmF0aW9uJzogJ3ZhcigtLW5neHNtay1kdXJhdGlvbi1ub3JtYWwpJyxcbiAgICAnLS1uZ3hzbWstbW90aW9uLWVhc2UnOiAndmFyKC0tbmd4c21rLWVhc2UtaW4tb3V0KScsXG5cbiAgICAvLyBJbnRlcmFjdGl2ZS1zdGF0ZSBtb3Rpb246IHNoYXJlZCBsaWZ0L3ByZXNzIHRyYW5zZm9ybXMuIE5ldXRyYWxpemVkIHRvXG4gICAgLy8gYG5vbmVgIHVuZGVyIHByZWZlcnMtcmVkdWNlZC1tb3Rpb24gKHNlZSBidWlsZFRoZW1lQ3NzKS5cbiAgICAnLS1uZ3hzbWstaG92ZXItbGlmdCc6ICd0cmFuc2xhdGVZKC0xcHgpJyxcbiAgICAnLS1uZ3hzbWstcHJlc3Mtc2NhbGUnOiAnc2NhbGUoMC45OCknLFxuXG4gICAgLy8gRm9jdXMgcmluZzogVEhFIGZvY3VzIGluZGljYXRvciBmb3IgZXZlcnkgY29tcG9uZW50LiBBbGlhc2VzIHRoZVxuICAgIC8vIG1vZGUtYXdhcmUgLS1uZ3hzbWstc2hhZG93LWZvY3VzOyB0aGUgZXJyb3IgdmFyaWFudCBkZXJpdmVzIGZyb20gdGhlXG4gICAgLy8gc2VtYW50aWMgZXJyb3Igcm9sZSBzbyBpbnZhbGlkIGNvbnRyb2xzIHJpbmcgcmVkIGluIGJvdGggbW9kZXMuXG4gICAgJy0tbmd4c21rLWZvY3VzLXJpbmcnOiAndmFyKC0tbmd4c21rLXNoYWRvdy1mb2N1cyknLFxuICAgICctLW5neHNtay1mb2N1cy1yaW5nLWVycm9yJzpcbiAgICAgICcwIDAgMCAycHggY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLW5neHNtay1jb2xvci1lcnJvcikgMTUlLCB0cmFuc3BhcmVudCksICcgK1xuICAgICAgJzAgMCAwIDRweCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tbmd4c21rLWNvbG9yLWVycm9yKSA0NSUsIHRyYW5zcGFyZW50KScsXG5cbiAgICAvLyBDb21wb25lbnQtc3BlY2lmaWMgdG9rZW4gZGVmYXVsdHNcbiAgICAuLi5PYmplY3QudmFsdWVzKENPTVBPTkVOVF9UT0tFTl9ERUZBVUxUUykucmVkdWNlKFxuICAgICAgKG1lcmdlZCwgdG9rZW5zKSA9PiAoeyAuLi5tZXJnZWQsIC4uLnRva2VucyB9KSxcbiAgICAgIHt9IGFzIFZhcnMsXG4gICAgKSxcbiAgfTtcblxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhDT05UUk9MX0hFSUdIVFMpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstY29udHJvbC1oZWlnaHQtJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhPUEFDSVRZKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLW9wYWNpdHktJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhJQ09OX1NJWkUpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstaWNvbi0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKFRSQUNLSU5HKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLXRyYWNraW5nLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoRk9OVF9XRUlHSFQpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstZm9udC13ZWlnaHQtJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhMRUFESU5HKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLWxlYWRpbmctJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS5zcGFjaW5nKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLXNwYWNlLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUucmFkaXVzKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLXJhZGl1cy0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLnNoYWRvdykpIHtcbiAgICB2YXJzW2AtLW5neHNtay1zaGFkb3ctJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS5kdXJhdGlvbikpIHtcbiAgICB2YXJzW2AtLW5neHNtay1kdXJhdGlvbi0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLmVhc2luZykpIHtcbiAgICB2YXJzW2AtLW5neHNtay1lYXNlLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUuekluZGV4KSkge1xuICAgIHZhcnNbYC0tbmd4c21rLXotJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuXG4gIGNvbnN0IHNpemVzID0geyBsYXJnZTogJ2xnJywgbWVkaXVtOiAnbWQnLCBzbWFsbDogJ3NtJyB9IGFzIGNvbnN0O1xuICBmb3IgKGNvbnN0IFtyb2xlLCBzdHlsZXNdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLnR5cG9ncmFwaHkpKSB7XG4gICAgZm9yIChjb25zdCBbc2l6ZSwgc3VmZml4XSBvZiBPYmplY3QuZW50cmllcyhzaXplcykpIHtcbiAgICAgIGNvbnN0IHN0eWxlOiBUeXBlU3R5bGUgPSBzdHlsZXNbc2l6ZSBhcyBUeXBlUm9sZVNpemVdO1xuICAgICAgdmFyc1tgLS1uZ3hzbWstdGV4dC0ke3JvbGV9LSR7c3VmZml4fS1zaXplYF0gPSBzdHlsZS5zaXplO1xuICAgICAgdmFyc1tgLS1uZ3hzbWstdGV4dC0ke3JvbGV9LSR7c3VmZml4fS1saW5lYF0gPSBzdHlsZS5saW5lSGVpZ2h0O1xuICAgICAgdmFyc1tgLS1uZ3hzbWstdGV4dC0ke3JvbGV9LSR7c3VmZml4fS13ZWlnaHRgXSA9IHN0eWxlLndlaWdodDtcbiAgICB9XG4gIH1cblxuICAvLyBFeHRyYS1zbWFsbCBib2R5IHRleHQgZm9yIGRlbnNlIG1ldGFkYXRhIHJvd3M7IGJlbG93IHRoZSBzbWFsbGVzdFxuICAvLyBUeXBlUm9sZVNpemUgc28gaXQgaXMgZW1pdHRlZCBvdXRzaWRlIHRoZSByb2xlIGxvb3AuXG4gIHZhcnNbJy0tbmd4c21rLXRleHQtYm9keS14cy1zaXplJ10gPSAnMC42ODc1cmVtJztcbiAgdmFyc1snLS1uZ3hzbWstdGV4dC1ib2R5LXhzLWxpbmUnXSA9ICcxcmVtJztcbiAgdmFyc1snLS1uZ3hzbWstdGV4dC1ib2R5LXhzLXdlaWdodCddID0gJzQwMCc7XG5cbiAgcmV0dXJuIHZhcnM7XG59XG5cbi8qKiBTZW1hbnRpYyByb2xlIHRva2VucyBmb3IgbGlnaHQgbW9kZS4gKi9cbmZ1bmN0aW9uIGxpZ2h0VmFycyh0aGVtZTogUmVzb2x2ZWRUaGVtZSk6IFZhcnMge1xuICBjb25zdCB2YXJzOiBWYXJzID0ge1xuICAgICdjb2xvci1zY2hlbWUnOiAnbGlnaHQnLFxuXG4gICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnknOiB0aGVtZS5icmFuZEJhc2UsXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXByaW1hcnknOiAnI0ZGRkZGRicsXG4gICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnktaG92ZXInOiBzaGlmdExpZ2h0bmVzcyh0aGVtZS5icmFuZEJhc2UsIC04KSxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1hY3RpdmUnOiBzaGlmdExpZ2h0bmVzcyh0aGVtZS5icmFuZEJhc2UsIC0xNCksXG4gICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnktY29udGFpbmVyJzogdGhlbWUuYnJhbmRbMTAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeS1jb250YWluZXInOiB0aGVtZS5icmFuZFs5MDBdLFxuXG4gICAgJy0tbmd4c21rLWNvbG9yLXNlY29uZGFyeSc6IHRoZW1lLnNlY29uZGFyeUJhc2UsXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXNlY29uZGFyeSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5LWhvdmVyJzogc2hpZnRMaWdodG5lc3ModGhlbWUuc2Vjb25kYXJ5QmFzZSwgLTgpLFxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnktYWN0aXZlJzogc2hpZnRMaWdodG5lc3ModGhlbWUuc2Vjb25kYXJ5QmFzZSwgLTE0KSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5LWNvbnRhaW5lcic6IHRoZW1lLnNlY29uZGFyeVsxMDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zZWNvbmRhcnktY29udGFpbmVyJzogdGhlbWUuc2Vjb25kYXJ5WzkwMF0sXG5cbiAgICAvLyBEZWZhdWx0IGxpZ2h0IHRoZW1lOiBjb29sLWdyZXkgYm9keSwgd2hpdGUgY2FyZHMgZmxvYXRpbmcgb24gdG9wLCBoYWlybGluZSBib3JkZXJzLlxuICAgICctLW5neHNtay1jb2xvci1iYWNrZ3JvdW5kJzogdGhlbWUubmV1dHJhbFs1MF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLWJhY2tncm91bmQnOiAnIzBBMTMxNycsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UnOiAnI0ZGRkZGRicsXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXN1cmZhY2UnOiAnIzBBMTMxNycsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtdmFyaWFudCc6IHRoZW1lLm5ldXRyYWxbMTAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc3VyZmFjZS12YXJpYW50JzogdGhlbWUubmV1dHJhbFs1MDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWhvdmVyJzogJ3JnYig1IDU0IDg5IC8gMC4wNSknLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWFjdGl2ZSc6ICdyZ2IoNSA1NCA4OSAvIDAuMSknLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWNvbnRhaW5lcic6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb3V0bGluZSc6ICdyZ2IoNSA1NCA4OSAvIDAuMSknLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lLXN0cm9uZyc6IHRoZW1lLm5ldXRyYWxbMjAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb3V0bGluZS12YXJpYW50JzogJ3JnYig1IDU0IDg5IC8gMC4wNiknLFxuXG4gICAgLy8gRWxldmF0aW9uIGxhZGRlclxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTEnOiAnI0ZGRkZGRicsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtMic6IHRoZW1lLm5ldXRyYWxbNTBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTMnOiB0aGVtZS5uZXV0cmFsWzEwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtNCc6IHRoZW1lLm5ldXRyYWxbMjAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS01JzogdGhlbWUubmV1dHJhbFszMDBdLFxuXG4gICAgJy0tbmd4c21rLWNvbG9yLXJpbmcnOiB0aGVtZS5icmFuZEJhc2UsXG4gICAgJy0tbmd4c21rLWNvbG9yLWJhY2tkcm9wJzogJ3JnYigxIDE4IDQwIC8gMC40KScsXG4gICAgJy0tbmd4c21rLXNoYWRvdy1mb2N1cyc6IGAwIDAgMCAycHggJHt0aGVtZS5icmFuZFsxMDBdfSwgMCAwIDAgNHB4IGNvbG9yLW1peChpbiBzcmdiLCAke3RoZW1lLmJyYW5kQmFzZX0gNDUlLCB0cmFuc3BhcmVudClgLFxuXG4gICAgLy8gQ2F0ZWdvcmljYWwgY2hhcnQgcGFsZXR0ZSDigJQgYSBmaXhlZCA4LWh1ZSBxdWFsaXRhdGl2ZSBzZXQgKE5PVCBkZXJpdmVkXG4gICAgLy8gZnJvbSB0aGUgYnJhbmQsIHNvIGFkamFjZW50IHNlcmllcyBzdGF5IGRpc3Rpbmd1aXNoYWJsZSBhY3Jvc3MgdGhlbWVzKSxcbiAgICAvLyBzdGVwcGVkIGZvciB0aGUgbGlnaHQgc3VyZmFjZS4gVmFsaWRhdGVkIGZvciB0aGUgbGlnaHQgY2hhcnQgc3VyZmFjZTpcbiAgICAvLyBDVkQgd29yc3QtYWRqYWNlbnQgzpRFIDI0LjIsIGNocm9tYS9saWdodG5lc3MgaW4tYmFuZC4gQ2hhcnRzIHJlYWQgdGhlc2VcbiAgICAvLyB2aWEgZ2V0Q29tcHV0ZWRTdHlsZTsgY29uc3VtZXJzIGNhbiBvdmVycmlkZSBhbnkgc2xvdCB0byByZWJyYW5kIHNlcmllcy5cbiAgICAnLS1uZ3hzbWstY2hhcnQtMSc6ICcjMkE3OEQ2JyxcbiAgICAnLS1uZ3hzbWstY2hhcnQtMic6ICcjMUJBRjdBJyxcbiAgICAnLS1uZ3hzbWstY2hhcnQtMyc6ICcjRURBMTAwJyxcbiAgICAnLS1uZ3hzbWstY2hhcnQtNCc6ICcjMDA4MzAwJyxcbiAgICAnLS1uZ3hzbWstY2hhcnQtNSc6ICcjNEEzQUE3JyxcbiAgICAnLS1uZ3hzbWstY2hhcnQtNic6ICcjRTM0OTQ4JyxcbiAgICAnLS1uZ3hzbWstY2hhcnQtNyc6ICcjRTg3QkE0JyxcbiAgICAnLS1uZ3hzbWstY2hhcnQtOCc6ICcjRUI2ODM0JyxcbiAgfTtcblxuICBjb25zdCB0ZXJ0aWFyeSA9IGRlcml2ZVNjYWxlKHJvdGF0ZUh1ZSh0aGVtZS5icmFuZEJhc2UsIDY0KSk7XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLXRlcnRpYXJ5J10gPSB0ZXJ0aWFyeVs1MDBdO1xuICB2YXJzWyctLW5neHNtay1jb2xvci1vbi10ZXJ0aWFyeSddID0gJyNGRkZGRkYnO1xuICB2YXJzWyctLW5neHNtay1jb2xvci10ZXJ0aWFyeS1jb250YWluZXInXSA9IHRlcnRpYXJ5WzEwMF07XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLW9uLXRlcnRpYXJ5LWNvbnRhaW5lciddID0gdGVydGlhcnlbOTAwXTtcblxuICBmb3IgKGNvbnN0IFtuYW1lLCBoZXhdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLnNlbWFudGljKSkge1xuICAgIGNvbnN0IHNjYWxlID0gZGVyaXZlU2NhbGUoaGV4KTtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci0ke25hbWV9YF0gPSBoZXg7XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3Itb24tJHtuYW1lfWBdID0gJyNGRkZGRkYnO1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLSR7bmFtZX0tY29udGFpbmVyYF0gPSBzY2FsZVsxMDBdO1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLW9uLSR7bmFtZX0tY29udGFpbmVyYF0gPSBzY2FsZVs4MDBdO1xuICB9XG5cbiAgcmV0dXJuIHsgLi4udmFycywgLi4udGhlbWUub3ZlcnJpZGVzLmxpZ2h0IH07XG59XG5cbi8qKiBTZW1hbnRpYyByb2xlIHRva2VucyBmb3IgZGFyayBtb2RlLiAqL1xuZnVuY3Rpb24gZGFya1ZhcnModGhlbWU6IFJlc29sdmVkVGhlbWUpOiBWYXJzIHtcbiAgY29uc3QgdmFyczogVmFycyA9IHtcbiAgICAnY29sb3Itc2NoZW1lJzogJ2RhcmsnLFxuXG4gICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnknOiB0aGVtZS5icmFuZFs0MDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1wcmltYXJ5JzogJyNGRkZGRkYnLFxuICAgICctLW5neHNtay1jb2xvci1wcmltYXJ5LWhvdmVyJzogdGhlbWUuYnJhbmRbMzAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1hY3RpdmUnOiB0aGVtZS5icmFuZFsyMDBdLFxuICAgICctLW5neHNtay1jb2xvci1wcmltYXJ5LWNvbnRhaW5lcic6IHRoZW1lLmJyYW5kWzkwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXByaW1hcnktY29udGFpbmVyJzogdGhlbWUuYnJhbmRbMTAwXSxcblxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnknOiB0aGVtZS5zZWNvbmRhcnlbNDAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc2Vjb25kYXJ5JzogJyNGRkZGRkYnLFxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnktaG92ZXInOiB0aGVtZS5zZWNvbmRhcnlbMzAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5LWFjdGl2ZSc6IHRoZW1lLnNlY29uZGFyeVsyMDBdLFxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnktY29udGFpbmVyJzogdGhlbWUuc2Vjb25kYXJ5WzkwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXNlY29uZGFyeS1jb250YWluZXInOiB0aGVtZS5zZWNvbmRhcnlbMTAwXSxcblxuICAgIC8vIERlZmF1bHQgZGFyayB0aGVtZTogbmVhci1uZXV0cmFsIGNoYXJjb2FsIGJvZHksIHNsaWdodGx5IGxpZ2h0ZXIgY2FyZCxcbiAgICAvLyBsaWdodGVyIHN0aWxsIGZvciBwb3BvdmVyczsgaGFpcmxpbmUgbGlnaHQtb24tZGFyayBib3JkZXJzLlxuICAgICctLW5neHNtay1jb2xvci1iYWNrZ3JvdW5kJzogJyMxMTExMTInLFxuICAgICctLW5neHNtay1jb2xvci1vbi1iYWNrZ3JvdW5kJzogJyNERkUyRTUnLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlJzogJyMxRjFGMjInLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zdXJmYWNlJzogJyNERkUyRTUnLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLXZhcmlhbnQnOiAnIzI4MjkyQycsXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXN1cmZhY2UtdmFyaWFudCc6ICcjQUFBRkI1JyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS1ob3Zlcic6ICdyZ2IoMjU1IDI1NSAyNTUgLyAwLjA1KScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtYWN0aXZlJzogJ3JnYigyNTUgMjU1IDI1NSAvIDAuMSknLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWNvbnRhaW5lcic6ICcjMjgyOTJDJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb3V0bGluZSc6ICdyZ2IoMjQyIDI0NCAyNDYgLyAwLjEpJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb3V0bGluZS1zdHJvbmcnOiAnIzQ5NEQ1MycsXG4gICAgJy0tbmd4c21rLWNvbG9yLW91dGxpbmUtdmFyaWFudCc6ICdyZ2IoMjQyIDI0NCAyNDYgLyAwLjA2KScsXG5cbiAgICAvLyBFbGV2YXRpb24gbGFkZGVyXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtMSc6IHRoZW1lLm5ldXRyYWxbODAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS0yJzogdGhlbWUubmV1dHJhbFs3MDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTMnOiB0aGVtZS5uZXV0cmFsWzYwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtNCc6IHRoZW1lLm5ldXRyYWxbNTAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS01JzogdGhlbWUubmV1dHJhbFs0MDBdLFxuXG4gICAgJy0tbmd4c21rLWNvbG9yLXJpbmcnOiB0aGVtZS5icmFuZFs0MDBdLFxuICAgICctLW5neHNtay1jb2xvci1iYWNrZHJvcCc6ICdyZ2IoMTcgMTcgMTggLyAwLjYpJyxcbiAgICAnLS1uZ3hzbWstc2hhZG93LWZvY3VzJzogYDAgMCAwIDJweCBjb2xvci1taXgoaW4gc3JnYiwgJHt0aGVtZS5icmFuZFs0MDBdfSAyNSUsIHRyYW5zcGFyZW50KSwgMCAwIDAgNHB4IGNvbG9yLW1peChpbiBzcmdiLCAke3RoZW1lLmJyYW5kWzQwMF19IDQ1JSwgdHJhbnNwYXJlbnQpYCxcblxuICAgIC8vIENhdGVnb3JpY2FsIGNoYXJ0IHBhbGV0dGUg4oCUIHRoZSBzYW1lIGVpZ2h0IGh1ZXMgYXMgbGlnaHQsIHJlLXN0ZXBwZWQgZm9yXG4gICAgLy8gdGhlIGRhcmsgc3VyZmFjZSAobm90IGEgZGlmZmVyZW50IHBhbGV0dGUpLiBWYWxpZGF0ZWQgZm9yIHRoZSBkYXJrIGNoYXJ0XG4gICAgLy8gc3VyZmFjZTogYWxsIHNsb3RzIOKJpSAzOjEgY29udHJhc3QsIENWRCB3b3JzdC1hZGphY2VudCDOlEUgMTAuMyAoZmxvb3IgYmFuZCxcbiAgICAvLyByZWxpZXMgb24gdGhlIGxlZ2VuZC9sYWJlbHMgY2hhcnRzIGFscmVhZHkgcmVuZGVyIGZvciBzZWNvbmRhcnkgZW5jb2RpbmcpLlxuICAgICctLW5neHNtay1jaGFydC0xJzogJyMzOTg3RTUnLFxuICAgICctLW5neHNtay1jaGFydC0yJzogJyMxOTlFNzAnLFxuICAgICctLW5neHNtay1jaGFydC0zJzogJyNDOTg1MDAnLFxuICAgICctLW5neHNtay1jaGFydC00JzogJyMwMDgzMDAnLFxuICAgICctLW5neHNtay1jaGFydC01JzogJyM5MDg1RTknLFxuICAgICctLW5neHNtay1jaGFydC02JzogJyNFNjY3NjcnLFxuICAgICctLW5neHNtay1jaGFydC03JzogJyNENTUxODEnLFxuICAgICctLW5neHNtay1jaGFydC04JzogJyNEOTU5MjYnLFxuICB9O1xuXG4gIGNvbnN0IHRlcnRpYXJ5ID0gZGVyaXZlU2NhbGUocm90YXRlSHVlKHRoZW1lLmJyYW5kQmFzZSwgNjQpKTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3ItdGVydGlhcnknXSA9IHRlcnRpYXJ5WzQwMF07XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLW9uLXRlcnRpYXJ5J10gPSB0ZXJ0aWFyeVs5NTBdO1xuICB2YXJzWyctLW5neHNtay1jb2xvci10ZXJ0aWFyeS1jb250YWluZXInXSA9IHRlcnRpYXJ5WzkwMF07XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLW9uLXRlcnRpYXJ5LWNvbnRhaW5lciddID0gdGVydGlhcnlbMTAwXTtcblxuICBmb3IgKGNvbnN0IFtuYW1lLCBoZXhdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLnNlbWFudGljKSkge1xuICAgIGNvbnN0IHNjYWxlID0gZGVyaXZlU2NhbGUoaGV4KTtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci0ke25hbWV9YF0gPSBzY2FsZVs0MDBdO1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLW9uLSR7bmFtZX1gXSA9IHNjYWxlWzk1MF07XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3ItJHtuYW1lfS1jb250YWluZXJgXSA9IHNjYWxlWzk1MF07XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3Itb24tJHtuYW1lfS1jb250YWluZXJgXSA9IHNjYWxlWzMwMF07XG4gIH1cblxuICByZXR1cm4geyAuLi52YXJzLCAuLi50aGVtZS5vdmVycmlkZXMuZGFyayB9O1xufVxuXG5mdW5jdGlvbiBibG9jayhzZWxlY3Rvcjogc3RyaW5nLCB2YXJzOiBWYXJzLCBpbmRlbnQgPSAnJyk6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzID0gT2JqZWN0LmVudHJpZXModmFycykubWFwKChbbmFtZSwgdmFsdWVdKSA9PiBgJHtpbmRlbnR9ICAke25hbWV9OiAke3ZhbHVlfTtgKTtcbiAgcmV0dXJuIGAke2luZGVudH0ke3NlbGVjdG9yfSB7XFxuJHtsaW5lcy5qb2luKCdcXG4nKX1cXG4ke2luZGVudH19YDtcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm0gYSB0aGVtZSBjb25maWcgaW50byBhIENTUyBzdHlsZXNoZWV0IG9mIGAtLW5neHNtay0qYCBjdXN0b21cbiAqIHByb3BlcnRpZXMuIEVtaXRzIHN0YXRpYyB0b2tlbnMgcGx1cyBsaWdodC1tb2RlIHJvbGVzIG9uIGA6cm9vdGAsIGFuZFxuICogZGFyay1tb2RlIHJvbGVzIGFjY29yZGluZyB0byB0aGUgY29uZmlndXJlZCBkYXJrLW1vZGUgc3RyYXRlZ3kuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFRoZW1lQ3NzKGNvbmZpZzogVGhlbWVDb25maWcgfCBSZXNvbHZlZFRoZW1lKTogc3RyaW5nIHtcbiAgY29uc3QgdGhlbWUgPVxuICAgICdicmFuZCcgaW4gY29uZmlnICYmICdzcGFjaW5nJyBpbiAoY29uZmlnIGFzIG9iamVjdClcbiAgICAgID8gKGNvbmZpZyBhcyBSZXNvbHZlZFRoZW1lKVxuICAgICAgOiByZXNvbHZlVGhlbWUoY29uZmlnIGFzIFRoZW1lQ29uZmlnKTtcblxuICBjb25zdCByb290ID0gYmxvY2soJzpyb290JywgeyAuLi5zdGF0aWNWYXJzKHRoZW1lKSwgLi4ubGlnaHRWYXJzKHRoZW1lKSB9KTtcbiAgY29uc3QgZGFyayA9IGRhcmtWYXJzKHRoZW1lKTtcblxuICBsZXQgZGFya0Jsb2NrOiBzdHJpbmc7XG4gIHN3aXRjaCAodGhlbWUuZGFya01vZGUuc3RyYXRlZ3kpIHtcbiAgICBjYXNlICdtZWRpYSc6XG4gICAgICBkYXJrQmxvY2sgPSBgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xcbiR7YmxvY2soJzpyb290JywgZGFyaywgJyAgJyl9XFxufWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdzeXN0ZW0nOiB7XG4gICAgICAvLyBgbGlnaHQtZGFyaygpYCBzdXBwb3J0IGlzIHBlci1wcm9wZXJ0eTsgdGhlIGNsYXNzIGJsb2NrIHN0aWxsIHNlcnZlc1xuICAgICAgLy8gYXMgdGhlIG92ZXJyaWRlIGhvb2ssIHNvIGBzeXN0ZW1gIGJlaGF2ZXMgYXMgbWVkaWEgKyBjbGFzcy5cbiAgICAgIGNvbnN0IGNuID0gdGhlbWUuZGFya01vZGUuY2xhc3NOYW1lO1xuICAgICAgZGFya0Jsb2NrID0gW1xuICAgICAgICBgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xcbiR7YmxvY2soJzpyb290JywgZGFyaywgJyAgJyl9XFxufWAsXG4gICAgICAgIGJsb2NrKGA6cm9vdC4ke2NufSwgOnJvb3QuJHtjbn0gYm9keSwgLiR7Y259YCwgZGFyayksXG4gICAgICBdLmpvaW4oJ1xcblxcbicpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIC8vIGA6cm9vdC48Y2xhc3M+YCAoc3BlY2lmaWNpdHkgMCwyLDApIHBsdXMgYSBgYm9keWAgdmFyaWFudCBkZWZlbmQgdGhlXG4gICAgICAvLyBkYXJrIHRva2VucyBhZ2FpbnN0IHRoaXJkLXBhcnR5IHN0eWxlc2hlZXRzIHRoYXQgcmVkZWZpbmUgYC0tbmd4c21rLSpgXG4gICAgICAvLyBvbiBhIHBsYWluIGA6cm9vdGAgKDAsMSwwKSDigJQgdGhvc2Ugd291bGQgb3RoZXJ3aXNlIHdpbiBieSBzb3VyY2Ugb3JkZXJcbiAgICAgIC8vIHdoZW4gaW5qZWN0ZWQgaW50byA8aGVhZD4gYWZ0ZXIgdGhpcyBzaGVldC4gVGhlIGJhcmUgYC48Y2xhc3M+YCBrZWVwc1xuICAgICAgLy8gc2NvcGVkIChub24tcm9vdCkgZGFyayByZWdpb25zIHdvcmtpbmcuXG4gICAgICBjb25zdCBjbiA9IHRoZW1lLmRhcmtNb2RlLmNsYXNzTmFtZTtcbiAgICAgIGRhcmtCbG9jayA9IGJsb2NrKGA6cm9vdC4ke2NufSwgOnJvb3QuJHtjbn0gYm9keSwgLiR7Y259YCwgZGFyayk7XG4gICAgfVxuICB9XG5cbiAgLy8gWmVybyBldmVyeSBkdXJhdGlvbiB0b2tlbiAoY29tcG9uZW50cyBhbmltYXRlIHdpdGggLS1uZ3hzbWstZHVyYXRpb24tKlxuICAvLyBkaXJlY3RseSkgYW5kIG5ldXRyYWxpemUgdGhlIHNoYXJlZCB0cmFuc2Zvcm1zIHNvIEFMTCB0b2tlbi1kcml2ZW4gbW90aW9uXG4gIC8vIHN0b3BzLiBgLm5neHNtay1yZWR1Y2UtbW90aW9uYCBvZmZlcnMgdGhlIHNhbWUgYXMgYW4gYXBwLWxldmVsIG9wdC1pbi5cbiAgY29uc3QgcmVkdWNlZFZhcnM6IFZhcnMgPSB7XG4gICAgJy0tbmd4c21rLW1vdGlvbi1kdXJhdGlvbic6ICcwbXMnLFxuICAgICctLW5neHNtay1ob3Zlci1saWZ0JzogJ25vbmUnLFxuICAgICctLW5neHNtay1wcmVzcy1zY2FsZSc6ICdub25lJyxcbiAgfTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhlbWUuZHVyYXRpb24pKSB7XG4gICAgcmVkdWNlZFZhcnNbYC0tbmd4c21rLWR1cmF0aW9uLSR7a2V5fWBdID0gJzBtcyc7XG4gIH1cbiAgY29uc3QgcmVkdWNlZE1vdGlvbiA9IFtcbiAgICBgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcXG4ke2Jsb2NrKCc6cm9vdCcsIHJlZHVjZWRWYXJzLCAnICAnKX1cXG59YCxcbiAgICBibG9jaygnOnJvb3Qubmd4c21rLXJlZHVjZS1tb3Rpb24sIC5uZ3hzbWstcmVkdWNlLW1vdGlvbicsIHJlZHVjZWRWYXJzKSxcbiAgXS5qb2luKCdcXG5cXG4nKTtcbiAgcmV0dXJuIGAvKiBHZW5lcmF0ZWQgYnkgQG5neHNtay90aGVtZSDigJQgZG8gbm90IGVkaXQgYnkgaGFuZC4gKi9cXG4ke3Jvb3R9XFxuXFxuJHtkYXJrQmxvY2t9XFxuXFxuJHtyZWR1Y2VkTW90aW9ufVxcbmA7XG59XG4iXX0=
|
|
507
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvc3JjL2xpYi9jc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLGVBQWUsRUFDZixXQUFXLEVBQ1gsU0FBUyxFQUNULE9BQU8sRUFDUCxPQUFPLEVBQ1AsUUFBUSxHQUNULE1BQU0sVUFBVSxDQUFDO0FBSWxCLFNBQVMsU0FBUyxDQUFDLE1BQWMsRUFBRSxLQUFpQjtJQUNsRCxNQUFNLElBQUksR0FBUyxFQUFFLENBQUM7SUFDdEIsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsa0JBQWtCLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsK0VBQStFO0FBQy9FLE1BQU0sd0JBQXdCLEdBQXlCO0lBQ3JELE1BQU0sRUFBRTtRQUNOLG9CQUFvQixFQUFFLDZCQUE2QjtRQUNuRCx1QkFBdUIsRUFBRSxnQ0FBZ0M7UUFDekQsNkJBQTZCLEVBQUUseUJBQXlCO1FBQ3hELDZCQUE2QixFQUFFLEtBQUs7UUFDcEMsd0JBQXdCLEVBQUUsMkJBQTJCO1FBQ3JELGtDQUFrQyxFQUFFLEtBQUs7UUFDekMsOEJBQThCLEVBQUUsS0FBSztRQUNyQyxxQkFBcUIsRUFBRSx1QkFBdUI7S0FDL0M7SUFDRCxLQUFLLEVBQUU7UUFDTCxtQkFBbUIsRUFBRSw2QkFBNkI7UUFDbEQsc0JBQXNCLEVBQUUsZ0NB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TUFBTSxhQUFhLEdBQUc7UUFDcEIsOENBQThDLEtBQUssQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ3BGLEtBQUssQ0FBQyxtREFBbUQsRUFBRSxXQUFXLENBQUM7S0FDeEUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDZixPQUFPLDREQUE0RCxJQUFJLE9BQU8sU0FBUyxPQUFPLGFBQWEsSUFBSSxDQUFDO0FBQ2xILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXJpdmVTY2FsZSwgcm90YXRlSHVlLCBzaGlmdExpZ2h0bmVzcyB9IGZyb20gJy4vY29sb3InO1xuaW1wb3J0IHsgcmVzb2x2ZVRoZW1lIH0gZnJvbSAnLi9kZWZpbmUtY29uZmlnJztcbmltcG9ydCB7IENvbG9yU2NhbGUsIFJlc29sdmVkVGhlbWUsIFRoZW1lQ29uZmlnLCBUeXBlUm9sZVNpemUsIFR5cGVTdHlsZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgQ09OVFJPTF9IRUlHSFQsXG4gIENPTlRST0xfSEVJR0hUUyxcbiAgRk9OVF9XRUlHSFQsXG4gIElDT05fU0laRSxcbiAgTEVBRElORyxcbiAgT1BBQ0lUWSxcbiAgVFJBQ0tJTkcsXG59IGZyb20gJy4vdG9rZW5zJztcblxudHlwZSBWYXJzID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuZnVuY3Rpb24gc2NhbGVWYXJzKHByZWZpeDogc3RyaW5nLCBzY2FsZTogQ29sb3JTY2FsZSk6IFZhcnMge1xuICBjb25zdCB2YXJzOiBWYXJzID0ge307XG4gIGZvciAoY29uc3QgW3N0ZXAsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhzY2FsZSkpIHtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci0ke3ByZWZpeH0tJHtzdGVwfWBdID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHZhcnM7XG59XG5cbi8qKiBEZWZhdWx0IENTUyBjdXN0b20gcHJvcGVydGllcyBmb3IgZWFjaCBjb21wb25lbnQsIGVtaXR0ZWQgb25jZSBpbiA6cm9vdC4gKi9cbmNvbnN0IENPTVBPTkVOVF9UT0tFTl9ERUZBVUxUUzogUmVjb3JkPHN0cmluZywgVmFycz4gPSB7XG4gIGJ1dHRvbjoge1xuICAgICctLW5neHNtay1idXR0b24tYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXByaW1hcnkpJyxcbiAgICAnLS1uZ3hzbWstYnV0dG9uLWNvbG9yJzogJ3ZhcigtLW5neHNtay1jb2xvci1vbi1wcmltYXJ5KScsXG4gICAgJy0tbmd4c21rLWJ1dHRvbi1mb250LWZhbWlseSc6ICd2YXIoLS1uZ3hzbWstZm9udC1zYW5zKScsXG4gICAgJy0tbmd4c21rLWJ1dHRvbi1mb250LXdlaWdodCc6ICc1MDAnLFxuICAgICctLW5neHNtay1idXR0b24tcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMtYmFzZSknLFxuICAgICctLW5neHNtay1idXR0b24tZGlzYWJsZWQtb3BhY2l0eSc6ICcwLjUnLFxuICAgICctLW5neHNtay1idXR0b24tYm9yZGVyLXdpZHRoJzogJzFweCcsXG4gICAgJy0tbmd4c21rLWJ1dHRvbi1nYXAnOiAndmFyKC0tbmd4c21rLXNwYWNlLTIpJyxcbiAgfSxcbiAgaW5wdXQ6IHtcbiAgICAnLS1uZ3hzbWstaW5wdXQtYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UpJyxcbiAgICAnLS1uZ3hzbWstaW5wdXQtY29sb3InOiAndmFyKC0tbmd4c21rLWNvbG9yLW9uLXN1cmZhY2UpJyxcbiAgICAnLS1uZ3hzbWstaW5wdXQtYm9yZGVyJzogJ3ZhcigtLW5neHNtay1jb2xvci1vdXRsaW5lLXN0cm9uZyknLFxuICAgICctLW5neHNtay1pbnB1dC1yYWRpdXMnOiAndmFyKC0tbmd4c21rLXJhZGl1cy1iYXNlKScsXG4gICAgJy0tbmd4c21rLWlucHV0LWhlaWdodCc6ICd2YXIoLS1uZ3hzbWstY29udHJvbC1oZWlnaHQpJyxcbiAgICAnLS1uZ3hzbWstaW5wdXQtcGFkZGluZy1pbmxpbmUnOiAndmFyKC0tbmd4c21rLXNwYWNlLTMpJyxcbiAgICAnLS1uZ3hzbWstaW5wdXQtcGxhY2Vob2xkZXInOiAndmFyKC0tbmd4c21rLWNvbG9yLW9uLXN1cmZhY2UtdmFyaWFudCknLFxuICB9LFxuICBjYXJkOiB7XG4gICAgJy0tbmd4c21rLWNhcmQtYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UpJyxcbiAgICAnLS1uZ3hzbWstY2FyZC1yYWRpdXMnOiAndmFyKC0tbmd4c21rLXJhZGl1cy14bCknLFxuICAgICctLW5neHNtay1jYXJkLXNoYWRvdyc6ICd2YXIoLS1uZ3hzbWstc2hhZG93LXNtKScsXG4gICAgJy0tbmd4c21rLWNhcmQtYm9yZGVyLWNvbG9yJzogJ3ZhcigtLW5neHNtay1jb2xvci1vdXRsaW5lKScsXG4gICAgJy0tbmd4c21rLWNhcmQtYm9yZGVyLXdpZHRoJzogJzFweCcsXG4gICAgJy0tbmd4c21rLWNhcmQtcGFkZGluZyc6ICd2YXIoLS1uZ3hzbWstc3BhY2UtNSknLFxuICB9LFxuICBhY2NvcmRpb246IHtcbiAgICAnLS1uZ3hzbWstYWNjb3JkaW9uLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlKScsXG4gICAgJy0tbmd4c21rLWFjY29yZGlvbi1yYWRpdXMnOiAndmFyKC0tbmd4c21rLXJhZGl1cy1sZyknLFxuICAgICctLW5neHNtay1hY2NvcmRpb24tYm9yZGVyLWNvbG9yJzogJ3ZhcigtLW5neHNtay1jb2xvci1vdXRsaW5lKScsXG4gIH0sXG4gIHByb2dyZXNzOiB7XG4gICAgJy0tbmd4c21rLXByb2dyZXNzLWhlaWdodCc6ICcwLjVyZW0nLFxuICAgICctLW5neHNtay1wcm9ncmVzcy1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3Itc3VyZmFjZS12YXJpYW50KScsXG4gICAgJy0tbmd4c21rLXByb2dyZXNzLWNvbG9yJzogJ3ZhcigtLW5neHNtay1jb2xvci1wcmltYXJ5KScsXG4gICAgJy0tbmd4c21rLXByb2dyZXNzLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWZ1bGwpJyxcbiAgfSxcbiAgc3dpdGNoOiB7XG4gICAgJy0tbmd4c21rLXN3aXRjaC13aWR0aCc6ICcyLjI1cmVtJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLWhlaWdodCc6ICcxLjI1cmVtJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWZ1bGwpJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1vdXRsaW5lLXN0cm9uZyknLFxuICAgICctLW5neHNtay1zd2l0Y2gtdGh1bWItc2l6ZSc6ICcwLjg3NXJlbScsXG4gICAgJy0tbmd4c21rLXN3aXRjaC10aHVtYi1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3Itc3VyZmFjZSknLFxuICAgICctLW5neHNtay1zd2l0Y2gtY2hlY2tlZC1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSknLFxuICB9LFxuICBjaGVja2JveDoge1xuICAgICctLW5neHNtay1jaGVja2JveC1zaXplJzogJzEuMTI1cmVtJyxcbiAgICAnLS1uZ3hzbWstY2hlY2tib3gtcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMtc20pJyxcbiAgICAnLS1uZ3hzbWstY2hlY2tib3gtYm9yZGVyJzogJ3ZhcigtLW5neHNtay1jb2xvci1vdXRsaW5lLXN0cm9uZyknLFxuICAgICctLW5neHNtay1jaGVja2JveC1jaGVja2VkLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1wcmltYXJ5KScsXG4gIH0sXG4gIGJhZGdlOiB7XG4gICAgJy0tbmd4c21rLWJhZGdlLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWZ1bGwpJyxcbiAgICAnLS1uZ3hzbWstYmFkZ2UtZm9udC13ZWlnaHQnOiAnNjAwJyxcbiAgICAnLS1uZ3hzbWstYmFkZ2UtcGFkZGluZy1pbmxpbmUnOiAnMC41cmVtJyxcbiAgICAnLS1uZ3hzbWstYmFkZ2UtcGFkZGluZy1ibG9jayc6ICcwLjEyNXJlbScsXG4gICAgJy0tbmd4c21rLWJhZGdlLWJvcmRlci1taXgnOiAnMjAlJyxcbiAgfSxcbiAgYWxlcnQ6IHtcbiAgICAnLS1uZ3hzbWstYWxlcnQtcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMtbGcpJyxcbiAgICAnLS1uZ3hzbWstYWxlcnQtYm9yZGVyLW1peCc6ICcyMiUnLFxuICAgICctLW5neHNtay1hbGVydC1wYWRkaW5nJzogJ3ZhcigtLW5neHNtay1zcGFjZS00KScsXG4gIH0sXG4gIGRpYWxvZzoge1xuICAgICctLW5neHNtay1kaWFsb2ctcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMtMnhsKScsXG4gICAgJy0tbmd4c21rLWRpYWxvZy1zaGFkb3cnOiAndmFyKC0tbmd4c21rLXNoYWRvdy14bCknLFxuICAgICctLW5neHNtay1kaWFsb2ctYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UtZWxldmF0ZWQpJyxcbiAgICAnLS1uZ3hzbWstZGlhbG9nLWJhY2tkcm9wJzogJ3ZhcigtLW5neHNtay1jb2xvci1iYWNrZHJvcCknLFxuICAgICctLW5neHNtay1kaWFsb2ctYmx1cic6ICc0cHgnLFxuICAgICctLW5neHNtay1kaWFsb2ctbWF4LXdpZHRoJzogJzI4cmVtJyxcbiAgfSxcbiAgc2hlZXQ6IHtcbiAgICAnLS1uZ3hzbWstc2hlZXQtcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMteGwpJyxcbiAgICAnLS1uZ3hzbWstc2hlZXQtc2hhZG93JzogJ3ZhcigtLW5neHNtay1zaGFkb3cteGwpJyxcbiAgICAnLS1uZ3hzbWstc2hlZXQtYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UtZWxldmF0ZWQpJyxcbiAgICAnLS1uZ3hzbWstc2hlZXQtYmFja2Ryb3AnOiAndmFyKC0tbmd4c21rLWNvbG9yLWJhY2tkcm9wKScsXG4gICAgJy0tbmd4c21rLXNoZWV0LXdpZHRoJzogJzI0cmVtJyxcbiAgfSxcbiAgbGlnaHRib3g6IHtcbiAgICAnLS1uZ3hzbWstbGlnaHRib3gtYmFja2Ryb3AnOiAncmdiKDAgMCAwIC8gMC45KScsXG4gICAgJy0tbmd4c21rLWxpZ2h0Ym94LWZnJzogJyNmZmZmZmYnLFxuICAgICctLW5neHNtay1saWdodGJveC1jb250cm9sLWJnJzogJ3JnYigyNTUgMjU1IDI1NSAvIDAuMTIpJyxcbiAgICAnLS1uZ3hzbWstbGlnaHRib3gtY29udHJvbC1iZy1ob3Zlcic6ICdyZ2IoMjU1IDI1NSAyNTUgLyAwLjIyKScsXG4gIH0sXG4gIHRvYXN0OiB7XG4gICAgJy0tbmd4c21rLXRvYXN0LXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWxnKScsXG4gICAgJy0tbmd4c21rLXRvYXN0LXNoYWRvdyc6ICd2YXIoLS1uZ3hzbWstc2hhZG93LWxnKScsXG4gICAgJy0tbmd4c21rLXRvYXN0LWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlLWVsZXZhdGVkKScsXG4gICAgJy0tbmd4c21rLXRvYXN0LWFjY2VudC13aWR0aCc6ICczcHgnLFxuICB9LFxuICB0YWJsZToge1xuICAgICctLW5neHNtay10YWJsZS1ib3JkZXInOiAndmFyKC0tbmd4c21rLWNvbG9yLW91dGxpbmUpJyxcbiAgICAnLS1uZ3hzbWstdGFibGUtaGVhZGVyLWJnJzpcbiAgICAgICdjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UtdmFyaWFudCkgNTUlLCB0cmFuc3BhcmVudCknLFxuICAgICctLW5neHNtay10YWJsZS1yb3ctaG92ZXInOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UtaG92ZXIpJyxcbiAgICAnLS1uZ3hzbWstdGFibGUtc3RyaXBlJzpcbiAgICAgICdjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UtdmFyaWFudCkgMzUlLCB0cmFuc3BhcmVudCknLFxuICAgICctLW5neHNtay10YWJsZS1kcm9wLWluZGljYXRvcic6ICdpbnNldCAycHggMCAwIHZhcigtLW5neHNtay1jb2xvci1wcmltYXJ5KScsXG4gICAgJy0tbmd4c21rLXRhYmxlLWNlbGwtcGFkZGluZyc6ICcwLjYyNXJlbSAwLjc1cmVtJyxcbiAgfSxcbiAgdGFiczoge1xuICAgICctLW5neHNtay10YWJzLWluZGljYXRvcic6ICcycHgnLFxuICAgICctLW5neHNtay10YWJzLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLW1kKScsXG4gICAgJy0tbmd4c21rLXRhYnMtZ2FwJzogJ3ZhcigtLW5neHNtay1zcGFjZS0xKScsXG4gIH0sXG4gIHNlbGVjdDoge1xuICAgICctLW5neHNtay1zZWxlY3QtYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UpJyxcbiAgICAnLS1uZ3hzbWstc2VsZWN0LWJvcmRlcic6ICd2YXIoLS1uZ3hzbWstY29sb3Itb3V0bGluZS1zdHJvbmcpJyxcbiAgICAnLS1uZ3hzbWstc2VsZWN0LXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWJhc2UpJyxcbiAgICAnLS1uZ3hzbWstc2VsZWN0LWxpc3Qtc2hhZG93JzogJ3ZhcigtLW5neHNtay1zaGFkb3ctbGcpJyxcbiAgICAnLS1uZ3hzbWstc2VsZWN0LWxpc3QtcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMtbGcpJyxcbiAgfSxcbiAgbWVudToge1xuICAgICctLW5neHNtay1tZW51LWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlLWVsZXZhdGVkKScsXG4gICAgJy0tbmd4c21rLW1lbnUtcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMtbGcpJyxcbiAgICAnLS1uZ3hzbWstbWVudS1zaGFkb3cnOiAndmFyKC0tbmd4c21rLXNoYWRvdy1sZyknLFxuICAgICctLW5neHNtay1tZW51LWJvcmRlcic6ICd2YXIoLS1uZ3hzbWstY29sb3Itb3V0bGluZSknLFxuICAgICctLW5neHNtay1tZW51LWl0ZW0tcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMtbWQpJyxcbiAgfSxcbiAgcGFnaW5hdGlvbjoge1xuICAgICctLW5neHNtay1wYWdpbmF0aW9uLXNpemUnOiAnMi4yNXJlbScsXG4gICAgJy0tbmd4c21rLXBhZ2luYXRpb24tcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMtbWQpJyxcbiAgfSxcbiAgZm9ybUZpZWxkOiB7XG4gICAgJy0tbmd4c21rLWZvcm0tZmllbGQtZ2FwJzogJ3ZhcigtLW5neHNtay1zcGFjZS0xLTUpJyxcbiAgICAnLS1uZ3hzbWstZm9ybS1maWVsZC1sYWJlbC13ZWlnaHQnOiAnNTAwJyxcbiAgfSxcbiAgcmFkaW86IHtcbiAgICAnLS1uZ3hzbWstcmFkaW8tc2l6ZSc6ICcxLjEyNXJlbScsXG4gICAgJy0tbmd4c21rLXJhZGlvLWRvdC1zaXplJzogJzAuNXJlbScsXG4gICAgJy0tbmd4c21rLXJhZGlvLWJvcmRlcic6ICd2YXIoLS1uZ3hzbWstY29sb3Itb3V0bGluZS1zdHJvbmcpJyxcbiAgfSxcbiAgZGF0YVRhYmxlOiB7XG4gICAgJy0tbmd4c21rLWRhdGEtdGFibGUtYm9yZGVyJzogJ3ZhcigtLW5neHNtay1jb2xvci1vdXRsaW5lKScsXG4gICAgJy0tbmd4c21rLWRhdGEtdGFibGUtcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMtbWQpJyxcbiAgICAnLS1uZ3hzbWstZGF0YS10YWJsZS1maWx0ZXItYmcnOlxuICAgICAgJ2NvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1uZ3hzbWstY29sb3Itc3VyZmFjZS12YXJpYW50KSA0MCUsIHRyYW5zcGFyZW50KScsXG4gICAgJy0tbmd4c21rLWRhdGEtdGFibGUtZmlsdGVyLWxhYmVsLXNpemUnOiAnMC43cmVtJyxcbiAgICAnLS1uZ3hzbWstZGF0YS10YWJsZS1wYWdlLXNpemUnOiAnMnJlbScsXG4gICAgJy0tbmd4c21rLWRhdGEtdGFibGUtbG9hZGluZy1oZWlnaHQnOiAnM3B4JyxcbiAgfSxcbiAgYWlDaGF0OiB7XG4gICAgJy0tbmd4c21rLWFpLWNoYXQtcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMteGwpJyxcbiAgICAnLS1uZ3hzbWstYWktY2hhdC1ib3JkZXInOiAndmFyKC0tbmd4c21rLWNvbG9yLW91dGxpbmUpJyxcbiAgICAnLS1uZ3hzbWstYWktY2hhdC1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3Itc3VyZmFjZSknLFxuICAgICctLW5neHNtay1haS1jaGF0LWhlYWRlci1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3Itc3VyZmFjZS12YXJpYW50KScsXG4gICAgJy0tbmd4c21rLWFpLWNoYXQtYnViYmxlLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlLXZhcmlhbnQpJyxcbiAgICAnLS1uZ3hzbWstYWktY2hhdC1idWJibGUtdXNlci1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSknLFxuICAgICctLW5neHNtay1haS1jaGF0LWJ1YmJsZS1yYWRpdXMnOiAndmFyKC0tbmd4c21rLXJhZGl1cy1sZyknLFxuICAgICctLW5neHNtay1haS1jaGF0LWNvbXBvc2VyLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWZ1bGwpJyxcbiAgfSxcbiAgcHJvbXB0SW5wdXQ6IHtcbiAgICAnLS1uZ3hzbWstcHJvbXB0LXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLXhsKScsXG4gICAgJy0tbmd4c21rLXByb21wdC1ib3JkZXInOiAndmFyKC0tbmd4c21rLWNvbG9yLW91dGxpbmUtc3Ryb25nKScsXG4gICAgJy0tbmd4c21rLXByb21wdC1zaGFkb3cnOiAndmFyKC0tbmd4c21rLXNoYWRvdy1zbSknLFxuICAgICctLW5neHNtay1wcm9tcHQtYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UpJyxcbiAgICAnLS1uZ3hzbWstcHJvbXB0LXNlbmQtcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMtZnVsbCknLFxuICB9LFxuICBjaGF0QnViYmxlOiB7XG4gICAgJy0tbmd4c21rLWNoYXQtYnViYmxlLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWxnKScsXG4gICAgJy0tbmd4c21rLWNoYXQtYnViYmxlLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlLWNvbnRhaW5lciknLFxuICAgICctLW5neHNtay1jaGF0LWJ1YmJsZS11c2VyLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1wcmltYXJ5LWNvbnRhaW5lciknLFxuICAgICctLW5neHNtay1jaGF0LWJ1YmJsZS1wYWRkaW5nJzogJ3ZhcigtLW5neHNtay1zcGFjZS0yKSB2YXIoLS1uZ3hzbWstc3BhY2UtMyknLFxuICB9LFxuICBzcHJlYWRzaGVldDoge1xuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3Itc3VyZmFjZSknLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1oZWFkZXItYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UtdmFyaWFudCknLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1oZWFkZXItY29sb3InOiAndmFyKC0tbmd4c21rLWNvbG9yLW9uLXN1cmZhY2UtdmFyaWFudCknLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1ib3JkZXInOiAndmFyKC0tbmd4c21rLWNvbG9yLW91dGxpbmUpJyxcbiAgICAnLS1uZ3hzbWstc3ByZWFkc2hlZXQtZ3JpZC1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3Itb3V0bGluZS12YXJpYW50KScsXG4gICAgJy0tbmd4c21rLXNwcmVhZHNoZWV0LWhvdmVyLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlLWhvdmVyKScsXG4gICAgJy0tbmd4c21rLXNwcmVhZHNoZWV0LXNlbGVjdGVkLWJnJzpcbiAgICAgICdjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tbmd4c21rLWNvbG9yLXByaW1hcnkpIDEyJSwgdHJhbnNwYXJlbnQpJyxcbiAgICAnLS1uZ3hzbWstc3ByZWFkc2hlZXQtYWN0aXZlLWJvcmRlcic6ICd2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSknLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1mb250JzogJ3ZhcigtLW5neHNtay1mb250LXNhbnMpJyxcbiAgICAnLS1uZ3hzbWstc3ByZWFkc2hlZXQtZm9udC1tb25vJzogJ3ZhcigtLW5neHNtay1mb250LW1vbm8pJyxcbiAgICAnLS1uZ3hzbWstc3ByZWFkc2hlZXQtcm93LWhlaWdodCc6ICcyLjI1cmVtJyxcbiAgICAnLS1uZ3hzbWstc3ByZWFkc2hlZXQtaGVhZGVyLWhlaWdodCc6ICcyLjVyZW0nLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1jZWxsLXBhZGRpbmcnOiAnNnB4IDEwcHgnLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1jZWxsLWZvbnQtc2l6ZSc6ICd2YXIoLS1uZ3hzbWstdGV4dC1ib2R5LXNtLXNpemUpJyxcbiAgICAnLS1uZ3hzbWstc3ByZWFkc2hlZXQtc2Nyb2xsYmFyLXNpemUnOiAnOHB4JyxcbiAgICAnLS1uZ3hzbWstc3ByZWFkc2hlZXQtc2hhZG93JzogJ3ZhcigtLW5neHNtay1zaGFkb3ctc20pJyxcbiAgICAnLS1uZ3hzbWstc3ByZWFkc2hlZXQtcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMtbGcpJyxcbiAgICAnLS1uZ3hzbWstc3ByZWFkc2hlZXQtZWRpdC1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3Itc3VyZmFjZSknLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1lZGl0LWJvcmRlcic6ICd2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSknLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1yb3ctaG92ZXItYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UtaG92ZXIpJyxcbiAgICAnLS1uZ3hzbWstc3ByZWFkc2hlZXQtY29sLWhvdmVyLWJnJzpcbiAgICAgICdjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tbmd4c21rLWNvbG9yLXByaW1hcnkpIDYlLCB0cmFuc3BhcmVudCknLFxuICAgICctLW5neHNtay1zcHJlYWRzaGVldC1mcm96ZW4tc2hhZG93JzogJzJweCAwIDRweCByZ2JhKDAsMCwwLDAuMDgpJyxcbiAgICAnLS1uZ3hzbWstc3ByZWFkc2hlZXQtc2VsZWN0aW9uLXJhbmdlJzpcbiAgICAgICdjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tbmd4c21rLWNvbG9yLXByaW1hcnkpIDglLCB0cmFuc3BhcmVudCknLFxuICB9LFxuICBpbnB1dEdyb3VwOiB7XG4gICAgJy0tbmd4c21rLWlucHV0LWdyb3VwLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlKScsXG4gICAgJy0tbmd4c21rLWlucHV0LWdyb3VwLWJvcmRlcic6ICd2YXIoLS1uZ3hzbWstY29sb3Itb3V0bGluZS1zdHJvbmcpJyxcbiAgICAnLS1uZ3hzbWstaW5wdXQtZ3JvdXAtcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMtbWQpJyxcbiAgICAnLS1uZ3hzbWstaW5wdXQtZ3JvdXAtc2hhZG93JzogJ25vbmUnLFxuICAgICctLW5neHNtay1pbnB1dC1ncm91cC1mb2N1cy1ib3JkZXInOiAndmFyKC0tbmd4c21rLWNvbG9yLXByaW1hcnkpJyxcbiAgICAnLS1uZ3hzbWstaW5wdXQtZ3JvdXAtZm9jdXMtc2hhZG93JzogJ3ZhcigtLW5neHNtay1mb2N1cy1yaW5nKScsXG4gICAgJy0tbmd4c21rLWlucHV0LWdyb3VwLWVycm9yLWJvcmRlcic6ICd2YXIoLS1uZ3hzbWstY29sb3ItZXJyb3IpJyxcbiAgICAnLS1uZ3hzbWstaW5wdXQtZ3JvdXAtZXJyb3ItZm9jdXMtc2hhZG93JzogJ3ZhcigtLW5neHNtay1mb2N1cy1yaW5nLWVycm9yKScsXG4gICAgJy0tbmd4c21rLWlucHV0LWdyb3VwLXN1Y2Nlc3MtYm9yZGVyJzogJ3ZhcigtLW5neHNtay1jb2xvci1zdWNjZXNzKScsXG4gICAgJy0tbmd4c21rLWlucHV0LWdyb3VwLXdhcm5pbmctYm9yZGVyJzogJ3ZhcigtLW5neHNtay1jb2xvci13YXJuaW5nKScsXG4gICAgJy0tbmd4c21rLWlucHV0LWdyb3VwLWhlaWdodCc6ICd2YXIoLS1uZ3hzbWstY29udHJvbC1oZWlnaHQpJyxcbiAgICAnLS1uZ3hzbWstaW5wdXQtZ3JvdXAtcGFkZGluZyc6ICcwLjc1cmVtJyxcbiAgICAnLS1uZ3hzbWstaW5wdXQtZ3JvdXAtZ2FwJzogJ3ZhcigtLW5neHNtay1zcGFjZS0yKScsXG4gICAgJy0tbmd4c21rLWlucHV0LWdyb3VwLWZvbnQnOiAndmFyKC0tbmd4c21rLWZvbnQtc2FucyknLFxuICB9LFxuICBoZWF0bWFwOiB7XG4gICAgJy0tbmd4c21rLWhlYXRtYXAtbGV2ZWwtMSc6XG4gICAgICAnY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLW5neHNtay1jb2xvci1zdWNjZXNzKSAyOCUsIHZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlLXZhcmlhbnQpKScsXG4gICAgJy0tbmd4c21rLWhlYXRtYXAtbGV2ZWwtMic6XG4gICAgICAnY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLW5neHNtay1jb2xvci1zdWNjZXNzKSA1MiUsIHZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlLXZhcmlhbnQpKScsXG4gICAgJy0tbmd4c21rLWhlYXRtYXAtbGV2ZWwtMyc6XG4gICAgICAnY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLW5neHNtay1jb2xvci1zdWNjZXNzKSA3NiUsIHZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlLXZhcmlhbnQpKScsXG4gICAgJy0tbmd4c21rLWhlYXRtYXAtbGV2ZWwtNCc6ICd2YXIoLS1uZ3hzbWstY29sb3Itc3VjY2VzcyknLFxuICB9LFxufTtcblxuLyoqIFRva2VucyB0aGF0IGRvIG5vdCBjaGFuZ2UgYmV0d2VlbiBsaWdodCBhbmQgZGFyayBtb2RlLiAqL1xuZnVuY3Rpb24gc3RhdGljVmFycyh0aGVtZTogUmVzb2x2ZWRUaGVtZSk6IFZhcnMge1xuICBjb25zdCB2YXJzOiBWYXJzID0ge1xuICAgIC4uLnNjYWxlVmFycygnYnJhbmQnLCB0aGVtZS5icmFuZCksXG4gICAgLi4uc2NhbGVWYXJzKCdzZWNvbmRhcnknLCB0aGVtZS5zZWNvbmRhcnkpLFxuICAgIC4uLnNjYWxlVmFycygnbmV1dHJhbCcsIHRoZW1lLm5ldXRyYWwpLFxuICAgICctLW5neHNtay1mb250LXNhbnMnOiB0aGVtZS5mb250RmFtaWx5LnNhbnMsXG4gICAgJy0tbmd4c21rLWZvbnQtbW9ubyc6IHRoZW1lLmZvbnRGYW1pbHkubW9ubyxcbiAgICAnLS1uZ3hzbWstcmFkaXVzLWJhc2UnOiB0aGVtZS5yYWRpdXNbdGhlbWUucmFkaXVzQmFzZV0sXG4gICAgJy0tbmd4c21rLWNvbnRyb2wtaGVpZ2h0JzogQ09OVFJPTF9IRUlHSFQsXG5cbiAgICAvLyBNb3Rpb24gVG9rZW5zXG4gICAgJy0tbmd4c21rLW1vdGlvbi1kdXJhdGlvbic6ICd2YXIoLS1uZ3hzbWstZHVyYXRpb24tbm9ybWFsKScsXG4gICAgJy0tbmd4c21rLW1vdGlvbi1lYXNlJzogJ3ZhcigtLW5neHNtay1lYXNlLWluLW91dCknLFxuXG4gICAgLy8gSW50ZXJhY3RpdmUtc3RhdGUgbW90aW9uOiBzaGFyZWQgbGlmdC9wcmVzcyB0cmFuc2Zvcm1zLiBOZXV0cmFsaXplZCB0b1xuICAgIC8vIGBub25lYCB1bmRlciBwcmVmZXJzLXJlZHVjZWQtbW90aW9uIChzZWUgYnVpbGRUaGVtZUNzcykuXG4gICAgJy0tbmd4c21rLWhvdmVyLWxpZnQnOiAndHJhbnNsYXRlWSgtMXB4KScsXG4gICAgJy0tbmd4c21rLXByZXNzLXNjYWxlJzogJ3NjYWxlKDAuOTgpJyxcblxuICAgIC8vIEZvY3VzIHJpbmc6IFRIRSBmb2N1cyBpbmRpY2F0b3IgZm9yIGV2ZXJ5IGNvbXBvbmVudC4gQWxpYXNlcyB0aGVcbiAgICAvLyBtb2RlLWF3YXJlIC0tbmd4c21rLXNoYWRvdy1mb2N1czsgdGhlIGVycm9yIHZhcmlhbnQgZGVyaXZlcyBmcm9tIHRoZVxuICAgIC8vIHNlbWFudGljIGVycm9yIHJvbGUgc28gaW52YWxpZCBjb250cm9scyByaW5nIHJlZCBpbiBib3RoIG1vZGVzLlxuICAgICctLW5neHNtay1mb2N1cy1yaW5nJzogJ3ZhcigtLW5neHNtay1zaGFkb3ctZm9jdXMpJyxcbiAgICAnLS1uZ3hzbWstZm9jdXMtcmluZy1lcnJvcic6XG4gICAgICAnMCAwIDAgMnB4IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1uZ3hzbWstY29sb3ItZXJyb3IpIDE1JSwgdHJhbnNwYXJlbnQpLCAnICtcbiAgICAgICcwIDAgMCA0cHggY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLW5neHNtay1jb2xvci1lcnJvcikgNDUlLCB0cmFuc3BhcmVudCknLFxuXG4gICAgLy8gTW9iaWxlIHZpZXdwb3J0ICYgc2FmZS1hcmVhIHRva2VucyAoaU9TIC8gQW5kcm9pZCAvIElvbmljKVxuICAgICctLW5neHNtay1zYWZlLWFyZWEtdG9wJzogJ2VudihzYWZlLWFyZWEtaW5zZXQtdG9wLCAwcHgpJyxcbiAgICAnLS1uZ3hzbWstc2FmZS1hcmVhLWJvdHRvbSc6ICdlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSwgMHB4KScsXG4gICAgJy0tbmd4c21rLXNhZmUtYXJlYS1sZWZ0JzogJ2VudihzYWZlLWFyZWEtaW5zZXQtbGVmdCwgMHB4KScsXG4gICAgJy0tbmd4c21rLXNhZmUtYXJlYS1yaWdodCc6ICdlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0LCAwcHgpJyxcbiAgICAnLS1uZ3hzbWstdG91Y2gtdGFyZ2V0LW1pbic6ICc0NHB4JyxcblxuICAgIC8vIENvbXBvbmVudC1zcGVjaWZpYyB0b2tlbiBkZWZhdWx0c1xuICAgIC4uLk9iamVjdC52YWx1ZXMoQ09NUE9ORU5UX1RPS0VOX0RFRkFVTFRTKS5yZWR1Y2UoXG4gICAgICAobWVyZ2VkLCB0b2tlbnMpID0+ICh7IC4uLm1lcmdlZCwgLi4udG9rZW5zIH0pLFxuICAgICAge30gYXMgVmFycyxcbiAgICApLFxuICB9O1xuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKENPTlRST0xfSEVJR0hUUykpIHtcbiAgICB2YXJzW2AtLW5neHNtay1jb250cm9sLWhlaWdodC0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKE9QQUNJVFkpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstb3BhY2l0eS0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKElDT05fU0laRSkpIHtcbiAgICB2YXJzW2AtLW5neHNtay1pY29uLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoVFJBQ0tJTkcpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstdHJhY2tpbmctJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhGT05UX1dFSUdIVCkpIHtcbiAgICB2YXJzW2AtLW5neHNtay1mb250LXdlaWdodC0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKExFQURJTkcpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstbGVhZGluZy0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLnNwYWNpbmcpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstc3BhY2UtJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS5yYWRpdXMpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstcmFkaXVzLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUuc2hhZG93KSkge1xuICAgIHZhcnNbYC0tbmd4c21rLXNoYWRvdy0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLmR1cmF0aW9uKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLWR1cmF0aW9uLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUuZWFzaW5nKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLWVhc2UtJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS56SW5kZXgpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstei0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG5cbiAgY29uc3Qgc2l6ZXMgPSB7IGxhcmdlOiAnbGcnLCBtZWRpdW06ICdtZCcsIHNtYWxsOiAnc20nIH0gYXMgY29uc3Q7XG4gIGZvciAoY29uc3QgW3JvbGUsIHN0eWxlc10gb2YgT2JqZWN0LmVudHJpZXModGhlbWUudHlwb2dyYXBoeSkpIHtcbiAgICBmb3IgKGNvbnN0IFtzaXplLCBzdWZmaXhdIG9mIE9iamVjdC5lbnRyaWVzKHNpemVzKSkge1xuICAgICAgY29uc3Qgc3R5bGU6IFR5cGVTdHlsZSA9IHN0eWxlc1tzaXplIGFzIFR5cGVSb2xlU2l6ZV07XG4gICAgICB2YXJzW2AtLW5neHNtay10ZXh0LSR7cm9sZX0tJHtzdWZmaXh9LXNpemVgXSA9IHN0eWxlLnNpemU7XG4gICAgICB2YXJzW2AtLW5neHNtay10ZXh0LSR7cm9sZX0tJHtzdWZmaXh9LWxpbmVgXSA9IHN0eWxlLmxpbmVIZWlnaHQ7XG4gICAgICB2YXJzW2AtLW5neHNtay10ZXh0LSR7cm9sZX0tJHtzdWZmaXh9LXdlaWdodGBdID0gc3R5bGUud2VpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC8vIEV4dHJhLXNtYWxsIGJvZHkgdGV4dCBmb3IgZGVuc2UgbWV0YWRhdGEgcm93czsgYmVsb3cgdGhlIHNtYWxsZXN0XG4gIC8vIFR5cGVSb2xlU2l6ZSBzbyBpdCBpcyBlbWl0dGVkIG91dHNpZGUgdGhlIHJvbGUgbG9vcC5cbiAgdmFyc1snLS1uZ3hzbWstdGV4dC1ib2R5LXhzLXNpemUnXSA9ICcwLjY4NzVyZW0nO1xuICB2YXJzWyctLW5neHNtay10ZXh0LWJvZHkteHMtbGluZSddID0gJzFyZW0nO1xuICB2YXJzWyctLW5neHNtay10ZXh0LWJvZHkteHMtd2VpZ2h0J10gPSAnNDAwJztcblxuICByZXR1cm4gdmFycztcbn1cblxuLyoqIFNlbWFudGljIHJvbGUgdG9rZW5zIGZvciBsaWdodCBtb2RlLiAqL1xuZnVuY3Rpb24gbGlnaHRWYXJzKHRoZW1lOiBSZXNvbHZlZFRoZW1lKTogVmFycyB7XG4gIGNvbnN0IHZhcnM6IFZhcnMgPSB7XG4gICAgJ2NvbG9yLXNjaGVtZSc6ICdsaWdodCcsXG5cbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeSc6IHRoZW1lLmJyYW5kQmFzZSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1ob3Zlcic6IHNoaWZ0TGlnaHRuZXNzKHRoZW1lLmJyYW5kQmFzZSwgLTgpLFxuICAgICctLW5neHNtay1jb2xvci1wcmltYXJ5LWFjdGl2ZSc6IHNoaWZ0TGlnaHRuZXNzKHRoZW1lLmJyYW5kQmFzZSwgLTE0KSxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1jb250YWluZXInOiB0aGVtZS5icmFuZFsxMDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1wcmltYXJ5LWNvbnRhaW5lcic6IHRoZW1lLmJyYW5kWzkwMF0sXG5cbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5JzogdGhlbWUuc2Vjb25kYXJ5QmFzZSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc2Vjb25kYXJ5JzogJyNGRkZGRkYnLFxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnktaG92ZXInOiBzaGlmdExpZ2h0bmVzcyh0aGVtZS5zZWNvbmRhcnlCYXNlLCAtOCksXG4gICAgJy0tbmd4c21rLWNvbG9yLXNlY29uZGFyeS1hY3RpdmUnOiBzaGlmdExpZ2h0bmVzcyh0aGVtZS5zZWNvbmRhcnlCYXNlLCAtMTQpLFxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnktY29udGFpbmVyJzogdGhlbWUuc2Vjb25kYXJ5WzEwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXNlY29uZGFyeS1jb250YWluZXInOiB0aGVtZS5zZWNvbmRhcnlbOTAwXSxcblxuICAgIC8vIERlZmF1bHQgbGlnaHQgdGhlbWU6IGNvb2wtZ3JleSBib2R5LCB3aGl0ZSBjYXJkcyBmbG9hdGluZyBvbiB0b3AsIGhhaXJsaW5lIGJvcmRlcnMuXG4gICAgJy0tbmd4c21rLWNvbG9yLWJhY2tncm91bmQnOiB0aGVtZS5uZXV0cmFsWzUwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tYmFja2dyb3VuZCc6ICcjMEExMzE3JyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc3VyZmFjZSc6ICcjMEExMzE3JyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS12YXJpYW50JzogdGhlbWUubmV1dHJhbFsxMDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zdXJmYWNlLXZhcmlhbnQnOiB0aGVtZS5uZXV0cmFsWzUwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtbXV0ZWQnOiB0aGVtZS5uZXV0cmFsWzUwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS1lbGV2YXRlZCc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS1vdmVybGF5JzogJyNGRkZGRkYnLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zdXJmYWNlLW11dGVkJzogdGhlbWUubmV1dHJhbFs0MDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWhvdmVyJzogJ3JnYig1IDU0IDg5IC8gMC4wNSknLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWFjdGl2ZSc6ICdyZ2IoNSA1NCA4OSAvIDAuMSknLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWNvbnRhaW5lcic6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb3V0bGluZSc6ICdyZ2IoNSA1NCA4OSAvIDAuMSknLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lLXN0cm9uZyc6IHRoZW1lLm5ldXRyYWxbMjAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb3V0bGluZS12YXJpYW50JzogJ3JnYig1IDU0IDg5IC8gMC4wNiknLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lLXN1YnRsZSc6ICdyZ2IoNSA1NCA4OSAvIDAuMDUpJyxcblxuICAgIC8vIEVsZXZhdGlvbiBsYWRkZXJcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS0xJzogJyNGRkZGRkYnLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTInOiB0aGVtZS5uZXV0cmFsWzUwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS0zJzogdGhlbWUubmV1dHJhbFsxMDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTQnOiB0aGVtZS5uZXV0cmFsWzIwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtNSc6IHRoZW1lLm5ldXRyYWxbMzAwXSxcblxuICAgICctLW5neHNtay1jb2xvci1yaW5nJzogdGhlbWUuYnJhbmRCYXNlLFxuICAgICctLW5neHNtay1jb2xvci1iYWNrZHJvcCc6ICdyZ2IoMSAxOCA0MCAvIDAuNCknLFxuICAgICctLW5neHNtay1zaGFkb3ctZm9jdXMnOiBgMCAwIDAgMnB4ICR7dGhlbWUuYnJhbmRbMTAwXX0sIDAgMCAwIDRweCBjb2xvci1taXgoaW4gc3JnYiwgJHt0aGVtZS5icmFuZEJhc2V9IDQ1JSwgdHJhbnNwYXJlbnQpYCxcblxuICAgIC8vIENhdGVnb3JpY2FsIGNoYXJ0IHBhbGV0dGUg4oCUIGEgZml4ZWQgOC1odWUgcXVhbGl0YXRpdmUgc2V0IChOT1QgZGVyaXZlZFxuICAgIC8vIGZyb20gdGhlIGJyYW5kLCBzbyBhZGphY2VudCBzZXJpZXMgc3RheSBkaXN0aW5ndWlzaGFibGUgYWNyb3NzIHRoZW1lcyksXG4gICAgLy8gc3RlcHBlZCBmb3IgdGhlIGxpZ2h0IHN1cmZhY2UuIFZhbGlkYXRlZCBmb3IgdGhlIGxpZ2h0IGNoYXJ0IHN1cmZhY2U6XG4gICAgLy8gQ1ZEIHdvcnN0LWFkamFjZW50IM6URSAyNC4yLCBjaHJvbWEvbGlnaHRuZXNzIGluLWJhbmQuIENoYXJ0cyByZWFkIHRoZXNlXG4gICAgLy8gdmlhIGdldENvbXB1dGVkU3R5bGU7IGNvbnN1bWVycyBjYW4gb3ZlcnJpZGUgYW55IHNsb3QgdG8gcmVicmFuZCBzZXJpZXMuXG4gICAgJy0tbmd4c21rLWNoYXJ0LTEnOiAnIzJBNzhENicsXG4gICAgJy0tbmd4c21rLWNoYXJ0LTInOiAnIzFCQUY3QScsXG4gICAgJy0tbmd4c21rLWNoYXJ0LTMnOiAnI0VEQTEwMCcsXG4gICAgJy0tbmd4c21rLWNoYXJ0LTQnOiAnIzAwODMwMCcsXG4gICAgJy0tbmd4c21rLWNoYXJ0LTUnOiAnIzRBM0FBNycsXG4gICAgJy0tbmd4c21rLWNoYXJ0LTYnOiAnI0UzNDk0OCcsXG4gICAgJy0tbmd4c21rLWNoYXJ0LTcnOiAnI0U4N0JBNCcsXG4gICAgJy0tbmd4c21rLWNoYXJ0LTgnOiAnI0VCNjgzNCcsXG4gIH07XG5cbiAgY29uc3QgdGVydGlhcnkgPSBkZXJpdmVTY2FsZShyb3RhdGVIdWUodGhlbWUuYnJhbmRCYXNlLCA2NCkpO1xuICB2YXJzWyctLW5neHNtay1jb2xvci10ZXJ0aWFyeSddID0gdGVydGlhcnlbNTAwXTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3Itb24tdGVydGlhcnknXSA9ICcjRkZGRkZGJztcbiAgdmFyc1snLS1uZ3hzbWstY29sb3ItdGVydGlhcnktY29udGFpbmVyJ10gPSB0ZXJ0aWFyeVsxMDBdO1xuICB2YXJzWyctLW5neHNtay1jb2xvci1vbi10ZXJ0aWFyeS1jb250YWluZXInXSA9IHRlcnRpYXJ5WzkwMF07XG5cbiAgZm9yIChjb25zdCBbbmFtZSwgaGV4XSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS5zZW1hbnRpYykpIHtcbiAgICBjb25zdCBzY2FsZSA9IGRlcml2ZVNjYWxlKGhleCk7XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3ItJHtuYW1lfWBdID0gaGV4O1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLW9uLSR7bmFtZX1gXSA9ICcjRkZGRkZGJztcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci0ke25hbWV9LWNvbnRhaW5lcmBdID0gc2NhbGVbMTAwXTtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci1vbi0ke25hbWV9LWNvbnRhaW5lcmBdID0gc2NhbGVbODAwXTtcbiAgfVxuXG4gIHJldHVybiB7IC4uLnZhcnMsIC4uLnRoZW1lLm92ZXJyaWRlcy5saWdodCB9O1xufVxuXG4vKiogU2VtYW50aWMgcm9sZSB0b2tlbnMgZm9yIGRhcmsgbW9kZS4gKi9cbmZ1bmN0aW9uIGRhcmtWYXJzKHRoZW1lOiBSZXNvbHZlZFRoZW1lKTogVmFycyB7XG4gIGNvbnN0IHZhcnM6IFZhcnMgPSB7XG4gICAgJ2NvbG9yLXNjaGVtZSc6ICdkYXJrJyxcblxuICAgICctLW5neHNtay1jb2xvci1wcmltYXJ5JzogdGhlbWUuYnJhbmRbNDAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1ob3Zlcic6IHRoZW1lLmJyYW5kWzMwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnktYWN0aXZlJzogdGhlbWUuYnJhbmRbMjAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1jb250YWluZXInOiB0aGVtZS5icmFuZFs5MDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1wcmltYXJ5LWNvbnRhaW5lcic6IHRoZW1lLmJyYW5kWzEwMF0sXG5cbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5JzogdGhlbWUuc2Vjb25kYXJ5WzQwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXNlY29uZGFyeSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5LWhvdmVyJzogdGhlbWUuc2Vjb25kYXJ5WzMwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXNlY29uZGFyeS1hY3RpdmUnOiB0aGVtZS5zZWNvbmRhcnlbMjAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5LWNvbnRhaW5lcic6IHRoZW1lLnNlY29uZGFyeVs5MDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zZWNvbmRhcnktY29udGFpbmVyJzogdGhlbWUuc2Vjb25kYXJ5WzEwMF0sXG5cbiAgICAvLyBEZWZhdWx0IGRhcmsgdGhlbWU6IG5lYXItbmV1dHJhbCBjaGFyY29hbCBib2R5LCBzbGlnaHRseSBsaWdodGVyIGNhcmQsXG4gICAgLy8gbGlnaHRlciBzdGlsbCBmb3IgcG9wb3ZlcnM7IGhhaXJsaW5lIGxpZ2h0LW9uLWRhcmsgYm9yZGVycy5cbiAgICAnLS1uZ3hzbWstY29sb3ItYmFja2dyb3VuZCc6ICcjMTExMTEyJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tYmFja2dyb3VuZCc6ICcjREZFMkU1JyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZSc6ICcjMUYxRjIyJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc3VyZmFjZSc6ICcjREZFMkU1JyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS12YXJpYW50JzogJyMyODI5MkMnLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zdXJmYWNlLXZhcmlhbnQnOiAnI0FBQUZCNScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtbXV0ZWQnOiAnIzE0MTQxNicsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtZWxldmF0ZWQnOiAnIzI4MjkyQycsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2Utb3ZlcmxheSc6ICcjMkYzMTM2JyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc3VyZmFjZS1tdXRlZCc6ICcjNzc3Qzg1JyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS1ob3Zlcic6ICdyZ2IoMjU1IDI1NSAyNTUgLyAwLjA1KScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtYWN0aXZlJzogJ3JnYigyNTUgMjU1IDI1NSAvIDAuMSknLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWNvbnRhaW5lcic6ICcjMjgyOTJDJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb3V0bGluZSc6ICdyZ2IoMjQyIDI0NCAyNDYgLyAwLjEpJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb3V0bGluZS1zdHJvbmcnOiAnIzQ5NEQ1MycsXG4gICAgJy0tbmd4c21rLWNvbG9yLW91dGxpbmUtdmFyaWFudCc6ICdyZ2IoMjQyIDI0NCAyNDYgLyAwLjA2KScsXG4gICAgJy0tbmd4c21rLWNvbG9yLW91dGxpbmUtc3VidGxlJzogJ3JnYigyNDIgMjQ0IDI0NiAvIDAuMDUpJyxcblxuICAgIC8vIEVsZXZhdGlvbiBsYWRkZXJcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS0xJzogdGhlbWUubmV1dHJhbFs4MDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTInOiB0aGVtZS5uZXV0cmFsWzcwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtMyc6IHRoZW1lLm5ldXRyYWxbNjAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS00JzogdGhlbWUubmV1dHJhbFs1MDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTUnOiB0aGVtZS5uZXV0cmFsWzQwMF0sXG5cbiAgICAnLS1uZ3hzbWstY29sb3ItcmluZyc6IHRoZW1lLmJyYW5kWzQwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLWJhY2tkcm9wJzogJ3JnYigxNyAxNyAxOCAvIDAuNiknLFxuICAgICctLW5neHNtay1zaGFkb3ctZm9jdXMnOiBgMCAwIDAgMnB4IGNvbG9yLW1peChpbiBzcmdiLCAke3RoZW1lLmJyYW5kWzQwMF19IDI1JSwgdHJhbnNwYXJlbnQpLCAwIDAgMCA0cHggY29sb3ItbWl4KGluIHNyZ2IsICR7dGhlbWUuYnJhbmRbNDAwXX0gNDUlLCB0cmFuc3BhcmVudClgLFxuXG4gICAgLy8gQ2F0ZWdvcmljYWwgY2hhcnQgcGFsZXR0ZSDigJQgdGhlIHNhbWUgZWlnaHQgaHVlcyBhcyBsaWdodCwgcmUtc3RlcHBlZCBmb3JcbiAgICAvLyB0aGUgZGFyayBzdXJmYWNlIChub3QgYSBkaWZmZXJlbnQgcGFsZXR0ZSkuIFZhbGlkYXRlZCBmb3IgdGhlIGRhcmsgY2hhcnRcbiAgICAvLyBzdXJmYWNlOiBhbGwgc2xvdHMg4omlIDM6MSBjb250cmFzdCwgQ1ZEIHdvcnN0LWFkamFjZW50IM6URSAxMC4zIChmbG9vciBiYW5kLFxuICAgIC8vIHJlbGllcyBvbiB0aGUgbGVnZW5kL2xhYmVscyBjaGFydHMgYWxyZWFkeSByZW5kZXIgZm9yIHNlY29uZGFyeSBlbmNvZGluZykuXG4gICAgJy0tbmd4c21rLWNoYXJ0LTEnOiAnIzM5ODdFNScsXG4gICAgJy0tbmd4c21rLWNoYXJ0LTInOiAnIzE5OUU3MCcsXG4gICAgJy0tbmd4c21rLWNoYXJ0LTMnOiAnI0M5ODUwMCcsXG4gICAgJy0tbmd4c21rLWNoYXJ0LTQnOiAnIzAwODMwMCcsXG4gICAgJy0tbmd4c21rLWNoYXJ0LTUnOiAnIzkwODVFOScsXG4gICAgJy0tbmd4c21rLWNoYXJ0LTYnOiAnI0U2Njc2NycsXG4gICAgJy0tbmd4c21rLWNoYXJ0LTcnOiAnI0Q1NTE4MScsXG4gICAgJy0tbmd4c21rLWNoYXJ0LTgnOiAnI0Q5NTkyNicsXG4gIH07XG5cbiAgY29uc3QgdGVydGlhcnkgPSBkZXJpdmVTY2FsZShyb3RhdGVIdWUodGhlbWUuYnJhbmRCYXNlLCA2NCkpO1xuICB2YXJzWyctLW5neHNtay1jb2xvci10ZXJ0aWFyeSddID0gdGVydGlhcnlbNDAwXTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3Itb24tdGVydGlhcnknXSA9IHRlcnRpYXJ5Wzk1MF07XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLXRlcnRpYXJ5LWNvbnRhaW5lciddID0gdGVydGlhcnlbOTAwXTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3Itb24tdGVydGlhcnktY29udGFpbmVyJ10gPSB0ZXJ0aWFyeVsxMDBdO1xuXG4gIGZvciAoY29uc3QgW25hbWUsIGhleF0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUuc2VtYW50aWMpKSB7XG4gICAgY29uc3Qgc2NhbGUgPSBkZXJpdmVTY2FsZShoZXgpO1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLSR7bmFtZX1gXSA9IHNjYWxlWzQwMF07XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3Itb24tJHtuYW1lfWBdID0gc2NhbGVbOTUwXTtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci0ke25hbWV9LWNvbnRhaW5lcmBdID0gc2NhbGVbOTUwXTtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci1vbi0ke25hbWV9LWNvbnRhaW5lcmBdID0gc2NhbGVbMzAwXTtcbiAgfVxuXG4gIHJldHVybiB7IC4uLnZhcnMsIC4uLnRoZW1lLm92ZXJyaWRlcy5kYXJrIH07XG59XG5cbmZ1bmN0aW9uIGJsb2NrKHNlbGVjdG9yOiBzdHJpbmcsIHZhcnM6IFZhcnMsIGluZGVudCA9ICcnKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSBPYmplY3QuZW50cmllcyh2YXJzKS5tYXAoKFtuYW1lLCB2YWx1ZV0pID0+IGAke2luZGVudH0gICR7bmFtZX06ICR7dmFsdWV9O2ApO1xuICByZXR1cm4gYCR7aW5kZW50fSR7c2VsZWN0b3J9IHtcXG4ke2xpbmVzLmpvaW4oJ1xcbicpfVxcbiR7aW5kZW50fX1gO1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBhIHRoZW1lIGNvbmZpZyBpbnRvIGEgQ1NTIHN0eWxlc2hlZXQgb2YgYC0tbmd4c21rLSpgIGN1c3RvbVxuICogcHJvcGVydGllcy4gRW1pdHMgc3RhdGljIHRva2VucyBwbHVzIGxpZ2h0LW1vZGUgcm9sZXMgb24gYDpyb290YCwgYW5kXG4gKiBkYXJrLW1vZGUgcm9sZXMgYWNjb3JkaW5nIHRvIHRoZSBjb25maWd1cmVkIGRhcmstbW9kZSBzdHJhdGVneS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVGhlbWVDc3MoY29uZmlnOiBUaGVtZUNvbmZpZyB8IFJlc29sdmVkVGhlbWUpOiBzdHJpbmcge1xuICBjb25zdCB0aGVtZSA9XG4gICAgJ2JyYW5kJyBpbiBjb25maWcgJiYgJ3NwYWNpbmcnIGluIChjb25maWcgYXMgb2JqZWN0KVxuICAgICAgPyAoY29uZmlnIGFzIFJlc29sdmVkVGhlbWUpXG4gICAgICA6IHJlc29sdmVUaGVtZShjb25maWcgYXMgVGhlbWVDb25maWcpO1xuXG4gIGNvbnN0IHJvb3QgPSBibG9jaygnOnJvb3QnLCB7IC4uLnN0YXRpY1ZhcnModGhlbWUpLCAuLi5saWdodFZhcnModGhlbWUpIH0pO1xuICBjb25zdCBkYXJrID0gZGFya1ZhcnModGhlbWUpO1xuXG4gIGxldCBkYXJrQmxvY2s6IHN0cmluZztcbiAgc3dpdGNoICh0aGVtZS5kYXJrTW9kZS5zdHJhdGVneSkge1xuICAgIGNhc2UgJ21lZGlhJzpcbiAgICAgIGRhcmtCbG9jayA9IGBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XFxuJHtibG9jaygnOnJvb3QnLCBkYXJrLCAnICAnKX1cXG59YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3N5c3RlbSc6IHtcbiAgICAgIC8vIGBsaWdodC1kYXJrKClgIHN1cHBvcnQgaXMgcGVyLXByb3BlcnR5OyB0aGUgY2xhc3MgYmxvY2sgc3RpbGwgc2VydmVzXG4gICAgICAvLyBhcyB0aGUgb3ZlcnJpZGUgaG9vaywgc28gYHN5c3RlbWAgYmVoYXZlcyBhcyBtZWRpYSArIGNsYXNzLlxuICAgICAgY29uc3QgY24gPSB0aGVtZS5kYXJrTW9kZS5jbGFzc05hbWU7XG4gICAgICBkYXJrQmxvY2sgPSBbXG4gICAgICAgIGBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XFxuJHtibG9jaygnOnJvb3QnLCBkYXJrLCAnICAnKX1cXG59YCxcbiAgICAgICAgYmxvY2soYDpyb290LiR7Y259LCA6cm9vdC4ke2NufSBib2R5LCAuJHtjbn1gLCBkYXJrKSxcbiAgICAgIF0uam9pbignXFxuXFxuJyk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgLy8gYDpyb290LjxjbGFzcz5gIChzcGVjaWZpY2l0eSAwLDIsMCkgcGx1cyBhIGBib2R5YCB2YXJpYW50IGRlZmVuZCB0aGVcbiAgICAgIC8vIGRhcmsgdG9rZW5zIGFnYWluc3QgdGhpcmQtcGFydHkgc3R5bGVzaGVldHMgdGhhdCByZWRlZmluZSBgLS1uZ3hzbWstKmBcbiAgICAgIC8vIG9uIGEgcGxhaW4gYDpyb290YCAoMCwxLDApIOKAlCB0aG9zZSB3b3VsZCBvdGhlcndpc2Ugd2luIGJ5IHNvdXJjZSBvcmRlclxuICAgICAgLy8gd2hlbiBpbmplY3RlZCBpbnRvIDxoZWFkPiBhZnRlciB0aGlzIHNoZWV0LiBUaGUgYmFyZSBgLjxjbGFzcz5gIGtlZXBzXG4gICAgICAvLyBzY29wZWQgKG5vbi1yb290KSBkYXJrIHJlZ2lvbnMgd29ya2luZy5cbiAgICAgIGNvbnN0IGNuID0gdGhlbWUuZGFya01vZGUuY2xhc3NOYW1lO1xuICAgICAgZGFya0Jsb2NrID0gYmxvY2soYDpyb290LiR7Y259LCA6cm9vdC4ke2NufSBib2R5LCAuJHtjbn1gLCBkYXJrKTtcbiAgICB9XG4gIH1cblxuICAvLyBaZXJvIGV2ZXJ5IGR1cmF0aW9uIHRva2VuIChjb21wb25lbnRzIGFuaW1hdGUgd2l0aCAtLW5neHNtay1kdXJhdGlvbi0qXG4gIC8vIGRpcmVjdGx5KSBhbmQgbmV1dHJhbGl6ZSB0aGUgc2hhcmVkIHRyYW5zZm9ybXMgc28gQUxMIHRva2VuLWRyaXZlbiBtb3Rpb25cbiAgLy8gc3RvcHMuIGAubmd4c21rLXJlZHVjZS1tb3Rpb25gIG9mZmVycyB0aGUgc2FtZSBhcyBhbiBhcHAtbGV2ZWwgb3B0LWluLlxuICBjb25zdCByZWR1Y2VkVmFyczogVmFycyA9IHtcbiAgICAnLS1uZ3hzbWstbW90aW9uLWR1cmF0aW9uJzogJzBtcycsXG4gICAgJy0tbmd4c21rLWhvdmVyLWxpZnQnOiAnbm9uZScsXG4gICAgJy0tbmd4c21rLXByZXNzLXNjYWxlJzogJ25vbmUnLFxuICB9O1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGVtZS5kdXJhdGlvbikpIHtcbiAgICByZWR1Y2VkVmFyc1tgLS1uZ3hzbWstZHVyYXRpb24tJHtrZXl9YF0gPSAnMG1zJztcbiAgfVxuICBjb25zdCByZWR1Y2VkTW90aW9uID0gW1xuICAgIGBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xcbiR7YmxvY2soJzpyb290JywgcmVkdWNlZFZhcnMsICcgICcpfVxcbn1gLFxuICAgIGJsb2NrKCc6cm9vdC5uZ3hzbWstcmVkdWNlLW1vdGlvbiwgLm5neHNtay1yZWR1Y2UtbW90aW9uJywgcmVkdWNlZFZhcnMpLFxuICBdLmpvaW4oJ1xcblxcbicpO1xuICByZXR1cm4gYC8qIEdlbmVyYXRlZCBieSBAbmd4c21rL3RoZW1lIOKAlCBkbyBub3QgZWRpdCBieSBoYW5kLiAqL1xcbiR7cm9vdH1cXG5cXG4ke2RhcmtCbG9ja31cXG5cXG4ke3JlZHVjZWRNb3Rpb259XFxuYDtcbn1cbiJdfQ==
|
|
@@ -25,9 +25,9 @@ export function resolveTheme(config) {
|
|
|
25
25
|
fontFamily: { ...DEFAULT_FONT_FAMILY, ...config.typography?.fontFamily },
|
|
26
26
|
typography: DEFAULT_TYPOGRAPHY,
|
|
27
27
|
spacing: SPACING,
|
|
28
|
-
radius: RADIUS,
|
|
28
|
+
radius: { ...RADIUS, ...(config.radiusScale ?? {}) },
|
|
29
29
|
radiusBase: config.borderRadius ?? 'md',
|
|
30
|
-
shadow: SHADOW,
|
|
30
|
+
shadow: { ...SHADOW, ...(config.shadowScale ?? {}) },
|
|
31
31
|
duration: DURATION,
|
|
32
32
|
easing: EASING,
|
|
33
33
|
zIndex: Z_INDEX,
|
|
@@ -41,4 +41,4 @@ export function resolveTheme(config) {
|
|
|
41
41
|
},
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lL3NyYy9saWIvZGVmaW5lLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFDTixPQUFPLEVBQ1AsT0FBTyxHQUNSLE1BQU0sVUFBVSxDQUFDO0FBR2xCOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLE1BQW1CO0lBQzlDLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxxRUFBcUU7QUFDckUsTUFBTSxVQUFVLFlBQVksQ0FBQyxNQUFtQjtJQUM5QyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEYsT0FBTztRQUNMLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLFFBQVE7UUFDN0IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTztRQUMvQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3JFLGFBQWE7UUFDYixTQUFTLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLElBQUksV0FBVyxDQUFDLGFBQWEsQ0FBQztRQUNwRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxlQUFlO1FBQzFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFO1FBQ3JELFVBQVUsRUFBRSxFQUFFLEdBQUcsbUJBQW1CLEVBQUUsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRTtRQUN4RSxVQUFVLEVBQUUsa0JBQWtCO1FBQzlCLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLE1BQU0sRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxFQUE0QjtRQUM5RSxVQUFVLEVBQUUsTUFBTSxDQUFDLFlBQVksSUFBSSxJQUFJO1FBQ3ZDLE1BQU0sRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxFQUE0QjtRQUM5RSxRQUFRLEVBQUUsUUFBUTtRQUNsQixNQUFNLEVBQUUsTUFBTTtRQUNkLE1BQU0sRUFBRSxPQUFPO1FBQ2YsUUFBUSxFQUFFO1lBQ1IsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxJQUFJLE9BQU87WUFDOUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsU0FBUyxJQUFJLE1BQU07U0FDaEQ7UUFDRCxTQUFTLEVBQUU7WUFDVCxLQUFLLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNwQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRTtTQUNuQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVyaXZlU2NhbGUsIHJvdGF0ZUh1ZSB9IGZyb20gJy4vY29sb3InO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9GT05UX0ZBTUlMWSxcbiAgREVGQVVMVF9ORVVUUkFMLFxuICBERUZBVUxUX1NFTUFOVElDLFxuICBERUZBVUxUX1RZUE9HUkFQSFksXG4gIERVUkFUSU9OLFxuICBFQVNJTkcsXG4gIFJBRElVUyxcbiAgU0hBRE9XLFxuICBTUEFDSU5HLFxuICBaX0lOREVYLFxufSBmcm9tICcuL3Rva2Vucyc7XG5pbXBvcnQgeyBSZXNvbHZlZFRoZW1lLCBUaGVtZUNvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIElkZW50aXR5IGhlbHBlciB0aGF0IGdpdmVzIGBuZ3hzbWsuY29uZmlnLnRzYCBmaWxlcyBmdWxsIHR5cGUgaW5mZXJlbmNlOlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tICdAbmd4c21rL3RoZW1lJztcbiAqIGV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZyh7IGJyYW5kOiB7IHByaW1hcnk6ICcjN0MzQUVEJyB9IH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVDb25maWcoY29uZmlnOiBUaGVtZUNvbmZpZyk6IFRoZW1lQ29uZmlnIHtcbiAgcmV0dXJuIGNvbmZpZztcbn1cblxuLyoqIE1lcmdlIGEgdXNlciBjb25maWcgd2l0aCBkZWZhdWx0cyBhbmQgZGVyaXZlIGFsbCBjb2xvciBzY2FsZXMuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVRoZW1lKGNvbmZpZzogVGhlbWVDb25maWcpOiBSZXNvbHZlZFRoZW1lIHtcbiAgY29uc3Qgc2Vjb25kYXJ5QmFzZSA9IGNvbmZpZy5icmFuZC5zZWNvbmRhcnkgPz8gcm90YXRlSHVlKGNvbmZpZy5icmFuZC5wcmltYXJ5LCA2MCk7XG4gIHJldHVybiB7XG4gICAgbmFtZTogY29uZmlnLm5hbWUgPz8gJ2N1c3RvbScsXG4gICAgYnJhbmRCYXNlOiBjb25maWcuYnJhbmQucHJpbWFyeSxcbiAgICBicmFuZDogY29uZmlnLmJyYW5kLnByaW1hcnlTY2FsZSA/PyBkZXJpdmVTY2FsZShjb25maWcuYnJhbmQucHJpbWFyeSksXG4gICAgc2Vjb25kYXJ5QmFzZSxcbiAgICBzZWNvbmRhcnk6IGNvbmZpZy5icmFuZC5zZWNvbmRhcnlTY2FsZSA/PyBkZXJpdmVTY2FsZShzZWNvbmRhcnlCYXNlKSxcbiAgICBuZXV0cmFsOiBjb25maWcubmV1dHJhbCA/PyBERUZBVUxUX05FVVRSQUwsXG4gICAgc2VtYW50aWM6IHsgLi4uREVGQVVMVF9TRU1BTlRJQywgLi4uY29uZmlnLnNlbWFudGljIH0sXG4gICAgZm9udEZhbWlseTogeyAuLi5ERUZBVUxUX0ZPTlRfRkFNSUxZLCAuLi5jb25maWcudHlwb2dyYXBoeT8uZm9udEZhbWlseSB9LFxuICAgIHR5cG9ncmFwaHk6IERFRkFVTFRfVFlQT0dSQVBIWSxcbiAgICBzcGFjaW5nOiBTUEFDSU5HLFxuICAgIHJhZGl1czogeyAuLi5SQURJVVMsIC4uLihjb25maWcucmFkaXVzU2NhbGUgPz8ge30pIH0gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICByYWRpdXNCYXNlOiBjb25maWcuYm9yZGVyUmFkaXVzID8/ICdtZCcsXG4gICAgc2hhZG93OiB7IC4uLlNIQURPVywgLi4uKGNvbmZpZy5zaGFkb3dTY2FsZSA/PyB7fSkgfSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIGR1cmF0aW9uOiBEVVJBVElPTixcbiAgICBlYXNpbmc6IEVBU0lORyxcbiAgICB6SW5kZXg6IFpfSU5ERVgsXG4gICAgZGFya01vZGU6IHtcbiAgICAgIHN0cmF0ZWd5OiBjb25maWcuZGFya01vZGU/LnN0cmF0ZWd5ID8/ICdjbGFzcycsXG4gICAgICBjbGFzc05hbWU6IGNvbmZpZy5kYXJrTW9kZT8uY2xhc3NOYW1lID8/ICdkYXJrJyxcbiAgICB9LFxuICAgIG92ZXJyaWRlczoge1xuICAgICAgbGlnaHQ6IGNvbmZpZy5vdmVycmlkZXM/LmxpZ2h0ID8/IHt9LFxuICAgICAgZGFyazogY29uZmlnLm92ZXJyaWRlcz8uZGFyayA/PyB7fSxcbiAgICB9LFxuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ENVIRONMENT_INITIALIZER, inject, makeEnvironmentProviders, } from '@angular/core';
|
|
2
|
+
import { NgxsmkThemeService } from './theme.service';
|
|
3
|
+
import { violetPreset } from './presets';
|
|
4
|
+
/**
|
|
5
|
+
* Standalone provider for Angular 18-22+ applications that automatically
|
|
6
|
+
* synchronizes NGXSMK design tokens with Ionic 7/8 CSS variables on startup.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* export const appConfig: ApplicationConfig = {
|
|
11
|
+
* providers: [
|
|
12
|
+
* provideIonicAngular(),
|
|
13
|
+
* provideNgxsmkIonicTheme(),
|
|
14
|
+
* ]
|
|
15
|
+
* };
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export function provideNgxsmkIonicTheme(config) {
|
|
19
|
+
return makeEnvironmentProviders([
|
|
20
|
+
{
|
|
21
|
+
provide: ENVIRONMENT_INITIALIZER,
|
|
22
|
+
multi: true,
|
|
23
|
+
useValue: () => {
|
|
24
|
+
const theme = inject(NgxsmkThemeService);
|
|
25
|
+
theme.applyIonicTheme(config ?? violetPreset);
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
]);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uaWMtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS9zcmMvbGliL2lvbmljLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsTUFBTSxFQUNOLHdCQUF3QixHQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR3pDOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsTUFBb0I7SUFDMUQsT0FBTyx3QkFBd0IsQ0FBQztRQUM5QjtZQUNFLE9BQU8sRUFBRSx1QkFBdUI7WUFDaEMsS0FBSyxFQUFFLElBQUk7WUFDWCxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUNiLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUN6QyxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sSUFBSSxZQUFZLENBQUMsQ0FBQztZQUNoRCxDQUFDO1NBQ0Y7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsXG4gIEVudmlyb25tZW50UHJvdmlkZXJzLFxuICBpbmplY3QsXG4gIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hzbWtUaGVtZVNlcnZpY2UgfSBmcm9tICcuL3RoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgdmlvbGV0UHJlc2V0IH0gZnJvbSAnLi9wcmVzZXRzJztcbmltcG9ydCB7IFRoZW1lQ29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogU3RhbmRhbG9uZSBwcm92aWRlciBmb3IgQW5ndWxhciAxOC0yMisgYXBwbGljYXRpb25zIHRoYXQgYXV0b21hdGljYWxseVxuICogc3luY2hyb25pemVzIE5HWFNNSyBkZXNpZ24gdG9rZW5zIHdpdGggSW9uaWMgNy84IENTUyB2YXJpYWJsZXMgb24gc3RhcnR1cC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGV4cG9ydCBjb25zdCBhcHBDb25maWc6IEFwcGxpY2F0aW9uQ29uZmlnID0ge1xuICogICBwcm92aWRlcnM6IFtcbiAqICAgICBwcm92aWRlSW9uaWNBbmd1bGFyKCksXG4gKiAgICAgcHJvdmlkZU5neHNta0lvbmljVGhlbWUoKSxcbiAqICAgXVxuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZU5neHNta0lvbmljVGhlbWUoY29uZmlnPzogVGhlbWVDb25maWcpOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVOVklST05NRU5UX0lOSVRJQUxJWkVSLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VWYWx1ZTogKCkgPT4ge1xuICAgICAgICBjb25zdCB0aGVtZSA9IGluamVjdChOZ3hzbWtUaGVtZVNlcnZpY2UpO1xuICAgICAgICB0aGVtZS5hcHBseUlvbmljVGhlbWUoY29uZmlnID8/IHZpb2xldFByZXNldCk7XG4gICAgICB9LFxuICAgIH0sXG4gIF0pO1xufVxuIl19
|