css-to-tailwind-react 0.4.1 → 0.4.2

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.
@@ -41,27 +41,31 @@ class VariableRegistry {
41
41
  return { value: this.resolutionCache.get(cacheKey), resolved: true, source: 'cache' };
42
42
  }
43
43
  if (this.resolutionStack.has(varName)) {
44
- logger_1.logger.warn(`Circular reference detected for variable: ${varName}`);
45
- return { value: fallback || '', resolved: false, source: 'circular' };
44
+ logger_1.logger.verbose(`Circular reference detected for variable: ${varName}`);
45
+ if (fallback !== undefined) {
46
+ const resolvedFallback = this.resolveValue(fallback, context);
47
+ return { value: resolvedFallback.value, resolved: !resolvedFallback.hasUnresolved, source: 'circular-fallback' };
48
+ }
49
+ return { value: '', resolved: false, source: 'circular' };
46
50
  }
47
51
  this.resolutionStack.add(varName);
48
52
  try {
49
53
  const definitions = this.variables.get(varName);
50
54
  if (!definitions || definitions.length === 0) {
51
- if (fallback !== undefined) {
55
+ if (fallback !== undefined && fallback !== '') {
52
56
  const resolvedFallback = this.resolveValue(fallback, context);
53
- return { value: resolvedFallback.value, resolved: true, source: 'fallback' };
57
+ return { value: resolvedFallback.value, resolved: !resolvedFallback.hasUnresolved, source: 'fallback' };
54
58
  }
55
- logger_1.logger.warn(`Undefined CSS variable: ${varName}`);
59
+ logger_1.logger.verbose(`Undefined CSS variable: ${varName}`);
56
60
  return { value: '', resolved: false, source: 'undefined' };
57
61
  }
58
62
  const applicableDefs = definitions.filter(def => this.isApplicable(def, context));
59
63
  if (applicableDefs.length === 0) {
60
- if (fallback !== undefined) {
64
+ if (fallback !== undefined && fallback !== '') {
61
65
  const resolvedFallback = this.resolveValue(fallback, context);
62
- return { value: resolvedFallback.value, resolved: true, source: 'fallback' };
66
+ return { value: resolvedFallback.value, resolved: !resolvedFallback.hasUnresolved, source: 'fallback' };
63
67
  }
64
- logger_1.logger.warn(`No applicable definition for variable: ${varName} in context: ${context.selector}`);
68
+ logger_1.logger.verbose(`No applicable definition for variable: ${varName} in context: ${context.selector}`);
65
69
  return { value: '', resolved: false, source: 'no-match' };
66
70
  }
67
71
  const bestMatch = applicableDefs[0];
@@ -86,7 +90,7 @@ class VariableRegistry {
86
90
  }
87
91
  }
88
92
  resolveValue(value, context) {
89
- const varPattern = /var\s*\(\s*(--[a-zA-Z0-9_-]+)\s*(?:,\s*([^)]+))?\s*\)/g;
93
+ const varPattern = /var\s*\(\s*(--[a-zA-Z0-9_-]+)\s*(?:,\s*([^)]*))?\s*\)/g;
90
94
  let result = value;
91
95
  let hasUnresolved = false;
92
96
  let isCircular = false;
@@ -95,29 +99,47 @@ class VariableRegistry {
95
99
  const maxIterations = 10;
96
100
  while ((match = varPattern.exec(result)) !== null) {
97
101
  if (++iterations > maxIterations) {
98
- logger_1.logger.warn(`Max variable resolution depth reached for: ${value}`);
102
+ logger_1.logger.verbose(`Max variable resolution depth reached for: ${value}`);
99
103
  hasUnresolved = true;
100
104
  break;
101
105
  }
102
106
  const fullMatch = match[0];
103
107
  const varName = match[1];
104
- const fallback = match[2]?.trim();
105
- const resolved = this.resolve(varName, context, fallback);
106
- if (resolved.source === 'circular') {
107
- isCircular = true;
108
- hasUnresolved = true;
109
- result = resolved.value || '';
110
- break;
108
+ const innerFallback = match[2]?.trim();
109
+ const resolved = this.resolve(varName, context, innerFallback);
110
+ if (resolved.source === 'circular' || resolved.source === 'circular-fallback') {
111
+ if (resolved.source === 'circular') {
112
+ isCircular = true;
113
+ }
114
+ if (resolved.value) {
115
+ result = result.replace(fullMatch, resolved.value);
116
+ }
117
+ else {
118
+ hasUnresolved = true;
119
+ result = result.replace(fullMatch, '');
120
+ }
121
+ if (resolved.source === 'circular') {
122
+ break;
123
+ }
124
+ varPattern.lastIndex = 0;
125
+ continue;
111
126
  }
112
127
  if (!resolved.resolved) {
113
- hasUnresolved = true;
114
- result = resolved.value;
128
+ if (resolved.value && resolved.value.trim() !== '') {
129
+ result = result.replace(fullMatch, resolved.value);
130
+ hasUnresolved = true;
131
+ }
132
+ else {
133
+ hasUnresolved = true;
134
+ result = result.replace(fullMatch, '');
135
+ }
115
136
  }
116
137
  else {
117
138
  result = result.replace(fullMatch, resolved.value);
118
139
  }
119
140
  varPattern.lastIndex = 0;
120
141
  }
142
+ result = result.replace(/,\s*,/g, ',').replace(/^\s*,\s*/, '').replace(/\s*,\s*$/, '');
121
143
  return { value: result, hasUnresolved, isCircular };
122
144
  }
123
145
  isApplicable(def, context) {
@@ -193,4 +215,4 @@ function createGlobalScope() {
193
215
  function createSelectorScope(selector, selectorType = 'class') {
194
216
  return { type: 'selector', selector, selectorType };
195
217
  }
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVSZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy92YXJpYWJsZVJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXFPQSxnREFvQkM7QUFFRCxzQ0FFQztBQUVELDBDQUVDO0FBRUQsOENBRUM7QUFFRCxrREFFQztBQXpRRCxtRUFBNEY7QUFDNUYscUNBQWtDO0FBNEJsQyxTQUFTLGNBQWMsQ0FBQyxLQUFvQjtJQUMxQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUIsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7QUFDOUIsQ0FBQztBQUVELE1BQWEsZ0JBQWdCO0lBQTdCO1FBQ1UsY0FBUyxHQUFzQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3pELG9CQUFlLEdBQXdCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDakQsb0JBQWUsR0FBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQTRMbkQsQ0FBQztJQTFMQyxRQUFRLENBQUMsUUFBNEI7UUFDbkMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUUxQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDO1FBQzdDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFM0IsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN4QixNQUFNLFdBQVcsR0FBRyxJQUFBLDBDQUFrQixFQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3JFLElBQUksV0FBVyxLQUFLLENBQUM7Z0JBQUUsT0FBTyxXQUFXLENBQUM7WUFDMUMsT0FBTyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxPQUFPLENBQ0wsT0FBZSxFQUNmLE9BQTBCLEVBQzFCLFFBQWlCO1FBRWpCLE1BQU0sUUFBUSxHQUFHLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUVoRixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDdkMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN6RixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3RDLGVBQU0sQ0FBQyxJQUFJLENBQUMsNkNBQTZDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDcEUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ3hFLENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVsQyxJQUFJLENBQUM7WUFDSCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVoRCxJQUFJLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzdDLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUMzQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUM5RCxPQUFPLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQztnQkFDL0UsQ0FBQztnQkFDRCxlQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUM3RCxDQUFDO1lBRUQsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FDaEMsQ0FBQztZQUVGLElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQzNCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDO2dCQUMvRSxDQUFDO2dCQUNELGVBQU0sQ0FBQyxJQUFJLENBQUMsMENBQTBDLE9BQU8sZ0JBQWdCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQztZQUM1RCxDQUFDO1lBRUQsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUVsRSxJQUFJLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDN0IsT0FBTztvQkFDTCxLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUs7b0JBQzFCLFFBQVEsRUFBRSxLQUFLO29CQUNmLE1BQU0sRUFBRSxVQUFVO2lCQUNuQixDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0sTUFBTSxHQUFHO2dCQUNiLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSztnQkFDMUIsUUFBUSxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWE7Z0JBQ3RDLE1BQU0sRUFBRSxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFVBQVU7YUFDaEUsQ0FBQztZQUVGLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakQsT0FBTyxNQUFNLENBQUM7UUFFaEIsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYSxFQUFFLE9BQTBCO1FBQ3BELE1BQU0sVUFBVSxHQUFHLHdEQUF3RCxDQUFDO1FBQzVFLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksS0FBSyxDQUFDO1FBQ1YsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUV6QixPQUFPLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNsRCxJQUFJLEVBQUUsVUFBVSxHQUFHLGFBQWEsRUFBRSxDQUFDO2dCQUNqQyxlQUFNLENBQUMsSUFBSSxDQUFDLDhDQUE4QyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRSxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixNQUFNO1lBQ1IsQ0FBQztZQUVELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO1lBRWxDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUUxRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ25DLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQ2xCLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDOUIsTUFBTTtZQUNSLENBQUM7WUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN2QixhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUMxQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyRCxDQUFDO1lBQ0QsVUFBVSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRU8sWUFBWSxDQUFDLEdBQXVCLEVBQUUsT0FBMEI7UUFDdEUsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNoQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM5QixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUMvQyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBRXpDLElBQUksYUFBYSxLQUFLLGVBQWUsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDMUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxhQUFhLENBQUMsV0FBcUIsRUFBRSxlQUF5QjtRQUNwRSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsS0FBYSxFQUFFLEtBQWE7UUFDbkQsTUFBTSxZQUFZLEdBQWEsS0FBSyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoRixNQUFNLFlBQVksR0FBYSxLQUFLLENBQUMsS0FBSyxDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxDQUFDO1FBRWhGLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQVk7UUFDdEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsSUFBWTtRQUNqQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUEvTEQsNENBK0xDO0FBRUQsU0FBZ0Isa0JBQWtCLENBQUMsS0FBYTtJQU05QyxNQUFNLFVBQVUsR0FBRyxzREFBc0QsQ0FBQztJQUMxRSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDbEMsT0FBTztZQUNMLE1BQU0sRUFBRSxJQUFJO1lBQ1osT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakIsUUFBUSxFQUFFLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ2hFLFFBQVEsRUFBRSxLQUFLO1NBQ2hCLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQzVDLENBQUM7QUFFRCxTQUFnQixhQUFhLENBQUMsUUFBZ0I7SUFDNUMsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxTQUFnQixlQUFlLENBQUMsS0FBYTtJQUMzQyxPQUFPLGdEQUFnRCxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0RSxDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCO0lBQy9CLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDNUIsQ0FBQztBQUVELFNBQWdCLG1CQUFtQixDQUFDLFFBQWdCLEVBQUUsZUFBNkMsT0FBTztJQUN4RyxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLENBQUM7QUFDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNwZWNpZmljaXR5LCBaRVJPX1NQRUNJRklDSVRZLCBjb21wYXJlU3BlY2lmaWNpdHkgfSBmcm9tICcuL3NwZWNpZmljaXR5Q2FsY3VsYXRvcic7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL2xvZ2dlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFyaWFibGVEZWZpbml0aW9uIHtcbiAgbmFtZTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBzY29wZTogVmFyaWFibGVTY29wZTtcbiAgc3BlY2lmaWNpdHk6IFNwZWNpZmljaXR5O1xuICBzb3VyY2VPcmRlcjogbnVtYmVyO1xuICB2YXJpYW50czogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFyaWFibGVTY29wZSB7XG4gIHR5cGU6ICdnbG9iYWwnIHwgJ3NlbGVjdG9yJztcbiAgc2VsZWN0b3I/OiBzdHJpbmc7XG4gIHNlbGVjdG9yVHlwZT86ICdjbGFzcycgfCAnZWxlbWVudCcgfCAncm9vdCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x1dGlvbkNvbnRleHQge1xuICBzZWxlY3Rvcjogc3RyaW5nO1xuICBzcGVjaWZpY2l0eTogU3BlY2lmaWNpdHk7XG4gIHZhcmlhbnRzOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIFZhcmlhYmxlS2V5IHtcbiAgbmFtZTogc3RyaW5nO1xuICBzY29wZUtleTogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTY29wZUtleShzY29wZTogVmFyaWFibGVTY29wZSk6IHN0cmluZyB7XG4gIGlmIChzY29wZS50eXBlID09PSAnZ2xvYmFsJykge1xuICAgIHJldHVybiAnOnJvb3QnO1xuICB9XG4gIHJldHVybiBzY29wZS5zZWxlY3RvciB8fCAnJztcbn1cblxuZXhwb3J0IGNsYXNzIFZhcmlhYmxlUmVnaXN0cnkge1xuICBwcml2YXRlIHZhcmlhYmxlczogTWFwPHN0cmluZywgVmFyaWFibGVEZWZpbml0aW9uW10+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIHJlc29sdXRpb25DYWNoZTogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSByZXNvbHV0aW9uU3RhY2s6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xuXG4gIHJlZ2lzdGVyKHZhcmlhYmxlOiBWYXJpYWJsZURlZmluaXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSB2YXJpYWJsZS5uYW1lO1xuICAgIFxuICAgIGlmICghdGhpcy52YXJpYWJsZXMuaGFzKGtleSkpIHtcbiAgICAgIHRoaXMudmFyaWFibGVzLnNldChrZXksIFtdKTtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgZGVmaW5pdGlvbnMgPSB0aGlzLnZhcmlhYmxlcy5nZXQoa2V5KSE7XG4gICAgZGVmaW5pdGlvbnMucHVzaCh2YXJpYWJsZSk7XG4gICAgXG4gICAgZGVmaW5pdGlvbnMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgY29uc3Qgc3BlY0NvbXBhcmUgPSBjb21wYXJlU3BlY2lmaWNpdHkoYi5zcGVjaWZpY2l0eSwgYS5zcGVjaWZpY2l0eSk7XG4gICAgICBpZiAoc3BlY0NvbXBhcmUgIT09IDApIHJldHVybiBzcGVjQ29tcGFyZTtcbiAgICAgIHJldHVybiBiLnNvdXJjZU9yZGVyIC0gYS5zb3VyY2VPcmRlcjtcbiAgICB9KTtcbiAgICBcbiAgICB0aGlzLnJlc29sdXRpb25DYWNoZS5jbGVhcigpO1xuICB9XG5cbiAgcmVzb2x2ZShcbiAgICB2YXJOYW1lOiBzdHJpbmcsXG4gICAgY29udGV4dDogUmVzb2x1dGlvbkNvbnRleHQsXG4gICAgZmFsbGJhY2s/OiBzdHJpbmdcbiAgKTogeyB2YWx1ZTogc3RyaW5nOyByZXNvbHZlZDogYm9vbGVhbjsgc291cmNlOiBzdHJpbmcgfSB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBgJHt2YXJOYW1lfToke2NvbnRleHQuc2VsZWN0b3J9OiR7Y29udGV4dC52YXJpYW50cy5qb2luKCcsJyl9YDtcbiAgICBcbiAgICBpZiAodGhpcy5yZXNvbHV0aW9uQ2FjaGUuaGFzKGNhY2hlS2V5KSkge1xuICAgICAgcmV0dXJuIHsgdmFsdWU6IHRoaXMucmVzb2x1dGlvbkNhY2hlLmdldChjYWNoZUtleSkhLCByZXNvbHZlZDogdHJ1ZSwgc291cmNlOiAnY2FjaGUnIH07XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLnJlc29sdXRpb25TdGFjay5oYXModmFyTmFtZSkpIHtcbiAgICAgIGxvZ2dlci53YXJuKGBDaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQgZm9yIHZhcmlhYmxlOiAke3Zhck5hbWV9YCk7XG4gICAgICByZXR1cm4geyB2YWx1ZTogZmFsbGJhY2sgfHwgJycsIHJlc29sdmVkOiBmYWxzZSwgc291cmNlOiAnY2lyY3VsYXInIH07XG4gICAgfVxuICAgIFxuICAgIHRoaXMucmVzb2x1dGlvblN0YWNrLmFkZCh2YXJOYW1lKTtcbiAgICBcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVmaW5pdGlvbnMgPSB0aGlzLnZhcmlhYmxlcy5nZXQodmFyTmFtZSk7XG4gICAgICBcbiAgICAgIGlmICghZGVmaW5pdGlvbnMgfHwgZGVmaW5pdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGlmIChmYWxsYmFjayAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3QgcmVzb2x2ZWRGYWxsYmFjayA9IHRoaXMucmVzb2x2ZVZhbHVlKGZhbGxiYWNrLCBjb250ZXh0KTtcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogcmVzb2x2ZWRGYWxsYmFjay52YWx1ZSwgcmVzb2x2ZWQ6IHRydWUsIHNvdXJjZTogJ2ZhbGxiYWNrJyB9O1xuICAgICAgICB9XG4gICAgICAgIGxvZ2dlci53YXJuKGBVbmRlZmluZWQgQ1NTIHZhcmlhYmxlOiAke3Zhck5hbWV9YCk7XG4gICAgICAgIHJldHVybiB7IHZhbHVlOiAnJywgcmVzb2x2ZWQ6IGZhbHNlLCBzb3VyY2U6ICd1bmRlZmluZWQnIH07XG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnN0IGFwcGxpY2FibGVEZWZzID0gZGVmaW5pdGlvbnMuZmlsdGVyKGRlZiA9PiBcbiAgICAgICAgdGhpcy5pc0FwcGxpY2FibGUoZGVmLCBjb250ZXh0KVxuICAgICAgKTtcbiAgICAgIFxuICAgICAgaWYgKGFwcGxpY2FibGVEZWZzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAoZmFsbGJhY2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IHJlc29sdmVkRmFsbGJhY2sgPSB0aGlzLnJlc29sdmVWYWx1ZShmYWxsYmFjaywgY29udGV4dCk7XG4gICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHJlc29sdmVkRmFsbGJhY2sudmFsdWUsIHJlc29sdmVkOiB0cnVlLCBzb3VyY2U6ICdmYWxsYmFjaycgfTtcbiAgICAgICAgfVxuICAgICAgICBsb2dnZXIud2FybihgTm8gYXBwbGljYWJsZSBkZWZpbml0aW9uIGZvciB2YXJpYWJsZTogJHt2YXJOYW1lfSBpbiBjb250ZXh0OiAke2NvbnRleHQuc2VsZWN0b3J9YCk7XG4gICAgICAgIHJldHVybiB7IHZhbHVlOiAnJywgcmVzb2x2ZWQ6IGZhbHNlLCBzb3VyY2U6ICduby1tYXRjaCcgfTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgY29uc3QgYmVzdE1hdGNoID0gYXBwbGljYWJsZURlZnNbMF07XG4gICAgICBjb25zdCByZXNvbHZlZFZhbHVlID0gdGhpcy5yZXNvbHZlVmFsdWUoYmVzdE1hdGNoLnZhbHVlLCBjb250ZXh0KTtcbiAgICAgIFxuICAgICAgaWYgKHJlc29sdmVkVmFsdWUuaXNDaXJjdWxhcikge1xuICAgICAgICByZXR1cm4geyBcbiAgICAgICAgICB2YWx1ZTogcmVzb2x2ZWRWYWx1ZS52YWx1ZSwgXG4gICAgICAgICAgcmVzb2x2ZWQ6IGZhbHNlLCBcbiAgICAgICAgICBzb3VyY2U6ICdjaXJjdWxhcicgXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHsgXG4gICAgICAgIHZhbHVlOiByZXNvbHZlZFZhbHVlLnZhbHVlLCBcbiAgICAgICAgcmVzb2x2ZWQ6ICFyZXNvbHZlZFZhbHVlLmhhc1VucmVzb2x2ZWQsIFxuICAgICAgICBzb3VyY2U6IHJlc29sdmVkVmFsdWUuaGFzVW5yZXNvbHZlZCA/ICd1bnJlc29sdmVkJyA6ICdyZXNvbHZlZCcgXG4gICAgICB9O1xuICAgICAgXG4gICAgICB0aGlzLnJlc29sdXRpb25DYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdC52YWx1ZSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMucmVzb2x1dGlvblN0YWNrLmRlbGV0ZSh2YXJOYW1lKTtcbiAgICB9XG4gIH1cblxuICByZXNvbHZlVmFsdWUodmFsdWU6IHN0cmluZywgY29udGV4dDogUmVzb2x1dGlvbkNvbnRleHQpOiB7IHZhbHVlOiBzdHJpbmc7IGhhc1VucmVzb2x2ZWQ6IGJvb2xlYW47IGlzQ2lyY3VsYXI/OiBib29sZWFuIH0ge1xuICAgIGNvbnN0IHZhclBhdHRlcm4gPSAvdmFyXFxzKlxcKFxccyooLS1bYS16QS1aMC05Xy1dKylcXHMqKD86LFxccyooW14pXSspKT9cXHMqXFwpL2c7XG4gICAgbGV0IHJlc3VsdCA9IHZhbHVlO1xuICAgIGxldCBoYXNVbnJlc29sdmVkID0gZmFsc2U7XG4gICAgbGV0IGlzQ2lyY3VsYXIgPSBmYWxzZTtcbiAgICBsZXQgbWF0Y2g7XG4gICAgbGV0IGl0ZXJhdGlvbnMgPSAwO1xuICAgIGNvbnN0IG1heEl0ZXJhdGlvbnMgPSAxMDtcbiAgICBcbiAgICB3aGlsZSAoKG1hdGNoID0gdmFyUGF0dGVybi5leGVjKHJlc3VsdCkpICE9PSBudWxsKSB7XG4gICAgICBpZiAoKytpdGVyYXRpb25zID4gbWF4SXRlcmF0aW9ucykge1xuICAgICAgICBsb2dnZXIud2FybihgTWF4IHZhcmlhYmxlIHJlc29sdXRpb24gZGVwdGggcmVhY2hlZCBmb3I6ICR7dmFsdWV9YCk7XG4gICAgICAgIGhhc1VucmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIFxuICAgICAgY29uc3QgZnVsbE1hdGNoID0gbWF0Y2hbMF07XG4gICAgICBjb25zdCB2YXJOYW1lID0gbWF0Y2hbMV07XG4gICAgICBjb25zdCBmYWxsYmFjayA9IG1hdGNoWzJdPy50cmltKCk7XG4gICAgICBcbiAgICAgIGNvbnN0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlKHZhck5hbWUsIGNvbnRleHQsIGZhbGxiYWNrKTtcbiAgICAgIFxuICAgICAgaWYgKHJlc29sdmVkLnNvdXJjZSA9PT0gJ2NpcmN1bGFyJykge1xuICAgICAgICBpc0NpcmN1bGFyID0gdHJ1ZTtcbiAgICAgICAgaGFzVW5yZXNvbHZlZCA9IHRydWU7XG4gICAgICAgIHJlc3VsdCA9IHJlc29sdmVkLnZhbHVlIHx8ICcnO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKCFyZXNvbHZlZC5yZXNvbHZlZCkge1xuICAgICAgICBoYXNVbnJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgcmVzdWx0ID0gcmVzb2x2ZWQudmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShmdWxsTWF0Y2gsIHJlc29sdmVkLnZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHZhclBhdHRlcm4ubGFzdEluZGV4ID0gMDtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHsgdmFsdWU6IHJlc3VsdCwgaGFzVW5yZXNvbHZlZCwgaXNDaXJjdWxhciB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FwcGxpY2FibGUoZGVmOiBWYXJpYWJsZURlZmluaXRpb24sIGNvbnRleHQ6IFJlc29sdXRpb25Db250ZXh0KTogYm9vbGVhbiB7XG4gICAgaWYgKGRlZi5zY29wZS50eXBlID09PSAnZ2xvYmFsJykge1xuICAgICAgaWYgKGRlZi52YXJpYW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy52YXJpYW50c01hdGNoKGRlZi52YXJpYW50cywgY29udGV4dC52YXJpYW50cyk7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHNjb3BlU2VsZWN0b3IgPSBkZWYuc2NvcGUuc2VsZWN0b3IgfHwgJyc7XG4gICAgY29uc3QgY29udGV4dFNlbGVjdG9yID0gY29udGV4dC5zZWxlY3RvcjtcbiAgICBcbiAgICBpZiAoc2NvcGVTZWxlY3RvciA9PT0gY29udGV4dFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy52YXJpYW50c01hdGNoKGRlZi52YXJpYW50cywgY29udGV4dC52YXJpYW50cyk7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLnNlbGVjdG9yQ29udGFpbnMoY29udGV4dFNlbGVjdG9yLCBzY29wZVNlbGVjdG9yKSkge1xuICAgICAgcmV0dXJuIHRoaXMudmFyaWFudHNNYXRjaChkZWYudmFyaWFudHMsIGNvbnRleHQudmFyaWFudHMpO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHZhcmlhbnRzTWF0Y2goZGVmVmFyaWFudHM6IHN0cmluZ1tdLCBjb250ZXh0VmFyaWFudHM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKGRlZlZhcmlhbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIGlmIChjb250ZXh0VmFyaWFudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBkZWZWYXJpYW50cy5ldmVyeSh2ID0+IGNvbnRleHRWYXJpYW50cy5pbmNsdWRlcyh2KSk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdG9yQ29udGFpbnMob3V0ZXI6IHN0cmluZywgaW5uZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlubmVyQ2xhc3Nlczogc3RyaW5nW10gPSBpbm5lci5tYXRjaCgvXFwuW2EtekEtWl8tXVthLXpBLVowLTlfLV0qL2cpIHx8IFtdO1xuICAgIGNvbnN0IG91dGVyQ2xhc3Nlczogc3RyaW5nW10gPSBvdXRlci5tYXRjaCgvXFwuW2EtekEtWl8tXVthLXpBLVowLTlfLV0qL2cpIHx8IFtdO1xuICAgIFxuICAgIHJldHVybiBpbm5lckNsYXNzZXMuZXZlcnkoY2xzID0+IG91dGVyQ2xhc3Nlcy5pbmNsdWRlcyhjbHMpKTtcbiAgfVxuXG4gIGhhc1ZhcmlhYmxlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhcmlhYmxlcy5oYXMobmFtZSk7XG4gIH1cblxuICBnZXRWYXJpYWJsZURlZmluaXRpb25zKG5hbWU6IHN0cmluZyk6IFZhcmlhYmxlRGVmaW5pdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy52YXJpYWJsZXMuZ2V0KG5hbWUpIHx8IFtdO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy52YXJpYWJsZXMuY2xlYXIoKTtcbiAgICB0aGlzLnJlc29sdXRpb25DYWNoZS5jbGVhcigpO1xuICAgIHRoaXMucmVzb2x1dGlvblN0YWNrLmNsZWFyKCk7XG4gIH1cblxuICBnZXRSZWdpc3RlcmVkVmFyaWFibGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnZhcmlhYmxlcy5rZXlzKCkpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVZhckV4cHJlc3Npb24odmFsdWU6IHN0cmluZyk6IHsgXG4gIGhhc1ZhcjogYm9vbGVhbjsgXG4gIHZhck5hbWU/OiBzdHJpbmc7IFxuICBmYWxsYmFjaz86IHN0cmluZztcbiAgcmF3VmFsdWU6IHN0cmluZztcbn0ge1xuICBjb25zdCB2YXJQYXR0ZXJuID0gL152YXJcXHMqXFwoXFxzKigtLVthLXpBLVowLTlfLV0rKVxccyooPzosXFxzKiguKylcXHMqKT9cXCkkLztcbiAgY29uc3QgbWF0Y2ggPSB2YWx1ZS5tYXRjaCh2YXJQYXR0ZXJuKTtcbiAgXG4gIGlmIChtYXRjaCkge1xuICAgIGNvbnN0IGZhbGxiYWNrID0gbWF0Y2hbMl0/LnRyaW0oKTtcbiAgICByZXR1cm4ge1xuICAgICAgaGFzVmFyOiB0cnVlLFxuICAgICAgdmFyTmFtZTogbWF0Y2hbMV0sXG4gICAgICBmYWxsYmFjazogZmFsbGJhY2sgJiYgZmFsbGJhY2subGVuZ3RoID4gMCA/IGZhbGxiYWNrIDogdW5kZWZpbmVkLFxuICAgICAgcmF3VmFsdWU6IHZhbHVlXG4gICAgfTtcbiAgfVxuICBcbiAgcmV0dXJuIHsgaGFzVmFyOiBmYWxzZSwgcmF3VmFsdWU6IHZhbHVlIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Nzc1ZhcmlhYmxlKHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHByb3BlcnR5LnN0YXJ0c1dpdGgoJy0tJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhckV4cHJlc3Npb24odmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gL3ZhclxccypcXChcXHMqLS1bYS16QS1aMC05Xy1dK1xccyooPzosW14pXSspP1xccypcXCkvLnRlc3QodmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR2xvYmFsU2NvcGUoKTogVmFyaWFibGVTY29wZSB7XG4gIHJldHVybiB7IHR5cGU6ICdnbG9iYWwnIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3RvclNjb3BlKHNlbGVjdG9yOiBzdHJpbmcsIHNlbGVjdG9yVHlwZTogJ2NsYXNzJyB8ICdlbGVtZW50JyB8ICdyb290JyA9ICdjbGFzcycpOiBWYXJpYWJsZVNjb3BlIHtcbiAgcmV0dXJuIHsgdHlwZTogJ3NlbGVjdG9yJywgc2VsZWN0b3IsIHNlbGVjdG9yVHlwZSB9O1xufVxuIl19
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVSZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy92YXJpYWJsZVJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTBQQSxnREFvQkM7QUFFRCxzQ0FFQztBQUVELDBDQUVDO0FBRUQsOENBRUM7QUFFRCxrREFFQztBQTlSRCxtRUFBNEY7QUFDNUYscUNBQWtDO0FBNEJsQyxTQUFTLGNBQWMsQ0FBQyxLQUFvQjtJQUMxQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUIsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7QUFDOUIsQ0FBQztBQUVELE1BQWEsZ0JBQWdCO0lBQTdCO1FBQ1UsY0FBUyxHQUFzQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3pELG9CQUFlLEdBQXdCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDakQsb0JBQWUsR0FBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQWlObkQsQ0FBQztJQS9NQyxRQUFRLENBQUMsUUFBNEI7UUFDbkMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUUxQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDO1FBQzdDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFM0IsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN4QixNQUFNLFdBQVcs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dGVudCI6WyJpbXBvcnQgeyBTcGVjaWZpY2l0eSwgWkVST19TUEVDSUZJQ0lUWSwgY29tcGFyZVNwZWNpZmljaXR5IH0gZnJvbSAnLi9zcGVjaWZpY2l0eUNhbGN1bGF0b3InO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZhcmlhYmxlRGVmaW5pdGlvbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgc2NvcGU6IFZhcmlhYmxlU2NvcGU7XG4gIHNwZWNpZmljaXR5OiBTcGVjaWZpY2l0eTtcbiAgc291cmNlT3JkZXI6IG51bWJlcjtcbiAgdmFyaWFudHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZhcmlhYmxlU2NvcGUge1xuICB0eXBlOiAnZ2xvYmFsJyB8ICdzZWxlY3Rvcic7XG4gIHNlbGVjdG9yPzogc3RyaW5nO1xuICBzZWxlY3RvclR5cGU/OiAnY2xhc3MnIHwgJ2VsZW1lbnQnIHwgJ3Jvb3QnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdXRpb25Db250ZXh0IHtcbiAgc2VsZWN0b3I6IHN0cmluZztcbiAgc3BlY2lmaWNpdHk6IFNwZWNpZmljaXR5O1xuICB2YXJpYW50czogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBWYXJpYWJsZUtleSB7XG4gIG5hbWU6IHN0cmluZztcbiAgc2NvcGVLZXk6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2NvcGVLZXkoc2NvcGU6IFZhcmlhYmxlU2NvcGUpOiBzdHJpbmcge1xuICBpZiAoc2NvcGUudHlwZSA9PT0gJ2dsb2JhbCcpIHtcbiAgICByZXR1cm4gJzpyb290JztcbiAgfVxuICByZXR1cm4gc2NvcGUuc2VsZWN0b3IgfHwgJyc7XG59XG5cbmV4cG9ydCBjbGFzcyBWYXJpYWJsZVJlZ2lzdHJ5IHtcbiAgcHJpdmF0ZSB2YXJpYWJsZXM6IE1hcDxzdHJpbmcsIFZhcmlhYmxlRGVmaW5pdGlvbltdPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSByZXNvbHV0aW9uQ2FjaGU6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgcmVzb2x1dGlvblN0YWNrOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcblxuICByZWdpc3Rlcih2YXJpYWJsZTogVmFyaWFibGVEZWZpbml0aW9uKTogdm9pZCB7XG4gICAgY29uc3Qga2V5ID0gdmFyaWFibGUubmFtZTtcbiAgICBcbiAgICBpZiAoIXRoaXMudmFyaWFibGVzLmhhcyhrZXkpKSB7XG4gICAgICB0aGlzLnZhcmlhYmxlcy5zZXQoa2V5LCBbXSk7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGRlZmluaXRpb25zID0gdGhpcy52YXJpYWJsZXMuZ2V0KGtleSkhO1xuICAgIGRlZmluaXRpb25zLnB1c2godmFyaWFibGUpO1xuICAgIFxuICAgIGRlZmluaXRpb25zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IHNwZWNDb21wYXJlID0gY29tcGFyZVNwZWNpZmljaXR5KGIuc3BlY2lmaWNpdHksIGEuc3BlY2lmaWNpdHkpO1xuICAgICAgaWYgKHNwZWNDb21wYXJlICE9PSAwKSByZXR1cm4gc3BlY0NvbXBhcmU7XG4gICAgICByZXR1cm4gYi5zb3VyY2VPcmRlciAtIGEuc291cmNlT3JkZXI7XG4gICAgfSk7XG4gICAgXG4gICAgdGhpcy5yZXNvbHV0aW9uQ2FjaGUuY2xlYXIoKTtcbiAgfVxuXG4gIHJlc29sdmUoXG4gICAgdmFyTmFtZTogc3RyaW5nLFxuICAgIGNvbnRleHQ6IFJlc29sdXRpb25Db250ZXh0LFxuICAgIGZhbGxiYWNrPzogc3RyaW5nXG4gICk6IHsgdmFsdWU6IHN0cmluZzsgcmVzb2x2ZWQ6IGJvb2xlYW47IHNvdXJjZTogc3RyaW5nIH0ge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gYCR7dmFyTmFtZX06JHtjb250ZXh0LnNlbGVjdG9yfToke2NvbnRleHQudmFyaWFudHMuam9pbignLCcpfWA7XG4gICAgXG4gICAgaWYgKHRoaXMucmVzb2x1dGlvbkNhY2hlLmhhcyhjYWNoZUtleSkpIHtcbiAgICAgIHJldHVybiB7IHZhbHVlOiB0aGlzLnJlc29sdXRpb25DYWNoZS5nZXQoY2FjaGVLZXkpISwgcmVzb2x2ZWQ6IHRydWUsIHNvdXJjZTogJ2NhY2hlJyB9O1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5yZXNvbHV0aW9uU3RhY2suaGFzKHZhck5hbWUpKSB7XG4gICAgICBsb2dnZXIudmVyYm9zZShgQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGZvciB2YXJpYWJsZTogJHt2YXJOYW1lfWApO1xuICAgICAgaWYgKGZhbGxiYWNrICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRGYWxsYmFjayA9IHRoaXMucmVzb2x2ZVZhbHVlKGZhbGxiYWNrLCBjb250ZXh0KTtcbiAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHJlc29sdmVkRmFsbGJhY2sudmFsdWUsIHJlc29sdmVkOiAhcmVzb2x2ZWRGYWxsYmFjay5oYXNVbnJlc29sdmVkLCBzb3VyY2U6ICdjaXJjdWxhci1mYWxsYmFjaycgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHZhbHVlOiAnJywgcmVzb2x2ZWQ6IGZhbHNlLCBzb3VyY2U6ICdjaXJjdWxhcicgfTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5yZXNvbHV0aW9uU3RhY2suYWRkKHZhck5hbWUpO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWZpbml0aW9ucyA9IHRoaXMudmFyaWFibGVzLmdldCh2YXJOYW1lKTtcbiAgICAgIFxuICAgICAgaWYgKCFkZWZpbml0aW9ucyB8fCBkZWZpbml0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKGZhbGxiYWNrICE9PSB1bmRlZmluZWQgJiYgZmFsbGJhY2sgIT09ICcnKSB7XG4gICAgICAgICAgY29uc3QgcmVzb2x2ZWRGYWxsYmFjayA9IHRoaXMucmVzb2x2ZVZhbHVlKGZhbGxiYWNrLCBjb250ZXh0KTtcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogcmVzb2x2ZWRGYWxsYmFjay52YWx1ZSwgcmVzb2x2ZWQ6ICFyZXNvbHZlZEZhbGxiYWNrLmhhc1VucmVzb2x2ZWQsIHNvdXJjZTogJ2ZhbGxiYWNrJyB9O1xuICAgICAgICB9XG4gICAgICAgIGxvZ2dlci52ZXJib3NlKGBVbmRlZmluZWQgQ1NTIHZhcmlhYmxlOiAke3Zhck5hbWV9YCk7XG4gICAgICAgIHJldHVybiB7IHZhbHVlOiAnJywgcmVzb2x2ZWQ6IGZhbHNlLCBzb3VyY2U6ICd1bmRlZmluZWQnIH07XG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnN0IGFwcGxpY2FibGVEZWZzID0gZGVmaW5pdGlvbnMuZmlsdGVyKGRlZiA9PiBcbiAgICAgICAgdGhpcy5pc0FwcGxpY2FibGUoZGVmLCBjb250ZXh0KVxuICAgICAgKTtcbiAgICAgIFxuICAgICAgaWYgKGFwcGxpY2FibGVEZWZzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAoZmFsbGJhY2sgIT09IHVuZGVmaW5lZCAmJiBmYWxsYmFjayAhPT0gJycpIHtcbiAgICAgICAgICBjb25zdCByZXNvbHZlZEZhbGxiYWNrID0gdGhpcy5yZXNvbHZlVmFsdWUoZmFsbGJhY2ssIGNvbnRleHQpO1xuICAgICAgICAgIHJldHVybiB7IHZhbHVlOiByZXNvbHZlZEZhbGxiYWNrLnZhbHVlLCByZXNvbHZlZDogIXJlc29sdmVkRmFsbGJhY2suaGFzVW5yZXNvbHZlZCwgc291cmNlOiAnZmFsbGJhY2snIH07XG4gICAgICAgIH1cbiAgICAgICAgbG9nZ2VyLnZlcmJvc2UoYE5vIGFwcGxpY2FibGUgZGVmaW5pdGlvbiBmb3IgdmFyaWFibGU6ICR7dmFyTmFtZX0gaW4gY29udGV4dDogJHtjb250ZXh0LnNlbGVjdG9yfWApO1xuICAgICAgICByZXR1cm4geyB2YWx1ZTogJycsIHJlc29sdmVkOiBmYWxzZSwgc291cmNlOiAnbm8tbWF0Y2gnIH07XG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnN0IGJlc3RNYXRjaCA9IGFwcGxpY2FibGVEZWZzWzBdO1xuICAgICAgY29uc3QgcmVzb2x2ZWRWYWx1ZSA9IHRoaXMucmVzb2x2ZVZhbHVlKGJlc3RNYXRjaC52YWx1ZSwgY29udGV4dCk7XG4gICAgICBcbiAgICAgIGlmIChyZXNvbHZlZFZhbHVlLmlzQ2lyY3VsYXIpIHtcbiAgICAgICAgcmV0dXJuIHsgXG4gICAgICAgICAgdmFsdWU6IHJlc29sdmVkVmFsdWUudmFsdWUsIFxuICAgICAgICAgIHJlc29sdmVkOiBmYWxzZSwgXG4gICAgICAgICAgc291cmNlOiAnY2lyY3VsYXInIFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgXG4gICAgICBjb25zdCByZXN1bHQgPSB7IFxuICAgICAgICB2YWx1ZTogcmVzb2x2ZWRWYWx1ZS52YWx1ZSwgXG4gICAgICAgIHJlc29sdmVkOiAhcmVzb2x2ZWRWYWx1ZS5oYXNVbnJlc29sdmVkLCBcbiAgICAgICAgc291cmNlOiByZXNvbHZlZFZhbHVlLmhhc1VucmVzb2x2ZWQgPyAndW5yZXNvbHZlZCcgOiAncmVzb2x2ZWQnIFxuICAgICAgfTtcbiAgICAgIFxuICAgICAgdGhpcy5yZXNvbHV0aW9uQ2FjaGUuc2V0KGNhY2hlS2V5LCByZXN1bHQudmFsdWUpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIFxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnJlc29sdXRpb25TdGFjay5kZWxldGUodmFyTmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcmVzb2x2ZVZhbHVlKHZhbHVlOiBzdHJpbmcsIGNvbnRleHQ6IFJlc29sdXRpb25Db250ZXh0KTogeyB2YWx1ZTogc3RyaW5nOyBoYXNVbnJlc29sdmVkOiBib29sZWFuOyBpc0NpcmN1bGFyPzogYm9vbGVhbiB9IHtcbiAgICBjb25zdCB2YXJQYXR0ZXJuID0gL3ZhclxccypcXChcXHMqKC0tW2EtekEtWjAtOV8tXSspXFxzKig/OixcXHMqKFteKV0qKSk/XFxzKlxcKS9nO1xuICAgIGxldCByZXN1bHQgPSB2YWx1ZTtcbiAgICBsZXQgaGFzVW5yZXNvbHZlZCA9IGZhbHNlO1xuICAgIGxldCBpc0NpcmN1bGFyID0gZmFsc2U7XG4gICAgbGV0IG1hdGNoO1xuICAgIGxldCBpdGVyYXRpb25zID0gMDtcbiAgICBjb25zdCBtYXhJdGVyYXRpb25zID0gMTA7XG4gICAgXG4gICAgd2hpbGUgKChtYXRjaCA9IHZhclBhdHRlcm4uZXhlYyhyZXN1bHQpKSAhPT0gbnVsbCkge1xuICAgICAgaWYgKCsraXRlcmF0aW9ucyA+IG1heEl0ZXJhdGlvbnMpIHtcbiAgICAgICAgbG9nZ2VyLnZlcmJvc2UoYE1heCB2YXJpYWJsZSByZXNvbHV0aW9uIGRlcHRoIHJlYWNoZWQgZm9yOiAke3ZhbHVlfWApO1xuICAgICAgICBoYXNVbnJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnN0IGZ1bGxNYXRjaCA9IG1hdGNoWzBdO1xuICAgICAgY29uc3QgdmFyTmFtZSA9IG1hdGNoWzFdO1xuICAgICAgY29uc3QgaW5uZXJGYWxsYmFjayA9IG1hdGNoWzJdPy50cmltKCk7XG4gICAgICBcbiAgICAgIGNvbnN0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlKHZhck5hbWUsIGNvbnRleHQsIGlubmVyRmFsbGJhY2spO1xuICAgICAgXG4gICAgICBpZiAocmVzb2x2ZWQuc291cmNlID09PSAnY2lyY3VsYXInIHx8IHJlc29sdmVkLnNvdXJjZSA9PT0gJ2NpcmN1bGFyLWZhbGxiYWNrJykge1xuICAgICAgICBpZiAocmVzb2x2ZWQuc291cmNlID09PSAnY2lyY3VsYXInKSB7XG4gICAgICAgICAgaXNDaXJjdWxhciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc29sdmVkLnZhbHVlKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoZnVsbE1hdGNoLCByZXNvbHZlZC52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaGFzVW5yZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoZnVsbE1hdGNoLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc29sdmVkLnNvdXJjZSA9PT0gJ2NpcmN1bGFyJykge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHZhclBhdHRlcm4ubGFzdEluZGV4ID0gMDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmICghcmVzb2x2ZWQucmVzb2x2ZWQpIHtcbiAgICAgICAgaWYgKHJlc29sdmVkLnZhbHVlICYmIHJlc29sdmVkLnZhbHVlLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShmdWxsTWF0Y2gsIHJlc29sdmVkLnZhbHVlKTtcbiAgICAgICAgICBoYXNVbnJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBoYXNVbnJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShmdWxsTWF0Y2gsICcnKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoZnVsbE1hdGNoLCByZXNvbHZlZC52YWx1ZSk7XG4gICAgICB9XG4gICAgICB2YXJQYXR0ZXJuLmxhc3RJbmRleCA9IDA7XG4gICAgfVxuICAgIFxuICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKC8sXFxzKiwvZywgJywnKS5yZXBsYWNlKC9eXFxzKixcXHMqLywgJycpLnJlcGxhY2UoL1xccyosXFxzKiQvLCAnJyk7XG4gICAgXG4gICAgcmV0dXJuIHsgdmFsdWU6IHJlc3VsdCwgaGFzVW5yZXNvbHZlZCwgaXNDaXJjdWxhciB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FwcGxpY2FibGUoZGVmOiBWYXJpYWJsZURlZmluaXRpb24sIGNvbnRleHQ6IFJlc29sdXRpb25Db250ZXh0KTogYm9vbGVhbiB7XG4gICAgaWYgKGRlZi5zY29wZS50eXBlID09PSAnZ2xvYmFsJykge1xuICAgICAgaWYgKGRlZi52YXJpYW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy52YXJpYW50c01hdGNoKGRlZi52YXJpYW50cywgY29udGV4dC52YXJpYW50cyk7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHNjb3BlU2VsZWN0b3IgPSBkZWYuc2NvcGUuc2VsZWN0b3IgfHwgJyc7XG4gICAgY29uc3QgY29udGV4dFNlbGVjdG9yID0gY29udGV4dC5zZWxlY3RvcjtcbiAgICBcbiAgICBpZiAoc2NvcGVTZWxlY3RvciA9PT0gY29udGV4dFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy52YXJpYW50c01hdGNoKGRlZi52YXJpYW50cywgY29udGV4dC52YXJpYW50cyk7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLnNlbGVjdG9yQ29udGFpbnMoY29udGV4dFNlbGVjdG9yLCBzY29wZVNlbGVjdG9yKSkge1xuICAgICAgcmV0dXJuIHRoaXMudmFyaWFudHNNYXRjaChkZWYudmFyaWFudHMsIGNvbnRleHQudmFyaWFudHMpO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHZhcmlhbnRzTWF0Y2goZGVmVmFyaWFudHM6IHN0cmluZ1tdLCBjb250ZXh0VmFyaWFudHM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKGRlZlZhcmlhbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIGlmIChjb250ZXh0VmFyaWFudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBkZWZWYXJpYW50cy5ldmVyeSh2ID0+IGNvbnRleHRWYXJpYW50cy5pbmNsdWRlcyh2KSk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdG9yQ29udGFpbnMob3V0ZXI6IHN0cmluZywgaW5uZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlubmVyQ2xhc3Nlczogc3RyaW5nW10gPSBpbm5lci5tYXRjaCgvXFwuW2EtekEtWl8tXVthLXpBLVowLTlfLV0qL2cpIHx8IFtdO1xuICAgIGNvbnN0IG91dGVyQ2xhc3Nlczogc3RyaW5nW10gPSBvdXRlci5tYXRjaCgvXFwuW2EtekEtWl8tXVthLXpBLVowLTlfLV0qL2cpIHx8IFtdO1xuICAgIFxuICAgIHJldHVybiBpbm5lckNsYXNzZXMuZXZlcnkoY2xzID0+IG91dGVyQ2xhc3Nlcy5pbmNsdWRlcyhjbHMpKTtcbiAgfVxuXG4gIGhhc1ZhcmlhYmxlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhcmlhYmxlcy5oYXMobmFtZSk7XG4gIH1cblxuICBnZXRWYXJpYWJsZURlZmluaXRpb25zKG5hbWU6IHN0cmluZyk6IFZhcmlhYmxlRGVmaW5pdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy52YXJpYWJsZXMuZ2V0KG5hbWUpIHx8IFtdO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy52YXJpYWJsZXMuY2xlYXIoKTtcbiAgICB0aGlzLnJlc29sdXRpb25DYWNoZS5jbGVhcigpO1xuICAgIHRoaXMucmVzb2x1dGlvblN0YWNrLmNsZWFyKCk7XG4gIH1cblxuICBnZXRSZWdpc3RlcmVkVmFyaWFibGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnZhcmlhYmxlcy5rZXlzKCkpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVZhckV4cHJlc3Npb24odmFsdWU6IHN0cmluZyk6IHsgXG4gIGhhc1ZhcjogYm9vbGVhbjsgXG4gIHZhck5hbWU/OiBzdHJpbmc7IFxuICBmYWxsYmFjaz86IHN0cmluZztcbiAgcmF3VmFsdWU6IHN0cmluZztcbn0ge1xuICBjb25zdCB2YXJQYXR0ZXJuID0gL152YXJcXHMqXFwoXFxzKigtLVthLXpBLVowLTlfLV0rKVxccyooPzosXFxzKiguKylcXHMqKT9cXCkkLztcbiAgY29uc3QgbWF0Y2ggPSB2YWx1ZS5tYXRjaCh2YXJQYXR0ZXJuKTtcbiAgXG4gIGlmIChtYXRjaCkge1xuICAgIGNvbnN0IGZhbGxiYWNrID0gbWF0Y2hbMl0/LnRyaW0oKTtcbiAgICByZXR1cm4ge1xuICAgICAgaGFzVmFyOiB0cnVlLFxuICAgICAgdmFyTmFtZTogbWF0Y2hbMV0sXG4gICAgICBmYWxsYmFjazogZmFsbGJhY2sgJiYgZmFsbGJhY2subGVuZ3RoID4gMCA/IGZhbGxiYWNrIDogdW5kZWZpbmVkLFxuICAgICAgcmF3VmFsdWU6IHZhbHVlXG4gICAgfTtcbiAgfVxuICBcbiAgcmV0dXJuIHsgaGFzVmFyOiBmYWxzZSwgcmF3VmFsdWU6IHZhbHVlIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Nzc1ZhcmlhYmxlKHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHByb3BlcnR5LnN0YXJ0c1dpdGgoJy0tJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhckV4cHJlc3Npb24odmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gL3ZhclxccypcXChcXHMqLS1bYS16QS1aMC05Xy1dK1xccyooPzosW14pXSspP1xccypcXCkvLnRlc3QodmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR2xvYmFsU2NvcGUoKTogVmFyaWFibGVTY29wZSB7XG4gIHJldHVybiB7IHR5cGU6ICdnbG9iYWwnIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3RvclNjb3BlKHNlbGVjdG9yOiBzdHJpbmcsIHNlbGVjdG9yVHlwZTogJ2NsYXNzJyB8ICdlbGVtZW50JyB8ICdyb290JyA9ICdjbGFzcycpOiBWYXJpYWJsZVNjb3BlIHtcbiAgcmV0dXJuIHsgdHlwZTogJ3NlbGVjdG9yJywgc2VsZWN0b3IsIHNlbGVjdG9yVHlwZSB9O1xufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "css-to-tailwind-react",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "Convert traditional CSS (inline, internal, and external) into Tailwind CSS utility classes for React-based frameworks",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",