@cichol/sass-bridge 4.4.2 → 4.5.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.
@@ -0,0 +1,212 @@
1
+ 'use strict';
2
+
3
+ var _Symbol = require('core-js-pure/stable/symbol/index.js');
4
+ var _Promise = require('core-js-pure/stable/promise/index.js');
5
+ var _mapInstanceProperty = require('core-js-pure/stable/instance/map.js');
6
+ var _Reflect$construct = require('core-js-pure/stable/reflect/construct.js');
7
+ var _Object$fromEntries = require('core-js-pure/stable/object/from-entries.js');
8
+ require('reflect-metadata');
9
+ var _fillInstanceProperty = require('core-js-pure/stable/instance/fill.js');
10
+ var _Array$from = require('core-js-pure/stable/array/from.js');
11
+ var _entriesInstanceProperty = require('core-js-pure/stable/instance/entries.js');
12
+ var _Map = require('core-js-pure/stable/map/index.js');
13
+ var _everyInstanceProperty = require('core-js-pure/stable/instance/every.js');
14
+ var _Array$isArray = require('core-js-pure/stable/array/is-array.js');
15
+ var chroma = require('chroma-js');
16
+ var _filterInstanceProperty = require('core-js-pure/stable/instance/filter.js');
17
+ var _Object$keys = require('core-js-pure/stable/object/keys.js');
18
+ var _startsWithInstanceProperty = require('core-js-pure/stable/instance/starts-with.js');
19
+ var _Object$getPrototypeOf = require('core-js-pure/stable/object/get-prototype-of.js');
20
+ var sass = require('sass');
21
+
22
+ function _interopNamespaceDefault(e) {
23
+ var n = Object.create(null);
24
+ if (e) {
25
+ Object.keys(e).forEach(function (k) {
26
+ if (k !== 'default') {
27
+ var d = Object.getOwnPropertyDescriptor(e, k);
28
+ Object.defineProperty(n, k, d.get ? d : {
29
+ enumerable: true,
30
+ get: function () { return e[k]; }
31
+ });
32
+ }
33
+ });
34
+ }
35
+ n.default = e;
36
+ return Object.freeze(n);
37
+ }
38
+
39
+ var sass__namespace = /*#__PURE__*/_interopNamespaceDefault(sass);
40
+
41
+ var _context, _context2, _context3, _context4, _context5;
42
+
43
+ // Type definitions.
44
+
45
+ const SassTypes = _Object$fromEntries(_mapInstanceProperty(_context = _filterInstanceProperty(_context2 = _filterInstanceProperty(_context3 = _mapInstanceProperty(_context4 = _filterInstanceProperty(_context5 = _Object$keys(sass__namespace)).call(_context5, propertyKey => _startsWithInstanceProperty(propertyKey).call(propertyKey, 'Sass'))).call(_context4, propertyKey => sass__namespace[propertyKey])).call(_context3, constructor => typeof constructor === 'function')).call(_context2, constructor => Object.prototype.isPrototypeOf.call(sass.Value.prototype, constructor.prototype))).call(_context, constructor => [constructor.name, constructor]));
46
+ const SassTRUE = sass__namespace.sassTrue;
47
+ const SassFALSE = sass__namespace.sassFalse;
48
+ const SassNULL = sass__namespace.sassNull;
49
+ const {
50
+ SassNumber
51
+ } = SassTypes;
52
+ const {
53
+ SassString
54
+ } = SassTypes;
55
+ const {
56
+ SassColor
57
+ } = SassTypes;
58
+ const {
59
+ SassList
60
+ } = SassTypes;
61
+ const {
62
+ SassMap
63
+ } = SassTypes;
64
+ const SassBoolean = _Object$getPrototypeOf(SassTRUE).constructor;
65
+
66
+ // Helper functions.
67
+ function isObject(value) {
68
+ const type = typeof value;
69
+ return !!value && (type === 'object' || type === 'function');
70
+ }
71
+ function sassToJavaScriptType(sassValue) {
72
+ switch (true) {
73
+ case sassValue instanceof SassBoolean:
74
+ {
75
+ return sassValue.value;
76
+ }
77
+ case sassValue instanceof SassString:
78
+ {
79
+ return sassValue.text;
80
+ }
81
+ case sassValue instanceof SassNumber:
82
+ {
83
+ const {
84
+ value,
85
+ numeratorUnits,
86
+ denominatorUnits
87
+ } = sassValue;
88
+ const unit = sassValue.hasUnits ? numeratorUnits.join('*') + (denominatorUnits.size > 0 ? `/${denominatorUnits.join('*')}` : '') : '';
89
+ return unit ? {
90
+ value,
91
+ unit
92
+ } : value;
93
+ }
94
+ case sassValue instanceof SassColor:
95
+ {
96
+ const {
97
+ red,
98
+ green,
99
+ blue,
100
+ alpha
101
+ } = sassValue;
102
+ return chroma(red, green, blue, alpha);
103
+ }
104
+ case sassValue instanceof SassList:
105
+ {
106
+ var _context;
107
+ const listValue = sassValue.asList;
108
+ const length = listValue.size;
109
+ const array = _fillInstanceProperty(_context = Array(length)).call(_context, undefined);
110
+ for (let index = 0; index < length; index += 1) {
111
+ array[index] = listValue.get(index);
112
+ }
113
+ return _mapInstanceProperty(array).call(array, value => sassToJavaScriptType(value));
114
+ }
115
+ case sassValue instanceof SassMap:
116
+ {
117
+ var _context2;
118
+ const mapValue = sassValue.contents;
119
+ const entries = _mapInstanceProperty(_context2 = _Array$from(_entriesInstanceProperty(mapValue).call(mapValue))).call(_context2, ([key, value]) => [sassToJavaScriptType(key), sassToJavaScriptType(value)]);
120
+ return new _Map(entries);
121
+ }
122
+ default:
123
+ {
124
+ return null;
125
+ }
126
+ }
127
+ }
128
+ function javaScriptToSassType(rawValue) {
129
+ var _context3;
130
+ switch (true) {
131
+ case typeof rawValue === 'boolean':
132
+ {
133
+ const booleanValue = rawValue;
134
+ return booleanValue ? SassTRUE : SassFALSE;
135
+ }
136
+ case typeof rawValue === 'number':
137
+ {
138
+ const numberValue = rawValue;
139
+ return new SassNumber(numberValue);
140
+ }
141
+ case isObject(rawValue) && _everyInstanceProperty(_context3 = ['value', 'unit']).call(_context3, propertyKey => propertyKey in rawValue):
142
+ {
143
+ const {
144
+ value,
145
+ unit
146
+ } = rawValue;
147
+ return new SassNumber(value, unit);
148
+ }
149
+ case typeof rawValue === 'string':
150
+ {
151
+ const stringValue = rawValue;
152
+ return new SassString(stringValue);
153
+ }
154
+ case isObject(rawValue) && '_rgb' in rawValue:
155
+ {
156
+ const [red, green, blue, alpha] = rawValue.rgba();
157
+ return new SassColor({
158
+ red,
159
+ green,
160
+ blue,
161
+ alpha
162
+ });
163
+ }
164
+ case _Array$isArray(rawValue):
165
+ {
166
+ return new SassList(_mapInstanceProperty(rawValue).call(rawValue, value => javaScriptToSassType(value)));
167
+ }
168
+ case rawValue instanceof _Map:
169
+ {
170
+ var _context4;
171
+ const mapValue = rawValue;
172
+ const sassMap = new SassMap();
173
+ const converted = _mapInstanceProperty(_context4 = _Array$from(_entriesInstanceProperty(mapValue).call(mapValue))).call(_context4, entry => _mapInstanceProperty(entry).call(entry, javaScriptToSassType));
174
+ for (const [key, value] of converted) {
175
+ sassMap.contents.set(key, value);
176
+ }
177
+ return sassMap;
178
+ }
179
+ default:
180
+ {
181
+ return SassNULL;
182
+ }
183
+ }
184
+ }
185
+
186
+ // Type definitions.
187
+
188
+ // Constants.
189
+ const KeyOfSignature = _Symbol('@cichol/sass-bridge::KeyOfSignature');
190
+ function sassFunction(definition) {
191
+ return target => {
192
+ Reflect.defineMetadata(KeyOfSignature, definition, target);
193
+ return target;
194
+ };
195
+ }
196
+ async function getFunctions(...moduleImports) {
197
+ const modules = await _Promise.all(_mapInstanceProperty(moduleImports).call(moduleImports, module => _Promise.resolve(module).then(module => module.default)));
198
+ const entries = _mapInstanceProperty(modules).call(modules, module => {
199
+ const signature = Reflect.getMetadata(KeyOfSignature, module);
200
+ async function customFunction(rawArgs) {
201
+ const args = _mapInstanceProperty(rawArgs).call(rawArgs, sassToJavaScriptType);
202
+ const result = await _Reflect$construct(module, args).execute();
203
+ return javaScriptToSassType(result);
204
+ }
205
+ return [signature, customFunction];
206
+ });
207
+ return _Object$fromEntries(entries);
208
+ }
209
+
210
+ exports.getFunctions = getFunctions;
211
+ exports.sassFunction = sassFunction;
212
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwic291cmNlcyI6WyIuLi9zb3VyY2VzL3R5cGVzLnRzIiwiLi4vc291cmNlcy90eXBlLWNvbnZlcnRlci50cyIsIi4uL3NvdXJjZXMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcmQtcGFydHkgbW9kdWxlcy5cbmltcG9ydCB0eXBlIHsgQ29sb3IgfSBmcm9tICdjaHJvbWEtanMnO1xuaW1wb3J0ICogYXMgc2FzcyBmcm9tICdzYXNzJztcbmltcG9ydCB7IFZhbHVlIH0gZnJvbSAnc2Fzcyc7XG5cbi8vIFR5cGUgZGVmaW5pdGlvbnMuXG5leHBvcnQgdHlwZSBQcmltaXRpdmVzID0gYm9vbGVhbiB8IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG5cbmV4cG9ydCB0eXBlIE51bWJlcldpdGhVbml0ID0geyB2YWx1ZTogbnVtYmVyLCB1bml0OiBzdHJpbmcgfTtcblxuZXhwb3J0IHR5cGUgSmF2YVNjcmlwdFR5cGU8QmFzZSA9IFByaW1pdGl2ZXMgfCBDb2xvciB8IE51bWJlcldpdGhVbml0PiA9XG4gICAgfCBCYXNlXG4gICAgfCBKYXZhU2NyaXB0VHlwZTxCYXNlPltdXG4gICAgfCBNYXA8SmF2YVNjcmlwdFR5cGU8QmFzZT4sIEphdmFTY3JpcHRUeXBlPEJhc2U+PjtcblxudHlwZSBGaWx0ZXJTYXNzUHJlZml4PFQgZXh0ZW5kcyBzdHJpbmc+ID0gVCBleHRlbmRzIGBTYXNzJHtpbmZlciBSfWAgPyBSIDogbmV2ZXI7XG5cbnR5cGUgU2Fzc1R5cGVzID0gRXhjbHVkZTxgU2FzcyR7RmlsdGVyU2Fzc1ByZWZpeDxrZXlvZiB0eXBlb2Ygc2Fzcz59YCwgYFNhc3MkeydCb29sZWFuJyB8ICdDYWxjdWxhdGlvbid9YD47XG5cbmNvbnN0IFNhc3NUeXBlcyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3Qua2V5cyhzYXNzKVxuICAgICAgICAuZmlsdGVyKHByb3BlcnR5S2V5ID0+IHByb3BlcnR5S2V5LnN0YXJ0c1dpdGgoJ1Nhc3MnKSlcbiAgICAgICAgLm1hcChwcm9wZXJ0eUtleSA9PiBzYXNzW3Byb3BlcnR5S2V5IGFzIFNhc3NUeXBlc10pXG4gICAgICAgIC5maWx0ZXIoY29uc3RydWN0b3IgPT4gdHlwZW9mIGNvbnN0cnVjdG9yID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAuZmlsdGVyKGNvbnN0cnVjdG9yID0+IE9iamVjdC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZi5jYWxsKFZhbHVlLnByb3RvdHlwZSwgY29uc3RydWN0b3IucHJvdG90eXBlKSlcbiAgICAgICAgLm1hcChjb25zdHJ1Y3RvciA9PiBbIGNvbnN0cnVjdG9yLm5hbWUsIGNvbnN0cnVjdG9yIF0gYXMgW1Nhc3NUeXBlcywgKHR5cGVvZiBzYXNzKVtTYXNzVHlwZXNdXSlcbikgYXMgeyBbUCBpbiBTYXNzVHlwZXNdOiAodHlwZW9mIHNhc3MpW1BdIH07XG5cbmV4cG9ydCBjb25zdCBTYXNzVFJVRSA9IHNhc3Muc2Fzc1RydWU7XG5leHBvcnQgdHlwZSBTYXNzVFJVRSA9IHR5cGVvZiBTYXNzVFJVRTtcblxuZXhwb3J0IGNvbnN0IFNhc3NGQUxTRSA9IHNhc3Muc2Fzc0ZhbHNlO1xuZXhwb3J0IHR5cGUgU2Fzc0ZBTFNFID0gdHlwZW9mIFNhc3NGQUxTRTtcblxuZXhwb3J0IGNvbnN0IFNhc3NOVUxMID0gc2Fzcy5zYXNzTnVsbDtcbmV4cG9ydCB0eXBlIFNhc3NOVUxMID0gdHlwZW9mIFNhc3NOVUxMO1xuXG5leHBvcnQgY29uc3QgeyBTYXNzTnVtYmVyIH0gPSBTYXNzVHlwZXM7XG5leHBvcnQgdHlwZSBTYXNzTnVtYmVyID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzTnVtYmVyPjtcblxuZXhwb3J0IGNvbnN0IHsgU2Fzc1N0cmluZyB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc1N0cmluZyA9IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc1N0cmluZz47XG5cbmV4cG9ydCBjb25zdCB7IFNhc3NDb2xvciB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc0NvbG9yID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzQ29sb3I+O1xuXG5leHBvcnQgY29uc3QgeyBTYXNzTGlzdCB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc0xpc3QgPSBJbnN0YW5jZVR5cGU8dHlwZW9mIFNhc3NMaXN0PjtcblxuZXhwb3J0IGNvbnN0IHsgU2Fzc01hcCB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc01hcCA9IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc01hcD47XG5cbmV4cG9ydCBjb25zdCBTYXNzQm9vbGVhbiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihTYXNzVFJVRSkuY29uc3RydWN0b3IgYXMgdHlwZW9mIHNhc3MuU2Fzc0Jvb2xlYW47XG5leHBvcnQgdHlwZSBTYXNzQm9vbGVhbiA9IHNhc3MuU2Fzc0Jvb2xlYW47XG5cbmV4cG9ydCB0eXBlIFNhc3NUeXBlID1cbiAgICB8IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc1R5cGVzIGV4dGVuZHMgUmVjb3JkPGFueSwgaW5mZXIgUj4gPyBSIDogbmV2ZXI+XG4gICAgfCBTYXNzQm9vbGVhbjtcbiIsIi8vIFRoaXJkLXBhcnR5IG1vZHVsZXMuXG5pbXBvcnQgY2hyb21hIGZyb20gJ2Nocm9tYS1qcyc7XG5cbi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQge1xuICAgIHR5cGUgU2Fzc1R5cGUsXG4gICAgU2Fzc0Jvb2xlYW4sXG4gICAgU2Fzc051bWJlcixcbiAgICBTYXNzU3RyaW5nLFxuICAgIFNhc3NDb2xvcixcbiAgICBTYXNzTGlzdCxcbiAgICBTYXNzTWFwLFxuICAgIFNhc3NUUlVFLFxuICAgIFNhc3NGQUxTRSxcbiAgICBTYXNzTlVMTCxcbiAgICB0eXBlIEphdmFTY3JpcHRUeXBlLFxuICAgIHR5cGUgTnVtYmVyV2l0aFVuaXRcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbnMuXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZT86IHVua25vd24pOiB2YWx1ZSBpcyBvYmplY3Qge1xuICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWU7XG5cbiAgICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PT0gJ29iamVjdCcgfHwgdHlwZSA9PT0gJ2Z1bmN0aW9uJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXNzVG9KYXZhU2NyaXB0VHlwZShzYXNzVmFsdWU6IFNhc3NUeXBlKTogSmF2YVNjcmlwdFR5cGUge1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc0Jvb2xlYW46IHtcbiAgICAgICAgcmV0dXJuIHNhc3NWYWx1ZS52YWx1ZTtcbiAgICB9XG5cbiAgICBjYXNlIHNhc3NWYWx1ZSBpbnN0YW5jZW9mIFNhc3NTdHJpbmc6IHtcbiAgICAgICAgcmV0dXJuIHNhc3NWYWx1ZS50ZXh0O1xuICAgIH1cblxuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc051bWJlcjoge1xuICAgICAgICBjb25zdCB7IHZhbHVlLCBudW1lcmF0b3JVbml0cywgZGVub21pbmF0b3JVbml0cyB9ID0gc2Fzc1ZhbHVlO1xuXG4gICAgICAgIGNvbnN0IHVuaXQgPSBzYXNzVmFsdWUuaGFzVW5pdHNcbiAgICAgICAgICAgID8gbnVtZXJhdG9yVW5pdHMuam9pbignKicpICsgKGRlbm9taW5hdG9yVW5pdHMuc2l6ZSA+IDAgPyBgLyR7ZGVub21pbmF0b3JVbml0cy5qb2luKCcqJyl9YCA6ICcnKVxuICAgICAgICAgICAgOiAnJztcblxuICAgICAgICByZXR1cm4gdW5pdCA/IHsgdmFsdWUsIHVuaXQgfSA6IHZhbHVlO1xuICAgIH1cblxuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc0NvbG9yOiB7XG4gICAgICAgIGNvbnN0IHsgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEgfSA9IHNhc3NWYWx1ZTtcblxuICAgICAgICByZXR1cm4gY2hyb21hKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTtcbiAgICB9XG5cbiAgICBjYXNlIHNhc3NWYWx1ZSBpbnN0YW5jZW9mIFNhc3NMaXN0OiB7XG4gICAgICAgIGNvbnN0IGxpc3RWYWx1ZSA9IHNhc3NWYWx1ZS5hc0xpc3Q7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGxpc3RWYWx1ZS5zaXplO1xuICAgICAgICBjb25zdCBhcnJheSA9IEFycmF5KGxlbmd0aCkuZmlsbCh1bmRlZmluZWQpIGFzIFNhc3NUeXBlW107XG5cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgICAgYXJyYXlbaW5kZXhdID0gbGlzdFZhbHVlLmdldChpbmRleCkgYXMgU2Fzc1R5cGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXJyYXkubWFwKHZhbHVlID0+IHNhc3NUb0phdmFTY3JpcHRUeXBlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgY2FzZSBzYXNzVmFsdWUgaW5zdGFuY2VvZiBTYXNzTWFwOiB7XG4gICAgICAgIGNvbnN0IG1hcFZhbHVlID0gc2Fzc1ZhbHVlLmNvbnRlbnRzO1xuXG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBBcnJheS5mcm9tKG1hcFZhbHVlLmVudHJpZXMoKSBhcyBJdGVyYWJsZUl0ZXJhdG9yPFtTYXNzVHlwZSwgU2Fzc1R5cGVdPilcbiAgICAgICAgICAgIC5tYXAoKFsga2V5LCB2YWx1ZSBdKSA9PiBbIHNhc3NUb0phdmFTY3JpcHRUeXBlKGtleSksIHNhc3NUb0phdmFTY3JpcHRUeXBlKHZhbHVlKSBdKTtcblxuICAgICAgICByZXR1cm4gbmV3IE1hcChlbnRyaWVzIGFzIFtKYXZhU2NyaXB0VHlwZSwgSmF2YVNjcmlwdFR5cGVdW10pO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGphdmFTY3JpcHRUb1Nhc3NUeXBlKHJhd1ZhbHVlOiBKYXZhU2NyaXB0VHlwZSk6IFNhc3NUeXBlIHtcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICBjYXNlIHR5cGVvZiByYXdWYWx1ZSA9PT0gJ2Jvb2xlYW4nOiB7XG4gICAgICAgIGNvbnN0IGJvb2xlYW5WYWx1ZSA9IHJhd1ZhbHVlO1xuXG4gICAgICAgIHJldHVybiBib29sZWFuVmFsdWUgPyBTYXNzVFJVRSA6IFNhc3NGQUxTRTtcbiAgICB9XG5cbiAgICBjYXNlIHR5cGVvZiByYXdWYWx1ZSA9PT0gJ251bWJlcic6IHtcbiAgICAgICAgY29uc3QgbnVtYmVyVmFsdWUgPSByYXdWYWx1ZTtcblxuICAgICAgICByZXR1cm4gbmV3IFNhc3NOdW1iZXIobnVtYmVyVmFsdWUpO1xuICAgIH1cblxuICAgIGNhc2UgaXNPYmplY3QocmF3VmFsdWUpICYmIFsgJ3ZhbHVlJywgJ3VuaXQnIF0uZXZlcnkocHJvcGVydHlLZXkgPT4gcHJvcGVydHlLZXkgaW4gcmF3VmFsdWUpOiB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIHVuaXQgfSA9IHJhd1ZhbHVlIGFzIE51bWJlcldpdGhVbml0O1xuXG4gICAgICAgIHJldHVybiBuZXcgU2Fzc051bWJlcih2YWx1ZSwgdW5pdCk7XG4gICAgfVxuXG4gICAgY2FzZSB0eXBlb2YgcmF3VmFsdWUgPT09ICdzdHJpbmcnOiB7XG4gICAgICAgIGNvbnN0IHN0cmluZ1ZhbHVlID0gcmF3VmFsdWU7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBTYXNzU3RyaW5nKHN0cmluZ1ZhbHVlKTtcbiAgICB9XG5cbiAgICBjYXNlIGlzT2JqZWN0KHJhd1ZhbHVlKSAmJiAnX3JnYicgaW4gcmF3VmFsdWU6IHtcbiAgICAgICAgY29uc3QgWyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSBdID0gcmF3VmFsdWUucmdiYSgpIGFzIG51bWJlcltdO1xuXG4gICAgICAgIHJldHVybiBuZXcgU2Fzc0NvbG9yKHsgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEgfSk7XG4gICAgfVxuXG4gICAgY2FzZSBBcnJheS5pc0FycmF5KHJhd1ZhbHVlKToge1xuICAgICAgICByZXR1cm4gbmV3IFNhc3NMaXN0KHJhd1ZhbHVlLm1hcCh2YWx1ZSA9PiBqYXZhU2NyaXB0VG9TYXNzVHlwZSh2YWx1ZSkpKTtcbiAgICB9XG5cbiAgICBjYXNlIHJhd1ZhbHVlIGluc3RhbmNlb2YgTWFwOiB7XG4gICAgICAgIGNvbnN0IG1hcFZhbHVlID0gcmF3VmFsdWUgYXMgTWFwPEphdmFTY3JpcHRUeXBlLCBKYXZhU2NyaXB0VHlwZT47XG4gICAgICAgIGNvbnN0IHNhc3NNYXAgPSBuZXcgU2Fzc01hcCgpO1xuXG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZCA9IEFycmF5LmZyb20obWFwVmFsdWUuZW50cmllcygpKVxuICAgICAgICAgICAgLm1hcChlbnRyeSA9PiBlbnRyeS5tYXAoamF2YVNjcmlwdFRvU2Fzc1R5cGUpKSBhcyBbU2Fzc1R5cGUsIFNhc3NUeXBlXVtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgY29udmVydGVkKSB7XG4gICAgICAgICAgICBzYXNzTWFwLmNvbnRlbnRzLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzYXNzTWFwO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIFNhc3NOVUxMO1xuICAgIH1cbiAgICB9XG59XG4iLCJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuXG4vLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgQ3VzdG9tRnVuY3Rpb24gfSBmcm9tICdzYXNzJztcblxuLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCB0eXBlIHsgU2Fzc1R5cGUsIEphdmFTY3JpcHRUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBzYXNzVG9KYXZhU2NyaXB0VHlwZSwgamF2YVNjcmlwdFRvU2Fzc1R5cGUgfSBmcm9tICcuL3R5cGUtY29udmVydGVyJztcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbmV4cG9ydCBpbnRlcmZhY2UgQnJpZGdlZEZ1bmN0aW9uIHtcbiAgICBleGVjdXRlKCk6IEphdmFTY3JpcHRUeXBlIHwgUHJvbWlzZTxKYXZhU2NyaXB0VHlwZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0b3Ige1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiBCcmlkZ2VkRnVuY3Rpb247XG59XG5cbi8vIENvbnN0YW50cy5cbmNvbnN0IEtleU9mU2lnbmF0dXJlID0gU3ltYm9sKCdAY2ljaG9sL3Nhc3MtYnJpZGdlOjpLZXlPZlNpZ25hdHVyZScpO1xuXG5leHBvcnQgZnVuY3Rpb24gc2Fzc0Z1bmN0aW9uKGRlZmluaXRpb246IHN0cmluZyk6IENsYXNzRGVjb3JhdG9yIHtcbiAgICByZXR1cm4gKDxUIGV4dGVuZHMgQ29uc3RydWN0b3I+KHRhcmdldDogVCkgPT4ge1xuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKEtleU9mU2lnbmF0dXJlLCBkZWZpbml0aW9uLCB0YXJnZXQpO1xuXG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfSkgYXMgQ2xhc3NEZWNvcmF0b3I7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRGdW5jdGlvbnMoXG4gICAgLi4ubW9kdWxlSW1wb3J0czogUHJvbWlzZTx7IGRlZmF1bHQ6IENvbnN0cnVjdG9yIH0+W11cbik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgQ3VzdG9tRnVuY3Rpb248J2FzeW5jJz4+PiB7XG4gICAgY29uc3QgbW9kdWxlcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBtb2R1bGVJbXBvcnRzLm1hcChtb2R1bGUgPT4gKFxuICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKG1vZHVsZSlcbiAgICAgICAgICAgICAgICAudGhlbihtb2R1bGUgPT4gbW9kdWxlLmRlZmF1bHQpXG4gICAgICAgICkpXG4gICAgKTtcblxuICAgIGNvbnN0IGVudHJpZXMgPSBtb2R1bGVzLm1hcChtb2R1bGUgPT4ge1xuICAgICAgICBjb25zdCBzaWduYXR1cmUgPSBSZWZsZWN0LmdldE1ldGFkYXRhKEtleU9mU2lnbmF0dXJlLCBtb2R1bGUpIGFzIHN0cmluZztcblxuICAgICAgICBhc3luYyBmdW5jdGlvbiBjdXN0b21GdW5jdGlvbihyYXdBcmdzOiBTYXNzVHlwZVtdKTogUHJvbWlzZTxTYXNzVHlwZT4ge1xuICAgICAgICAgICAgY29uc3QgYXJncyA9IHJhd0FyZ3MubWFwKHNhc3NUb0phdmFTY3JpcHRUeXBlKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFJlZmxlY3QuY29uc3RydWN0KG1vZHVsZSwgYXJncykuZXhlY3V0ZSgpO1xuXG4gICAgICAgICAgICByZXR1cm4gamF2YVNjcmlwdFRvU2Fzc1R5cGUocmVzdWx0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbIHNpZ25hdHVyZSwgY3VzdG9tRnVuY3Rpb24gXSBhcyBjb25zdDtcbiAgICB9KTtcblxuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7XG59XG4iXSwibmFtZXMiOlsiU2Fzc1R5cGVzIiwiX09iamVjdCRmcm9tRW50cmllcyIsIl9tYXBJbnN0YW5jZVByb3BlcnR5IiwiX2NvbnRleHQiLCJfZmlsdGVySW5zdGFuY2VQcm9wZXJ0eSIsIl9jb250ZXh0MiIsIl9jb250ZXh0MyIsIl9jb250ZXh0NCIsIl9jb250ZXh0NSIsIl9PYmplY3Qka2V5cyIsInNhc3MiLCJjYWxsIiwicHJvcGVydHlLZXkiLCJfc3RhcnRzV2l0aEluc3RhbmNlUHJvcGVydHkiLCJjb25zdHJ1Y3RvciIsIk9iamVjdCIsInByb3RvdHlwZSIsImlzUHJvdG90eXBlT2YiLCJWYWx1ZSIsIm5hbWUiLCJTYXNzVFJVRSIsInNhc3NUcnVlIiwiU2Fzc0ZBTFNFIiwic2Fzc0ZhbHNlIiwiU2Fzc05VTEwiLCJzYXNzTnVsbCIsIlNhc3NOdW1iZXIiLCJTYXNzU3RyaW5nIiwiU2Fzc0NvbG9yIiwiU2Fzc0xpc3QiLCJTYXNzTWFwIiwiU2Fzc0Jvb2xlYW4iLCJfT2JqZWN0JGdldFByb3RvdHlwZU9mIiwiaXNPYmplY3QiLCJ2YWx1ZSIsInR5cGUiLCJzYXNzVG9KYXZhU2NyaXB0VHlwZSIsInNhc3NWYWx1ZSIsInRleHQiLCJudW1lcmF0b3JVbml0cyIsImRlbm9taW5hdG9yVW5pdHMiLCJ1bml0IiwiaGFzVW5pdHMiLCJqb2luIiwic2l6ZSIsInJlZCIsImdyZWVuIiwiYmx1ZSIsImFscGhhIiwiY2hyb21hIiwibGlzdFZhbHVlIiwiYXNMaXN0IiwibGVuZ3RoIiwiYXJyYXkiLCJfZmlsbEluc3RhbmNlUHJvcGVydHkiLCJBcnJheSIsInVuZGVmaW5lZCIsImluZGV4IiwiZ2V0IiwibWFwVmFsdWUiLCJjb250ZW50cyIsImVudHJpZXMiLCJfQXJyYXkkZnJvbSIsIl9lbnRyaWVzSW5zdGFuY2VQcm9wZXJ0eSIsImtleSIsIl9NYXAiLCJqYXZhU2NyaXB0VG9TYXNzVHlwZSIsInJhd1ZhbHVlIiwiYm9vbGVhblZhbHVlIiwibnVtYmVyVmFsdWUiLCJfZXZlcnlJbnN0YW5jZVByb3BlcnR5Iiwic3RyaW5nVmFsdWUiLCJyZ2JhIiwiX0FycmF5JGlzQXJyYXkiLCJzYXNzTWFwIiwiY29udmVydGVkIiwiZW50cnkiLCJzZXQiLCJLZXlPZlNpZ25hdHVyZSIsIl9TeW1ib2wiLCJzYXNzRnVuY3Rpb24iLCJkZWZpbml0aW9uIiwidGFyZ2V0IiwiUmVmbGVjdCIsImRlZmluZU1ldGFkYXRhIiwiZ2V0RnVuY3Rpb25zIiwibW9kdWxlSW1wb3J0cyIsIm1vZHVsZXMiLCJfUHJvbWlzZSIsImFsbCIsIm1vZHVsZSIsInJlc29sdmUiLCJ0aGVuIiwiZGVmYXVsdCIsInNpZ25hdHVyZSIsImdldE1ldGFkYXRhIiwiY3VzdG9tRnVuY3Rpb24iLCJyYXdBcmdzIiwiYXJncyIsInJlc3VsdCIsIl9SZWZsZWN0JGNvbnN0cnVjdCIsImV4ZWN1dGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUtBOztBQWNB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
@@ -0,0 +1,13 @@
1
+ import 'reflect-metadata';
2
+ import { CustomFunction } from 'sass';
3
+ import type { JavaScriptType } from './types';
4
+ export interface BridgedFunction {
5
+ execute(): JavaScriptType | Promise<JavaScriptType>;
6
+ }
7
+ export interface Constructor {
8
+ new (...args: any[]): BridgedFunction;
9
+ }
10
+ export declare function sassFunction(definition: string): ClassDecorator;
11
+ export declare function getFunctions(...moduleImports: Promise<{
12
+ default: Constructor;
13
+ }>[]): Promise<Record<string, CustomFunction<'async'>>>;
@@ -5,7 +5,7 @@ export interface BridgedFunction {
5
5
  execute(): JavaScriptType | Promise<JavaScriptType>;
6
6
  }
7
7
  export interface Constructor {
8
- new (...args: JavaScriptType[]): BridgedFunction;
8
+ new (...args: any[]): BridgedFunction;
9
9
  }
10
10
  export declare function sassFunction(definition: string): ClassDecorator;
11
11
  export declare function getFunctions(...moduleImports: Promise<{
package/dists/index.js ADDED
@@ -0,0 +1,191 @@
1
+ import _Symbol from 'core-js-pure/stable/symbol/index.js';
2
+ import _Promise from 'core-js-pure/stable/promise/index.js';
3
+ import _mapInstanceProperty from 'core-js-pure/stable/instance/map.js';
4
+ import _Reflect$construct from 'core-js-pure/stable/reflect/construct.js';
5
+ import _Object$fromEntries from 'core-js-pure/stable/object/from-entries.js';
6
+ import 'reflect-metadata';
7
+ import _fillInstanceProperty from 'core-js-pure/stable/instance/fill.js';
8
+ import _Array$from from 'core-js-pure/stable/array/from.js';
9
+ import _entriesInstanceProperty from 'core-js-pure/stable/instance/entries.js';
10
+ import _Map from 'core-js-pure/stable/map/index.js';
11
+ import _everyInstanceProperty from 'core-js-pure/stable/instance/every.js';
12
+ import _Array$isArray from 'core-js-pure/stable/array/is-array.js';
13
+ import chroma from 'chroma-js';
14
+ import _filterInstanceProperty from 'core-js-pure/stable/instance/filter.js';
15
+ import _Object$keys from 'core-js-pure/stable/object/keys.js';
16
+ import _startsWithInstanceProperty from 'core-js-pure/stable/instance/starts-with.js';
17
+ import _Object$getPrototypeOf from 'core-js-pure/stable/object/get-prototype-of.js';
18
+ import * as sass from 'sass';
19
+ import { Value } from 'sass';
20
+
21
+ var _context, _context2, _context3, _context4, _context5;
22
+
23
+ // Type definitions.
24
+
25
+ const SassTypes = _Object$fromEntries(_mapInstanceProperty(_context = _filterInstanceProperty(_context2 = _filterInstanceProperty(_context3 = _mapInstanceProperty(_context4 = _filterInstanceProperty(_context5 = _Object$keys(sass)).call(_context5, propertyKey => _startsWithInstanceProperty(propertyKey).call(propertyKey, 'Sass'))).call(_context4, propertyKey => sass[propertyKey])).call(_context3, constructor => typeof constructor === 'function')).call(_context2, constructor => Object.prototype.isPrototypeOf.call(Value.prototype, constructor.prototype))).call(_context, constructor => [constructor.name, constructor]));
26
+ const SassTRUE = sass.sassTrue;
27
+ const SassFALSE = sass.sassFalse;
28
+ const SassNULL = sass.sassNull;
29
+ const {
30
+ SassNumber
31
+ } = SassTypes;
32
+ const {
33
+ SassString
34
+ } = SassTypes;
35
+ const {
36
+ SassColor
37
+ } = SassTypes;
38
+ const {
39
+ SassList
40
+ } = SassTypes;
41
+ const {
42
+ SassMap
43
+ } = SassTypes;
44
+ const SassBoolean = _Object$getPrototypeOf(SassTRUE).constructor;
45
+
46
+ // Helper functions.
47
+ function isObject(value) {
48
+ const type = typeof value;
49
+ return !!value && (type === 'object' || type === 'function');
50
+ }
51
+ function sassToJavaScriptType(sassValue) {
52
+ switch (true) {
53
+ case sassValue instanceof SassBoolean:
54
+ {
55
+ return sassValue.value;
56
+ }
57
+ case sassValue instanceof SassString:
58
+ {
59
+ return sassValue.text;
60
+ }
61
+ case sassValue instanceof SassNumber:
62
+ {
63
+ const {
64
+ value,
65
+ numeratorUnits,
66
+ denominatorUnits
67
+ } = sassValue;
68
+ const unit = sassValue.hasUnits ? numeratorUnits.join('*') + (denominatorUnits.size > 0 ? `/${denominatorUnits.join('*')}` : '') : '';
69
+ return unit ? {
70
+ value,
71
+ unit
72
+ } : value;
73
+ }
74
+ case sassValue instanceof SassColor:
75
+ {
76
+ const {
77
+ red,
78
+ green,
79
+ blue,
80
+ alpha
81
+ } = sassValue;
82
+ return chroma(red, green, blue, alpha);
83
+ }
84
+ case sassValue instanceof SassList:
85
+ {
86
+ var _context;
87
+ const listValue = sassValue.asList;
88
+ const length = listValue.size;
89
+ const array = _fillInstanceProperty(_context = Array(length)).call(_context, undefined);
90
+ for (let index = 0; index < length; index += 1) {
91
+ array[index] = listValue.get(index);
92
+ }
93
+ return _mapInstanceProperty(array).call(array, value => sassToJavaScriptType(value));
94
+ }
95
+ case sassValue instanceof SassMap:
96
+ {
97
+ var _context2;
98
+ const mapValue = sassValue.contents;
99
+ const entries = _mapInstanceProperty(_context2 = _Array$from(_entriesInstanceProperty(mapValue).call(mapValue))).call(_context2, ([key, value]) => [sassToJavaScriptType(key), sassToJavaScriptType(value)]);
100
+ return new _Map(entries);
101
+ }
102
+ default:
103
+ {
104
+ return null;
105
+ }
106
+ }
107
+ }
108
+ function javaScriptToSassType(rawValue) {
109
+ var _context3;
110
+ switch (true) {
111
+ case typeof rawValue === 'boolean':
112
+ {
113
+ const booleanValue = rawValue;
114
+ return booleanValue ? SassTRUE : SassFALSE;
115
+ }
116
+ case typeof rawValue === 'number':
117
+ {
118
+ const numberValue = rawValue;
119
+ return new SassNumber(numberValue);
120
+ }
121
+ case isObject(rawValue) && _everyInstanceProperty(_context3 = ['value', 'unit']).call(_context3, propertyKey => propertyKey in rawValue):
122
+ {
123
+ const {
124
+ value,
125
+ unit
126
+ } = rawValue;
127
+ return new SassNumber(value, unit);
128
+ }
129
+ case typeof rawValue === 'string':
130
+ {
131
+ const stringValue = rawValue;
132
+ return new SassString(stringValue);
133
+ }
134
+ case isObject(rawValue) && '_rgb' in rawValue:
135
+ {
136
+ const [red, green, blue, alpha] = rawValue.rgba();
137
+ return new SassColor({
138
+ red,
139
+ green,
140
+ blue,
141
+ alpha
142
+ });
143
+ }
144
+ case _Array$isArray(rawValue):
145
+ {
146
+ return new SassList(_mapInstanceProperty(rawValue).call(rawValue, value => javaScriptToSassType(value)));
147
+ }
148
+ case rawValue instanceof _Map:
149
+ {
150
+ var _context4;
151
+ const mapValue = rawValue;
152
+ const sassMap = new SassMap();
153
+ const converted = _mapInstanceProperty(_context4 = _Array$from(_entriesInstanceProperty(mapValue).call(mapValue))).call(_context4, entry => _mapInstanceProperty(entry).call(entry, javaScriptToSassType));
154
+ for (const [key, value] of converted) {
155
+ sassMap.contents.set(key, value);
156
+ }
157
+ return sassMap;
158
+ }
159
+ default:
160
+ {
161
+ return SassNULL;
162
+ }
163
+ }
164
+ }
165
+
166
+ // Type definitions.
167
+
168
+ // Constants.
169
+ const KeyOfSignature = _Symbol('@cichol/sass-bridge::KeyOfSignature');
170
+ function sassFunction(definition) {
171
+ return target => {
172
+ Reflect.defineMetadata(KeyOfSignature, definition, target);
173
+ return target;
174
+ };
175
+ }
176
+ async function getFunctions(...moduleImports) {
177
+ const modules = await _Promise.all(_mapInstanceProperty(moduleImports).call(moduleImports, module => _Promise.resolve(module).then(module => module.default)));
178
+ const entries = _mapInstanceProperty(modules).call(modules, module => {
179
+ const signature = Reflect.getMetadata(KeyOfSignature, module);
180
+ async function customFunction(rawArgs) {
181
+ const args = _mapInstanceProperty(rawArgs).call(rawArgs, sassToJavaScriptType);
182
+ const result = await _Reflect$construct(module, args).execute();
183
+ return javaScriptToSassType(result);
184
+ }
185
+ return [signature, customFunction];
186
+ });
187
+ return _Object$fromEntries(entries);
188
+ }
189
+
190
+ export { getFunctions, sassFunction };
191
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZXMvdHlwZXMudHMiLCIuLi9zb3VyY2VzL3R5cGUtY29udmVydGVyLnRzIiwiLi4vc291cmNlcy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHR5cGUgeyBDb2xvciB9IGZyb20gJ2Nocm9tYS1qcyc7XG5pbXBvcnQgKiBhcyBzYXNzIGZyb20gJ3Nhc3MnO1xuaW1wb3J0IHsgVmFsdWUgfSBmcm9tICdzYXNzJztcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbmV4cG9ydCB0eXBlIFByaW1pdGl2ZXMgPSBib29sZWFuIHwgbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcblxuZXhwb3J0IHR5cGUgTnVtYmVyV2l0aFVuaXQgPSB7IHZhbHVlOiBudW1iZXIsIHVuaXQ6IHN0cmluZyB9O1xuXG5leHBvcnQgdHlwZSBKYXZhU2NyaXB0VHlwZTxCYXNlID0gUHJpbWl0aXZlcyB8IENvbG9yIHwgTnVtYmVyV2l0aFVuaXQ+ID1cbiAgICB8IEJhc2VcbiAgICB8IEphdmFTY3JpcHRUeXBlPEJhc2U+W11cbiAgICB8IE1hcDxKYXZhU2NyaXB0VHlwZTxCYXNlPiwgSmF2YVNjcmlwdFR5cGU8QmFzZT4+O1xuXG50eXBlIEZpbHRlclNhc3NQcmVmaXg8VCBleHRlbmRzIHN0cmluZz4gPSBUIGV4dGVuZHMgYFNhc3Mke2luZmVyIFJ9YCA/IFIgOiBuZXZlcjtcblxudHlwZSBTYXNzVHlwZXMgPSBFeGNsdWRlPGBTYXNzJHtGaWx0ZXJTYXNzUHJlZml4PGtleW9mIHR5cGVvZiBzYXNzPn1gLCBgU2FzcyR7J0Jvb2xlYW4nIHwgJ0NhbGN1bGF0aW9uJ31gPjtcblxuY29uc3QgU2Fzc1R5cGVzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5rZXlzKHNhc3MpXG4gICAgICAgIC5maWx0ZXIocHJvcGVydHlLZXkgPT4gcHJvcGVydHlLZXkuc3RhcnRzV2l0aCgnU2FzcycpKVxuICAgICAgICAubWFwKHByb3BlcnR5S2V5ID0+IHNhc3NbcHJvcGVydHlLZXkgYXMgU2Fzc1R5cGVzXSlcbiAgICAgICAgLmZpbHRlcihjb25zdHJ1Y3RvciA9PiB0eXBlb2YgY29uc3RydWN0b3IgPT09ICdmdW5jdGlvbicpXG4gICAgICAgIC5maWx0ZXIoY29uc3RydWN0b3IgPT4gT2JqZWN0LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mLmNhbGwoVmFsdWUucHJvdG90eXBlLCBjb25zdHJ1Y3Rvci5wcm90b3R5cGUpKVxuICAgICAgICAubWFwKGNvbnN0cnVjdG9yID0+IFsgY29uc3RydWN0b3IubmFtZSwgY29uc3RydWN0b3IgXSBhcyBbU2Fzc1R5cGVzLCAodHlwZW9mIHNhc3MpW1Nhc3NUeXBlc11dKVxuKSBhcyB7IFtQIGluIFNhc3NUeXBlc106ICh0eXBlb2Ygc2FzcylbUF0gfTtcblxuZXhwb3J0IGNvbnN0IFNhc3NUUlVFID0gc2Fzcy5zYXNzVHJ1ZTtcbmV4cG9ydCB0eXBlIFNhc3NUUlVFID0gdHlwZW9mIFNhc3NUUlVFO1xuXG5leHBvcnQgY29uc3QgU2Fzc0ZBTFNFID0gc2Fzcy5zYXNzRmFsc2U7XG5leHBvcnQgdHlwZSBTYXNzRkFMU0UgPSB0eXBlb2YgU2Fzc0ZBTFNFO1xuXG5leHBvcnQgY29uc3QgU2Fzc05VTEwgPSBzYXNzLnNhc3NOdWxsO1xuZXhwb3J0IHR5cGUgU2Fzc05VTEwgPSB0eXBlb2YgU2Fzc05VTEw7XG5cbmV4cG9ydCBjb25zdCB7IFNhc3NOdW1iZXIgfSA9IFNhc3NUeXBlcztcbmV4cG9ydCB0eXBlIFNhc3NOdW1iZXIgPSBJbnN0YW5jZVR5cGU8dHlwZW9mIFNhc3NOdW1iZXI+O1xuXG5leHBvcnQgY29uc3QgeyBTYXNzU3RyaW5nIH0gPSBTYXNzVHlwZXM7XG5leHBvcnQgdHlwZSBTYXNzU3RyaW5nID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzU3RyaW5nPjtcblxuZXhwb3J0IGNvbnN0IHsgU2Fzc0NvbG9yIH0gPSBTYXNzVHlwZXM7XG5leHBvcnQgdHlwZSBTYXNzQ29sb3IgPSBJbnN0YW5jZVR5cGU8dHlwZW9mIFNhc3NDb2xvcj47XG5cbmV4cG9ydCBjb25zdCB7IFNhc3NMaXN0IH0gPSBTYXNzVHlwZXM7XG5leHBvcnQgdHlwZSBTYXNzTGlzdCA9IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc0xpc3Q+O1xuXG5leHBvcnQgY29uc3QgeyBTYXNzTWFwIH0gPSBTYXNzVHlwZXM7XG5leHBvcnQgdHlwZSBTYXNzTWFwID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzTWFwPjtcblxuZXhwb3J0IGNvbnN0IFNhc3NCb29sZWFuID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKFNhc3NUUlVFKS5jb25zdHJ1Y3RvciBhcyB0eXBlb2Ygc2Fzcy5TYXNzQm9vbGVhbjtcbmV4cG9ydCB0eXBlIFNhc3NCb29sZWFuID0gc2Fzcy5TYXNzQm9vbGVhbjtcblxuZXhwb3J0IHR5cGUgU2Fzc1R5cGUgPVxuICAgIHwgSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzVHlwZXMgZXh0ZW5kcyBSZWNvcmQ8YW55LCBpbmZlciBSPiA/IFIgOiBuZXZlcj5cbiAgICB8IFNhc3NCb29sZWFuO1xuIiwiLy8gVGhpcmQtcGFydHkgbW9kdWxlcy5cbmltcG9ydCBjaHJvbWEgZnJvbSAnY2hyb21hLWpzJztcblxuLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCB7XG4gICAgdHlwZSBTYXNzVHlwZSxcbiAgICBTYXNzQm9vbGVhbixcbiAgICBTYXNzTnVtYmVyLFxuICAgIFNhc3NTdHJpbmcsXG4gICAgU2Fzc0NvbG9yLFxuICAgIFNhc3NMaXN0LFxuICAgIFNhc3NNYXAsXG4gICAgU2Fzc1RSVUUsXG4gICAgU2Fzc0ZBTFNFLFxuICAgIFNhc3NOVUxMLFxuICAgIHR5cGUgSmF2YVNjcmlwdFR5cGUsXG4gICAgdHlwZSBOdW1iZXJXaXRoVW5pdFxufSBmcm9tICcuL3R5cGVzJztcblxuLy8gSGVscGVyIGZ1bmN0aW9ucy5cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlPzogdW5rbm93bik6IHZhbHVlIGlzIG9iamVjdCB7XG4gICAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcblxuICAgIHJldHVybiAhIXZhbHVlICYmICh0eXBlID09PSAnb2JqZWN0JyB8fCB0eXBlID09PSAnZnVuY3Rpb24nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhc3NUb0phdmFTY3JpcHRUeXBlKHNhc3NWYWx1ZTogU2Fzc1R5cGUpOiBKYXZhU2NyaXB0VHlwZSB7XG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgY2FzZSBzYXNzVmFsdWUgaW5zdGFuY2VvZiBTYXNzQm9vbGVhbjoge1xuICAgICAgICByZXR1cm4gc2Fzc1ZhbHVlLnZhbHVlO1xuICAgIH1cblxuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc1N0cmluZzoge1xuICAgICAgICByZXR1cm4gc2Fzc1ZhbHVlLnRleHQ7XG4gICAgfVxuXG4gICAgY2FzZSBzYXNzVmFsdWUgaW5zdGFuY2VvZiBTYXNzTnVtYmVyOiB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIG51bWVyYXRvclVuaXRzLCBkZW5vbWluYXRvclVuaXRzIH0gPSBzYXNzVmFsdWU7XG5cbiAgICAgICAgY29uc3QgdW5pdCA9IHNhc3NWYWx1ZS5oYXNVbml0c1xuICAgICAgICAgICAgPyBudW1lcmF0b3JVbml0cy5qb2luKCcqJykgKyAoZGVub21pbmF0b3JVbml0cy5zaXplID4gMCA/IGAvJHtkZW5vbWluYXRvclVuaXRzLmpvaW4oJyonKX1gIDogJycpXG4gICAgICAgICAgICA6ICcnO1xuXG4gICAgICAgIHJldHVybiB1bml0ID8geyB2YWx1ZSwgdW5pdCB9IDogdmFsdWU7XG4gICAgfVxuXG4gICAgY2FzZSBzYXNzVmFsdWUgaW5zdGFuY2VvZiBTYXNzQ29sb3I6IHtcbiAgICAgICAgY29uc3QgeyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSB9ID0gc2Fzc1ZhbHVlO1xuXG4gICAgICAgIHJldHVybiBjaHJvbWEocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpO1xuICAgIH1cblxuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc0xpc3Q6IHtcbiAgICAgICAgY29uc3QgbGlzdFZhbHVlID0gc2Fzc1ZhbHVlLmFzTGlzdDtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gbGlzdFZhbHVlLnNpemU7XG4gICAgICAgIGNvbnN0IGFycmF5ID0gQXJyYXkobGVuZ3RoKS5maWxsKHVuZGVmaW5lZCkgYXMgU2Fzc1R5cGVbXTtcblxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgICAgICAgICBhcnJheVtpbmRleF0gPSBsaXN0VmFsdWUuZ2V0KGluZGV4KSBhcyBTYXNzVHlwZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhcnJheS5tYXAodmFsdWUgPT4gc2Fzc1RvSmF2YVNjcmlwdFR5cGUodmFsdWUpKTtcbiAgICB9XG5cbiAgICBjYXNlIHNhc3NWYWx1ZSBpbnN0YW5jZW9mIFNhc3NNYXA6IHtcbiAgICAgICAgY29uc3QgbWFwVmFsdWUgPSBzYXNzVmFsdWUuY29udGVudHM7XG5cbiAgICAgICAgY29uc3QgZW50cmllcyA9IEFycmF5LmZyb20obWFwVmFsdWUuZW50cmllcygpIGFzIEl0ZXJhYmxlSXRlcmF0b3I8W1Nhc3NUeXBlLCBTYXNzVHlwZV0+KVxuICAgICAgICAgICAgLm1hcCgoWyBrZXksIHZhbHVlIF0pID0+IFsgc2Fzc1RvSmF2YVNjcmlwdFR5cGUoa2V5KSwgc2Fzc1RvSmF2YVNjcmlwdFR5cGUodmFsdWUpIF0pO1xuXG4gICAgICAgIHJldHVybiBuZXcgTWFwKGVudHJpZXMgYXMgW0phdmFTY3JpcHRUeXBlLCBKYXZhU2NyaXB0VHlwZV1bXSk7XG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gamF2YVNjcmlwdFRvU2Fzc1R5cGUocmF3VmFsdWU6IEphdmFTY3JpcHRUeXBlKTogU2Fzc1R5cGUge1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgIGNhc2UgdHlwZW9mIHJhd1ZhbHVlID09PSAnYm9vbGVhbic6IHtcbiAgICAgICAgY29uc3QgYm9vbGVhblZhbHVlID0gcmF3VmFsdWU7XG5cbiAgICAgICAgcmV0dXJuIGJvb2xlYW5WYWx1ZSA/IFNhc3NUUlVFIDogU2Fzc0ZBTFNFO1xuICAgIH1cblxuICAgIGNhc2UgdHlwZW9mIHJhd1ZhbHVlID09PSAnbnVtYmVyJzoge1xuICAgICAgICBjb25zdCBudW1iZXJWYWx1ZSA9IHJhd1ZhbHVlO1xuXG4gICAgICAgIHJldHVybiBuZXcgU2Fzc051bWJlcihudW1iZXJWYWx1ZSk7XG4gICAgfVxuXG4gICAgY2FzZSBpc09iamVjdChyYXdWYWx1ZSkgJiYgWyAndmFsdWUnLCAndW5pdCcgXS5ldmVyeShwcm9wZXJ0eUtleSA9PiBwcm9wZXJ0eUtleSBpbiByYXdWYWx1ZSk6IHtcbiAgICAgICAgY29uc3QgeyB2YWx1ZSwgdW5pdCB9ID0gcmF3VmFsdWUgYXMgTnVtYmVyV2l0aFVuaXQ7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBTYXNzTnVtYmVyKHZhbHVlLCB1bml0KTtcbiAgICB9XG5cbiAgICBjYXNlIHR5cGVvZiByYXdWYWx1ZSA9PT0gJ3N0cmluZyc6IHtcbiAgICAgICAgY29uc3Qgc3RyaW5nVmFsdWUgPSByYXdWYWx1ZTtcblxuICAgICAgICByZXR1cm4gbmV3IFNhc3NTdHJpbmcoc3RyaW5nVmFsdWUpO1xuICAgIH1cblxuICAgIGNhc2UgaXNPYmplY3QocmF3VmFsdWUpICYmICdfcmdiJyBpbiByYXdWYWx1ZToge1xuICAgICAgICBjb25zdCBbIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhIF0gPSByYXdWYWx1ZS5yZ2JhKCkgYXMgbnVtYmVyW107XG5cbiAgICAgICAgcmV0dXJuIG5ldyBTYXNzQ29sb3IoeyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSB9KTtcbiAgICB9XG5cbiAgICBjYXNlIEFycmF5LmlzQXJyYXkocmF3VmFsdWUpOiB7XG4gICAgICAgIHJldHVybiBuZXcgU2Fzc0xpc3QocmF3VmFsdWUubWFwKHZhbHVlID0+IGphdmFTY3JpcHRUb1Nhc3NUeXBlKHZhbHVlKSkpO1xuICAgIH1cblxuICAgIGNhc2UgcmF3VmFsdWUgaW5zdGFuY2VvZiBNYXA6IHtcbiAgICAgICAgY29uc3QgbWFwVmFsdWUgPSByYXdWYWx1ZSBhcyBNYXA8SmF2YVNjcmlwdFR5cGUsIEphdmFTY3JpcHRUeXBlPjtcbiAgICAgICAgY29uc3Qgc2Fzc01hcCA9IG5ldyBTYXNzTWFwKCk7XG5cbiAgICAgICAgY29uc3QgY29udmVydGVkID0gQXJyYXkuZnJvbShtYXBWYWx1ZS5lbnRyaWVzKCkpXG4gICAgICAgICAgICAubWFwKGVudHJ5ID0+IGVudHJ5Lm1hcChqYXZhU2NyaXB0VG9TYXNzVHlwZSkpIGFzIFtTYXNzVHlwZSwgU2Fzc1R5cGVdW107XG5cbiAgICAgICAgZm9yIChjb25zdCBbIGtleSwgdmFsdWUgXSBvZiBjb252ZXJ0ZWQpIHtcbiAgICAgICAgICAgIHNhc3NNYXAuY29udGVudHMuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNhc3NNYXA7XG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gU2Fzc05VTEw7XG4gICAgfVxuICAgIH1cbn1cbiIsImltcG9ydCAncmVmbGVjdC1tZXRhZGF0YSc7XG5cbi8vIFRoaXJkLXBhcnR5IG1vZHVsZXMuXG5pbXBvcnQgeyBDdXN0b21GdW5jdGlvbiB9IGZyb20gJ3Nhc3MnO1xuXG4vLyBMb2NhbCBoZWxwZXJzLlxuaW1wb3J0IHR5cGUgeyBTYXNzVHlwZSwgSmF2YVNjcmlwdFR5cGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHNhc3NUb0phdmFTY3JpcHRUeXBlLCBqYXZhU2NyaXB0VG9TYXNzVHlwZSB9IGZyb20gJy4vdHlwZS1jb252ZXJ0ZXInO1xuXG4vLyBUeXBlIGRlZmluaXRpb25zLlxuZXhwb3J0IGludGVyZmFjZSBCcmlkZ2VkRnVuY3Rpb24ge1xuICAgIGV4ZWN1dGUoKTogSmF2YVNjcmlwdFR5cGUgfCBQcm9taXNlPEphdmFTY3JpcHRUeXBlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25zdHJ1Y3RvciB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IEJyaWRnZWRGdW5jdGlvbjtcbn1cblxuLy8gQ29uc3RhbnRzLlxuY29uc3QgS2V5T2ZTaWduYXR1cmUgPSBTeW1ib2woJ0BjaWNob2wvc2Fzcy1icmlkZ2U6OktleU9mU2lnbmF0dXJlJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXNzRnVuY3Rpb24oZGVmaW5pdGlvbjogc3RyaW5nKTogQ2xhc3NEZWNvcmF0b3Ige1xuICAgIHJldHVybiAoPFQgZXh0ZW5kcyBDb25zdHJ1Y3Rvcj4odGFyZ2V0OiBUKSA9PiB7XG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoS2V5T2ZTaWduYXR1cmUsIGRlZmluaXRpb24sIHRhcmdldCk7XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9KSBhcyBDbGFzc0RlY29yYXRvcjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEZ1bmN0aW9ucyhcbiAgICAuLi5tb2R1bGVJbXBvcnRzOiBQcm9taXNlPHsgZGVmYXVsdDogQ29uc3RydWN0b3IgfT5bXVxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBDdXN0b21GdW5jdGlvbjwnYXN5bmMnPj4+IHtcbiAgICBjb25zdCBtb2R1bGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG1vZHVsZUltcG9ydHMubWFwKG1vZHVsZSA9PiAoXG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUobW9kdWxlKVxuICAgICAgICAgICAgICAgIC50aGVuKG1vZHVsZSA9PiBtb2R1bGUuZGVmYXVsdClcbiAgICAgICAgKSlcbiAgICApO1xuXG4gICAgY29uc3QgZW50cmllcyA9IG1vZHVsZXMubWFwKG1vZHVsZSA9PiB7XG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoS2V5T2ZTaWduYXR1cmUsIG1vZHVsZSkgYXMgc3RyaW5nO1xuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGN1c3RvbUZ1bmN0aW9uKHJhd0FyZ3M6IFNhc3NUeXBlW10pOiBQcm9taXNlPFNhc3NUeXBlPiB7XG4gICAgICAgICAgICBjb25zdCBhcmdzID0gcmF3QXJncy5tYXAoc2Fzc1RvSmF2YVNjcmlwdFR5cGUpO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUmVmbGVjdC5jb25zdHJ1Y3QobW9kdWxlLCBhcmdzKS5leGVjdXRlKCk7XG5cbiAgICAgICAgICAgIHJldHVybiBqYXZhU2NyaXB0VG9TYXNzVHlwZShyZXN1bHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFsgc2lnbmF0dXJlLCBjdXN0b21GdW5jdGlvbiBdIGFzIGNvbnN0O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhlbnRyaWVzKTtcbn1cbiJdLCJuYW1lcyI6WyJTYXNzVHlwZXMiLCJfT2JqZWN0JGZyb21FbnRyaWVzIiwiX21hcEluc3RhbmNlUHJvcGVydHkiLCJfY29udGV4dCIsIl9maWx0ZXJJbnN0YW5jZVByb3BlcnR5IiwiX2NvbnRleHQyIiwiX2NvbnRleHQzIiwiX2NvbnRleHQ0IiwiX2NvbnRleHQ1IiwiX09iamVjdCRrZXlzIiwic2FzcyIsImNhbGwiLCJwcm9wZXJ0eUtleSIsIl9zdGFydHNXaXRoSW5zdGFuY2VQcm9wZXJ0eSIsImNvbnN0cnVjdG9yIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaXNQcm90b3R5cGVPZiIsIlZhbHVlIiwibmFtZSIsIlNhc3NUUlVFIiwic2Fzc1RydWUiLCJTYXNzRkFMU0UiLCJzYXNzRmFsc2UiLCJTYXNzTlVMTCIsInNhc3NOdWxsIiwiU2Fzc051bWJlciIsIlNhc3NTdHJpbmciLCJTYXNzQ29sb3IiLCJTYXNzTGlzdCIsIlNhc3NNYXAiLCJTYXNzQm9vbGVhbiIsIl9PYmplY3QkZ2V0UHJvdG90eXBlT2YiLCJpc09iamVjdCIsInZhbHVlIiwidHlwZSIsInNhc3NUb0phdmFTY3JpcHRUeXBlIiwic2Fzc1ZhbHVlIiwidGV4dCIsIm51bWVyYXRvclVuaXRzIiwiZGVub21pbmF0b3JVbml0cyIsInVuaXQiLCJoYXNVbml0cyIsImpvaW4iLCJzaXplIiwicmVkIiwiZ3JlZW4iLCJibHVlIiwiYWxwaGEiLCJjaHJvbWEiLCJsaXN0VmFsdWUiLCJhc0xpc3QiLCJsZW5ndGgiLCJhcnJheSIsIl9maWxsSW5zdGFuY2VQcm9wZXJ0eSIsIkFycmF5IiwidW5kZWZpbmVkIiwiaW5kZXgiLCJnZXQiLCJtYXBWYWx1ZSIsImNvbnRlbnRzIiwiZW50cmllcyIsIl9BcnJheSRmcm9tIiwiX2VudHJpZXNJbnN0YW5jZVByb3BlcnR5Iiwia2V5IiwiX01hcCIsImphdmFTY3JpcHRUb1Nhc3NUeXBlIiwicmF3VmFsdWUiLCJib29sZWFuVmFsdWUiLCJudW1iZXJWYWx1ZSIsIl9ldmVyeUluc3RhbmNlUHJvcGVydHkiLCJzdHJpbmdWYWx1ZSIsInJnYmEiLCJfQXJyYXkkaXNBcnJheSIsInNhc3NNYXAiLCJjb252ZXJ0ZWQiLCJlbnRyeSIsInNldCIsIktleU9mU2lnbmF0dXJlIiwiX1N5bWJvbCIsInNhc3NGdW5jdGlvbiIsImRlZmluaXRpb24iLCJ0YXJnZXQiLCJSZWZsZWN0IiwiZGVmaW5lTWV0YWRhdGEiLCJnZXRGdW5jdGlvbnMiLCJtb2R1bGVJbXBvcnRzIiwibW9kdWxlcyIsIl9Qcm9taXNlIiwiYWxsIiwibW9kdWxlIiwicmVzb2x2ZSIsInRoZW4iLCJkZWZhdWx0Iiwic2lnbmF0dXJlIiwiZ2V0TWV0YWRhdGEiLCJjdXN0b21GdW5jdGlvbiIsInJhd0FyZ3MiLCJhcmdzIiwicmVzdWx0IiwiX1JlZmxlY3QkY29uc3RydWN0IiwiZXhlY3V0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUtBOztBQWNBLE1BQU1BLFNBQVMsR0FBR0MsbUJB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
@@ -0,0 +1,3 @@
1
+ import { type SassType, type JavaScriptType } from './types';
2
+ export declare function sassToJavaScriptType(sassValue: SassType): JavaScriptType;
3
+ export declare function javaScriptToSassType(rawValue: JavaScriptType): SassType;
@@ -0,0 +1,31 @@
1
+ import type { Color } from 'chroma-js';
2
+ import * as sass from 'sass';
3
+ export type Primitives = boolean | number | string | null;
4
+ export type NumberWithUnit = {
5
+ value: number;
6
+ unit: string;
7
+ };
8
+ export type JavaScriptType<Base = Primitives | Color | NumberWithUnit> = Base | JavaScriptType<Base>[] | Map<JavaScriptType<Base>, JavaScriptType<Base>>;
9
+ type FilterSassPrefix<T extends string> = T extends `Sass${infer R}` ? R : never;
10
+ type SassTypes = Exclude<`Sass${FilterSassPrefix<keyof typeof sass>}`, `Sass${'Boolean' | 'Calculation'}`>;
11
+ declare const SassTypes: { [P in SassTypes]: (typeof sass)[P]; };
12
+ export declare const SassTRUE: sass.SassBoolean;
13
+ export type SassTRUE = typeof SassTRUE;
14
+ export declare const SassFALSE: sass.SassBoolean;
15
+ export type SassFALSE = typeof SassFALSE;
16
+ export declare const SassNULL: sass.Value;
17
+ export type SassNULL = typeof SassNULL;
18
+ export declare const SassNumber: typeof sass.SassNumber;
19
+ export type SassNumber = InstanceType<typeof SassNumber>;
20
+ export declare const SassString: typeof sass.SassString;
21
+ export type SassString = InstanceType<typeof SassString>;
22
+ export declare const SassColor: typeof sass.SassColor;
23
+ export type SassColor = InstanceType<typeof SassColor>;
24
+ export declare const SassList: typeof sass.SassList;
25
+ export type SassList = InstanceType<typeof SassList>;
26
+ export declare const SassMap: typeof sass.SassMap;
27
+ export type SassMap = InstanceType<typeof SassMap>;
28
+ export declare const SassBoolean: typeof sass.SassBoolean;
29
+ export type SassBoolean = sass.SassBoolean;
30
+ export type SassType = InstanceType<typeof SassTypes extends Record<any, infer R> ? R : never> | SassBoolean;
31
+ export {};
@@ -1,11 +1,11 @@
1
1
  import type { Color } from 'chroma-js';
2
2
  import * as sass from 'sass';
3
- export type Primitives = boolean | number | string;
3
+ export type Primitives = boolean | number | string | null;
4
4
  export type NumberWithUnit = {
5
5
  value: number;
6
6
  unit: string;
7
7
  };
8
- export type JavaScriptType<Base = Primitives | Color | NumberWithUnit | null> = Base | JavaScriptType<Base>[] | Map<JavaScriptType<Base>, JavaScriptType<Base>>;
8
+ export type JavaScriptType<Base = Primitives | Color | NumberWithUnit> = Base | JavaScriptType<Base>[] | Map<JavaScriptType<Base>, JavaScriptType<Base>>;
9
9
  type FilterSassPrefix<T extends string> = T extends `Sass${infer R}` ? R : never;
10
10
  type SassTypes = Exclude<`Sass${FilterSassPrefix<keyof typeof sass>}`, `Sass${'Boolean' | 'Calculation'}`>;
11
11
  declare const SassTypes: { [P in SassTypes]: (typeof sass)[P]; };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cichol/sass-bridge",
3
- "version": "4.4.2",
3
+ "version": "4.5.0",
4
4
  "description": "A bridge interface to define Sass custom functions.",
5
5
  "homepage": "https://github.com/morrighan/packages",
6
6
  "bugs": {
@@ -13,15 +13,21 @@
13
13
  "url": "https://www.cichol.com/"
14
14
  },
15
15
  "type": "module",
16
- "main": "releases/cjs.js",
17
- "module": "releases/esm.js",
18
- "types": "types/index.d.ts",
19
- "directories": {
20
- "lib": "releases"
21
- },
16
+ "main": "./dists/index.cjs",
17
+ "module": "./dists/index.js",
18
+ "types": "./dists/index.d.ts",
22
19
  "exports": {
23
- "import": "./releases/esm.js",
24
- "require": "./releases/cjs.js"
20
+ ".": {
21
+ "import": {
22
+ "default": "./dists/index.js",
23
+ "types": "./dists/index.d.ts"
24
+ },
25
+ "require": {
26
+ "default": "./dists/index.cjs",
27
+ "types": "./dists/index.d.cts"
28
+ }
29
+ },
30
+ "./package.json": "./package.json"
25
31
  },
26
32
  "repository": {
27
33
  "type": "git",
@@ -30,13 +36,16 @@
30
36
  },
31
37
  "scripts": {
32
38
  "build": "npm run build:tsc",
33
- "build:tsc": "npx tsc --project sources --outDir types"
39
+ "build:tsc": "npx tsc --project sources --outDir dists"
34
40
  },
35
41
  "dependencies": {
36
42
  "chroma-js": "^3.1.2",
37
- "core-js-pure": "^3.38.1",
43
+ "core-js-pure": "^3.39.0",
38
44
  "reflect-metadata": "^0.2.2",
39
- "sass": "npm:sass-embedded@^1.77.8"
45
+ "sass": "npm:sass-embedded@^1.82.0"
46
+ },
47
+ "devDependencies": {
48
+ "@cichol/sass-bridge": "file:."
40
49
  },
41
50
  "engines": {
42
51
  "node": "^20.18.0",
package/releases/cjs.js DELETED
@@ -1,212 +0,0 @@
1
- 'use strict';
2
-
3
- var _Symbol = require('core-js-pure/stable/symbol/index.js');
4
- var _Promise = require('core-js-pure/stable/promise/index.js');
5
- var _mapInstanceProperty = require('core-js-pure/stable/instance/map.js');
6
- var _Reflect$construct = require('core-js-pure/stable/reflect/construct.js');
7
- var _Object$fromEntries = require('core-js-pure/stable/object/from-entries.js');
8
- require('reflect-metadata');
9
- var _fillInstanceProperty = require('core-js-pure/stable/instance/fill.js');
10
- var _Array$from = require('core-js-pure/stable/array/from.js');
11
- var _entriesInstanceProperty = require('core-js-pure/stable/instance/entries.js');
12
- var _Map = require('core-js-pure/stable/map/index.js');
13
- var _everyInstanceProperty = require('core-js-pure/stable/instance/every.js');
14
- var _Array$isArray = require('core-js-pure/stable/array/is-array.js');
15
- var chroma = require('chroma-js');
16
- var _filterInstanceProperty = require('core-js-pure/stable/instance/filter.js');
17
- var _Object$keys = require('core-js-pure/stable/object/keys.js');
18
- var _startsWithInstanceProperty = require('core-js-pure/stable/instance/starts-with.js');
19
- var _Object$getPrototypeOf = require('core-js-pure/stable/object/get-prototype-of.js');
20
- var sass = require('sass');
21
-
22
- function _interopNamespaceDefault(e) {
23
- var n = Object.create(null);
24
- if (e) {
25
- Object.keys(e).forEach(function (k) {
26
- if (k !== 'default') {
27
- var d = Object.getOwnPropertyDescriptor(e, k);
28
- Object.defineProperty(n, k, d.get ? d : {
29
- enumerable: true,
30
- get: function () { return e[k]; }
31
- });
32
- }
33
- });
34
- }
35
- n.default = e;
36
- return Object.freeze(n);
37
- }
38
-
39
- var sass__namespace = /*#__PURE__*/_interopNamespaceDefault(sass);
40
-
41
- var _context, _context2, _context3, _context4, _context5;
42
-
43
- // Type definitions.
44
-
45
- const SassTypes = _Object$fromEntries(_mapInstanceProperty(_context = _filterInstanceProperty(_context2 = _filterInstanceProperty(_context3 = _mapInstanceProperty(_context4 = _filterInstanceProperty(_context5 = _Object$keys(sass__namespace)).call(_context5, propertyKey => _startsWithInstanceProperty(propertyKey).call(propertyKey, 'Sass'))).call(_context4, propertyKey => sass__namespace[propertyKey])).call(_context3, constructor => typeof constructor === 'function')).call(_context2, constructor => Object.prototype.isPrototypeOf.call(sass.Value.prototype, constructor.prototype))).call(_context, constructor => [constructor.name, constructor]));
46
- const SassTRUE = sass__namespace.sassTrue;
47
- const SassFALSE = sass__namespace.sassFalse;
48
- const SassNULL = sass__namespace.sassNull;
49
- const {
50
- SassNumber
51
- } = SassTypes;
52
- const {
53
- SassString
54
- } = SassTypes;
55
- const {
56
- SassColor
57
- } = SassTypes;
58
- const {
59
- SassList
60
- } = SassTypes;
61
- const {
62
- SassMap
63
- } = SassTypes;
64
- const SassBoolean = _Object$getPrototypeOf(SassTRUE).constructor;
65
-
66
- // Helper functions.
67
- function isObject(value) {
68
- const type = typeof value;
69
- return !!value && (type === 'object' || type === 'function');
70
- }
71
- function sassToJavaScriptType(sassValue) {
72
- switch (true) {
73
- case sassValue instanceof SassBoolean:
74
- {
75
- return sassValue.value;
76
- }
77
- case sassValue instanceof SassString:
78
- {
79
- return sassValue.text;
80
- }
81
- case sassValue instanceof SassNumber:
82
- {
83
- const {
84
- value,
85
- numeratorUnits,
86
- denominatorUnits
87
- } = sassValue;
88
- const unit = sassValue.hasUnits ? numeratorUnits.join('*') + (denominatorUnits.size > 0 ? `/${denominatorUnits.join('*')}` : '') : '';
89
- return unit ? {
90
- value,
91
- unit
92
- } : value;
93
- }
94
- case sassValue instanceof SassColor:
95
- {
96
- const {
97
- red,
98
- green,
99
- blue,
100
- alpha
101
- } = sassValue;
102
- return chroma(red, green, blue, alpha);
103
- }
104
- case sassValue instanceof SassList:
105
- {
106
- var _context;
107
- const listValue = sassValue.asList;
108
- const length = listValue.size;
109
- const array = _fillInstanceProperty(_context = Array(length)).call(_context, undefined);
110
- for (let index = 0; index < length; index += 1) {
111
- array[index] = listValue.get(index);
112
- }
113
- return _mapInstanceProperty(array).call(array, value => sassToJavaScriptType(value));
114
- }
115
- case sassValue instanceof SassMap:
116
- {
117
- var _context2;
118
- const mapValue = sassValue.contents;
119
- const entries = _mapInstanceProperty(_context2 = _Array$from(_entriesInstanceProperty(mapValue).call(mapValue))).call(_context2, ([key, value]) => [sassToJavaScriptType(key), sassToJavaScriptType(value)]);
120
- return new _Map(entries);
121
- }
122
- default:
123
- {
124
- return null;
125
- }
126
- }
127
- }
128
- function javaScriptToSassType(rawValue) {
129
- var _context3;
130
- switch (true) {
131
- case typeof rawValue === 'boolean':
132
- {
133
- const booleanValue = rawValue;
134
- return booleanValue ? SassTRUE : SassFALSE;
135
- }
136
- case typeof rawValue === 'number':
137
- {
138
- const numberValue = rawValue;
139
- return new SassNumber(numberValue);
140
- }
141
- case isObject(rawValue) && _everyInstanceProperty(_context3 = ['value', 'unit']).call(_context3, propertyKey => propertyKey in rawValue):
142
- {
143
- const {
144
- value,
145
- unit
146
- } = rawValue;
147
- return new SassNumber(value, unit);
148
- }
149
- case typeof rawValue === 'string':
150
- {
151
- const stringValue = rawValue;
152
- return new SassString(stringValue);
153
- }
154
- case isObject(rawValue) && '_rgb' in rawValue:
155
- {
156
- const [red, green, blue, alpha] = rawValue.rgba();
157
- return new SassColor({
158
- red,
159
- green,
160
- blue,
161
- alpha
162
- });
163
- }
164
- case _Array$isArray(rawValue):
165
- {
166
- return new SassList(_mapInstanceProperty(rawValue).call(rawValue, value => javaScriptToSassType(value)));
167
- }
168
- case rawValue instanceof _Map:
169
- {
170
- var _context4;
171
- const mapValue = rawValue;
172
- const sassMap = new SassMap();
173
- const converted = _mapInstanceProperty(_context4 = _Array$from(_entriesInstanceProperty(mapValue).call(mapValue))).call(_context4, entry => _mapInstanceProperty(entry).call(entry, javaScriptToSassType));
174
- for (const [key, value] of converted) {
175
- sassMap.contents.set(key, value);
176
- }
177
- return sassMap;
178
- }
179
- default:
180
- {
181
- return SassNULL;
182
- }
183
- }
184
- }
185
-
186
- // Type definitions.
187
-
188
- // Constants.
189
- const KeyOfSignature = _Symbol('@cichol/sass-bridge::KeyOfSignature');
190
- function sassFunction(definition) {
191
- return target => {
192
- Reflect.defineMetadata(KeyOfSignature, definition, target);
193
- return target;
194
- };
195
- }
196
- async function getFunctions(...moduleImports) {
197
- const modules = await _Promise.all(_mapInstanceProperty(moduleImports).call(moduleImports, module => _Promise.resolve(module).then(module => module.default)));
198
- const entries = _mapInstanceProperty(modules).call(modules, module => {
199
- const signature = Reflect.getMetadata(KeyOfSignature, module);
200
- async function customFunction(rawArgs) {
201
- const args = _mapInstanceProperty(rawArgs).call(rawArgs, sassToJavaScriptType);
202
- const result = await _Reflect$construct(module, args).execute();
203
- return javaScriptToSassType(result);
204
- }
205
- return [signature, customFunction];
206
- });
207
- return _Object$fromEntries(entries);
208
- }
209
-
210
- exports.getFunctions = getFunctions;
211
- exports.sassFunction = sassFunction;
212
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2pzLmpzIiwic291cmNlcyI6WyIuLi9zb3VyY2VzL3R5cGVzLnRzIiwiLi4vc291cmNlcy90eXBlLWNvbnZlcnRlci50cyIsIi4uL3NvdXJjZXMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcmQtcGFydHkgbW9kdWxlcy5cbmltcG9ydCB0eXBlIHsgQ29sb3IgfSBmcm9tICdjaHJvbWEtanMnO1xuaW1wb3J0ICogYXMgc2FzcyBmcm9tICdzYXNzJztcbmltcG9ydCB7IFZhbHVlIH0gZnJvbSAnc2Fzcyc7XG5cbi8vIFR5cGUgZGVmaW5pdGlvbnMuXG5leHBvcnQgdHlwZSBQcmltaXRpdmVzID0gYm9vbGVhbiB8IG51bWJlciB8IHN0cmluZztcblxuZXhwb3J0IHR5cGUgTnVtYmVyV2l0aFVuaXQgPSB7IHZhbHVlOiBudW1iZXIsIHVuaXQ6IHN0cmluZyB9O1xuXG5leHBvcnQgdHlwZSBKYXZhU2NyaXB0VHlwZTxCYXNlID0gUHJpbWl0aXZlcyB8IENvbG9yIHwgTnVtYmVyV2l0aFVuaXQgfCBudWxsPiA9XG4gICAgfCBCYXNlXG4gICAgfCBKYXZhU2NyaXB0VHlwZTxCYXNlPltdXG4gICAgfCBNYXA8SmF2YVNjcmlwdFR5cGU8QmFzZT4sIEphdmFTY3JpcHRUeXBlPEJhc2U+PjtcblxudHlwZSBGaWx0ZXJTYXNzUHJlZml4PFQgZXh0ZW5kcyBzdHJpbmc+ID0gVCBleHRlbmRzIGBTYXNzJHtpbmZlciBSfWAgPyBSIDogbmV2ZXI7XG5cbnR5cGUgU2Fzc1R5cGVzID0gRXhjbHVkZTxgU2FzcyR7RmlsdGVyU2Fzc1ByZWZpeDxrZXlvZiB0eXBlb2Ygc2Fzcz59YCwgYFNhc3MkeydCb29sZWFuJyB8ICdDYWxjdWxhdGlvbid9YD47XG5cbmNvbnN0IFNhc3NUeXBlcyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3Qua2V5cyhzYXNzKVxuICAgICAgICAuZmlsdGVyKHByb3BlcnR5S2V5ID0+IHByb3BlcnR5S2V5LnN0YXJ0c1dpdGgoJ1Nhc3MnKSlcbiAgICAgICAgLm1hcChwcm9wZXJ0eUtleSA9PiBzYXNzW3Byb3BlcnR5S2V5IGFzIFNhc3NUeXBlc10pXG4gICAgICAgIC5maWx0ZXIoY29uc3RydWN0b3IgPT4gdHlwZW9mIGNvbnN0cnVjdG9yID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAuZmlsdGVyKGNvbnN0cnVjdG9yID0+IE9iamVjdC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZi5jYWxsKFZhbHVlLnByb3RvdHlwZSwgY29uc3RydWN0b3IucHJvdG90eXBlKSlcbiAgICAgICAgLm1hcChjb25zdHJ1Y3RvciA9PiBbIGNvbnN0cnVjdG9yLm5hbWUsIGNvbnN0cnVjdG9yIF0gYXMgW1Nhc3NUeXBlcywgKHR5cGVvZiBzYXNzKVtTYXNzVHlwZXNdXSlcbikgYXMgeyBbUCBpbiBTYXNzVHlwZXNdOiAodHlwZW9mIHNhc3MpW1BdIH07XG5cbmV4cG9ydCBjb25zdCBTYXNzVFJVRSA9IHNhc3Muc2Fzc1RydWU7XG5leHBvcnQgdHlwZSBTYXNzVFJVRSA9IHR5cGVvZiBTYXNzVFJVRTtcblxuZXhwb3J0IGNvbnN0IFNhc3NGQUxTRSA9IHNhc3Muc2Fzc0ZhbHNlO1xuZXhwb3J0IHR5cGUgU2Fzc0ZBTFNFID0gdHlwZW9mIFNhc3NGQUxTRTtcblxuZXhwb3J0IGNvbnN0IFNhc3NOVUxMID0gc2Fzcy5zYXNzTnVsbDtcbmV4cG9ydCB0eXBlIFNhc3NOVUxMID0gdHlwZW9mIFNhc3NOVUxMO1xuXG5leHBvcnQgY29uc3QgeyBTYXNzTnVtYmVyIH0gPSBTYXNzVHlwZXM7XG5leHBvcnQgdHlwZSBTYXNzTnVtYmVyID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzTnVtYmVyPjtcblxuZXhwb3J0IGNvbnN0IHsgU2Fzc1N0cmluZyB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc1N0cmluZyA9IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc1N0cmluZz47XG5cbmV4cG9ydCBjb25zdCB7IFNhc3NDb2xvciB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc0NvbG9yID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzQ29sb3I+O1xuXG5leHBvcnQgY29uc3QgeyBTYXNzTGlzdCB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc0xpc3QgPSBJbnN0YW5jZVR5cGU8dHlwZW9mIFNhc3NMaXN0PjtcblxuZXhwb3J0IGNvbnN0IHsgU2Fzc01hcCB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc01hcCA9IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc01hcD47XG5cbmV4cG9ydCBjb25zdCBTYXNzQm9vbGVhbiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihTYXNzVFJVRSkuY29uc3RydWN0b3IgYXMgdHlwZW9mIHNhc3MuU2Fzc0Jvb2xlYW47XG5leHBvcnQgdHlwZSBTYXNzQm9vbGVhbiA9IHNhc3MuU2Fzc0Jvb2xlYW47XG5cbmV4cG9ydCB0eXBlIFNhc3NUeXBlID1cbiAgICB8IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc1R5cGVzIGV4dGVuZHMgUmVjb3JkPGFueSwgaW5mZXIgUj4gPyBSIDogbmV2ZXI+XG4gICAgfCBTYXNzQm9vbGVhbjtcbiIsIi8vIFRoaXJkLXBhcnR5IG1vZHVsZXMuXG5pbXBvcnQgY2hyb21hIGZyb20gJ2Nocm9tYS1qcyc7XG5cbi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQge1xuICAgIHR5cGUgU2Fzc1R5cGUsXG4gICAgU2Fzc0Jvb2xlYW4sXG4gICAgU2Fzc051bWJlcixcbiAgICBTYXNzU3RyaW5nLFxuICAgIFNhc3NDb2xvcixcbiAgICBTYXNzTGlzdCxcbiAgICBTYXNzTWFwLFxuICAgIFNhc3NUUlVFLFxuICAgIFNhc3NGQUxTRSxcbiAgICBTYXNzTlVMTCxcbiAgICB0eXBlIEphdmFTY3JpcHRUeXBlLFxuICAgIHR5cGUgTnVtYmVyV2l0aFVuaXRcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbnMuXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZT86IHVua25vd24pOiB2YWx1ZSBpcyBvYmplY3Qge1xuICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWU7XG5cbiAgICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PT0gJ29iamVjdCcgfHwgdHlwZSA9PT0gJ2Z1bmN0aW9uJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXNzVG9KYXZhU2NyaXB0VHlwZShzYXNzVmFsdWU6IFNhc3NUeXBlKTogSmF2YVNjcmlwdFR5cGUge1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc0Jvb2xlYW46IHtcbiAgICAgICAgcmV0dXJuIHNhc3NWYWx1ZS52YWx1ZTtcbiAgICB9XG5cbiAgICBjYXNlIHNhc3NWYWx1ZSBpbnN0YW5jZW9mIFNhc3NTdHJpbmc6IHtcbiAgICAgICAgcmV0dXJuIHNhc3NWYWx1ZS50ZXh0O1xuICAgIH1cblxuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc051bWJlcjoge1xuICAgICAgICBjb25zdCB7IHZhbHVlLCBudW1lcmF0b3JVbml0cywgZGVub21pbmF0b3JVbml0cyB9ID0gc2Fzc1ZhbHVlO1xuXG4gICAgICAgIGNvbnN0IHVuaXQgPSBzYXNzVmFsdWUuaGFzVW5pdHNcbiAgICAgICAgICAgID8gbnVtZXJhdG9yVW5pdHMuam9pbignKicpICsgKGRlbm9taW5hdG9yVW5pdHMuc2l6ZSA+IDAgPyBgLyR7ZGVub21pbmF0b3JVbml0cy5qb2luKCcqJyl9YCA6ICcnKVxuICAgICAgICAgICAgOiAnJztcblxuICAgICAgICByZXR1cm4gdW5pdCA/IHsgdmFsdWUsIHVuaXQgfSA6IHZhbHVlO1xuICAgIH1cblxuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc0NvbG9yOiB7XG4gICAgICAgIGNvbnN0IHsgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEgfSA9IHNhc3NWYWx1ZTtcblxuICAgICAgICByZXR1cm4gY2hyb21hKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTtcbiAgICB9XG5cbiAgICBjYXNlIHNhc3NWYWx1ZSBpbnN0YW5jZW9mIFNhc3NMaXN0OiB7XG4gICAgICAgIGNvbnN0IGxpc3RWYWx1ZSA9IHNhc3NWYWx1ZS5hc0xpc3Q7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGxpc3RWYWx1ZS5zaXplO1xuICAgICAgICBjb25zdCBhcnJheSA9IEFycmF5KGxlbmd0aCkuZmlsbCh1bmRlZmluZWQpIGFzIFNhc3NUeXBlW107XG5cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgICAgYXJyYXlbaW5kZXhdID0gbGlzdFZhbHVlLmdldChpbmRleCkgYXMgU2Fzc1R5cGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXJyYXkubWFwKHZhbHVlID0+IHNhc3NUb0phdmFTY3JpcHRUeXBlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgY2FzZSBzYXNzVmFsdWUgaW5zdGFuY2VvZiBTYXNzTWFwOiB7XG4gICAgICAgIGNvbnN0IG1hcFZhbHVlID0gc2Fzc1ZhbHVlLmNvbnRlbnRzO1xuXG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBBcnJheS5mcm9tKG1hcFZhbHVlLmVudHJpZXMoKSBhcyBJdGVyYWJsZUl0ZXJhdG9yPFtTYXNzVHlwZSwgU2Fzc1R5cGVdPilcbiAgICAgICAgICAgIC5tYXAoKFsga2V5LCB2YWx1ZSBdKSA9PiBbIHNhc3NUb0phdmFTY3JpcHRUeXBlKGtleSksIHNhc3NUb0phdmFTY3JpcHRUeXBlKHZhbHVlKSBdKTtcblxuICAgICAgICByZXR1cm4gbmV3IE1hcChlbnRyaWVzIGFzIFtKYXZhU2NyaXB0VHlwZSwgSmF2YVNjcmlwdFR5cGVdW10pO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGphdmFTY3JpcHRUb1Nhc3NUeXBlKHJhd1ZhbHVlOiBKYXZhU2NyaXB0VHlwZSk6IFNhc3NUeXBlIHtcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICBjYXNlIHR5cGVvZiByYXdWYWx1ZSA9PT0gJ2Jvb2xlYW4nOiB7XG4gICAgICAgIGNvbnN0IGJvb2xlYW5WYWx1ZSA9IHJhd1ZhbHVlO1xuXG4gICAgICAgIHJldHVybiBib29sZWFuVmFsdWUgPyBTYXNzVFJVRSA6IFNhc3NGQUxTRTtcbiAgICB9XG5cbiAgICBjYXNlIHR5cGVvZiByYXdWYWx1ZSA9PT0gJ251bWJlcic6IHtcbiAgICAgICAgY29uc3QgbnVtYmVyVmFsdWUgPSByYXdWYWx1ZTtcblxuICAgICAgICByZXR1cm4gbmV3IFNhc3NOdW1iZXIobnVtYmVyVmFsdWUpO1xuICAgIH1cblxuICAgIGNhc2UgaXNPYmplY3QocmF3VmFsdWUpICYmIFsgJ3ZhbHVlJywgJ3VuaXQnIF0uZXZlcnkocHJvcGVydHlLZXkgPT4gcHJvcGVydHlLZXkgaW4gcmF3VmFsdWUpOiB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIHVuaXQgfSA9IHJhd1ZhbHVlIGFzIE51bWJlcldpdGhVbml0O1xuXG4gICAgICAgIHJldHVybiBuZXcgU2Fzc051bWJlcih2YWx1ZSwgdW5pdCk7XG4gICAgfVxuXG4gICAgY2FzZSB0eXBlb2YgcmF3VmFsdWUgPT09ICdzdHJpbmcnOiB7XG4gICAgICAgIGNvbnN0IHN0cmluZ1ZhbHVlID0gcmF3VmFsdWU7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBTYXNzU3RyaW5nKHN0cmluZ1ZhbHVlKTtcbiAgICB9XG5cbiAgICBjYXNlIGlzT2JqZWN0KHJhd1ZhbHVlKSAmJiAnX3JnYicgaW4gcmF3VmFsdWU6IHtcbiAgICAgICAgY29uc3QgWyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSBdID0gcmF3VmFsdWUucmdiYSgpIGFzIG51bWJlcltdO1xuXG4gICAgICAgIHJldHVybiBuZXcgU2Fzc0NvbG9yKHsgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEgfSk7XG4gICAgfVxuXG4gICAgY2FzZSBBcnJheS5pc0FycmF5KHJhd1ZhbHVlKToge1xuICAgICAgICByZXR1cm4gbmV3IFNhc3NMaXN0KHJhd1ZhbHVlLm1hcCh2YWx1ZSA9PiBqYXZhU2NyaXB0VG9TYXNzVHlwZSh2YWx1ZSkpKTtcbiAgICB9XG5cbiAgICBjYXNlIHJhd1ZhbHVlIGluc3RhbmNlb2YgTWFwOiB7XG4gICAgICAgIGNvbnN0IG1hcFZhbHVlID0gcmF3VmFsdWUgYXMgTWFwPEphdmFTY3JpcHRUeXBlLCBKYXZhU2NyaXB0VHlwZT47XG4gICAgICAgIGNvbnN0IHNhc3NNYXAgPSBuZXcgU2Fzc01hcCgpO1xuXG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZCA9IEFycmF5LmZyb20obWFwVmFsdWUuZW50cmllcygpKVxuICAgICAgICAgICAgLm1hcChlbnRyeSA9PiBlbnRyeS5tYXAoamF2YVNjcmlwdFRvU2Fzc1R5cGUpKSBhcyBbU2Fzc1R5cGUsIFNhc3NUeXBlXVtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgY29udmVydGVkKSB7XG4gICAgICAgICAgICBzYXNzTWFwLmNvbnRlbnRzLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzYXNzTWFwO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIFNhc3NOVUxMO1xuICAgIH1cbiAgICB9XG59XG4iLCJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuXG4vLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgQ3VzdG9tRnVuY3Rpb24gfSBmcm9tICdzYXNzJztcblxuLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCB0eXBlIHsgU2Fzc1R5cGUsIEphdmFTY3JpcHRUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBzYXNzVG9KYXZhU2NyaXB0VHlwZSwgamF2YVNjcmlwdFRvU2Fzc1R5cGUgfSBmcm9tICcuL3R5cGUtY29udmVydGVyJztcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbmV4cG9ydCBpbnRlcmZhY2UgQnJpZGdlZEZ1bmN0aW9uIHtcbiAgICBleGVjdXRlKCk6IEphdmFTY3JpcHRUeXBlIHwgUHJvbWlzZTxKYXZhU2NyaXB0VHlwZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0b3Ige1xuICAgIG5ldyAoLi4uYXJnczogSmF2YVNjcmlwdFR5cGVbXSk6IEJyaWRnZWRGdW5jdGlvbjtcbn1cblxuLy8gQ29uc3RhbnRzLlxuY29uc3QgS2V5T2ZTaWduYXR1cmUgPSBTeW1ib2woJ0BjaWNob2wvc2Fzcy1icmlkZ2U6OktleU9mU2lnbmF0dXJlJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXNzRnVuY3Rpb24oZGVmaW5pdGlvbjogc3RyaW5nKTogQ2xhc3NEZWNvcmF0b3Ige1xuICAgIHJldHVybiAoPFQgZXh0ZW5kcyBDb25zdHJ1Y3Rvcj4odGFyZ2V0OiBUKSA9PiB7XG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoS2V5T2ZTaWduYXR1cmUsIGRlZmluaXRpb24sIHRhcmdldCk7XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9KSBhcyBDbGFzc0RlY29yYXRvcjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEZ1bmN0aW9ucyhcbiAgICAuLi5tb2R1bGVJbXBvcnRzOiBQcm9taXNlPHsgZGVmYXVsdDogQ29uc3RydWN0b3IgfT5bXVxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBDdXN0b21GdW5jdGlvbjwnYXN5bmMnPj4+IHtcbiAgICBjb25zdCBtb2R1bGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG1vZHVsZUltcG9ydHMubWFwKG1vZHVsZSA9PiAoXG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUobW9kdWxlKVxuICAgICAgICAgICAgICAgIC50aGVuKG1vZHVsZSA9PiBtb2R1bGUuZGVmYXVsdClcbiAgICAgICAgKSlcbiAgICApO1xuXG4gICAgY29uc3QgZW50cmllcyA9IG1vZHVsZXMubWFwKG1vZHVsZSA9PiB7XG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoS2V5T2ZTaWduYXR1cmUsIG1vZHVsZSkgYXMgc3RyaW5nO1xuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGN1c3RvbUZ1bmN0aW9uKHJhd0FyZ3M6IFNhc3NUeXBlW10pOiBQcm9taXNlPFNhc3NUeXBlPiB7XG4gICAgICAgICAgICBjb25zdCBhcmdzID0gcmF3QXJncy5tYXAoc2Fzc1RvSmF2YVNjcmlwdFR5cGUpO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUmVmbGVjdC5jb25zdHJ1Y3QobW9kdWxlLCBhcmdzKS5leGVjdXRlKCk7XG5cbiAgICAgICAgICAgIHJldHVybiBqYXZhU2NyaXB0VG9TYXNzVHlwZShyZXN1bHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFsgc2lnbmF0dXJlLCBjdXN0b21GdW5jdGlvbiBdIGFzIGNvbnN0O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhlbnRyaWVzKTtcbn1cbiJdLCJuYW1lcyI6WyJTYXNzVHlwZXMiLCJfT2JqZWN0JGZyb21FbnRyaWVzIiwiX21hcEluc3RhbmNlUHJvcGVydHkiLCJfY29udGV4dCIsIl9maWx0ZXJJbnN0YW5jZVByb3BlcnR5IiwiX2NvbnRleHQyIiwiX2NvbnRleHQzIiwiX2NvbnRleHQ0IiwiX2NvbnRleHQ1IiwiX09iamVjdCRrZXlzIiwic2FzcyIsImNhbGwiLCJwcm9wZXJ0eUtleSIsIl9zdGFydHNXaXRoSW5zdGFuY2VQcm9wZXJ0eSIsImNvbnN0cnVjdG9yIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaXNQcm90b3R5cGVPZiIsIlZhbHVlIiwibmFtZSIsIlNhc3NUUlVFIiwic2Fzc1RydWUiLCJTYXNzRkFMU0UiLCJzYXNzRmFsc2UiLCJTYXNzTlVMTCIsInNhc3NOdWxsIiwiU2Fzc051bWJlciIsIlNhc3NTdHJpbmciLCJTYXNzQ29sb3IiLCJTYXNzTGlzdCIsIlNhc3NNYXAiLCJTYXNzQm9vbGVhbiIsIl9PYmplY3QkZ2V0UHJvdG90eXBlT2YiLCJpc09iamVjdCIsInZhbHVlIiwidHlwZSIsInNhc3NUb0phdmFTY3JpcHRUeXBlIiwic2Fzc1ZhbHVlIiwidGV4dCIsIm51bWVyYXRvclVuaXRzIiwiZGVub21pbmF0b3JVbml0cyIsInVuaXQiLCJoYXNVbml0cyIsImpvaW4iLCJzaXplIiwicmVkIiwiZ3JlZW4iLCJibHVlIiwiYWxwaGEiLCJjaHJvbWEiLCJsaXN0VmFsdWUiLCJhc0xpc3QiLCJsZW5ndGgiLCJhcnJheSIsIl9maWxsSW5zdGFuY2VQcm9wZXJ0eSIsIkFycmF5IiwidW5kZWZpbmVkIiwiaW5kZXgiLCJnZXQiLCJtYXBWYWx1ZSIsImNvbnRlbnRzIiwiZW50cmllcyIsIl9BcnJheSRmcm9tIiwiX2VudHJpZXNJbnN0YW5jZVByb3BlcnR5Iiwia2V5IiwiX01hcCIsImphdmFTY3JpcHRUb1Nhc3NUeXBlIiwicmF3VmFsdWUiLCJib29sZWFuVmFsdWUiLCJudW1iZXJWYWx1ZSIsIl9ldmVyeUluc3RhbmNlUHJvcGVydHkiLCJzdHJpbmdWYWx1ZSIsInJnYmEiLCJfQXJyYXkkaXNBcnJheSIsInNhc3NNYXAiLCJjb252ZXJ0ZWQiLCJlbnRyeSIsInNldCIsIktleU9mU2lnbmF0dXJlIiwiX1N5bWJvbCIsInNhc3NGdW5jdGlvbiIsImRlZmluaXRpb24iLCJ0YXJnZXQiLCJSZWZsZWN0IiwiZGVmaW5lTWV0YWRhdGEiLCJnZXRGdW5jdGlvbnMiLCJtb2R1bGVJbXBvcnRzIiwibW9kdWxlcyIsIl9Qcm9taXNlIiwiYWxsIiwibW9kdWxlIiwicmVzb2x2ZSIsInRoZW4iLCJkZWZhdWx0Iiwic2lnbmF0dXJlIiwiZ2V0TWV0YWRhdGEiLCJjdXN0b21GdW5jdGlvbiIsInJhd0FyZ3MiLCJhcmdzIiwicmVzdWx0IiwiX1JlZmxlY3QkY29uc3RydWN0IiwiZXhlY3V0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0E7O0FBY0EsTUFBTUEsU0FBUyxHQUFHQyxtQkFBQSxDQUNkQyxvQkFBQSxDQUFBQyxRQUFBLEdBQUFDLHVCQUFBLENBQUFDLFNBQUEsR0FBQUQsdUJBQUEsQ0FBQUUsU0FBQSxHQUFBSixvQkFBQSxDQUFBSyxTQUFBLEdBQUFILHVCQUFBLENBQUFJLFNBQUEsR0FBQUMsWUFBQSxDQUFZQyxlQUFJLENBQUMsQ0FBQSxDQUFBQyxJQUFBLENBQUFILFNBQUEsRUFDTEksV0FBVyxJQUFJQywyQkFBQSxDQUFBRCxXQUFXLENBQUFELENBQUFBLElBQUEsQ0FBWEMsV0FBVyxFQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQUQsSUFBQSxDQUFBSixTQUFBLEVBQ2pESyxXQUFXLElBQUlGLGVBQUksQ0FBQ0UsV0FBVyxDQUFjLENBQUMsQ0FBQSxDQUFBRCxJQUFBLENBQUFMLFNBQUEsRUFDM0NRLFdBQVcsSUFBSSxPQUFPQSxXQUFXLEtBQUssVUFBVSxDQUFDLENBQUEsQ0FBQUgsSUFBQSxDQUFBTixTQUFBLEVBQ2pEUyxXQUFXLElBQUlDLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxhQUFhLENBQUNOLElBQUksQ0FBQ08sVUFBSyxDQUFDRixTQUFTLEVBQUVGLFdBQVcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQUwsQ0FBQUEsSUFBQSxDQUFBUixRQUFBLEVBQzlGVyxXQUFXLElBQUksQ0FBRUEsV0FBVyxDQUFDSyxJQUFJLEVBQUVMLFdBQVcsQ0FBMkMsQ0FDdEcsQ0FBMkM7QUFFcEMsTUFBTU0sUUFBUSxHQUFHVixlQUFJLENBQUNXLFFBQVE7QUFHOUIsTUFBTUMsU0FBUyxHQUFHWixlQUFJLENBQUNhLFNBQVM7QUFHaEMsTUFBTUMsUUFBUSxHQUFHZCxlQUFJLENBQUNlLFFBQVE7QUFHOUIsTUFBTTtBQUFFQyxFQUFBQTtBQUFXLENBQUMsR0FBRzFCLFNBQVM7QUFHaEMsTUFBTTtBQUFFMkIsRUFBQUE7QUFBVyxDQUFDLEdBQUczQixTQUFTO0FBR2hDLE1BQU07QUFBRTRCLEVBQUFBO0FBQVUsQ0FBQyxHQUFHNUIsU0FBUztBQUcvQixNQUFNO0FBQUU2QixFQUFBQTtBQUFTLENBQUMsR0FBRzdCLFNBQVM7QUFHOUIsTUFBTTtBQUFFOEIsRUFBQUE7QUFBUSxDQUFDLEdBQUc5QixTQUFTO0FBRzdCLE1BQU0rQixXQUFXLEdBQUdDLHNCQUFBLENBQXNCWixRQUFRLENBQUMsQ0FBQ04sV0FBc0M7O0FDakNqRztBQUNBLFNBQVNtQixRQUFRQSxDQUFDQyxLQUFlLEVBQW1CO0VBQ2hELE1BQU1DLElBQUksR0FBRyxPQUFPRCxLQUFLO0VBRXpCLE9BQU8sQ0FBQyxDQUFDQSxLQUFLLEtBQUtDLElBQUksS0FBSyxRQUFRLElBQUlBLElBQUksS0FBSyxVQUFVLENBQUM7QUFDaEU7QUFFTyxTQUFTQyxvQkFBb0JBLENBQUNDLFNBQW1CLEVBQWtCO0FBQ3RFLEVBQUEsUUFBUSxJQUFJO0lBQ1osS0FBS0EsU0FBUyxZQUFZTixXQUFXO0FBQUUsTUFBQTtRQUNuQyxPQUFPTSxTQUFTLENBQUNILEtBQUs7QUFDMUI7SUFFQSxLQUFLRyxTQUFTLFlBQVlWLFVBQVU7QUFBRSxNQUFBO1FBQ2xDLE9BQU9VLFNBQVMsQ0FBQ0MsSUFBSTtBQUN6QjtJQUVBLEtBQUtELFNBQVMsWUFBWVgsVUFBVTtBQUFFLE1BQUE7UUFDbEMsTUFBTTtVQUFFUSxLQUFLO1VBQUVLLGNBQWM7QUFBRUMsVUFBQUE7QUFBaUIsU0FBQyxHQUFHSCxTQUFTO0FBRTdELFFBQUEsTUFBTUksSUFBSSxHQUFHSixTQUFTLENBQUNLLFFBQVEsR0FDekJILGNBQWMsQ0FBQ0ksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJSCxnQkFBZ0IsQ0FBQ0ksSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFJSixDQUFBQSxFQUFBQSxnQkFBZ0IsQ0FBQ0csSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFFLENBQUEsR0FBRyxFQUFFLENBQUMsR0FDOUYsRUFBRTtBQUVSLFFBQUEsT0FBT0YsSUFBSSxHQUFHO1VBQUVQLEtBQUs7QUFBRU8sVUFBQUE7QUFBSyxTQUFDLEdBQUdQLEtBQUs7QUFDekM7SUFFQSxLQUFLRyxTQUFTLFlBQVlULFNBQVM7QUFBRSxNQUFBO1FBQ2pDLE1BQU07VUFBRWlCLEdBQUc7VUFBRUMsS0FBSztVQUFFQyxJQUFJO0FBQUVDLFVBQUFBO0FBQU0sU0FBQyxHQUFHWCxTQUFTO1FBRTdDLE9BQU9ZLE1BQU0sQ0FBQ0osR0FBRyxFQUFFQyxLQUFLLEVBQUVDLElBQUksRUFBRUMsS0FBSyxDQUFDO0FBQzFDO0lBRUEsS0FBS1gsU0FBUyxZQUFZUixRQUFRO0FBQUUsTUFBQTtBQUFBLFFBQUEsSUFBQTFCLFFBQUE7QUFDaEMsUUFBQSxNQUFNK0MsU0FBUyxHQUFHYixTQUFTLENBQUNjLE1BQU07QUFDbEMsUUFBQSxNQUFNQyxNQUFNLEdBQUdGLFNBQVMsQ0FBQ04sSUFBSTtBQUM3QixRQUFBLE1BQU1TLEtBQUssR0FBR0MscUJBQUEsQ0FBQW5ELFFBQUEsR0FBQW9ELEtBQUssQ0FBQ0gsTUFBTSxDQUFDLEVBQUF6QyxJQUFBLENBQUFSLFFBQUEsRUFBTXFELFNBQVMsQ0FBZTtBQUV6RCxRQUFBLEtBQUssSUFBSUMsS0FBSyxHQUFHLENBQUMsRUFBRUEsS0FBSyxHQUFHTCxNQUFNLEVBQUVLLEtBQUssSUFBSSxDQUFDLEVBQUU7VUFDNUNKLEtBQUssQ0FBQ0ksS0FBSyxDQUFDLEdBQUdQLFNBQVMsQ0FBQ1EsR0FBRyxDQUFDRCxLQUFLLENBQWE7QUFDbkQ7QUFFQSxRQUFBLE9BQU92RCxvQkFBQSxDQUFBbUQsS0FBSyxDQUFBLENBQUExQyxJQUFBLENBQUwwQyxLQUFLLEVBQUtuQixLQUFLLElBQUlFLG9CQUFvQixDQUFDRixLQUFLLENBQUMsQ0FBQztBQUMxRDtJQUVBLEtBQUtHLFNBQVMsWUFBWVAsT0FBTztBQUFFLE1BQUE7QUFBQSxRQUFBLElBQUF6QixTQUFBO0FBQy9CLFFBQUEsTUFBTXNELFFBQVEsR0FBR3RCLFNBQVMsQ0FBQ3VCLFFBQVE7QUFFbkMsUUFBQSxNQUFNQyxPQUFPLEdBQUczRCxvQkFBQSxDQUFBRyxTQUFBLEdBQUF5RCxXQUFBLENBQVdDLHdCQUFBLENBQUFKLFFBQVEsRUFBQWhELElBQUEsQ0FBUmdELFFBQWlCLENBQTJDLENBQUMsRUFBQWhELElBQUEsQ0FBQU4sU0FBQSxFQUMvRSxDQUFDLENBQUUyRCxHQUFHLEVBQUU5QixLQUFLLENBQUUsS0FBSyxDQUFFRSxvQkFBb0IsQ0FBQzRCLEdBQUcsQ0FBQyxFQUFFNUIsb0JBQW9CLENBQUNGLEtBQUssQ0FBQyxDQUFFLENBQUM7QUFFeEYsUUFBQSxPQUFPLElBQUErQixJQUFBLENBQVFKLE9BQTZDLENBQUM7QUFDakU7QUFFQSxJQUFBO0FBQVMsTUFBQTtBQUNMLFFBQUEsT0FBTyxJQUFJO0FBQ2Y7QUFDQTtBQUNKO0FBRU8sU0FBU0ssb0JBQW9CQSxDQUFDQyxRQUF3QixFQUFZO0FBQUEsRUFBQSxJQUFBN0QsU0FBQTtBQUNyRSxFQUFBLFFBQVEsSUFBSTtJQUNaLEtBQUssT0FBTzZELFFBQVEsS0FBSyxTQUFTO0FBQUUsTUFBQTtRQUNoQyxNQUFNQyxZQUFZLEdBQUdELFFBQVE7QUFFN0IsUUFBQSxPQUFPQyxZQUFZLEdBQUdoRCxRQUFRLEdBQUdFLFNBQVM7QUFDOUM7SUFFQSxLQUFLLE9BQU82QyxRQUFRLEtBQUssUUFBUTtBQUFFLE1BQUE7UUFDL0IsTUFBTUUsV0FBVyxHQUFHRixRQUFRO0FBRTVCLFFBQUEsT0FBTyxJQUFJekMsVUFBVSxDQUFDMkMsV0FBVyxDQUFDO0FBQ3RDO0lBRUEsS0FBS3BDLFFBQVEsQ0FBQ2tDLFFBQVEsQ0FBQyxJQUFJRyxzQkFBQSxDQUFBaEUsU0FBQSxHQUFBLENBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBRSxDQUFBLENBQUFLLElBQUEsQ0FBQUwsU0FBQSxFQUFPTSxXQUFXLElBQUlBLFdBQVcsSUFBSXVELFFBQVEsQ0FBQztBQUFFLE1BQUE7UUFDMUYsTUFBTTtVQUFFakMsS0FBSztBQUFFTyxVQUFBQTtBQUFLLFNBQUMsR0FBRzBCLFFBQTBCO0FBRWxELFFBQUEsT0FBTyxJQUFJekMsVUFBVSxDQUFDUSxLQUFLLEVBQUVPLElBQUksQ0FBQztBQUN0QztJQUVBLEtBQUssT0FBTzBCLFFBQVEsS0FBSyxRQUFRO0FBQUUsTUFBQTtRQUMvQixNQUFNSSxXQUFXLEdBQUdKLFFBQVE7QUFFNUIsUUFBQSxPQUFPLElBQUl4QyxVQUFVLENBQUM0QyxXQUFXLENBQUM7QUFDdEM7QUFFQSxJQUFBLEtBQUt0QyxRQUFRLENBQUNrQyxRQUFRLENBQUMsSUFBSSxNQUFNLElBQUlBLFFBQVE7QUFBRSxNQUFBO0FBQzNDLFFBQUEsTUFBTSxDQUFFdEIsR0FBRyxFQUFFQyxLQUFLLEVBQUVDLElBQUksRUFBRUMsS0FBSyxDQUFFLEdBQUdtQixRQUFRLENBQUNLLElBQUksRUFBYztRQUUvRCxPQUFPLElBQUk1QyxTQUFTLENBQUM7VUFBRWlCLEdBQUc7VUFBRUMsS0FBSztVQUFFQyxJQUFJO0FBQUVDLFVBQUFBO0FBQU0sU0FBQyxDQUFDO0FBQ3JEO0lBRUEsS0FBS3lCLGNBQUEsQ0FBY04sUUFBUSxDQUFDO0FBQUUsTUFBQTtBQUMxQixRQUFBLE9BQU8sSUFBSXRDLFFBQVEsQ0FBQzNCLG9CQUFBLENBQUFpRSxRQUFRLEVBQUF4RCxJQUFBLENBQVJ3RCxRQUFRLEVBQUtqQyxLQUFLLElBQUlnQyxvQkFBb0IsQ0FBQ2hDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDM0U7SUFFQSxLQUFLaUMsUUFBUSxZQUFBRixJQUFlO0FBQUUsTUFBQTtBQUFBLFFBQUEsSUFBQTFELFNBQUE7UUFDMUIsTUFBTW9ELFFBQVEsR0FBR1EsUUFBK0M7QUFDaEUsUUFBQSxNQUFNTyxPQUFPLEdBQUcsSUFBSTVDLE9BQU8sRUFBRTtBQUU3QixRQUFBLE1BQU02QyxTQUFTLEdBQUd6RSxvQkFBQSxDQUFBSyxTQUFBLEdBQUF1RCxXQUFBLENBQVdDLHdCQUFBLENBQUFKLFFBQVEsQ0FBQSxDQUFBaEQsSUFBQSxDQUFSZ0QsUUFBaUIsQ0FBQyxDQUFDLENBQUFoRCxDQUFBQSxJQUFBLENBQUFKLFNBQUEsRUFDdkNxRSxLQUFLLElBQUkxRSxvQkFBQSxDQUFBMEUsS0FBSyxDQUFBLENBQUFqRSxJQUFBLENBQUxpRSxLQUFLLEVBQUtWLG9CQUFvQixDQUFDLENBQTJCO1FBRTVFLEtBQUssTUFBTSxDQUFFRixHQUFHLEVBQUU5QixLQUFLLENBQUUsSUFBSXlDLFNBQVMsRUFBRTtVQUNwQ0QsT0FBTyxDQUFDZCxRQUFRLENBQUNpQixHQUFHLENBQUNiLEdBQUcsRUFBRTlCLEtBQUssQ0FBQztBQUNwQztBQUVBLFFBQUEsT0FBT3dDLE9BQU87QUFDbEI7QUFFQSxJQUFBO0FBQVMsTUFBQTtBQUNMLFFBQUEsT0FBT2xELFFBQVE7QUFDbkI7QUFDQTtBQUNKOztBQzVIQTs7QUFTQTtBQUNBLE1BQU1zRCxjQUFjLEdBQUdDLE9BQUEsQ0FBTyxxQ0FBcUMsQ0FBQztBQUU3RCxTQUFTQyxZQUFZQSxDQUFDQyxVQUFrQixFQUFrQjtBQUM3RCxFQUFBLE9BQWdDQyxNQUFTLElBQUs7SUFDMUNDLE9BQU8sQ0FBQ0MsY0FBYyxDQUFDTixjQUFjLEVBQUVHLFVBQVUsRUFBRUMsTUFBTSxDQUFDO0FBRTFELElBQUEsT0FBT0EsTUFBTTtHQUNoQjtBQUNMO0FBRU8sZUFBZUcsWUFBWUEsQ0FDOUIsR0FBR0MsYUFBa0QsRUFDTDtBQUNoRCxFQUFBLE1BQU1DLE9BQU8sR0FBRyxNQUFNQyxRQUFBLENBQVFDLEdBQUcsQ0FDN0J2RixvQkFBQSxDQUFBb0YsYUFBYSxDQUFBLENBQUEzRSxJQUFBLENBQWIyRSxhQUFhLEVBQUtJLE1BQU0sSUFDcEJGLFFBQUEsQ0FBUUcsT0FBTyxDQUFDRCxNQUFNLENBQUMsQ0FDbEJFLElBQUksQ0FBQ0YsTUFBTSxJQUFJQSxNQUFNLENBQUNHLE9BQU8sQ0FDckMsQ0FDTCxDQUFDO0VBRUQsTUFBTWhDLE9BQU8sR0FBRzNELG9CQUFBLENBQUFxRixPQUFPLENBQUE1RSxDQUFBQSxJQUFBLENBQVA0RSxPQUFPLEVBQUtHLE1BQU0sSUFBSTtJQUNsQyxNQUFNSSxTQUFTLEdBQUdYLE9BQU8sQ0FBQ1ksV0FBVyxDQUFDakIsY0FBYyxFQUFFWSxNQUFNLENBQVc7SUFFdkUsZUFBZU0sY0FBY0EsQ0FBQ0MsT0FBbUIsRUFBcUI7TUFDbEUsTUFBTUMsSUFBSSxHQUFHaEcsb0JBQUEsQ0FBQStGLE9BQU8sQ0FBQXRGLENBQUFBLElBQUEsQ0FBUHNGLE9BQU8sRUFBSzdELG9CQUFvQixDQUFDO0FBQzlDLE1BQUEsTUFBTStELE1BQU0sR0FBRyxNQUFNQyxrQkFBQSxDQUFrQlYsTUFBTSxFQUFFUSxJQUFJLENBQUMsQ0FBQ0csT0FBTyxFQUFFO01BRTlELE9BQU9uQyxvQkFBb0IsQ0FBQ2lDLE1BQU0sQ0FBQztBQUN2QztBQUVBLElBQUEsT0FBTyxDQUFFTCxTQUFTLEVBQUVFLGNBQWMsQ0FBRTtBQUN4QyxHQUFDLENBQUM7RUFFRixPQUFPL0YsbUJBQUEsQ0FBbUI0RCxPQUFPLENBQUM7QUFDdEM7Ozs7OyJ9
package/releases/esm.js DELETED
@@ -1,191 +0,0 @@
1
- import _Symbol from 'core-js-pure/stable/symbol/index.js';
2
- import _Promise from 'core-js-pure/stable/promise/index.js';
3
- import _mapInstanceProperty from 'core-js-pure/stable/instance/map.js';
4
- import _Reflect$construct from 'core-js-pure/stable/reflect/construct.js';
5
- import _Object$fromEntries from 'core-js-pure/stable/object/from-entries.js';
6
- import 'reflect-metadata';
7
- import _fillInstanceProperty from 'core-js-pure/stable/instance/fill.js';
8
- import _Array$from from 'core-js-pure/stable/array/from.js';
9
- import _entriesInstanceProperty from 'core-js-pure/stable/instance/entries.js';
10
- import _Map from 'core-js-pure/stable/map/index.js';
11
- import _everyInstanceProperty from 'core-js-pure/stable/instance/every.js';
12
- import _Array$isArray from 'core-js-pure/stable/array/is-array.js';
13
- import chroma from 'chroma-js';
14
- import _filterInstanceProperty from 'core-js-pure/stable/instance/filter.js';
15
- import _Object$keys from 'core-js-pure/stable/object/keys.js';
16
- import _startsWithInstanceProperty from 'core-js-pure/stable/instance/starts-with.js';
17
- import _Object$getPrototypeOf from 'core-js-pure/stable/object/get-prototype-of.js';
18
- import * as sass from 'sass';
19
- import { Value } from 'sass';
20
-
21
- var _context, _context2, _context3, _context4, _context5;
22
-
23
- // Type definitions.
24
-
25
- const SassTypes = _Object$fromEntries(_mapInstanceProperty(_context = _filterInstanceProperty(_context2 = _filterInstanceProperty(_context3 = _mapInstanceProperty(_context4 = _filterInstanceProperty(_context5 = _Object$keys(sass)).call(_context5, propertyKey => _startsWithInstanceProperty(propertyKey).call(propertyKey, 'Sass'))).call(_context4, propertyKey => sass[propertyKey])).call(_context3, constructor => typeof constructor === 'function')).call(_context2, constructor => Object.prototype.isPrototypeOf.call(Value.prototype, constructor.prototype))).call(_context, constructor => [constructor.name, constructor]));
26
- const SassTRUE = sass.sassTrue;
27
- const SassFALSE = sass.sassFalse;
28
- const SassNULL = sass.sassNull;
29
- const {
30
- SassNumber
31
- } = SassTypes;
32
- const {
33
- SassString
34
- } = SassTypes;
35
- const {
36
- SassColor
37
- } = SassTypes;
38
- const {
39
- SassList
40
- } = SassTypes;
41
- const {
42
- SassMap
43
- } = SassTypes;
44
- const SassBoolean = _Object$getPrototypeOf(SassTRUE).constructor;
45
-
46
- // Helper functions.
47
- function isObject(value) {
48
- const type = typeof value;
49
- return !!value && (type === 'object' || type === 'function');
50
- }
51
- function sassToJavaScriptType(sassValue) {
52
- switch (true) {
53
- case sassValue instanceof SassBoolean:
54
- {
55
- return sassValue.value;
56
- }
57
- case sassValue instanceof SassString:
58
- {
59
- return sassValue.text;
60
- }
61
- case sassValue instanceof SassNumber:
62
- {
63
- const {
64
- value,
65
- numeratorUnits,
66
- denominatorUnits
67
- } = sassValue;
68
- const unit = sassValue.hasUnits ? numeratorUnits.join('*') + (denominatorUnits.size > 0 ? `/${denominatorUnits.join('*')}` : '') : '';
69
- return unit ? {
70
- value,
71
- unit
72
- } : value;
73
- }
74
- case sassValue instanceof SassColor:
75
- {
76
- const {
77
- red,
78
- green,
79
- blue,
80
- alpha
81
- } = sassValue;
82
- return chroma(red, green, blue, alpha);
83
- }
84
- case sassValue instanceof SassList:
85
- {
86
- var _context;
87
- const listValue = sassValue.asList;
88
- const length = listValue.size;
89
- const array = _fillInstanceProperty(_context = Array(length)).call(_context, undefined);
90
- for (let index = 0; index < length; index += 1) {
91
- array[index] = listValue.get(index);
92
- }
93
- return _mapInstanceProperty(array).call(array, value => sassToJavaScriptType(value));
94
- }
95
- case sassValue instanceof SassMap:
96
- {
97
- var _context2;
98
- const mapValue = sassValue.contents;
99
- const entries = _mapInstanceProperty(_context2 = _Array$from(_entriesInstanceProperty(mapValue).call(mapValue))).call(_context2, ([key, value]) => [sassToJavaScriptType(key), sassToJavaScriptType(value)]);
100
- return new _Map(entries);
101
- }
102
- default:
103
- {
104
- return null;
105
- }
106
- }
107
- }
108
- function javaScriptToSassType(rawValue) {
109
- var _context3;
110
- switch (true) {
111
- case typeof rawValue === 'boolean':
112
- {
113
- const booleanValue = rawValue;
114
- return booleanValue ? SassTRUE : SassFALSE;
115
- }
116
- case typeof rawValue === 'number':
117
- {
118
- const numberValue = rawValue;
119
- return new SassNumber(numberValue);
120
- }
121
- case isObject(rawValue) && _everyInstanceProperty(_context3 = ['value', 'unit']).call(_context3, propertyKey => propertyKey in rawValue):
122
- {
123
- const {
124
- value,
125
- unit
126
- } = rawValue;
127
- return new SassNumber(value, unit);
128
- }
129
- case typeof rawValue === 'string':
130
- {
131
- const stringValue = rawValue;
132
- return new SassString(stringValue);
133
- }
134
- case isObject(rawValue) && '_rgb' in rawValue:
135
- {
136
- const [red, green, blue, alpha] = rawValue.rgba();
137
- return new SassColor({
138
- red,
139
- green,
140
- blue,
141
- alpha
142
- });
143
- }
144
- case _Array$isArray(rawValue):
145
- {
146
- return new SassList(_mapInstanceProperty(rawValue).call(rawValue, value => javaScriptToSassType(value)));
147
- }
148
- case rawValue instanceof _Map:
149
- {
150
- var _context4;
151
- const mapValue = rawValue;
152
- const sassMap = new SassMap();
153
- const converted = _mapInstanceProperty(_context4 = _Array$from(_entriesInstanceProperty(mapValue).call(mapValue))).call(_context4, entry => _mapInstanceProperty(entry).call(entry, javaScriptToSassType));
154
- for (const [key, value] of converted) {
155
- sassMap.contents.set(key, value);
156
- }
157
- return sassMap;
158
- }
159
- default:
160
- {
161
- return SassNULL;
162
- }
163
- }
164
- }
165
-
166
- // Type definitions.
167
-
168
- // Constants.
169
- const KeyOfSignature = _Symbol('@cichol/sass-bridge::KeyOfSignature');
170
- function sassFunction(definition) {
171
- return target => {
172
- Reflect.defineMetadata(KeyOfSignature, definition, target);
173
- return target;
174
- };
175
- }
176
- async function getFunctions(...moduleImports) {
177
- const modules = await _Promise.all(_mapInstanceProperty(moduleImports).call(moduleImports, module => _Promise.resolve(module).then(module => module.default)));
178
- const entries = _mapInstanceProperty(modules).call(modules, module => {
179
- const signature = Reflect.getMetadata(KeyOfSignature, module);
180
- async function customFunction(rawArgs) {
181
- const args = _mapInstanceProperty(rawArgs).call(rawArgs, sassToJavaScriptType);
182
- const result = await _Reflect$construct(module, args).execute();
183
- return javaScriptToSassType(result);
184
- }
185
- return [signature, customFunction];
186
- });
187
- return _Object$fromEntries(entries);
188
- }
189
-
190
- export { getFunctions, sassFunction };
191
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNtLmpzIiwic291cmNlcyI6WyIuLi9zb3VyY2VzL3R5cGVzLnRzIiwiLi4vc291cmNlcy90eXBlLWNvbnZlcnRlci50cyIsIi4uL3NvdXJjZXMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcmQtcGFydHkgbW9kdWxlcy5cbmltcG9ydCB0eXBlIHsgQ29sb3IgfSBmcm9tICdjaHJvbWEtanMnO1xuaW1wb3J0ICogYXMgc2FzcyBmcm9tICdzYXNzJztcbmltcG9ydCB7IFZhbHVlIH0gZnJvbSAnc2Fzcyc7XG5cbi8vIFR5cGUgZGVmaW5pdGlvbnMuXG5leHBvcnQgdHlwZSBQcmltaXRpdmVzID0gYm9vbGVhbiB8IG51bWJlciB8IHN0cmluZztcblxuZXhwb3J0IHR5cGUgTnVtYmVyV2l0aFVuaXQgPSB7IHZhbHVlOiBudW1iZXIsIHVuaXQ6IHN0cmluZyB9O1xuXG5leHBvcnQgdHlwZSBKYXZhU2NyaXB0VHlwZTxCYXNlID0gUHJpbWl0aXZlcyB8IENvbG9yIHwgTnVtYmVyV2l0aFVuaXQgfCBudWxsPiA9XG4gICAgfCBCYXNlXG4gICAgfCBKYXZhU2NyaXB0VHlwZTxCYXNlPltdXG4gICAgfCBNYXA8SmF2YVNjcmlwdFR5cGU8QmFzZT4sIEphdmFTY3JpcHRUeXBlPEJhc2U+PjtcblxudHlwZSBGaWx0ZXJTYXNzUHJlZml4PFQgZXh0ZW5kcyBzdHJpbmc+ID0gVCBleHRlbmRzIGBTYXNzJHtpbmZlciBSfWAgPyBSIDogbmV2ZXI7XG5cbnR5cGUgU2Fzc1R5cGVzID0gRXhjbHVkZTxgU2FzcyR7RmlsdGVyU2Fzc1ByZWZpeDxrZXlvZiB0eXBlb2Ygc2Fzcz59YCwgYFNhc3MkeydCb29sZWFuJyB8ICdDYWxjdWxhdGlvbid9YD47XG5cbmNvbnN0IFNhc3NUeXBlcyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3Qua2V5cyhzYXNzKVxuICAgICAgICAuZmlsdGVyKHByb3BlcnR5S2V5ID0+IHByb3BlcnR5S2V5LnN0YXJ0c1dpdGgoJ1Nhc3MnKSlcbiAgICAgICAgLm1hcChwcm9wZXJ0eUtleSA9PiBzYXNzW3Byb3BlcnR5S2V5IGFzIFNhc3NUeXBlc10pXG4gICAgICAgIC5maWx0ZXIoY29uc3RydWN0b3IgPT4gdHlwZW9mIGNvbnN0cnVjdG9yID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAuZmlsdGVyKGNvbnN0cnVjdG9yID0+IE9iamVjdC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZi5jYWxsKFZhbHVlLnByb3RvdHlwZSwgY29uc3RydWN0b3IucHJvdG90eXBlKSlcbiAgICAgICAgLm1hcChjb25zdHJ1Y3RvciA9PiBbIGNvbnN0cnVjdG9yLm5hbWUsIGNvbnN0cnVjdG9yIF0gYXMgW1Nhc3NUeXBlcywgKHR5cGVvZiBzYXNzKVtTYXNzVHlwZXNdXSlcbikgYXMgeyBbUCBpbiBTYXNzVHlwZXNdOiAodHlwZW9mIHNhc3MpW1BdIH07XG5cbmV4cG9ydCBjb25zdCBTYXNzVFJVRSA9IHNhc3Muc2Fzc1RydWU7XG5leHBvcnQgdHlwZSBTYXNzVFJVRSA9IHR5cGVvZiBTYXNzVFJVRTtcblxuZXhwb3J0IGNvbnN0IFNhc3NGQUxTRSA9IHNhc3Muc2Fzc0ZhbHNlO1xuZXhwb3J0IHR5cGUgU2Fzc0ZBTFNFID0gdHlwZW9mIFNhc3NGQUxTRTtcblxuZXhwb3J0IGNvbnN0IFNhc3NOVUxMID0gc2Fzcy5zYXNzTnVsbDtcbmV4cG9ydCB0eXBlIFNhc3NOVUxMID0gdHlwZW9mIFNhc3NOVUxMO1xuXG5leHBvcnQgY29uc3QgeyBTYXNzTnVtYmVyIH0gPSBTYXNzVHlwZXM7XG5leHBvcnQgdHlwZSBTYXNzTnVtYmVyID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzTnVtYmVyPjtcblxuZXhwb3J0IGNvbnN0IHsgU2Fzc1N0cmluZyB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc1N0cmluZyA9IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc1N0cmluZz47XG5cbmV4cG9ydCBjb25zdCB7IFNhc3NDb2xvciB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc0NvbG9yID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzQ29sb3I+O1xuXG5leHBvcnQgY29uc3QgeyBTYXNzTGlzdCB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc0xpc3QgPSBJbnN0YW5jZVR5cGU8dHlwZW9mIFNhc3NMaXN0PjtcblxuZXhwb3J0IGNvbnN0IHsgU2Fzc01hcCB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc01hcCA9IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc01hcD47XG5cbmV4cG9ydCBjb25zdCBTYXNzQm9vbGVhbiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihTYXNzVFJVRSkuY29uc3RydWN0b3IgYXMgdHlwZW9mIHNhc3MuU2Fzc0Jvb2xlYW47XG5leHBvcnQgdHlwZSBTYXNzQm9vbGVhbiA9IHNhc3MuU2Fzc0Jvb2xlYW47XG5cbmV4cG9ydCB0eXBlIFNhc3NUeXBlID1cbiAgICB8IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc1R5cGVzIGV4dGVuZHMgUmVjb3JkPGFueSwgaW5mZXIgUj4gPyBSIDogbmV2ZXI+XG4gICAgfCBTYXNzQm9vbGVhbjtcbiIsIi8vIFRoaXJkLXBhcnR5IG1vZHVsZXMuXG5pbXBvcnQgY2hyb21hIGZyb20gJ2Nocm9tYS1qcyc7XG5cbi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQge1xuICAgIHR5cGUgU2Fzc1R5cGUsXG4gICAgU2Fzc0Jvb2xlYW4sXG4gICAgU2Fzc051bWJlcixcbiAgICBTYXNzU3RyaW5nLFxuICAgIFNhc3NDb2xvcixcbiAgICBTYXNzTGlzdCxcbiAgICBTYXNzTWFwLFxuICAgIFNhc3NUUlVFLFxuICAgIFNhc3NGQUxTRSxcbiAgICBTYXNzTlVMTCxcbiAgICB0eXBlIEphdmFTY3JpcHRUeXBlLFxuICAgIHR5cGUgTnVtYmVyV2l0aFVuaXRcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbnMuXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZT86IHVua25vd24pOiB2YWx1ZSBpcyBvYmplY3Qge1xuICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWU7XG5cbiAgICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PT0gJ29iamVjdCcgfHwgdHlwZSA9PT0gJ2Z1bmN0aW9uJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXNzVG9KYXZhU2NyaXB0VHlwZShzYXNzVmFsdWU6IFNhc3NUeXBlKTogSmF2YVNjcmlwdFR5cGUge1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc0Jvb2xlYW46IHtcbiAgICAgICAgcmV0dXJuIHNhc3NWYWx1ZS52YWx1ZTtcbiAgICB9XG5cbiAgICBjYXNlIHNhc3NWYWx1ZSBpbnN0YW5jZW9mIFNhc3NTdHJpbmc6IHtcbiAgICAgICAgcmV0dXJuIHNhc3NWYWx1ZS50ZXh0O1xuICAgIH1cblxuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc051bWJlcjoge1xuICAgICAgICBjb25zdCB7IHZhbHVlLCBudW1lcmF0b3JVbml0cywgZGVub21pbmF0b3JVbml0cyB9ID0gc2Fzc1ZhbHVlO1xuXG4gICAgICAgIGNvbnN0IHVuaXQgPSBzYXNzVmFsdWUuaGFzVW5pdHNcbiAgICAgICAgICAgID8gbnVtZXJhdG9yVW5pdHMuam9pbignKicpICsgKGRlbm9taW5hdG9yVW5pdHMuc2l6ZSA+IDAgPyBgLyR7ZGVub21pbmF0b3JVbml0cy5qb2luKCcqJyl9YCA6ICcnKVxuICAgICAgICAgICAgOiAnJztcblxuICAgICAgICByZXR1cm4gdW5pdCA/IHsgdmFsdWUsIHVuaXQgfSA6IHZhbHVlO1xuICAgIH1cblxuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc0NvbG9yOiB7XG4gICAgICAgIGNvbnN0IHsgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEgfSA9IHNhc3NWYWx1ZTtcblxuICAgICAgICByZXR1cm4gY2hyb21hKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTtcbiAgICB9XG5cbiAgICBjYXNlIHNhc3NWYWx1ZSBpbnN0YW5jZW9mIFNhc3NMaXN0OiB7XG4gICAgICAgIGNvbnN0IGxpc3RWYWx1ZSA9IHNhc3NWYWx1ZS5hc0xpc3Q7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGxpc3RWYWx1ZS5zaXplO1xuICAgICAgICBjb25zdCBhcnJheSA9IEFycmF5KGxlbmd0aCkuZmlsbCh1bmRlZmluZWQpIGFzIFNhc3NUeXBlW107XG5cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgICAgYXJyYXlbaW5kZXhdID0gbGlzdFZhbHVlLmdldChpbmRleCkgYXMgU2Fzc1R5cGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXJyYXkubWFwKHZhbHVlID0+IHNhc3NUb0phdmFTY3JpcHRUeXBlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgY2FzZSBzYXNzVmFsdWUgaW5zdGFuY2VvZiBTYXNzTWFwOiB7XG4gICAgICAgIGNvbnN0IG1hcFZhbHVlID0gc2Fzc1ZhbHVlLmNvbnRlbnRzO1xuXG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBBcnJheS5mcm9tKG1hcFZhbHVlLmVudHJpZXMoKSBhcyBJdGVyYWJsZUl0ZXJhdG9yPFtTYXNzVHlwZSwgU2Fzc1R5cGVdPilcbiAgICAgICAgICAgIC5tYXAoKFsga2V5LCB2YWx1ZSBdKSA9PiBbIHNhc3NUb0phdmFTY3JpcHRUeXBlKGtleSksIHNhc3NUb0phdmFTY3JpcHRUeXBlKHZhbHVlKSBdKTtcblxuICAgICAgICByZXR1cm4gbmV3IE1hcChlbnRyaWVzIGFzIFtKYXZhU2NyaXB0VHlwZSwgSmF2YVNjcmlwdFR5cGVdW10pO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGphdmFTY3JpcHRUb1Nhc3NUeXBlKHJhd1ZhbHVlOiBKYXZhU2NyaXB0VHlwZSk6IFNhc3NUeXBlIHtcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICBjYXNlIHR5cGVvZiByYXdWYWx1ZSA9PT0gJ2Jvb2xlYW4nOiB7XG4gICAgICAgIGNvbnN0IGJvb2xlYW5WYWx1ZSA9IHJhd1ZhbHVlO1xuXG4gICAgICAgIHJldHVybiBib29sZWFuVmFsdWUgPyBTYXNzVFJVRSA6IFNhc3NGQUxTRTtcbiAgICB9XG5cbiAgICBjYXNlIHR5cGVvZiByYXdWYWx1ZSA9PT0gJ251bWJlcic6IHtcbiAgICAgICAgY29uc3QgbnVtYmVyVmFsdWUgPSByYXdWYWx1ZTtcblxuICAgICAgICByZXR1cm4gbmV3IFNhc3NOdW1iZXIobnVtYmVyVmFsdWUpO1xuICAgIH1cblxuICAgIGNhc2UgaXNPYmplY3QocmF3VmFsdWUpICYmIFsgJ3ZhbHVlJywgJ3VuaXQnIF0uZXZlcnkocHJvcGVydHlLZXkgPT4gcHJvcGVydHlLZXkgaW4gcmF3VmFsdWUpOiB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIHVuaXQgfSA9IHJhd1ZhbHVlIGFzIE51bWJlcldpdGhVbml0O1xuXG4gICAgICAgIHJldHVybiBuZXcgU2Fzc051bWJlcih2YWx1ZSwgdW5pdCk7XG4gICAgfVxuXG4gICAgY2FzZSB0eXBlb2YgcmF3VmFsdWUgPT09ICdzdHJpbmcnOiB7XG4gICAgICAgIGNvbnN0IHN0cmluZ1ZhbHVlID0gcmF3VmFsdWU7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBTYXNzU3RyaW5nKHN0cmluZ1ZhbHVlKTtcbiAgICB9XG5cbiAgICBjYXNlIGlzT2JqZWN0KHJhd1ZhbHVlKSAmJiAnX3JnYicgaW4gcmF3VmFsdWU6IHtcbiAgICAgICAgY29uc3QgWyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSBdID0gcmF3VmFsdWUucmdiYSgpIGFzIG51bWJlcltdO1xuXG4gICAgICAgIHJldHVybiBuZXcgU2Fzc0NvbG9yKHsgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEgfSk7XG4gICAgfVxuXG4gICAgY2FzZSBBcnJheS5pc0FycmF5KHJhd1ZhbHVlKToge1xuICAgICAgICByZXR1cm4gbmV3IFNhc3NMaXN0KHJhd1ZhbHVlLm1hcCh2YWx1ZSA9PiBqYXZhU2NyaXB0VG9TYXNzVHlwZSh2YWx1ZSkpKTtcbiAgICB9XG5cbiAgICBjYXNlIHJhd1ZhbHVlIGluc3RhbmNlb2YgTWFwOiB7XG4gICAgICAgIGNvbnN0IG1hcFZhbHVlID0gcmF3VmFsdWUgYXMgTWFwPEphdmFTY3JpcHRUeXBlLCBKYXZhU2NyaXB0VHlwZT47XG4gICAgICAgIGNvbnN0IHNhc3NNYXAgPSBuZXcgU2Fzc01hcCgpO1xuXG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZCA9IEFycmF5LmZyb20obWFwVmFsdWUuZW50cmllcygpKVxuICAgICAgICAgICAgLm1hcChlbnRyeSA9PiBlbnRyeS5tYXAoamF2YVNjcmlwdFRvU2Fzc1R5cGUpKSBhcyBbU2Fzc1R5cGUsIFNhc3NUeXBlXVtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgY29udmVydGVkKSB7XG4gICAgICAgICAgICBzYXNzTWFwLmNvbnRlbnRzLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzYXNzTWFwO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIFNhc3NOVUxMO1xuICAgIH1cbiAgICB9XG59XG4iLCJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuXG4vLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgQ3VzdG9tRnVuY3Rpb24gfSBmcm9tICdzYXNzJztcblxuLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCB0eXBlIHsgU2Fzc1R5cGUsIEphdmFTY3JpcHRUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBzYXNzVG9KYXZhU2NyaXB0VHlwZSwgamF2YVNjcmlwdFRvU2Fzc1R5cGUgfSBmcm9tICcuL3R5cGUtY29udmVydGVyJztcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbmV4cG9ydCBpbnRlcmZhY2UgQnJpZGdlZEZ1bmN0aW9uIHtcbiAgICBleGVjdXRlKCk6IEphdmFTY3JpcHRUeXBlIHwgUHJvbWlzZTxKYXZhU2NyaXB0VHlwZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0b3Ige1xuICAgIG5ldyAoLi4uYXJnczogSmF2YVNjcmlwdFR5cGVbXSk6IEJyaWRnZWRGdW5jdGlvbjtcbn1cblxuLy8gQ29uc3RhbnRzLlxuY29uc3QgS2V5T2ZTaWduYXR1cmUgPSBTeW1ib2woJ0BjaWNob2wvc2Fzcy1icmlkZ2U6OktleU9mU2lnbmF0dXJlJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXNzRnVuY3Rpb24oZGVmaW5pdGlvbjogc3RyaW5nKTogQ2xhc3NEZWNvcmF0b3Ige1xuICAgIHJldHVybiAoPFQgZXh0ZW5kcyBDb25zdHJ1Y3Rvcj4odGFyZ2V0OiBUKSA9PiB7XG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoS2V5T2ZTaWduYXR1cmUsIGRlZmluaXRpb24sIHRhcmdldCk7XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9KSBhcyBDbGFzc0RlY29yYXRvcjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEZ1bmN0aW9ucyhcbiAgICAuLi5tb2R1bGVJbXBvcnRzOiBQcm9taXNlPHsgZGVmYXVsdDogQ29uc3RydWN0b3IgfT5bXVxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBDdXN0b21GdW5jdGlvbjwnYXN5bmMnPj4+IHtcbiAgICBjb25zdCBtb2R1bGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG1vZHVsZUltcG9ydHMubWFwKG1vZHVsZSA9PiAoXG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUobW9kdWxlKVxuICAgICAgICAgICAgICAgIC50aGVuKG1vZHVsZSA9PiBtb2R1bGUuZGVmYXVsdClcbiAgICAgICAgKSlcbiAgICApO1xuXG4gICAgY29uc3QgZW50cmllcyA9IG1vZHVsZXMubWFwKG1vZHVsZSA9PiB7XG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoS2V5T2ZTaWduYXR1cmUsIG1vZHVsZSkgYXMgc3RyaW5nO1xuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGN1c3RvbUZ1bmN0aW9uKHJhd0FyZ3M6IFNhc3NUeXBlW10pOiBQcm9taXNlPFNhc3NUeXBlPiB7XG4gICAgICAgICAgICBjb25zdCBhcmdzID0gcmF3QXJncy5tYXAoc2Fzc1RvSmF2YVNjcmlwdFR5cGUpO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUmVmbGVjdC5jb25zdHJ1Y3QobW9kdWxlLCBhcmdzKS5leGVjdXRlKCk7XG5cbiAgICAgICAgICAgIHJldHVybiBqYXZhU2NyaXB0VG9TYXNzVHlwZShyZXN1bHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFsgc2lnbmF0dXJlLCBjdXN0b21GdW5jdGlvbiBdIGFzIGNvbnN0O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhlbnRyaWVzKTtcbn1cbiJdLCJuYW1lcyI6WyJTYXNzVHlwZXMiLCJfT2JqZWN0JGZyb21FbnRyaWVzIiwiX21hcEluc3RhbmNlUHJvcGVydHkiLCJfY29udGV4dCIsIl9maWx0ZXJJbnN0YW5jZVByb3BlcnR5IiwiX2NvbnRleHQyIiwiX2NvbnRleHQzIiwiX2NvbnRleHQ0IiwiX2NvbnRleHQ1IiwiX09iamVjdCRrZXlzIiwic2FzcyIsImNhbGwiLCJwcm9wZXJ0eUtleSIsIl9zdGFydHNXaXRoSW5zdGFuY2VQcm9wZXJ0eSIsImNvbnN0cnVjdG9yIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaXNQcm90b3R5cGVPZiIsIlZhbHVlIiwibmFtZSIsIlNhc3NUUlVFIiwic2Fzc1RydWUiLCJTYXNzRkFMU0UiLCJzYXNzRmFsc2UiLCJTYXNzTlVMTCIsInNhc3NOdWxsIiwiU2Fzc051bWJlciIsIlNhc3NTdHJpbmciLCJTYXNzQ29sb3IiLCJTYXNzTGlzdCIsIlNhc3NNYXAiLCJTYXNzQm9vbGVhbiIsIl9PYmplY3QkZ2V0UHJvdG90eXBlT2YiLCJpc09iamVjdCIsInZhbHVlIiwidHlwZSIsInNhc3NUb0phdmFTY3JpcHRUeXBlIiwic2Fzc1ZhbHVlIiwidGV4dCIsIm51bWVyYXRvclVuaXRzIiwiZGVub21pbmF0b3JVbml0cyIsInVuaXQiLCJoYXNVbml0cyIsImpvaW4iLCJzaXplIiwicmVkIiwiZ3JlZW4iLCJibHVlIiwiYWxwaGEiLCJjaHJvbWEiLCJsaXN0VmFsdWUiLCJhc0xpc3QiLCJsZW5ndGgiLCJhcnJheSIsIl9maWxsSW5zdGFuY2VQcm9wZXJ0eSIsIkFycmF5IiwidW5kZWZpbmVkIiwiaW5kZXgiLCJnZXQiLCJtYXBWYWx1ZSIsImNvbnRlbnRzIiwiZW50cmllcyIsIl9BcnJheSRmcm9tIiwiX2VudHJpZXNJbnN0YW5jZVByb3BlcnR5Iiwia2V5IiwiX01hcCIsImphdmFTY3JpcHRUb1Nhc3NUeXBlIiwicmF3VmFsdWUiLCJib29sZWFuVmFsdWUiLCJudW1iZXJWYWx1ZSIsIl9ldmVyeUluc3RhbmNlUHJvcGVydHkiLCJzdHJpbmdWYWx1ZSIsInJnYmEiLCJfQXJyYXkkaXNBcnJheSIsInNhc3NNYXAiLCJjb252ZXJ0ZWQiLCJlbnRyeSIsInNldCIsIktleU9mU2lnbmF0dXJlIiwiX1N5bWJvbCIsInNhc3NGdW5jdGlvbiIsImRlZmluaXRpb24iLCJ0YXJnZXQiLCJSZWZsZWN0IiwiZGVmaW5lTWV0YWRhdGEiLCJnZXRGdW5jdGlvbnMiLCJtb2R1bGVJbXBvcnRzIiwibW9kdWxlcyIsIl9Qcm9taXNlIiwiYWxsIiwibW9kdWxlIiwicmVzb2x2ZSIsInRoZW4iLCJkZWZhdWx0Iiwic2lnbmF0dXJlIiwiZ2V0TWV0YWRhdGEiLCJjdXN0b21GdW5jdGlvbiIsInJhd0FyZ3MiLCJhcmdzIiwicmVzdWx0IiwiX1JlZmxlY3QkY29uc3RydWN0IiwiZXhlY3V0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUtBOztBQWNBLE1BQU1BLFNBQVMsR0FBR0MsbUJBQUEsQ0FDZEMsb0JBQUEsQ0FBQUMsUUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxTQUFBLEdBQUFELHVCQUFBLENBQUFFLFNBQUEsR0FBQUosb0JBQUEsQ0FBQUssU0FBQSxHQUFBSCx1QkFBQSxDQUFBSSxTQUFBLEdBQUFDLFlBQUEsQ0FBWUMsSUFBSSxDQUFDLENBQUEsQ0FBQUMsSUFBQSxDQUFBSCxTQUFBLEVBQ0xJLFdBQVcsSUFBSUMsMkJBQUEsQ0FBQUQsV0FBVyxDQUFBRCxDQUFBQSxJQUFBLENBQVhDLFdBQVcsRUFBWSxNQUFNLENBQUMsQ0FBQyxDQUFBLENBQUFELElBQUEsQ0FBQUosU0FBQSxFQUNqREssV0FBVyxJQUFJRixJQUFJLENBQUNFLFdBQVcsQ0FBYyxDQUFDLENBQUEsQ0FBQUQsSUFBQSxDQUFBTCxTQUFBLEVBQzNDUSxXQUFXLElBQUksT0FBT0EsV0FBVyxLQUFLLFVBQVUsQ0FBQyxDQUFBLENBQUFILElBQUEsQ0FBQU4sU0FBQSxFQUNqRFMsV0FBVyxJQUFJQyxNQUFNLENBQUNDLFNBQVMsQ0FBQ0MsYUFBYSxDQUFDTixJQUFJLENBQUNPLEtBQUssQ0FBQ0YsU0FBUyxFQUFFRixXQUFXLENBQUNFLFNBQVMsQ0FBQyxDQUFDLENBQUFMLENBQUFBLElBQUEsQ0FBQVIsUUFBQSxFQUM5RlcsV0FBVyxJQUFJLENBQUVBLFdBQVcsQ0FBQ0ssSUFBSSxFQUFFTCxXQUFXLENBQTJDLENBQ3RHLENBQTJDO0FBRXBDLE1BQU1NLFFBQVEsR0FBR1YsSUFBSSxDQUFDVyxRQUFRO0FBRzlCLE1BQU1DLFNBQVMsR0FBR1osSUFBSSxDQUFDYSxTQUFTO0FBR2hDLE1BQU1DLFFBQVEsR0FBR2QsSUFBSSxDQUFDZSxRQUFRO0FBRzlCLE1BQU07QUFBRUMsRUFBQUE7QUFBVyxDQUFDLEdBQUcxQixTQUFTO0FBR2hDLE1BQU07QUFBRTJCLEVBQUFBO0FBQVcsQ0FBQyxHQUFHM0IsU0FBUztBQUdoQyxNQUFNO0FBQUU0QixFQUFBQTtBQUFVLENBQUMsR0FBRzVCLFNBQVM7QUFHL0IsTUFBTTtBQUFFNkIsRUFBQUE7QUFBUyxDQUFDLEdBQUc3QixTQUFTO0FBRzlCLE1BQU07QUFBRThCLEVBQUFBO0FBQVEsQ0FBQyxHQUFHOUIsU0FBUztBQUc3QixNQUFNK0IsV0FBVyxHQUFHQyxzQkFBQSxDQUFzQlosUUFBUSxDQUFDLENBQUNOLFdBQXNDOztBQ2pDakc7QUFDQSxTQUFTbUIsUUFBUUEsQ0FBQ0MsS0FBZSxFQUFtQjtFQUNoRCxNQUFNQyxJQUFJLEdBQUcsT0FBT0QsS0FBSztFQUV6QixPQUFPLENBQUMsQ0FBQ0EsS0FBSyxLQUFLQyxJQUFJLEtBQUssUUFBUSxJQUFJQSxJQUFJLEtBQUssVUFBVSxDQUFDO0FBQ2hFO0FBRU8sU0FBU0Msb0JBQW9CQSxDQUFDQyxTQUFtQixFQUFrQjtBQUN0RSxFQUFBLFFBQVEsSUFBSTtJQUNaLEtBQUtBLFNBQVMsWUFBWU4sV0FBVztBQUFFLE1BQUE7UUFDbkMsT0FBT00sU0FBUyxDQUFDSCxLQUFLO0FBQzFCO0lBRUEsS0FBS0csU0FBUyxZQUFZVixVQUFVO0FBQUUsTUFBQTtRQUNsQyxPQUFPVSxTQUFTLENBQUNDLElBQUk7QUFDekI7SUFFQSxLQUFLRCxTQUFTLFlBQVlYLFVBQVU7QUFBRSxNQUFBO1FBQ2xDLE1BQU07VUFBRVEsS0FBSztVQUFFSyxjQUFjO0FBQUVDLFVBQUFBO0FBQWlCLFNBQUMsR0FBR0gsU0FBUztBQUU3RCxRQUFBLE1BQU1JLElBQUksR0FBR0osU0FBUyxDQUFDSyxRQUFRLEdBQ3pCSCxjQUFjLENBQUNJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSUgsZ0JBQWdCLENBQUNJLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBSUosQ0FBQUEsRUFBQUEsZ0JBQWdCLENBQUNHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBRSxDQUFBLEdBQUcsRUFBRSxDQUFDLEdBQzlGLEVBQUU7QUFFUixRQUFBLE9BQU9GLElBQUksR0FBRztVQUFFUCxLQUFLO0FBQUVPLFVBQUFBO0FBQUssU0FBQyxHQUFHUCxLQUFLO0FBQ3pDO0lBRUEsS0FBS0csU0FBUyxZQUFZVCxTQUFTO0FBQUUsTUFBQTtRQUNqQyxNQUFNO1VBQUVpQixHQUFHO1VBQUVDLEtBQUs7VUFBRUMsSUFBSTtBQUFFQyxVQUFBQTtBQUFNLFNBQUMsR0FBR1gsU0FBUztRQUU3QyxPQUFPWSxNQUFNLENBQUNKLEdBQUcsRUFBRUMsS0FBSyxFQUFFQyxJQUFJLEVBQUVDLEtBQUssQ0FBQztBQUMxQztJQUVBLEtBQUtYLFNBQVMsWUFBWVIsUUFBUTtBQUFFLE1BQUE7QUFBQSxRQUFBLElBQUExQixRQUFBO0FBQ2hDLFFBQUEsTUFBTStDLFNBQVMsR0FBR2IsU0FBUyxDQUFDYyxNQUFNO0FBQ2xDLFFBQUEsTUFBTUMsTUFBTSxHQUFHRixTQUFTLENBQUNOLElBQUk7QUFDN0IsUUFBQSxNQUFNUyxLQUFLLEdBQUdDLHFCQUFBLENBQUFuRCxRQUFBLEdBQUFvRCxLQUFLLENBQUNILE1BQU0sQ0FBQyxFQUFBekMsSUFBQSxDQUFBUixRQUFBLEVBQU1xRCxTQUFTLENBQWU7QUFFekQsUUFBQSxLQUFLLElBQUlDLEtBQUssR0FBRyxDQUFDLEVBQUVBLEtBQUssR0FBR0wsTUFBTSxFQUFFSyxLQUFLLElBQUksQ0FBQyxFQUFFO1VBQzVDSixLQUFLLENBQUNJLEtBQUssQ0FBQyxHQUFHUCxTQUFTLENBQUNRLEdBQUcsQ0FBQ0QsS0FBSyxDQUFhO0FBQ25EO0FBRUEsUUFBQSxPQUFPdkQsb0JBQUEsQ0FBQW1ELEtBQUssQ0FBQSxDQUFBMUMsSUFBQSxDQUFMMEMsS0FBSyxFQUFLbkIsS0FBSyxJQUFJRSxvQkFBb0IsQ0FBQ0YsS0FBSyxDQUFDLENBQUM7QUFDMUQ7SUFFQSxLQUFLRyxTQUFTLFlBQVlQLE9BQU87QUFBRSxNQUFBO0FBQUEsUUFBQSxJQUFBekIsU0FBQTtBQUMvQixRQUFBLE1BQU1zRCxRQUFRLEdBQUd0QixTQUFTLENBQUN1QixRQUFRO0FBRW5DLFFBQUEsTUFBTUMsT0FBTyxHQUFHM0Qsb0JBQUEsQ0FBQUcsU0FBQSxHQUFBeUQsV0FBQSxDQUFXQyx3QkFBQSxDQUFBSixRQUFRLEVBQUFoRCxJQUFBLENBQVJnRCxRQUFpQixDQUEyQyxDQUFDLEVBQUFoRCxJQUFBLENBQUFOLFNBQUEsRUFDL0UsQ0FBQyxDQUFFMkQsR0FBRyxFQUFFOUIsS0FBSyxDQUFFLEtBQUssQ0FBRUUsb0JBQW9CLENBQUM0QixHQUFHLENBQUMsRUFBRTVCLG9CQUFvQixDQUFDRixLQUFLLENBQUMsQ0FBRSxDQUFDO0FBRXhGLFFBQUEsT0FBTyxJQUFBK0IsSUFBQSxDQUFRSixPQUE2QyxDQUFDO0FBQ2pFO0FBRUEsSUFBQTtBQUFTLE1BQUE7QUFDTCxRQUFBLE9BQU8sSUFBSTtBQUNmO0FBQ0E7QUFDSjtBQUVPLFNBQVNLLG9CQUFvQkEsQ0FBQ0MsUUFBd0IsRUFBWTtBQUFBLEVBQUEsSUFBQTdELFNBQUE7QUFDckUsRUFBQSxRQUFRLElBQUk7SUFDWixLQUFLLE9BQU82RCxRQUFRLEtBQUssU0FBUztBQUFFLE1BQUE7UUFDaEMsTUFBTUMsWUFBWSxHQUFHRCxRQUFRO0FBRTdCLFFBQUEsT0FBT0MsWUFBWSxHQUFHaEQsUUFBUSxHQUFHRSxTQUFTO0FBQzlDO0lBRUEsS0FBSyxPQUFPNkMsUUFBUSxLQUFLLFFBQVE7QUFBRSxNQUFBO1FBQy9CLE1BQU1FLFdBQVcsR0FBR0YsUUFBUTtBQUU1QixRQUFBLE9BQU8sSUFBSXpDLFVBQVUsQ0FBQzJDLFdBQVcsQ0FBQztBQUN0QztJQUVBLEtBQUtwQyxRQUFRLENBQUNrQyxRQUFRLENBQUMsSUFBSUcsc0JBQUEsQ0FBQWhFLFNBQUEsR0FBQSxDQUFFLE9BQU8sRUFBRSxNQUFNLENBQUUsQ0FBQSxDQUFBSyxJQUFBLENBQUFMLFNBQUEsRUFBT00sV0FBVyxJQUFJQSxXQUFXLElBQUl1RCxRQUFRLENBQUM7QUFBRSxNQUFBO1FBQzFGLE1BQU07VUFBRWpDLEtBQUs7QUFBRU8sVUFBQUE7QUFBSyxTQUFDLEdBQUcwQixRQUEwQjtBQUVsRCxRQUFBLE9BQU8sSUFBSXpDLFVBQVUsQ0FBQ1EsS0FBSyxFQUFFTyxJQUFJLENBQUM7QUFDdEM7SUFFQSxLQUFLLE9BQU8wQixRQUFRLEtBQUssUUFBUTtBQUFFLE1BQUE7UUFDL0IsTUFBTUksV0FBVyxHQUFHSixRQUFRO0FBRTVCLFFBQUEsT0FBTyxJQUFJeEMsVUFBVSxDQUFDNEMsV0FBVyxDQUFDO0FBQ3RDO0FBRUEsSUFBQSxLQUFLdEMsUUFBUSxDQUFDa0MsUUFBUSxDQUFDLElBQUksTUFBTSxJQUFJQSxRQUFRO0FBQUUsTUFBQTtBQUMzQyxRQUFBLE1BQU0sQ0FBRXRCLEdBQUcsRUFBRUMsS0FBSyxFQUFFQyxJQUFJLEVBQUVDLEtBQUssQ0FBRSxHQUFHbUIsUUFBUSxDQUFDSyxJQUFJLEVBQWM7UUFFL0QsT0FBTyxJQUFJNUMsU0FBUyxDQUFDO1VBQUVpQixHQUFHO1VBQUVDLEtBQUs7VUFBRUMsSUFBSTtBQUFFQyxVQUFBQTtBQUFNLFNBQUMsQ0FBQztBQUNyRDtJQUVBLEtBQUt5QixjQUFBLENBQWNOLFFBQVEsQ0FBQztBQUFFLE1BQUE7QUFDMUIsUUFBQSxPQUFPLElBQUl0QyxRQUFRLENBQUMzQixvQkFBQSxDQUFBaUUsUUFBUSxFQUFBeEQsSUFBQSxDQUFSd0QsUUFBUSxFQUFLakMsS0FBSyxJQUFJZ0Msb0JBQW9CLENBQUNoQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzNFO0lBRUEsS0FBS2lDLFFBQVEsWUFBQUYsSUFBZTtBQUFFLE1BQUE7QUFBQSxRQUFBLElBQUExRCxTQUFBO1FBQzFCLE1BQU1vRCxRQUFRLEdBQUdRLFFBQStDO0FBQ2hFLFFBQUEsTUFBTU8sT0FBTyxHQUFHLElBQUk1QyxPQUFPLEVBQUU7QUFFN0IsUUFBQSxNQUFNNkMsU0FBUyxHQUFHekUsb0JBQUEsQ0FBQUssU0FBQSxHQUFBdUQsV0FBQSxDQUFXQyx3QkFBQSxDQUFBSixRQUFRLENBQUEsQ0FBQWhELElBQUEsQ0FBUmdELFFBQWlCLENBQUMsQ0FBQyxDQUFBaEQsQ0FBQUEsSUFBQSxDQUFBSixTQUFBLEVBQ3ZDcUUsS0FBSyxJQUFJMUUsb0JBQUEsQ0FBQTBFLEtBQUssQ0FBQSxDQUFBakUsSUFBQSxDQUFMaUUsS0FBSyxFQUFLVixvQkFBb0IsQ0FBQyxDQUEyQjtRQUU1RSxLQUFLLE1BQU0sQ0FBRUYsR0FBRyxFQUFFOUIsS0FBSyxDQUFFLElBQUl5QyxTQUFTLEVBQUU7VUFDcENELE9BQU8sQ0FBQ2QsUUFBUSxDQUFDaUIsR0FBRyxDQUFDYixHQUFHLEVBQUU5QixLQUFLLENBQUM7QUFDcEM7QUFFQSxRQUFBLE9BQU93QyxPQUFPO0FBQ2xCO0FBRUEsSUFBQTtBQUFTLE1BQUE7QUFDTCxRQUFBLE9BQU9sRCxRQUFRO0FBQ25CO0FBQ0E7QUFDSjs7QUM1SEE7O0FBU0E7QUFDQSxNQUFNc0QsY0FBYyxHQUFHQyxPQUFBLENBQU8scUNBQXFDLENBQUM7QUFFN0QsU0FBU0MsWUFBWUEsQ0FBQ0MsVUFBa0IsRUFBa0I7QUFDN0QsRUFBQSxPQUFnQ0MsTUFBUyxJQUFLO0lBQzFDQyxPQUFPLENBQUNDLGNBQWMsQ0FBQ04sY0FBYyxFQUFFRyxVQUFVLEVBQUVDLE1BQU0sQ0FBQztBQUUxRCxJQUFBLE9BQU9BLE1BQU07R0FDaEI7QUFDTDtBQUVPLGVBQWVHLFlBQVlBLENBQzlCLEdBQUdDLGFBQWtELEVBQ0w7QUFDaEQsRUFBQSxNQUFNQyxPQUFPLEdBQUcsTUFBTUMsUUFBQSxDQUFRQyxHQUFHLENBQzdCdkYsb0JBQUEsQ0FBQW9GLGFBQWEsQ0FBQSxDQUFBM0UsSUFBQSxDQUFiMkUsYUFBYSxFQUFLSSxNQUFNLElBQ3BCRixRQUFBLENBQVFHLE9BQU8sQ0FBQ0QsTUFBTSxDQUFDLENBQ2xCRSxJQUFJLENBQUNGLE1BQU0sSUFBSUEsTUFBTSxDQUFDRyxPQUFPLENBQ3JDLENBQ0wsQ0FBQztFQUVELE1BQU1oQyxPQUFPLEdBQUczRCxvQkFBQSxDQUFBcUYsT0FBTyxDQUFBNUUsQ0FBQUEsSUFBQSxDQUFQNEUsT0FBTyxFQUFLRyxNQUFNLElBQUk7SUFDbEMsTUFBTUksU0FBUyxHQUFHWCxPQUFPLENBQUNZLFdBQVcsQ0FBQ2pCLGNBQWMsRUFBRVksTUFBTSxDQUFXO0lBRXZFLGVBQWVNLGNBQWNBLENBQUNDLE9BQW1CLEVBQXFCO01BQ2xFLE1BQU1DLElBQUksR0FBR2hHLG9CQUFBLENBQUErRixPQUFPLENBQUF0RixDQUFBQSxJQUFBLENBQVBzRixPQUFPLEVBQUs3RCxvQkFBb0IsQ0FBQztBQUM5QyxNQUFBLE1BQU0rRCxNQUFNLEdBQUcsTUFBTUMsa0JBQUEsQ0FBa0JWLE1BQU0sRUFBRVEsSUFBSSxDQUFDLENBQUNHLE9BQU8sRUFBRTtNQUU5RCxPQUFPbkMsb0JBQW9CLENBQUNpQyxNQUFNLENBQUM7QUFDdkM7QUFFQSxJQUFBLE9BQU8sQ0FBRUwsU0FBUyxFQUFFRSxjQUFjLENBQUU7QUFDeEMsR0FBQyxDQUFDO0VBRUYsT0FBTy9GLG1CQUFBLENBQW1CNEQsT0FBTyxDQUFDO0FBQ3RDOzs7OyJ9