css-to-tailwind-react 0.2.2 → 0.3.1

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.
@@ -1,6 +1,8 @@
1
1
  export declare function getPropertyForUtility(utility: string): string;
2
2
  export declare function isTextFontSizeUtility(utility: string): boolean;
3
3
  export declare function isTextColorUtility(utility: string): boolean;
4
+ export declare function isLineHeightUtility(utility: string): boolean;
5
+ export declare function isLetterSpacingUtility(utility: string): boolean;
4
6
  export declare function getPropertiesForUtilities(utilities: string[]): Map<string, string[]>;
5
7
  export declare const PROPERTY_CONFLICT_GROUPS: Record<string, string[]>;
6
8
  export declare function getConflictGroup(property: string): string | null;
@@ -4,6 +4,8 @@ exports.PROPERTY_CONFLICT_GROUPS = void 0;
4
4
  exports.getPropertyForUtility = getPropertyForUtility;
5
5
  exports.isTextFontSizeUtility = isTextFontSizeUtility;
6
6
  exports.isTextColorUtility = isTextColorUtility;
7
+ exports.isLineHeightUtility = isLineHeightUtility;
8
+ exports.isLetterSpacingUtility = isLetterSpacingUtility;
7
9
  exports.getPropertiesForUtilities = getPropertiesForUtilities;
8
10
  exports.getConflictGroup = getConflictGroup;
9
11
  exports.propertiesConflict = propertiesConflict;
@@ -12,7 +14,7 @@ const PROPERTY_PREFIX_MAP = {
12
14
  'background-color': ['bg-'],
13
15
  'font-size': ['text-xs', 'text-sm', 'text-base', 'text-lg', 'text-xl', 'text-2xl', 'text-3xl', 'text-4xl', 'text-5xl', 'text-6xl', 'text-7xl', 'text-8xl', 'text-9xl', 'text-'],
14
16
  'font-weight': ['font-thin', 'font-extralight', 'font-light', 'font-normal', 'font-medium', 'font-semibold', 'font-bold', 'font-extrabold', 'font-black'],
15
- 'display': ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'grid', 'inline-grid', 'hidden', 'contents', 'table', 'table-cell', 'table-row'],
17
+ 'display': ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'grid', 'inline-grid', 'hidden', 'contents', 'table', 'table-cell', 'table-row', 'flow-root'],
16
18
  'position': ['static', 'fixed', 'absolute', 'relative', 'sticky'],
17
19
  'width': ['w-'],
18
20
  'height': ['h-'],
@@ -38,6 +40,7 @@ const PROPERTY_PREFIX_MAP = {
38
40
  'border-radius': ['rounded-', 'rounded'],
39
41
  'border-width': ['border-', 'border-t-', 'border-r-', 'border-b-', 'border-l-'],
40
42
  'border-color': ['border-'],
43
+ 'border-style': ['border-solid', 'border-dashed', 'border-dotted', 'border-double', 'border-hidden', 'border-none'],
41
44
  'flex-direction': ['flex-row', 'flex-col', 'flex-row-reverse', 'flex-col-reverse'],
42
45
  'flex-wrap': ['flex-wrap', 'flex-nowrap', 'flex-wrap-reverse'],
43
46
  'justify-content': ['justify-'],
@@ -45,6 +48,10 @@ const PROPERTY_PREFIX_MAP = {
45
48
  'align-content': ['content-'],
46
49
  'align-self': ['self-'],
47
50
  'text-align': ['text-left', 'text-center', 'text-right', 'text-justify', 'text-start', 'text-end'],
51
+ 'text-decoration': ['underline', 'line-through', 'no-underline'],
52
+ 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],
53
+ 'letter-spacing': ['tracking-'],
54
+ 'line-height': ['leading-'],
48
55
  'overflow': ['overflow-'],
49
56
  'overflow-x': ['overflow-x-'],
50
57
  'overflow-y': ['overflow-y-'],
@@ -60,7 +67,15 @@ const PROPERTY_PREFIX_MAP = {
60
67
  'right': ['right-'],
61
68
  'bottom': ['bottom-'],
62
69
  'left': ['left-'],
63
- 'inset': ['inset-']
70
+ 'inset': ['inset-'],
71
+ 'aspect-ratio': ['aspect-'],
72
+ 'object-fit': ['object-contain', 'object-cover', 'object-fill', 'object-none', 'object-scale-down'],
73
+ 'object-position': ['object-'],
74
+ 'flex': ['flex-1', 'flex-auto', 'flex-initial', 'flex-none'],
75
+ 'flex-grow': ['grow-', 'grow'],
76
+ 'flex-shrink': ['shrink-', 'shrink'],
77
+ 'flex-basis': ['basis-'],
78
+ 'word-break': ['break-normal', 'break-all', 'break-words', 'break-keep']
64
79
  };
65
80
  const UTILITY_TO_PROPERTY_MAP = {
66
81
  'block': 'display',
@@ -72,6 +87,7 @@ const UTILITY_TO_PROPERTY_MAP = {
72
87
  'inline-grid': 'display',
73
88
  'hidden': 'display',
74
89
  'contents': 'display',
90
+ 'flow-root': 'display',
75
91
  'static': 'position',
76
92
  'fixed': 'position',
77
93
  'absolute': 'position',
@@ -84,6 +100,14 @@ const UTILITY_TO_PROPERTY_MAP = {
84
100
  'flex-wrap': 'flex-wrap',
85
101
  'flex-nowrap': 'flex-wrap',
86
102
  'flex-wrap-reverse': 'flex-wrap',
103
+ 'flex-1': 'flex',
104
+ 'flex-auto': 'flex',
105
+ 'flex-initial': 'flex',
106
+ 'flex-none': 'flex',
107
+ 'grow': 'flex-grow',
108
+ 'grow-0': 'flex-grow',
109
+ 'shrink': 'flex-shrink',
110
+ 'shrink-0': 'flex-shrink',
87
111
  'text-left': 'text-align',
88
112
  'text-center': 'text-align',
89
113
  'text-right': 'text-align',
@@ -107,7 +131,41 @@ const UTILITY_TO_PROPERTY_MAP = {
107
131
  'rounded-xl': 'border-radius',
108
132
  'rounded-2xl': 'border-radius',
109
133
  'rounded-3xl': 'border-radius',
110
- 'rounded-full': 'border-radius'
134
+ 'rounded-full': 'border-radius',
135
+ 'underline': 'text-decoration',
136
+ 'line-through': 'text-decoration',
137
+ 'no-underline': 'text-decoration',
138
+ 'uppercase': 'text-transform',
139
+ 'lowercase': 'text-transform',
140
+ 'capitalize': 'text-transform',
141
+ 'normal-case': 'text-transform',
142
+ 'border-solid': 'border-style',
143
+ 'border-dashed': 'border-style',
144
+ 'border-dotted': 'border-style',
145
+ 'border-double': 'border-style',
146
+ 'border-hidden': 'border-style',
147
+ 'border-none': 'border-style',
148
+ 'object-contain': 'object-fit',
149
+ 'object-cover': 'object-fit',
150
+ 'object-fill': 'object-fit',
151
+ 'object-none': 'object-fit',
152
+ 'object-scale-down': 'object-fit',
153
+ 'object-center': 'object-position',
154
+ 'object-top': 'object-position',
155
+ 'object-bottom': 'object-position',
156
+ 'object-left': 'object-position',
157
+ 'object-right': 'object-position',
158
+ 'object-left-top': 'object-position',
159
+ 'object-right-top': 'object-position',
160
+ 'object-left-bottom': 'object-position',
161
+ 'object-right-bottom': 'object-position',
162
+ 'break-normal': 'word-break',
163
+ 'break-all': 'word-break',
164
+ 'break-words': 'word-break',
165
+ 'break-keep': 'word-break',
166
+ 'aspect-square': 'aspect-ratio',
167
+ 'aspect-video': 'aspect-ratio',
168
+ 'aspect-auto': 'aspect-ratio'
111
169
  };
112
170
  const PREFIX_PROPERTY_MAP = {
113
171
  'text-': 'color',
@@ -154,13 +212,29 @@ const PREFIX_PROPERTY_MAP = {
154
212
  'right-': 'right',
155
213
  'bottom-': 'bottom',
156
214
  'left-': 'left',
157
- 'inset-': 'inset'
215
+ 'inset-': 'inset',
216
+ 'tracking-': 'letter-spacing',
217
+ 'leading-': 'line-height',
218
+ 'aspect-': 'aspect-ratio',
219
+ 'object-': 'object-position',
220
+ 'basis-': 'flex-basis',
221
+ 'grow-': 'flex-grow',
222
+ 'shrink-': 'flex-shrink'
158
223
  };
159
224
  const FONT_SIZE_UTILITIES = new Set([
160
225
  'text-xs', 'text-sm', 'text-base', 'text-lg', 'text-xl',
161
226
  'text-2xl', 'text-3xl', 'text-4xl', 'text-5xl', 'text-6xl',
162
227
  'text-7xl', 'text-8xl', 'text-9xl'
163
228
  ]);
229
+ const LINE_HEIGHT_UTILITIES = new Set([
230
+ 'leading-none', 'leading-tight', 'leading-snug', 'leading-normal',
231
+ 'leading-relaxed', 'leading-loose', 'leading-3', 'leading-4', 'leading-5',
232
+ 'leading-6', 'leading-7', 'leading-8', 'leading-9', 'leading-10'
233
+ ]);
234
+ const LETTER_SPACING_UTILITIES = new Set([
235
+ 'tracking-tighter', 'tracking-tight', 'tracking-normal',
236
+ 'tracking-wide', 'tracking-wider', 'tracking-widest'
237
+ ]);
164
238
  function getPropertyForUtility(utility) {
165
239
  const strippedUtility = stripVariants(utility);
166
240
  if (UTILITY_TO_PROPERTY_MAP[strippedUtility]) {
@@ -169,6 +243,12 @@ function getPropertyForUtility(utility) {
169
243
  if (FONT_SIZE_UTILITIES.has(strippedUtility)) {
170
244
  return 'font-size';
171
245
  }
246
+ if (LINE_HEIGHT_UTILITIES.has(strippedUtility)) {
247
+ return 'line-height';
248
+ }
249
+ if (LETTER_SPACING_UTILITIES.has(strippedUtility)) {
250
+ return 'letter-spacing';
251
+ }
172
252
  if (strippedUtility.startsWith('text-') && !FONT_SIZE_UTILITIES.has(strippedUtility)) {
173
253
  const value = strippedUtility.slice(5);
174
254
  if (/^\d/.test(value) || value.startsWith('[')) {
@@ -176,6 +256,12 @@ function getPropertyForUtility(utility) {
176
256
  }
177
257
  return 'color';
178
258
  }
259
+ if (strippedUtility.startsWith('leading-') && !LINE_HEIGHT_UTILITIES.has(strippedUtility)) {
260
+ return 'line-height';
261
+ }
262
+ if (strippedUtility.startsWith('tracking-') && !LETTER_SPACING_UTILITIES.has(strippedUtility)) {
263
+ return 'letter-spacing';
264
+ }
179
265
  const sortedPrefixes = Object.keys(PREFIX_PROPERTY_MAP).sort((a, b) => b.length - a.length);
180
266
  for (const prefix of sortedPrefixes) {
181
267
  if (strippedUtility.startsWith(prefix)) {
@@ -206,6 +292,14 @@ function isTextColorUtility(utility) {
206
292
  }
207
293
  return false;
208
294
  }
295
+ function isLineHeightUtility(utility) {
296
+ const stripped = stripVariants(utility);
297
+ return LINE_HEIGHT_UTILITIES.has(stripped) || stripped.startsWith('leading-');
298
+ }
299
+ function isLetterSpacingUtility(utility) {
300
+ const stripped = stripVariants(utility);
301
+ return LETTER_SPACING_UTILITIES.has(stripped) || stripped.startsWith('tracking-');
302
+ }
209
303
  function getPropertiesForUtilities(utilities) {
210
304
  const propertyMap = new Map();
211
305
  for (const utility of utilities) {
@@ -226,8 +320,11 @@ exports.PROPERTY_CONFLICT_GROUPS = {
226
320
  'padding': ['padding', 'padding-top', 'padding-right', 'padding-bottom', 'padding-left', 'padding-x', 'padding-y'],
227
321
  'flex-direction': ['flex-direction'],
228
322
  'flex-wrap': ['flex-wrap'],
323
+ 'flex': ['flex', 'flex-grow', 'flex-shrink', 'flex-basis'],
229
324
  'justify-content': ['justify-content'],
230
325
  'align-items': ['align-items'],
326
+ 'align-content': ['align-content'],
327
+ 'align-self': ['align-self'],
231
328
  'text-align': ['text-align'],
232
329
  'font-size': ['font-size'],
233
330
  'font-weight': ['font-weight'],
@@ -235,11 +332,21 @@ exports.PROPERTY_CONFLICT_GROUPS = {
235
332
  'background-color': ['background-color'],
236
333
  'border-radius': ['border-radius'],
237
334
  'border-width': ['border-width', 'border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width'],
335
+ 'border-color': ['border-color', 'border-top-color', 'border-right-color', 'border-bottom-color', 'border-left-color'],
336
+ 'border-style': ['border-style'],
238
337
  'overflow': ['overflow', 'overflow-x', 'overflow-y'],
239
338
  'z-index': ['z-index'],
240
339
  'opacity': ['opacity'],
241
340
  'gap': ['gap'],
242
- 'inset': ['inset', 'top', 'right', 'bottom', 'left']
341
+ 'inset': ['inset', 'top', 'right', 'bottom', 'left'],
342
+ 'text-decoration': ['text-decoration'],
343
+ 'text-transform': ['text-transform'],
344
+ 'letter-spacing': ['letter-spacing'],
345
+ 'line-height': ['line-height'],
346
+ 'aspect-ratio': ['aspect-ratio'],
347
+ 'object-fit': ['object-fit'],
348
+ 'object-position': ['object-position'],
349
+ 'word-break': ['word-break']
243
350
  };
244
351
  function getConflictGroup(property) {
245
352
  for (const [groupName, properties] of Object.entries(exports.PROPERTY_CONFLICT_GROUPS)) {
@@ -270,8 +377,28 @@ function propertiesConflict(prop1, prop2) {
270
377
  return true;
271
378
  }
272
379
  }
380
+ if (group1 === 'border-width') {
381
+ if (prop1 === 'border-width' || prop2 === 'border-width') {
382
+ return true;
383
+ }
384
+ }
385
+ if (group1 === 'border-color') {
386
+ if (prop1 === 'border-color' || prop2 === 'border-color') {
387
+ return true;
388
+ }
389
+ }
390
+ if (group1 === 'overflow') {
391
+ if (prop1 === 'overflow' || prop2 === 'overflow') {
392
+ return true;
393
+ }
394
+ }
395
+ if (group1 === 'flex') {
396
+ if (prop1 === 'flex' || prop2 === 'flex') {
397
+ return true;
398
+ }
399
+ }
273
400
  return prop1 === prop2;
274
401
  }
275
402
  return prop1 === prop2;
276
403
  }
277
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHlNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcHJvcGVydHlNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBOEpBLHNEQTRCQztBQU9ELHNEQUtDO0FBRUQsZ0RBZ0JDO0FBRUQsOERBY0M7QUEyQkQsNENBT0M7QUFFRCxnREErQkM7QUEzU0QsTUFBTSxtQkFBbUIsR0FBNkI7SUFDcEQsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO0lBQ2xCLGtCQUFrQixFQUFFLENBQUMsS0FBSyxDQUFDO0lBQzNCLFdBQVcsRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUM7SUFDL0ssYUFBYSxFQUFFLENBQUMsV0FBVyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDO0lBQ3pKLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDO0lBQ3RKLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUM7SUFDakUsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ2YsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ2hCLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUN2QixXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7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QUFNLEVBQUUsQ0FBQztRQUMxQyxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxnQ0FBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUvQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoRCxJQUFJLEtBQUssS0FBSyxNQUFNLElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUN6QyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxNQUFNLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDdkIsSUFBSSxLQUFLLEtBQUssT0FBTyxJQUFJLEtBQUssS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDM0MsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxLQUFLLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsT0FBTyxLQUFLLEtBQUssS0FBSyxDQUFDO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBQUk9QRVJUWV9QUkVGSVhfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7XG4gICdjb2xvcic6IFsndGV4dC0nXSxcbiAgJ2JhY2tncm91bmQtY29sb3InOiBbJ2JnLSddLFxuICAnZm9udC1zaXplJzogWyd0ZXh0LXhzJywgJ3RleHQtc20nLCAndGV4dC1iYXNlJywgJ3RleHQtbGcnLCAndGV4dC14bCcsICd0ZXh0LTJ4bCcsICd0ZXh0LTN4bCcsICd0ZXh0LTR4bCcsICd0ZXh0LTV4bCcsICd0ZXh0LTZ4bCcsICd0ZXh0LTd4bCcsICd0ZXh0LTh4bCcsICd0ZXh0LTl4bCcsICd0ZXh0LSddLFxuICAnZm9udC13ZWlnaHQnOiBbJ2ZvbnQtdGhpbicsICdmb250LWV4dHJhbGlnaHQnLCAnZm9udC1saWdodCcsICdmb250LW5vcm1hbCcsICdmb250LW1lZGl1bScsICdmb250LXNlbWlib2xkJywgJ2ZvbnQtYm9sZCcsICdmb250LWV4dHJhYm9sZCcsICdmb250LWJsYWNrJ10sXG4gICdkaXNwbGF5JzogWydibG9jaycsICdpbmxpbmUtYmxvY2snLCAnaW5saW5lJywgJ2ZsZXgnLCAnaW5saW5lLWZsZXgnLCAnZ3JpZCcsICdpbmxpbmUtZ3JpZCcsICdoaWRkZW4nLCAnY29udGVudHMnLCAndGFibGUnLCAndGFibGUtY2VsbCcsICd0YWJsZS1yb3cnXSxcbiAgJ3Bvc2l0aW9uJzogWydzdGF0aWMnLCAnZml4ZWQnLCAnYWJzb2x1dGUnLCAncmVsYXRpdmUnLCAnc3RpY2t5J10sXG4gICd3aWR0aCc6IFsndy0nXSxcbiAgJ2hlaWdodCc6IFsnaC0nXSxcbiAgJ21pbi13aWR0aCc6IFsnbWluLXctJ10sXG4gICdtYXgtd2lkdGgnOiBbJ21heC13LSddLFxuICAnbWluLWhlaWdodCc6IFsnbWluLWgtJ10sXG4gICdtYXgtaGVpZ2h0JzogWydtYXgtaC0nXSxcbiAgJ21hcmdpbic6IFsnbS0nXSxcbiAgJ21hcmdpbi10b3AnOiBbJ210LSddLFxuICAnbWFyZ2luLXJpZ2h0JzogWydtci0nXSxcbiAgJ21hcmdpbi1ib3R0b20nOiBbJ21iLSddLFxuICAnbWFyZ2luLWxlZnQnOiBbJ21sLSddLFxuICAnbWFyZ2luLXgnOiBbJ214LSddLFxuICAnbWFyZ2luLXknOiBbJ215LSddLFxuICAncGFkZGluZyc6IFsncC0nXSxcbiAgJ3BhZGRpbmctdG9wJzogWydwdC0nXSxcbiAgJ3BhZGRpbmctcmlnaHQnOiBbJ3ByLSddLFxuICAncGFkZGluZy1ib3R0b20nOiBbJ3BiLSddLFxuICAncGFkZGluZy1sZWZ0JzogWydwbC0nXSxcbiAgJ3BhZGRpbmcteCc6IFsncHgtJ10sXG4gICdwYWRkaW5nLXknOiBbJ3B5LSddLFxuICAnZ2FwJzogWydnYXAtJ10sXG4gICdib3JkZXItcmFkaXVzJzogWydyb3VuZGVkLScsICdyb3VuZGVkJ10sXG4gICdib3JkZXItd2lkdGgnOiBbJ2JvcmRlci0nLCAnYm9yZGVyLXQtJywgJ2JvcmRlci1yLScsICdib3JkZXItYi0nLCAnYm9yZGVyLWwtJ10sXG4gICdib3JkZXItY29sb3InOiBbJ2JvcmRlci0nXSxcbiAgJ2ZsZXgtZGlyZWN0aW9uJzogWydmbGV4LXJvdycsICdmbGV4LWNvbCcsICdmbGV4LXJvdy1yZXZlcnNlJywgJ2ZsZXgtY29sLXJldmVyc2UnXSxcbiAgJ2ZsZXgtd3JhcCc6IFsnZmxleC13cmFwJywgJ2ZsZXgtbm93cmFwJywgJ2ZsZXgtd3JhcC1yZXZlcnNlJ10sXG4gICdqdXN0aWZ5LWNvbnRlbnQnOiBbJ2p1c3RpZnktJ10sXG4gICdhbGlnbi1pdGVtcyc6IFsnaXRlbXMtJ10sXG4gICdhbGlnbi1jb250ZW50JzogWydjb250ZW50LSddLFxuICAnYWxpZ24tc2VsZic6IFsnc2VsZi0nXSxcbiAgJ3RleHQtYWxpZ24nOiBbJ3RleHQtbGVmdCcsICd0ZXh0LWNlbnRlcicsICd0ZXh0LXJpZ2h0JywgJ3RleHQtanVzdGlmeScsICd0ZXh0LXN0YXJ0JywgJ3RleHQtZW5kJ10sXG4gICdvdmVyZmxvdyc6IFsnb3ZlcmZsb3ctJ10sXG4gICdvdmVyZmxvdy14JzogWydvdmVyZmxvdy14LSddLFxuICAnb3ZlcmZsb3cteSc6IFsnb3ZlcmZsb3cteS0nXSxcbiAgJ3otaW5kZXgnOiBbJ3otJ10sXG4gICdvcGFjaXR5JzogWydvcGFjaXR5LSddLFxuICAnY3Vyc29yJzogWydjdXJzb3ItJ10sXG4gICdwb2ludGVyLWV2ZW50cyc6IFsncG9pbnRlci1ldmVudHMtJ10sXG4gICd1c2VyLXNlbGVjdCc6IFsnc2VsZWN0LSddLFxuICAnYm94LXNoYWRvdyc6IFsnc2hhZG93LSddLFxuICAndHJhbnNpdGlvbic6IFsndHJhbnNpdGlvbi0nXSxcbiAgJ3RyYW5zZm9ybSc6IFsnc2NhbGUtJywgJ3JvdGF0ZS0nLCAndHJhbnNsYXRlLScsICdza2V3LSddLFxuICAndG9wJzogWyd0b3AtJ10sXG4gICdyaWdodCc6IFsncmlnaHQtJ10sXG4gICdib3R0b20nOiBbJ2JvdHRvbS0nXSxcbiAgJ2xlZnQnOiBbJ2xlZnQtJ10sXG4gICdpbnNldCc6IFsnaW5zZXQtJ11cbn07XG5cbmNvbnN0IFVUSUxJVFlfVE9fUFJPUEVSVFlfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnYmxvY2snOiAnZGlzcGxheScsXG4gICdpbmxpbmUtYmxvY2snOiAnZGlzcGxheScsXG4gICdpbmxpbmUnOiAnZGlzcGxheScsXG4gICdmbGV4JzogJ2Rpc3BsYXknLFxuICAnaW5saW5lLWZsZXgnOiAnZGlzcGxheScsXG4gICdncmlkJzogJ2Rpc3BsYXknLFxuICAnaW5saW5lLWdyaWQnOiAnZGlzcGxheScsXG4gICdoaWRkZW4nOiAnZGlzcGxheScsXG4gICdjb250ZW50cyc6ICdkaXNwbGF5JyxcbiAgJ3N0YXRpYyc6ICdwb3NpdGlvbicsXG4gICdmaXhlZCc6ICdwb3NpdGlvbicsXG4gICdhYnNvbHV0ZSc6ICdwb3NpdGlvbicsXG4gICdyZWxhdGl2ZSc6ICdwb3NpdGlvbicsXG4gICdzdGlja3knOiAncG9zaXRpb24nLFxuICAnZmxleC1yb3cnOiAnZmxleC1kaXJlY3Rpb24nLFxuICAnZmxleC1jb2wnOiAnZmxleC1kaXJlY3Rpb24nLFxuICAnZmxleC1yb3ctcmV2ZXJzZSc6ICdmbGV4LWRpcmVjdGlvbicsXG4gICdmbGV4LWNvbC1yZXZlcnNlJzogJ2ZsZXgtZGlyZWN0aW9uJyxcbiAgJ2ZsZXgtd3JhcCc6ICdmbGV4LXdyYXAnLFxuICAnZmxleC1ub3dyYXAnOiAnZmxleC13cmFwJyxcbiAgJ2ZsZXgtd3JhcC1yZXZlcnNlJzogJ2ZsZXgtd3JhcCcsXG4gICd0ZXh0LWxlZnQnOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LWNlbnRlcic6ICd0ZXh0LWFsaWduJyxcbiAgJ3RleHQtcmlnaHQnOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LWp1c3RpZnknOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LXN0YXJ0JzogJ3RleHQtYWxpZ24nLFxuICAndGV4dC1lbmQnOiAndGV4dC1hbGlnbicsXG4gICdmb250LXRoaW4nOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1leHRyYWxpZ2h0JzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ2ZvbnQtbGlnaHQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1ub3JtYWwnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1tZWRpdW0nOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1zZW1pYm9sZCc6ICdmb250LXdlaWdodCcsXG4gICdmb250LWJvbGQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1leHRyYWJvbGQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1ibGFjayc6ICdmb250LXdlaWdodCcsXG4gICdyb3VuZGVkJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC1ub25lJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC1zbSc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtbWQnOiAnYm9yZGVyLXJhZGl1cycsXG4gICdyb3VuZGVkLWxnJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC14bCc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtMnhsJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC0zeGwnOiAnYm9yZGVyLXJhZGl1cycsXG4gICdyb3VuZGVkLWZ1bGwnOiAnYm9yZGVyLXJhZGl1cydcbn07XG5cbmNvbnN0IFBSRUZJWF9QUk9QRVJUWV9NQVA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICd0ZXh0LSc6ICdjb2xvcicsXG4gICdiZy0nOiAnYmFja2dyb3VuZC1jb2xvcicsXG4gICd3LSc6ICd3aWR0aCcsXG4gICdoLSc6ICdoZWlnaHQnLFxuICAnbWluLXctJzogJ21pbi13aWR0aCcsXG4gICdtYXgtdy0nOiAnbWF4LXdpZHRoJyxcbiAgJ21pbi1oLSc6ICdtaW4taGVpZ2h0JyxcbiAgJ21heC1oLSc6ICdtYXgtaGVpZ2h0JyxcbiAgJ20tJzogJ21hcmdpbicsXG4gICdtdC0nOiAnbWFyZ2luLXRvcCcsXG4gICdtci0nOiAnbWFyZ2luLXJpZ2h0JyxcbiAgJ21iLSc6ICdtYXJnaW4tYm90dG9tJyxcbiAgJ21sLSc6ICdtYXJnaW4tbGVmdCcsXG4gICdteC0nOiAnbWFyZ2luLXgnLFxuICAnbXktJzogJ21hcmdpbi15JyxcbiAgJ3AtJzogJ3BhZGRpbmcnLFxuICAncHQtJzogJ3BhZGRpbmctdG9wJyxcbiAgJ3ByLSc6ICdwYWRkaW5nLXJpZ2h0JyxcbiAgJ3BiLSc6ICdwYWRkaW5nLWJvdHRvbScsXG4gICdwbC0nOiAncGFkZGluZy1sZWZ0JyxcbiAgJ3B4LSc6ICdwYWRkaW5nLXgnLFxuICAncHktJzogJ3BhZGRpbmcteScsXG4gICdnYXAtJzogJ2dhcCcsXG4gICdyb3VuZGVkLSc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ2p1c3RpZnktJzogJ2p1c3RpZnktY29udGVudCcsXG4gICdpdGVtcy0nOiAnYWxpZ24taXRlbXMnLFxuICAnY29udGVudC0nOiAnYWxpZ24tY29udGVudCcsXG4gICdzZWxmLSc6ICdhbGlnbi1zZWxmJyxcbiAgJ292ZXJmbG93LSc6ICdvdmVyZmxvdycsXG4gICdvdmVyZmxvdy14LSc6ICdvdmVyZmxvdy14JyxcbiAgJ292ZXJmbG93LXktJzogJ292ZXJmbG93LXknLFxuICAnei0nOiAnei1pbmRleCcsXG4gICdvcGFjaXR5LSc6ICdvcGFjaXR5JyxcbiAgJ2N1cnNvci0nOiAnY3Vyc29yJyxcbiAgJ3NoYWRvdy0nOiAnYm94LXNoYWRvdycsXG4gICdib3JkZXItJzogJ2JvcmRlci13aWR0aCcsXG4gICdib3JkZXItdC0nOiAnYm9yZGVyLXdpZHRoJyxcbiAgJ2JvcmRlci1yLSc6ICdib3JkZXItd2lkdGgnLFxuICAnYm9yZGVyLWItJzogJ2JvcmRlci13aWR0aCcsXG4gICdib3JkZXItbC0nOiAnYm9yZGVyLXdpZHRoJyxcbiAgJ3RvcC0nOiAndG9wJyxcbiAgJ3JpZ2h0LSc6ICdyaWdodCcsXG4gICdib3R0b20tJzogJ2JvdHRvbScsXG4gICdsZWZ0LSc6ICdsZWZ0JyxcbiAgJ2luc2V0LSc6ICdpbnNldCdcbn07XG5cbmNvbnN0IEZPTlRfU0laRV9VVElMSVRJRVMgPSBuZXcgU2V0KFtcbiAgJ3RleHQteHMnLCAndGV4dC1zbScsICd0ZXh0LWJhc2UnLCAndGV4dC1sZycsICd0ZXh0LXhsJyxcbiAgJ3RleHQtMnhsJywgJ3RleHQtM3hsJywgJ3RleHQtNHhsJywgJ3RleHQtNXhsJywgJ3RleHQtNnhsJyxcbiAgJ3RleHQtN3hsJywgJ3RleHQtOHhsJywgJ3RleHQtOXhsJ1xuXSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9wZXJ0eUZvclV0aWxpdHkodXRpbGl0eTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc3RyaXBwZWRVdGlsaXR5ID0gc3RyaXBWYXJpYW50cyh1dGlsaXR5KTtcbiAgXG4gIGlmIChVVElMSVRZX1RPX1BST1BFUlRZX01BUFtzdHJpcHBlZFV0aWxpdHldKSB7XG4gICAgcmV0dXJuIFVUSUxJVFlfVE9fUFJPUEVSVFlfTUFQW3N0cmlwcGVkVXRpbGl0eV07XG4gIH1cbiAgXG4gIGlmIChGT05UX1NJWkVfVVRJTElUSUVTLmhhcyhzdHJpcHBlZFV0aWxpdHkpKSB7XG4gICAgcmV0dXJuICdmb250LXNpemUnO1xuICB9XG4gIFxuICBpZiAoc3RyaXBwZWRVdGlsaXR5LnN0YXJ0c1dpdGgoJ3RleHQtJykgJiYgIUZPTlRfU0laRV9VVElMSVRJRVMuaGFzKHN0cmlwcGVkVXRpbGl0eSkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHN0cmlwcGVkVXRpbGl0eS5zbGljZSg1KTtcbiAgICBpZiAoL15cXGQvLnRlc3QodmFsdWUpIHx8IHZhbHVlLnN0YXJ0c1dpdGgoJ1snKSkge1xuICAgICAgcmV0dXJuICdmb250LXNpemUnO1xuICAgIH1cbiAgICByZXR1cm4gJ2NvbG9yJztcbiAgfVxuICBcbiAgY29uc3Qgc29ydGVkUHJlZml4ZXMgPSBPYmplY3Qua2V5cyhQUkVGSVhfUFJPUEVSVFlfTUFQKS5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKTtcbiAgXG4gIGZvciAoY29uc3QgcHJlZml4IG9mIHNvcnRlZFByZWZpeGVzKSB7XG4gICAgaWYgKHN0cmlwcGVkVXRpbGl0eS5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICAgIHJldHVybiBQUkVGSVhfUFJPUEVSVFlfTUFQW3ByZWZpeF07XG4gICAgfVxuICB9XG4gIFxuICByZXR1cm4gJ3Vua25vd24nO1xufVxuXG5mdW5jdGlvbiBzdHJpcFZhcmlhbnRzKHV0aWxpdHk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnRzID0gdXRpbGl0eS5zcGxpdCgnOicpO1xuICByZXR1cm4gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RleHRGb250U2l6ZVV0aWxpdHkodXRpbGl0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHN0cmlwcGVkID0gc3RyaXBWYXJpYW50cyh1dGlsaXR5KTtcbiAgcmV0dXJuIEZPTlRfU0laRV9VVElMSVRJRVMuaGFzKHN0cmlwcGVkKSB8fCAoXG4gICAgc3RyaXBwZWQuc3RhcnRzV2l0aCgndGV4dC0nKSAmJiAvXlxcZC8udGVzdChzdHJpcHBlZC5zbGljZSg1KSlcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGV4dENvbG9yVXRpbGl0eSh1dGlsaXR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3Qgc3RyaXBwZWQgPSBzdHJpcFZhcmlhbnRzKHV0aWxpdHkpO1xuICBcbiAgaWYgKEZPTlRfU0laRV9VVElMSVRJRVMuaGFzKHN0cmlwcGVkKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBcbiAgaWYgKHN0cmlwcGVkLnN0YXJ0c1dpdGgoJ3RleHQtJykpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHN0cmlwcGVkLnNsaWNlKDUpO1xuICAgIGlmICgvXlxcZC8udGVzdCh2YWx1ZSkgfHwgdmFsdWUuc3RhcnRzV2l0aCgnWycpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIFxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9wZXJ0aWVzRm9yVXRpbGl0aWVzKHV0aWxpdGllczogc3RyaW5nW10pOiBNYXA8c3RyaW5nLCBzdHJpbmdbXT4ge1xuICBjb25zdCBwcm9wZXJ0eU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcbiAgXG4gIGZvciAoY29uc3QgdXRpbGl0eSBvZiB1dGlsaXRpZXMpIHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IGdldFByb3BlcnR5Rm9yVXRpbGl0eSh1dGlsaXR5KTtcbiAgICBcbiAgICBpZiAoIXByb3BlcnR5TWFwLmhhcyhwcm9wZXJ0eSkpIHtcbiAgICAgIHByb3BlcnR5TWFwLnNldChwcm9wZXJ0eSwgW10pO1xuICAgIH1cbiAgICBcbiAgICBwcm9wZXJ0eU1hcC5nZXQocHJvcGVydHkpIS5wdXNoKHV0aWxpdHkpO1xuICB9XG4gIFxuICByZXR1cm4gcHJvcGVydHlNYXA7XG59XG5cbmV4cG9ydCBjb25zdCBQUk9QRVJUWV9DT05GTElDVF9HUk9VUFM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHtcbiAgJ2Rpc3BsYXknOiBbJ2Rpc3BsYXknXSxcbiAgJ3Bvc2l0aW9uJzogWydwb3NpdGlvbiddLFxuICAnd2lkdGgnOiBbJ3dpZHRoJywgJ21pbi13aWR0aCcsICdtYXgtd2lkdGgnXSxcbiAgJ2hlaWdodCc6IFsnaGVpZ2h0JywgJ21pbi1oZWlnaHQnLCAnbWF4LWhlaWdodCddLFxuICAnbWFyZ2luJzogWydtYXJnaW4nLCAnbWFyZ2luLXRvcCcsICdtYXJnaW4tcmlnaHQnLCAnbWFyZ2luLWJvdHRvbScsICdtYXJnaW4tbGVmdCcsICdtYXJnaW4teCcsICdtYXJnaW4teSddLFxuICAncGFkZGluZyc6IFsncGFkZGluZycsICdwYWRkaW5nLXRvcCcsICdwYWRkaW5nLXJpZ2h0JywgJ3BhZGRpbmctYm90dG9tJywgJ3BhZGRpbmctbGVmdCcsICdwYWRkaW5nLXgnLCAncGFkZGluZy15J10sXG4gICdmbGV4LWRpcmVjdGlvbic6IFsnZmxleC1kaXJlY3Rpb24nXSxcbiAgJ2ZsZXgtd3JhcCc6IFsnZmxleC13cmFwJ10sXG4gICdqdXN0aWZ5LWNvbnRlbnQnOiBbJ2p1c3RpZnktY29udGVudCddLFxuICAnYWxpZ24taXRlbXMnOiBbJ2FsaWduLWl0ZW1zJ10sXG4gICd0ZXh0LWFsaWduJzogWyd0ZXh0LWFsaWduJ10sXG4gICdmb250LXNpemUnOiBbJ2ZvbnQtc2l6ZSddLFxuICAnZm9udC13ZWlnaHQnOiBbJ2ZvbnQtd2VpZ2h0J10sXG4gICdjb2xvcic6IFsnY29sb3InXSxcbiAgJ2JhY2tncm91bmQtY29sb3InOiBbJ2JhY2tncm91bmQtY29sb3InXSxcbiAgJ2JvcmRlci1yYWRpdXMnOiBbJ2JvcmRlci1yYWRpdXMnXSxcbiAgJ2JvcmRlci13aWR0aCc6IFsnYm9yZGVyLXdpZHRoJywgJ2JvcmRlci10b3Atd2lkdGgnLCAnYm9yZGVyLXJpZ2h0LXdpZHRoJywgJ2JvcmRlci1ib3R0b20td2lkdGgnLCAnYm9yZGVyLWxlZnQtd2lkdGgnXSxcbiAgJ292ZXJmbG93JzogWydvdmVyZmxvdycsICdvdmVyZmxvdy14JywgJ292ZXJmbG93LXknXSxcbiAgJ3otaW5kZXgnOiBbJ3otaW5kZXgnXSxcbiAgJ29wYWNpdHknOiBbJ29wYWNpdHknXSxcbiAgJ2dhcCc6IFsnZ2FwJ10sXG4gICdpbnNldCc6IFsnaW5zZXQnLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J11cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25mbGljdEdyb3VwKHByb3BlcnR5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgZm9yIChjb25zdCBbZ3JvdXBOYW1lLCBwcm9wZXJ0aWVzXSBvZiBPYmplY3QuZW50cmllcyhQUk9QRVJUWV9DT05GTElDVF9HUk9VUFMpKSB7XG4gICAgaWYgKHByb3BlcnRpZXMuaW5jbHVkZXMocHJvcGVydHkpKSB7XG4gICAgICByZXR1cm4gZ3JvdXBOYW1lO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnRpZXNDb25mbGljdChwcm9wMTogc3RyaW5nLCBwcm9wMjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGdyb3VwMSA9IGdldENvbmZsaWN0R3JvdXAocHJvcDEpO1xuICBjb25zdCBncm91cDIgPSBnZXRDb25mbGljdEdyb3VwKHByb3AyKTtcbiAgXG4gIGlmIChncm91cDEgJiYgZ3JvdXAyICYmIGdyb3VwMSA9PT0gZ3JvdXAyKSB7XG4gICAgaWYgKHByb3AxID09PSBwcm9wMikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGdyb3VwID0gUFJPUEVSVFlfQ09ORkxJQ1RfR1JPVVBTW2dyb3VwMV07XG4gICAgXG4gICAgaWYgKGdyb3VwLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIGlmIChncm91cDEgPT09ICdtYXJnaW4nIHx8IGdyb3VwMSA9PT0gJ3BhZGRpbmcnKSB7XG4gICAgICBpZiAocHJvcDEgPT09IGdyb3VwMSB8fCBwcm9wMiA9PT0gZ3JvdXAxKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBpZiAoZ3JvdXAxID09PSAnaW5zZXQnKSB7XG4gICAgICBpZiAocHJvcDEgPT09ICdpbnNldCcgfHwgcHJvcDIgPT09ICdpbnNldCcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBwcm9wMSA9PT0gcHJvcDI7XG4gIH1cbiAgXG4gIHJldHVybiBwcm9wMSA9PT0gcHJvcDI7XG59Il19
404
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHlNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcHJvcGVydHlNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBd09BLHNEQTRDQztBQU9ELHNEQUtDO0FBRUQsZ0RBZ0JDO0FBRUQsa0RBR0M7QUFFRCx3REFHQztBQUVELDhEQWNDO0FBd0NELDRDQU9DO0FBRUQsZ0RBdURDO0FBcGJELE1BQU0sbUJBQW1CLEdBQTZCO0lBQ3BELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUNsQixrQkFBa0IsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUMzQixXQUFXLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDO0lBQy9LLGFBQWEsRUFBRSxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLFlBQVksQ0FBQztJQUN6SixTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUM7SUFDbkssVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQztJQUNqRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDZixRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDaEIsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFD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ZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHtcbiAgJ2NvbG9yJzogWyd0ZXh0LSddLFxuICAnYmFja2dyb3VuZC1jb2xvcic6IFsnYmctJ10sXG4gICdmb250LXNpemUnOiBbJ3RleHQteHMnLCAndGV4dC1zbScsICd0ZXh0LWJhc2UnLCAndGV4dC1sZycsICd0ZXh0LXhsJywgJ3RleHQtMnhsJywgJ3RleHQtM3hsJywgJ3RleHQtNHhsJywgJ3RleHQtNXhsJywgJ3RleHQtNnhsJywgJ3RleHQtN3hsJywgJ3RleHQtOHhsJywgJ3RleHQtOXhsJywgJ3RleHQtJ10sXG4gICdmb250LXdlaWdodCc6IFsnZm9udC10aGluJywgJ2ZvbnQtZXh0cmFsaWdodCcsICdmb250LWxpZ2h0JywgJ2ZvbnQtbm9ybWFsJywgJ2ZvbnQtbWVkaXVtJywgJ2ZvbnQtc2VtaWJvbGQnLCAnZm9udC1ib2xkJywgJ2ZvbnQtZXh0cmFib2xkJywgJ2ZvbnQtYmxhY2snXSxcbiAgJ2Rpc3BsYXknOiBbJ2Jsb2NrJywgJ2lubGluZS1ibG9jaycsICdpbmxpbmUnLCAnZmxleCcsICdpbmxpbmUtZmxleCcsICdncmlkJywgJ2lubGluZS1ncmlkJywgJ2hpZGRlbicsICdjb250ZW50cycsICd0YWJsZScsICd0YWJsZS1jZWxsJywgJ3RhYmxlLXJvdycsICdmbG93LXJvb3QnXSxcbiAgJ3Bvc2l0aW9uJzogWydzdGF0aWMnLCAnZml4ZWQnLCAnYWJzb2x1dGUnLCAncmVsYXRpdmUnLCAnc3RpY2t5J10sXG4gICd3aWR0aCc6IFsndy0nXSxcbiAgJ2hlaWdodCc6IFsnaC0nXSxcbiAgJ21pbi13aWR0aCc6IFsnbWluLXctJ10sXG4gICdtYXgtd2lkdGgnOiBbJ21heC13LSddLFxuICAnbWluLWhlaWdodCc6IFsnbWluLWgtJ10sXG4gICdtYXgtaGVpZ2h0JzogWydtYXgtaC0nXSxcbiAgJ21hcmdpbic6IFsnbS0nXSxcbiAgJ21hcmdpbi10b3AnOiBbJ210LSddLFxuICAnbWFyZ2luLXJpZ2h0JzogWydtci0nXSxcbiAgJ21hcmdpbi1ib3R0b20nOiBbJ21iLSddLFxuICAnbWFyZ2luLWxlZnQnOiBbJ21sLSddLFxuICAnbWFyZ2luLXgnOiBbJ214LSddLFxuICAnbWFyZ2luLXknOiBbJ215LSddLFxuICAncGFkZGluZyc6IFsncC0nXSxcbiAgJ3BhZGRpbmctdG9wJzogWydwdC0nXSxcbiAgJ3BhZGRpbmctcmlnaHQnOiBbJ3ByLSddLFxuICAncGFkZGluZy1ib3R0b20nOiBbJ3BiLSddLFxuICAncGFkZGluZy1sZWZ0JzogWydwbC0nXSxcbiAgJ3BhZGRpbmcteCc6IFsncHgtJ10sXG4gICdwYWRkaW5nLXknOiBbJ3B5LSddLFxuICAnZ2FwJzogWydnYXAtJ10sXG4gICdib3JkZXItcmFkaXVzJzogWydyb3VuZGVkLScsICdyb3VuZGVkJ10sXG4gICdib3JkZXItd2lkdGgnOiBbJ2JvcmRlci0nLCAnYm9yZGVyLXQtJywgJ2JvcmRlci1yLScsICdib3JkZXItYi0nLCAnYm9yZGVyLWwtJ10sXG4gICdib3JkZXItY29sb3InOiBbJ2JvcmRlci0nXSxcbiAgJ2JvcmRlci1zdHlsZSc6IFsnYm9yZGVyLXNvbGlkJywgJ2JvcmRlci1kYXNoZWQnLCAnYm9yZGVyLWRvdHRlZCcsICdib3JkZXItZG91YmxlJywgJ2JvcmRlci1oaWRkZW4nLCAnYm9yZGVyLW5vbmUnXSxcbiAgJ2ZsZXgtZGlyZWN0aW9uJzogWydmbGV4LXJvdycsICdmbGV4LWNvbCcsICdmbGV4LXJvdy1yZXZlcnNlJywgJ2ZsZXgtY29sLXJldmVyc2UnXSxcbiAgJ2ZsZXgtd3JhcCc6IFsnZmxleC13cmFwJywgJ2ZsZXgtbm93cmFwJywgJ2ZsZXgtd3JhcC1yZXZlcnNlJ10sXG4gICdqdXN0aWZ5LWNvbnRlbnQnOiBbJ2p1c3RpZnktJ10sXG4gICdhbGlnbi1pdGVtcyc6IFsnaXRlbXMtJ10sXG4gICdhbGlnbi1jb250ZW50JzogWydjb250ZW50LSddLFxuICAnYWxpZ24tc2VsZic6IFsnc2VsZi0nXSxcbiAgJ3RleHQtYWxpZ24nOiBbJ3RleHQtbGVmdCcsICd0ZXh0LWNlbnRlcicsICd0ZXh0LXJpZ2h0JywgJ3RleHQtanVzdGlmeScsICd0ZXh0LXN0YXJ0JywgJ3RleHQtZW5kJ10sXG4gICd0ZXh0LWRlY29yYXRpb24nOiBbJ3VuZGVybGluZScsICdsaW5lLXRocm91Z2gnLCAnbm8tdW5kZXJsaW5lJ10sXG4gICd0ZXh0LXRyYW5zZm9ybSc6IFsndXBwZXJjYXNlJywgJ2xvd2VyY2FzZScsICdjYXBpdGFsaXplJywgJ25vcm1hbC1jYXNlJ10sXG4gICdsZXR0ZXItc3BhY2luZyc6IFsndHJhY2tpbmctJ10sXG4gICdsaW5lLWhlaWdodCc6IFsnbGVhZGluZy0nXSxcbiAgJ292ZXJmbG93JzogWydvdmVyZmxvdy0nXSxcbiAgJ292ZXJmbG93LXgnOiBbJ292ZXJmbG93LXgtJ10sXG4gICdvdmVyZmxvdy15JzogWydvdmVyZmxvdy15LSddLFxuICAnei1pbmRleCc6IFsnei0nXSxcbiAgJ29wYWNpdHknOiBbJ29wYWNpdHktJ10sXG4gICdjdXJzb3InOiBbJ2N1cnNvci0nXSxcbiAgJ3BvaW50ZXItZXZlbnRzJzogWydwb2ludGVyLWV2ZW50cy0nXSxcbiAgJ3VzZXItc2VsZWN0JzogWydzZWxlY3QtJ10sXG4gICdib3gtc2hhZG93JzogWydzaGFkb3ctJ10sXG4gICd0cmFuc2l0aW9uJzogWyd0cmFuc2l0aW9uLSddLFxuICAndHJhbnNmb3JtJzogWydzY2FsZS0nLCAncm90YXRlLScsICd0cmFuc2xhdGUtJywgJ3NrZXctJ10sXG4gICd0b3AnOiBbJ3RvcC0nXSxcbiAgJ3JpZ2h0JzogWydyaWdodC0nXSxcbiAgJ2JvdHRvbSc6IFsnYm90dG9tLSddLFxuICAnbGVmdCc6IFsnbGVmdC0nXSxcbiAgJ2luc2V0JzogWydpbnNldC0nXSxcbiAgJ2FzcGVjdC1yYXRpbyc6IFsnYXNwZWN0LSddLFxuICAnb2JqZWN0LWZpdCc6IFsnb2JqZWN0LWNvbnRhaW4nLCAnb2JqZWN0LWNvdmVyJywgJ29iamVjdC1maWxsJywgJ29iamVjdC1ub25lJywgJ29iamVjdC1zY2FsZS1kb3duJ10sXG4gICdvYmplY3QtcG9zaXRpb24nOiBbJ29iamVjdC0nXSxcbiAgJ2ZsZXgnOiBbJ2ZsZXgtMScsICdmbGV4LWF1dG8nLCAnZmxleC1pbml0aWFsJywgJ2ZsZXgtbm9uZSddLFxuICAnZmxleC1ncm93JzogWydncm93LScsICdncm93J10sXG4gICdmbGV4LXNocmluayc6IFsnc2hyaW5rLScsICdzaHJpbmsnXSxcbiAgJ2ZsZXgtYmFzaXMnOiBbJ2Jhc2lzLSddLFxuICAnd29yZC1icmVhayc6IFsnYnJlYWstbm9ybWFsJywgJ2JyZWFrLWFsbCcsICdicmVhay13b3JkcycsICdicmVhay1rZWVwJ11cbn07XG5cbmNvbnN0IFVUSUxJVFlfVE9fUFJPUEVSVFlfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnYmxvY2snOiAnZGlzcGxheScsXG4gICdpbmxpbmUtYmxvY2snOiAnZGlzcGxheScsXG4gICdpbmxpbmUnOiAnZGlzcGxheScsXG4gICdmbGV4JzogJ2Rpc3BsYXknLFxuICAnaW5saW5lLWZsZXgnOiAnZGlzcGxheScsXG4gICdncmlkJzogJ2Rpc3BsYXknLFxuICAnaW5saW5lLWdyaWQnOiAnZGlzcGxheScsXG4gICdoaWRkZW4nOiAnZGlzcGxheScsXG4gICdjb250ZW50cyc6ICdkaXNwbGF5JyxcbiAgJ2Zsb3ctcm9vdCc6ICdkaXNwbGF5JyxcbiAgJ3N0YXRpYyc6ICdwb3NpdGlvbicsXG4gICdmaXhlZCc6ICdwb3NpdGlvbicsXG4gICdhYnNvbHV0ZSc6ICdwb3NpdGlvbicsXG4gICdyZWxhdGl2ZSc6ICdwb3NpdGlvbicsXG4gICdzdGlja3knOiAncG9zaXRpb24nLFxuICAnZmxleC1yb3cnOiAnZmxleC1kaXJlY3Rpb24nLFxuICAnZmxleC1jb2wnOiAnZmxleC1kaXJlY3Rpb24nLFxuICAnZmxleC1yb3ctcmV2ZXJzZSc6ICdmbGV4LWRpcmVjdGlvbicsXG4gICdmbGV4LWNvbC1yZXZlcnNlJzogJ2ZsZXgtZGlyZWN0aW9uJyxcbiAgJ2ZsZXgtd3JhcCc6ICdmbGV4LXdyYXAnLFxuICAnZmxleC1ub3dyYXAnOiAnZmxleC13cmFwJyxcbiAgJ2ZsZXgtd3JhcC1yZXZlcnNlJzogJ2ZsZXgtd3JhcCcsXG4gICdmbGV4LTEnOiAnZmxleCcsXG4gICdmbGV4LWF1dG8nOiAnZmxleCcsXG4gICdmbGV4LWluaXRpYWwnOiAnZmxleCcsXG4gICdmbGV4LW5vbmUnOiAnZmxleCcsXG4gICdncm93JzogJ2ZsZXgtZ3JvdycsXG4gICdncm93LTAnOiAnZmxleC1ncm93JyxcbiAgJ3Nocmluayc6ICdmbGV4LXNocmluaycsXG4gICdzaHJpbmstMCc6ICdmbGV4LXNocmluaycsXG4gICd0ZXh0LWxlZnQnOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LWNlbnRlcic6ICd0ZXh0LWFsaWduJyxcbiAgJ3RleHQtcmlnaHQnOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LWp1c3RpZnknOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LXN0YXJ0JzogJ3RleHQtYWxpZ24nLFxuICAndGV4dC1lbmQnOiAndGV4dC1hbGlnbicsXG4gICdmb250LXRoaW4nOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1leHRyYWxpZ2h0JzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ2ZvbnQtbGlnaHQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1ub3JtYWwnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1tZWRpdW0nOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1zZW1pYm9sZCc6ICdmb250LXdlaWdodCcsXG4gICdmb250LWJvbGQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1leHRyYWJvbGQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1ibGFjayc6ICdmb250LXdlaWdodCcsXG4gICdyb3VuZGVkJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC1ub25lJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC1zbSc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtbWQnOiAnYm9yZGVyLXJhZGl1cycsXG4gICdyb3VuZGVkLWxnJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC14bCc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtMnhsJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC0zeGwnOiAnYm9yZGVyLXJhZGl1cycsXG4gICdyb3VuZGVkLWZ1bGwnOiAnYm9yZGVyLXJhZGl1cycsXG4gICd1bmRlcmxpbmUnOiAndGV4dC1kZWNvcmF0aW9uJyxcbiAgJ2xpbmUtdGhyb3VnaCc6ICd0ZXh0LWRlY29yYXRpb24nLFxuICAnbm8tdW5kZXJsaW5lJzogJ3RleHQtZGVjb3JhdGlvbicsXG4gICd1cHBlcmNhc2UnOiAndGV4dC10cmFuc2Zvcm0nLFxuICAnbG93ZXJjYXNlJzogJ3RleHQtdHJhbnNmb3JtJyxcbiAgJ2NhcGl0YWxpemUnOiAndGV4dC10cmFuc2Zvcm0nLFxuICAnbm9ybWFsLWNhc2UnOiAndGV4dC10cmFuc2Zvcm0nLFxuICAnYm9yZGVyLXNvbGlkJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItZGFzaGVkJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItZG90dGVkJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItZG91YmxlJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItaGlkZGVuJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItbm9uZSc6ICdib3JkZXItc3R5bGUnLFxuICAnb2JqZWN0LWNvbnRhaW4nOiAnb2JqZWN0LWZpdCcsXG4gICdvYmplY3QtY292ZXInOiAnb2JqZWN0LWZpdCcsXG4gICdvYmplY3QtZmlsbCc6ICdvYmplY3QtZml0JyxcbiAgJ29iamVjdC1ub25lJzogJ29iamVjdC1maXQnLFxuICAnb2JqZWN0LXNjYWxlLWRvd24nOiAnb2JqZWN0LWZpdCcsXG4gICdvYmplY3QtY2VudGVyJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtdG9wJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtYm90dG9tJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtbGVmdCc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnb2JqZWN0LXJpZ2h0JzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtbGVmdC10b3AnOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ29iamVjdC1yaWdodC10b3AnOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ29iamVjdC1sZWZ0LWJvdHRvbSc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnb2JqZWN0LXJpZ2h0LWJvdHRvbSc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnYnJlYWstbm9ybWFsJzogJ3dvcmQtYnJlYWsnLFxuICAnYnJlYWstYWxsJzogJ3dvcmQtYnJlYWsnLFxuICAnYnJlYWstd29yZHMnOiAnd29yZC1icmVhaycsXG4gICdicmVhay1rZWVwJzogJ3dvcmQtYnJlYWsnLFxuICAnYXNwZWN0LXNxdWFyZSc6ICdhc3BlY3QtcmF0aW8nLFxuICAnYXNwZWN0LXZpZGVvJzogJ2FzcGVjdC1yYXRpbycsXG4gICdhc3BlY3QtYXV0byc6ICdhc3BlY3QtcmF0aW8nXG59O1xuXG5jb25zdCBQUkVGSVhfUFJPUEVSVFlfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAndGV4dC0nOiAnY29sb3InLFxuICAnYmctJzogJ2JhY2tncm91bmQtY29sb3InLFxuICAndy0nOiAnd2lkdGgnLFxuICAnaC0nOiAnaGVpZ2h0JyxcbiAgJ21pbi13LSc6ICdtaW4td2lkdGgnLFxuICAnbWF4LXctJzogJ21heC13aWR0aCcsXG4gICdtaW4taC0nOiAnbWluLWhlaWdodCcsXG4gICdtYXgtaC0nOiAnbWF4LWhlaWdodCcsXG4gICdtLSc6ICdtYXJnaW4nLFxuICAnbXQtJzogJ21hcmdpbi10b3AnLFxuICAnbXItJzogJ21hcmdpbi1yaWdodCcsXG4gICdtYi0nOiAnbWFyZ2luLWJvdHRvbScsXG4gICdtbC0nOiAnbWFyZ2luLWxlZnQnLFxuICAnbXgtJzogJ21hcmdpbi14JyxcbiAgJ215LSc6ICdtYXJnaW4teScsXG4gICdwLSc6ICdwYWRkaW5nJyxcbiAgJ3B0LSc6ICdwYWRkaW5nLXRvcCcsXG4gICdwci0nOiAncGFkZGluZy1yaWdodCcsXG4gICdwYi0nOiAncGFkZGluZy1ib3R0b20nLFxuICAncGwtJzogJ3BhZGRpbmctbGVmdCcsXG4gICdweC0nOiAncGFkZGluZy14JyxcbiAgJ3B5LSc6ICdwYWRkaW5nLXknLFxuICAnZ2FwLSc6ICdnYXAnLFxuICAncm91bmRlZC0nOiAnYm9yZGVyLXJhZGl1cycsXG4gICdqdXN0aWZ5LSc6ICdqdXN0aWZ5LWNvbnRlbnQnLFxuICAnaXRlbXMtJzogJ2FsaWduLWl0ZW1zJyxcbiAgJ2NvbnRlbnQtJzogJ2FsaWduLWNvbnRlbnQnLFxuICAnc2VsZi0nOiAnYWxpZ24tc2VsZicsXG4gICdvdmVyZmxvdy0nOiAnb3ZlcmZsb3cnLFxuICAnb3ZlcmZsb3cteC0nOiAnb3ZlcmZsb3cteCcsXG4gICdvdmVyZmxvdy15LSc6ICdvdmVyZmxvdy15JyxcbiAgJ3otJzogJ3otaW5kZXgnLFxuICAnb3BhY2l0eS0nOiAnb3BhY2l0eScsXG4gICdjdXJzb3ItJzogJ2N1cnNvcicsXG4gICdzaGFkb3ctJzogJ2JveC1zaGFkb3cnLFxuICAnYm9yZGVyLSc6ICdib3JkZXItd2lkdGgnLFxuICAnYm9yZGVyLXQtJzogJ2JvcmRlci13aWR0aCcsXG4gICdib3JkZXItci0nOiAnYm9yZGVyLXdpZHRoJyxcbiAgJ2JvcmRlci1iLSc6ICdib3JkZXItd2lkdGgnLFxuICAnYm9yZGVyLWwtJzogJ2JvcmRlci13aWR0aCcsXG4gICd0b3AtJzogJ3RvcCcsXG4gICdyaWdodC0nOiAncmlnaHQnLFxuICAnYm90dG9tLSc6ICdib3R0b20nLFxuICAnbGVmdC0nOiAnbGVmdCcsXG4gICdpbnNldC0nOiAnaW5zZXQnLFxuICAndHJhY2tpbmctJzogJ2xldHRlci1zcGFjaW5nJyxcbiAgJ2xlYWRpbmctJzogJ2xpbmUtaGVpZ2h0JyxcbiAgJ2FzcGVjdC0nOiAnYXNwZWN0LXJhdGlvJyxcbiAgJ29iamVjdC0nOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ2Jhc2lzLSc6ICdmbGV4LWJhc2lzJyxcbiAgJ2dyb3ctJzogJ2ZsZXgtZ3JvdycsXG4gICdzaHJpbmstJzogJ2ZsZXgtc2hyaW5rJ1xufTtcblxuY29uc3QgRk9OVF9TSVpFX1VUSUxJVElFUyA9IG5ldyBTZXQoW1xuICAndGV4dC14cycsICd0ZXh0LXNtJywgJ3RleHQtYmFzZScsICd0ZXh0LWxnJywgJ3RleHQteGwnLFxuICAndGV4dC0yeGwnLCAndGV4dC0zeGwnLCAndGV4dC00eGwnLCAndGV4dC01eGwnLCAndGV4dC02eGwnLFxuICAndGV4dC03eGwnLCAndGV4dC04eGwnLCAndGV4dC05eGwnXG5dKTtcblxuY29uc3QgTElORV9IRUlHSFRfVVRJTElUSUVTID0gbmV3IFNldChbXG4gICdsZWFkaW5nLW5vbmUnLCAnbGVhZGluZy10aWdodCcsICdsZWFkaW5nLXNudWcnLCAnbGVhZGluZy1ub3JtYWwnLFxuICAnbGVhZGluZy1yZWxheGVkJywgJ2xlYWRpbmctbG9vc2UnLCAnbGVhZGluZy0zJywgJ2xlYWRpbmctNCcsICdsZWFkaW5nLTUnLFxuICAnbGVhZGluZy02JywgJ2xlYWRpbmctNycsICdsZWFkaW5nLTgnLCAnbGVhZGluZy05JywgJ2xlYWRpbmctMTAnXG5dKTtcblxuY29uc3QgTEVUVEVSX1NQQUNJTkdfVVRJTElUSUVTID0gbmV3IFNldChbXG4gICd0cmFja2luZy10aWdodGVyJywgJ3RyYWNraW5nLXRpZ2h0JywgJ3RyYWNraW5nLW5vcm1hbCcsXG4gICd0cmFja2luZy13aWRlJywgJ3RyYWNraW5nLXdpZGVyJywgJ3RyYWNraW5nLXdpZGVzdCdcbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvcGVydHlGb3JVdGlsaXR5KHV0aWxpdHk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHN0cmlwcGVkVXRpbGl0eSA9IHN0cmlwVmFyaWFudHModXRpbGl0eSk7XG4gIFxuICBpZiAoVVRJTElUWV9UT19QUk9QRVJUWV9NQVBbc3RyaXBwZWRVdGlsaXR5XSkge1xuICAgIHJldHVybiBVVElMSVRZX1RPX1BST1BFUlRZX01BUFtzdHJpcHBlZFV0aWxpdHldO1xuICB9XG4gIFxuICBpZiAoRk9OVF9TSVpFX1VUSUxJVElFUy5oYXMoc3RyaXBwZWRVdGlsaXR5KSkge1xuICAgIHJldHVybiAnZm9udC1zaXplJztcbiAgfVxuXG4gIGlmIChMSU5FX0hFSUdIVF9VVElMSVRJRVMuaGFzKHN0cmlwcGVkVXRpbGl0eSkpIHtcbiAgICByZXR1cm4gJ2xpbmUtaGVpZ2h0JztcbiAgfVxuXG4gIGlmIChMRVRURVJfU1BBQ0lOR19VVElMSVRJRVMuaGFzKHN0cmlwcGVkVXRpbGl0eSkpIHtcbiAgICByZXR1cm4gJ2xldHRlci1zcGFjaW5nJztcbiAgfVxuICBcbiAgaWYgKHN0cmlwcGVkVXRpbGl0eS5zdGFydHNXaXRoKCd0ZXh0LScpICYmICFGT05UX1NJWkVfVVRJTElUSUVTLmhhcyhzdHJpcHBlZFV0aWxpdHkpKSB7XG4gICAgY29uc3QgdmFsdWUgPSBzdHJpcHBlZFV0aWxpdHkuc2xpY2UoNSk7XG4gICAgaWYgKC9eXFxkLy50ZXN0KHZhbHVlKSB8fCB2YWx1ZS5zdGFydHNXaXRoKCdbJykpIHtcbiAgICAgIHJldHVybiAnZm9udC1zaXplJztcbiAgICB9XG4gICAgcmV0dXJuICdjb2xvcic7XG4gIH1cblxuICBpZiAoc3RyaXBwZWRVdGlsaXR5LnN0YXJ0c1dpdGgoJ2xlYWRpbmctJykgJiYgIUxJTkVfSEVJR0hUX1VUSUxJVElFUy5oYXMoc3RyaXBwZWRVdGlsaXR5KSkge1xuICAgIHJldHVybiAnbGluZS1oZWlnaHQnO1xuICB9XG5cbiAgaWYgKHN0cmlwcGVkVXRpbGl0eS5zdGFydHNXaXRoKCd0cmFja2luZy0nKSAmJiAhTEVUVEVSX1NQQUNJTkdfVVRJTElUSUVTLmhhcyhzdHJpcHBlZFV0aWxpdHkpKSB7XG4gICAgcmV0dXJuICdsZXR0ZXItc3BhY2luZyc7XG4gIH1cbiAgXG4gIGNvbnN0IHNvcnRlZFByZWZpeGVzID0gT2JqZWN0LmtleXMoUFJFRklYX1BST1BFUlRZX01BUCkuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aCk7XG4gIFxuICBmb3IgKGNvbnN0IHByZWZpeCBvZiBzb3J0ZWRQcmVmaXhlcykge1xuICAgIGlmIChzdHJpcHBlZFV0aWxpdHkuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICByZXR1cm4gUFJFRklYX1BST1BFUlRZX01BUFtwcmVmaXhdO1xuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuICd1bmtub3duJztcbn1cblxuZnVuY3Rpb24gc3RyaXBWYXJpYW50cyh1dGlsaXR5OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwYXJ0cyA9IHV0aWxpdHkuc3BsaXQoJzonKTtcbiAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUZXh0Rm9udFNpemVVdGlsaXR5KHV0aWxpdHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBzdHJpcHBlZCA9IHN0cmlwVmFyaWFudHModXRpbGl0eSk7XG4gIHJldHVybiBGT05UX1NJWkVfVVRJTElUSUVTLmhhcyhzdHJpcHBlZCkgfHwgKFxuICAgIHN0cmlwcGVkLnN0YXJ0c1dpdGgoJ3RleHQtJykgJiYgL15cXGQvLnRlc3Qoc3RyaXBwZWQuc2xpY2UoNSkpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RleHRDb2xvclV0aWxpdHkodXRpbGl0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHN0cmlwcGVkID0gc3RyaXBWYXJpYW50cyh1dGlsaXR5KTtcbiAgXG4gIGlmIChGT05UX1NJWkVfVVRJTElUSUVTLmhhcyhzdHJpcHBlZCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgXG4gIGlmIChzdHJpcHBlZC5zdGFydHNXaXRoKCd0ZXh0LScpKSB7XG4gICAgY29uc3QgdmFsdWUgPSBzdHJpcHBlZC5zbGljZSg1KTtcbiAgICBpZiAoL15cXGQvLnRlc3QodmFsdWUpIHx8IHZhbHVlLnN0YXJ0c1dpdGgoJ1snKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMaW5lSGVpZ2h0VXRpbGl0eSh1dGlsaXR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3Qgc3RyaXBwZWQgPSBzdHJpcFZhcmlhbnRzKHV0aWxpdHkpO1xuICByZXR1cm4gTElORV9IRUlHSFRfVVRJTElUSUVTLmhhcyhzdHJpcHBlZCkgfHwgc3RyaXBwZWQuc3RhcnRzV2l0aCgnbGVhZGluZy0nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGV0dGVyU3BhY2luZ1V0aWxpdHkodXRpbGl0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHN0cmlwcGVkID0gc3RyaXBWYXJpYW50cyh1dGlsaXR5KTtcbiAgcmV0dXJuIExFVFRFUl9TUEFDSU5HX1VUSUxJVElFUy5oYXMoc3RyaXBwZWQpIHx8IHN0cmlwcGVkLnN0YXJ0c1dpdGgoJ3RyYWNraW5nLScpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvcGVydGllc0ZvclV0aWxpdGllcyh1dGlsaXRpZXM6IHN0cmluZ1tdKTogTWFwPHN0cmluZywgc3RyaW5nW10+IHtcbiAgY29uc3QgcHJvcGVydHlNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nW10+KCk7XG4gIFxuICBmb3IgKGNvbnN0IHV0aWxpdHkgb2YgdXRpbGl0aWVzKSB7XG4gICAgY29uc3QgcHJvcGVydHkgPSBnZXRQcm9wZXJ0eUZvclV0aWxpdHkodXRpbGl0eSk7XG4gICAgXG4gICAgaWYgKCFwcm9wZXJ0eU1hcC5oYXMocHJvcGVydHkpKSB7XG4gICAgICBwcm9wZXJ0eU1hcC5zZXQocHJvcGVydHksIFtdKTtcbiAgICB9XG4gICAgXG4gICAgcHJvcGVydHlNYXAuZ2V0KHByb3BlcnR5KSEucHVzaCh1dGlsaXR5KTtcbiAgfVxuICBcbiAgcmV0dXJuIHByb3BlcnR5TWFwO1xufVxuXG5leHBvcnQgY29uc3QgUFJPUEVSVFlfQ09ORkxJQ1RfR1JPVVBTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7XG4gICdkaXNwbGF5JzogWydkaXNwbGF5J10sXG4gICdwb3NpdGlvbic6IFsncG9zaXRpb24nXSxcbiAgJ3dpZHRoJzogWyd3aWR0aCcsICdtaW4td2lkdGgnLCAnbWF4LXdpZHRoJ10sXG4gICdoZWlnaHQnOiBbJ2hlaWdodCcsICdtaW4taGVpZ2h0JywgJ21heC1oZWlnaHQnXSxcbiAgJ21hcmdpbic6IFsnbWFyZ2luJywgJ21hcmdpbi10b3AnLCAnbWFyZ2luLXJpZ2h0JywgJ21hcmdpbi1ib3R0b20nLCAnbWFyZ2luLWxlZnQnLCAnbWFyZ2luLXgnLCAnbWFyZ2luLXknXSxcbiAgJ3BhZGRpbmcnOiBbJ3BhZGRpbmcnLCAncGFkZGluZy10b3AnLCAncGFkZGluZy1yaWdodCcsICdwYWRkaW5nLWJvdHRvbScsICdwYWRkaW5nLWxlZnQnLCAncGFkZGluZy14JywgJ3BhZGRpbmcteSddLFxuICAnZmxleC1kaXJlY3Rpb24nOiBbJ2ZsZXgtZGlyZWN0aW9uJ10sXG4gICdmbGV4LXdyYXAnOiBbJ2ZsZXgtd3JhcCddLFxuICAnZmxleCc6IFsnZmxleCcsICdmbGV4LWdyb3cnLCAnZmxleC1zaHJpbmsnLCAnZmxleC1iYXNpcyddLFxuICAnanVzdGlmeS1jb250ZW50JzogWydqdXN0aWZ5LWNvbnRlbnQnXSxcbiAgJ2FsaWduLWl0ZW1zJzogWydhbGlnbi1pdGVtcyddLFxuICAnYWxpZ24tY29udGVudCc6IFsnYWxpZ24tY29udGVudCddLFxuICAnYWxpZ24tc2VsZic6IFsnYWxpZ24tc2VsZiddLFxuICAndGV4dC1hbGlnbic6IFsndGV4dC1hbGlnbiddLFxuICAnZm9udC1zaXplJzogWydmb250LXNpemUnXSxcbiAgJ2ZvbnQtd2VpZ2h0JzogWydmb250LXdlaWdodCddLFxuICAnY29sb3InOiBbJ2NvbG9yJ10sXG4gICdiYWNrZ3JvdW5kLWNvbG9yJzogWydiYWNrZ3JvdW5kLWNvbG9yJ10sXG4gICdib3JkZXItcmFkaXVzJzogWydib3JkZXItcmFkaXVzJ10sXG4gICdib3JkZXItd2lkdGgnOiBbJ2JvcmRlci13aWR0aCcsICdib3JkZXItdG9wLXdpZHRoJywgJ2JvcmRlci1yaWdodC13aWR0aCcsICdib3JkZXItYm90dG9tLXdpZHRoJywgJ2JvcmRlci1sZWZ0LXdpZHRoJ10sXG4gICdib3JkZXItY29sb3InOiBbJ2JvcmRlci1jb2xvcicsICdib3JkZXItdG9wLWNvbG9yJywgJ2JvcmRlci1yaWdodC1jb2xvcicsICdib3JkZXItYm90dG9tLWNvbG9yJywgJ2JvcmRlci1sZWZ0LWNvbG9yJ10sXG4gICdib3JkZXItc3R5bGUnOiBbJ2JvcmRlci1zdHlsZSddLFxuICAnb3ZlcmZsb3cnOiBbJ292ZXJmbG93JywgJ292ZXJmbG93LXgnLCAnb3ZlcmZsb3cteSddLFxuICAnei1pbmRleCc6IFsnei1pbmRleCddLFxuICAnb3BhY2l0eSc6IFsnb3BhY2l0eSddLFxuICAnZ2FwJzogWydnYXAnXSxcbiAgJ2luc2V0JzogWydpbnNldCcsICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXSxcbiAgJ3RleHQtZGVjb3JhdGlvbic6IFsndGV4dC1kZWNvcmF0aW9uJ10sXG4gICd0ZXh0LXRyYW5zZm9ybSc6IFsndGV4dC10cmFuc2Zvcm0nXSxcbiAgJ2xldHRlci1zcGFjaW5nJzogWydsZXR0ZXItc3BhY2luZyddLFxuICAnbGluZS1oZWlnaHQnOiBbJ2xpbmUtaGVpZ2h0J10sXG4gICdhc3BlY3QtcmF0aW8nOiBbJ2FzcGVjdC1yYXRpbyddLFxuICAnb2JqZWN0LWZpdCc6IFsnb2JqZWN0LWZpdCddLFxuICAnb2JqZWN0LXBvc2l0aW9uJzogWydvYmplY3QtcG9zaXRpb24nXSxcbiAgJ3dvcmQtYnJlYWsnOiBbJ3dvcmQtYnJlYWsnXVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZsaWN0R3JvdXAocHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBmb3IgKGNvbnN0IFtncm91cE5hbWUsIHByb3BlcnRpZXNdIG9mIE9iamVjdC5lbnRyaWVzKFBST1BFUlRZX0NPTkZMSUNUX0dST1VQUykpIHtcbiAgICBpZiAocHJvcGVydGllcy5pbmNsdWRlcyhwcm9wZXJ0eSkpIHtcbiAgICAgIHJldHVybiBncm91cE5hbWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydGllc0NvbmZsaWN0KHByb3AxOiBzdHJpbmcsIHByb3AyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgZ3JvdXAxID0gZ2V0Q29uZmxpY3RHcm91cChwcm9wMSk7XG4gIGNvbnN0IGdyb3VwMiA9IGdldENvbmZsaWN0R3JvdXAocHJvcDIpO1xuICBcbiAgaWYgKGdyb3VwMSAmJiBncm91cDIgJiYgZ3JvdXAxID09PSBncm91cDIpIHtcbiAgICBpZiAocHJvcDEgPT09IHByb3AyKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgZ3JvdXAgPSBQUk9QRVJUWV9DT05GTElDVF9HUk9VUFNbZ3JvdXAxXTtcbiAgICBcbiAgICBpZiAoZ3JvdXAubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgaWYgKGdyb3VwMSA9PT0gJ21hcmdpbicgfHwgZ3JvdXAxID09PSAncGFkZGluZycpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gZ3JvdXAxIHx8IHByb3AyID09PSBncm91cDEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGlmIChncm91cDEgPT09ICdpbnNldCcpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2luc2V0JyB8fCBwcm9wMiA9PT0gJ2luc2V0Jykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAxID09PSAnYm9yZGVyLXdpZHRoJykge1xuICAgICAgaWYgKHByb3AxID09PSAnYm9yZGVyLXdpZHRoJyB8fCBwcm9wMiA9PT0gJ2JvcmRlci13aWR0aCcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwMSA9PT0gJ2JvcmRlci1jb2xvcicpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2JvcmRlci1jb2xvcicgfHwgcHJvcDIgPT09ICdib3JkZXItY29sb3InKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChncm91cDEgPT09ICdvdmVyZmxvdycpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ292ZXJmbG93JyB8fCBwcm9wMiA9PT0gJ292ZXJmbG93Jykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAxID09PSAnZmxleCcpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2ZsZXgnIHx8IHByb3AyID09PSAnZmxleCcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBwcm9wMSA9PT0gcHJvcDI7XG4gIH1cbiAgXG4gIHJldHVybiBwcm9wMSA9PT0gcHJvcDI7XG59XG4iXX0=
@@ -0,0 +1,52 @@
1
+ import { Specificity } from './specificityCalculator';
2
+ export interface VariableDefinition {
3
+ name: string;
4
+ value: string;
5
+ scope: VariableScope;
6
+ specificity: Specificity;
7
+ sourceOrder: number;
8
+ variants: string[];
9
+ }
10
+ export interface VariableScope {
11
+ type: 'global' | 'selector';
12
+ selector?: string;
13
+ selectorType?: 'class' | 'element' | 'root';
14
+ }
15
+ export interface ResolutionContext {
16
+ selector: string;
17
+ specificity: Specificity;
18
+ variants: string[];
19
+ }
20
+ export declare class VariableRegistry {
21
+ private variables;
22
+ private resolutionCache;
23
+ private resolutionStack;
24
+ register(variable: VariableDefinition): void;
25
+ resolve(varName: string, context: ResolutionContext, fallback?: string): {
26
+ value: string;
27
+ resolved: boolean;
28
+ source: string;
29
+ };
30
+ resolveValue(value: string, context: ResolutionContext): {
31
+ value: string;
32
+ hasUnresolved: boolean;
33
+ isCircular?: boolean;
34
+ };
35
+ private isApplicable;
36
+ private variantsMatch;
37
+ private selectorContains;
38
+ hasVariable(name: string): boolean;
39
+ getVariableDefinitions(name: string): VariableDefinition[];
40
+ clear(): void;
41
+ getRegisteredVariables(): string[];
42
+ }
43
+ export declare function parseVarExpression(value: string): {
44
+ hasVar: boolean;
45
+ varName?: string;
46
+ fallback?: string;
47
+ rawValue: string;
48
+ };
49
+ export declare function isCssVariable(property: string): boolean;
50
+ export declare function isVarExpression(value: string): boolean;
51
+ export declare function createGlobalScope(): VariableScope;
52
+ export declare function createSelectorScope(selector: string, selectorType?: 'class' | 'element' | 'root'): VariableScope;