@libs-ui/components-color-picker 0.1.1-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,364 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { get, isNil, set } from '@libs-ui/utils';
3
+ export const ColorNames = {
4
+ aliceblue: '#F0F8FF',
5
+ antiquewhite: '#FAEBD7',
6
+ aqua: '#00FFFF',
7
+ aquamarine: '#7FFFD4',
8
+ azure: '#F0FFFF',
9
+ beige: '#F5F5DC',
10
+ bisque: '#FFE4C4',
11
+ black: '#000000',
12
+ blanchedalmond: '#FFEBCD',
13
+ blue: '#0000FF',
14
+ blueviolet: '#8A2BE2',
15
+ brown: '#A52A2A',
16
+ burlywood: '#DEB887',
17
+ cadetblue: '#5F9EA0',
18
+ chartreuse: '#7FFF00',
19
+ chocolate: '#D2691E',
20
+ coral: '#FF7F50',
21
+ cornflowerblue: '#6495ED',
22
+ cornsilk: '#FFF8DC',
23
+ crimson: '#DC143C',
24
+ cyan: '#00FFFF',
25
+ darkblue: '#00008B',
26
+ darkcyan: '#008B8B',
27
+ darkgoldenrod: '#B8860B',
28
+ darkgray: '#A9A9A9',
29
+ darkgrey: '#A9A9A9',
30
+ darkgreen: '#006400',
31
+ darkkhaki: '#BDB76B',
32
+ darkmagenta: '#8B008B',
33
+ darkolivegreen: '#556B2F',
34
+ darkorange: '#FF8C00',
35
+ darkorchid: '#9932CC',
36
+ darkred: '#8B0000',
37
+ darksalmon: '#E9967A',
38
+ darkseagreen: '#8FBC8F',
39
+ darkslateblue: '#483D8B',
40
+ darkslategray: '#2F4F4F',
41
+ darkslategrey: '#2F4F4F',
42
+ darkturquoise: '#00CED1',
43
+ darkviolet: '#9400D3',
44
+ deeppink: '#FF1493',
45
+ deepskyblue: '#00BFFF',
46
+ dimgray: '#696969',
47
+ dimgrey: '#696969',
48
+ dodgerblue: '#1E90FF',
49
+ firebrick: '#B22222',
50
+ floralwhite: '#FFFAF0',
51
+ forestgreen: '#228B22',
52
+ fuchsia: '#FF00FF',
53
+ gainsboro: '#DCDCDC',
54
+ ghostwhite: '#F8F8FF',
55
+ gold: '#FFD700',
56
+ goldenrod: '#DAA520',
57
+ gray: '#808080',
58
+ grey: '#808080',
59
+ green: '#008000',
60
+ greenyellow: '#ADFF2F',
61
+ honeydew: '#F0FFF0',
62
+ hotpink: '#FF69B4',
63
+ indianred: '#CD5C5C',
64
+ indigo: '#4B0082',
65
+ ivory: '#FFFFF0',
66
+ khaki: '#F0E68C',
67
+ lavender: '#E6E6FA',
68
+ lavenderblush: '#FFF0F5',
69
+ lawngreen: '#7CFC00',
70
+ lemonchiffon: '#FFFACD',
71
+ lightblue: '#ADD8E6',
72
+ lightcoral: '#F08080',
73
+ lightcyan: '#E0FFFF',
74
+ lightgoldenrodyellow: '#FAFAD2',
75
+ lightgray: '#D3D3D3',
76
+ lightgrey: '#D3D3D3',
77
+ lightgreen: '#90EE90',
78
+ lightpink: '#FFB6C1',
79
+ lightsalmon: '#FFA07A',
80
+ lightseagreen: '#20B2AA',
81
+ lightskyblue: '#87CEFA',
82
+ lightslategray: '#778899',
83
+ lightslategrey: '#778899',
84
+ lightsteelblue: '#B0C4DE',
85
+ lightyellow: '#FFFFE0',
86
+ lime: '#00FF00',
87
+ limegreen: '#32CD32',
88
+ linen: '#FAF0E6',
89
+ magenta: '#FF00FF',
90
+ maroon: '#800000',
91
+ mediumaquamarine: '#66CDAA',
92
+ mediumblue: '#0000CD',
93
+ mediumorchid: '#BA55D3',
94
+ mediumpurple: '#9370DB',
95
+ mediumseagreen: '#3CB371',
96
+ mediumslateblue: '#7B68EE',
97
+ mediumspringgreen: '#00FA9A',
98
+ mediumturquoise: '#48D1CC',
99
+ mediumvioletred: '#C71585',
100
+ midnightblue: '#191970',
101
+ mintcream: '#F5FFFA',
102
+ mistyrose: '#FFE4E1',
103
+ moccasin: '#FFE4B5',
104
+ navajowhite: '#FFDEAD',
105
+ navy: '#000080',
106
+ oldlace: '#FDF5E6',
107
+ olive: '#808000',
108
+ olivedrab: '#6B8E23',
109
+ orange: '#FFA500',
110
+ orangered: '#FF4500',
111
+ orchid: '#DA70D6',
112
+ palegoldenrod: '#EEE8AA',
113
+ palegreen: '#98FB98',
114
+ paleturquoise: '#AFEEEE',
115
+ palevioletred: '#DB7093',
116
+ papayawhip: '#FFEFD5',
117
+ peachpuff: '#FFDAB9',
118
+ peru: '#CD853F',
119
+ pink: '#FFC0CB',
120
+ plum: '#DDA0DD',
121
+ powderblue: '#B0E0E6',
122
+ purple: '#800080',
123
+ rebeccapurple: '#663399',
124
+ red: '#FF0000',
125
+ rosybrown: '#BC8F8F',
126
+ royalblue: '#4169E1',
127
+ saddlebrown: '#8B4513',
128
+ salmon: '#FA8072',
129
+ sandybrown: '#F4A460',
130
+ seagreen: '#2E8B57',
131
+ seashell: '#FFF5EE',
132
+ sienna: '#A0522D',
133
+ silver: '#C0C0C0',
134
+ skyblue: '#87CEEB',
135
+ slateblue: '#6A5ACD',
136
+ slategray: '#708090',
137
+ slategrey: '#708090',
138
+ snow: '#FFFAFA',
139
+ springgreen: '#00FF7F',
140
+ steelblue: '#4682B4',
141
+ tan: '#D2B48C',
142
+ teal: '#008080',
143
+ thistle: '#D8BFD8',
144
+ tomato: '#FF6347',
145
+ turquoise: '#40E0D0',
146
+ violet: '#EE82EE',
147
+ wheat: '#F5DEB3',
148
+ white: '#FFFFFF',
149
+ whitesmoke: '#F5F5F5',
150
+ yellow: '#FFFF00',
151
+ yellowgreen: '#9ACD32',
152
+ };
153
+ export const optionsDefault = () => {
154
+ return {
155
+ showHsl: false,
156
+ showRgb: true,
157
+ showHex: true,
158
+ showAlpha: false,
159
+ color: '#ff0000',
160
+ format: 'color',
161
+ slBarSize: [420, 200],
162
+ hueBarSize: [420, 20],
163
+ alphaBarSize: [420, 20],
164
+ };
165
+ };
166
+ export const limit = (value, min, max) => {
167
+ value = +value;
168
+ return isNaN(value) ? min : value < min ? min : value > max ? max : value;
169
+ };
170
+ export const hslToRgb = (h, s, l) => {
171
+ let r, g, b;
172
+ [h, s, l] = [limit(h, 0, 360) / 360, limit(s, 0, 100) / 100, limit(l, 0, 100) / 100];
173
+ if (s == 0) {
174
+ r = g = b = l; // achromatic
175
+ return [r * 255, g * 255, b * 255].map(Math.round);
176
+ }
177
+ const hueToRgb = (p, q, t) => {
178
+ if (t < 0)
179
+ t += 1;
180
+ if (t > 1)
181
+ t -= 1;
182
+ if (t < 1 / 6)
183
+ return p + (q - p) * 6 * t;
184
+ if (t < 1 / 2)
185
+ return q;
186
+ if (t < 2 / 3)
187
+ return p + (q - p) * (2 / 3 - t) * 6;
188
+ return p;
189
+ };
190
+ const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
191
+ const p = 2 * l - q;
192
+ r = hueToRgb(p, q, h + 1 / 3);
193
+ g = hueToRgb(p, q, h);
194
+ b = hueToRgb(p, q, h - 1 / 3);
195
+ return [r * 255, g * 255, b * 255].map(Math.round);
196
+ };
197
+ export const cssColorToRgba = (color) => {
198
+ if (color) {
199
+ const colorByName = get(ColorNames, color.toLowerCase());
200
+ const [, , , r, g, b, a, , rr, gg, bb, aa] = /^\s*#?((([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])?)|(([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})?))\s*$/i.exec(colorByName || color) || [];
201
+ if (!isNil(r)) {
202
+ return [parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), a ? +(parseInt(a + a, 16) / 255).toFixed(2) : 1];
203
+ }
204
+ if (!isNil(rr)) {
205
+ return [parseInt(rr, 16), parseInt(gg, 16), parseInt(bb, 16), aa ? +(parseInt(aa, 16) / 255).toFixed(2) : 1];
206
+ }
207
+ }
208
+ return undefined;
209
+ };
210
+ export const parseColorToRgba = (color) => {
211
+ if (Array.isArray(color)) {
212
+ return [limit(color[0], 0, 255), limit(color[1], 0, 255), limit(color[2], 0, 255), limit(color[3] ?? 1, 0, 1)];
213
+ }
214
+ const parsed = cssColorToRgba(color) || cssRgbaToRgba(color);
215
+ if (parsed && parsed.length === 3) {
216
+ parsed.push(1);
217
+ }
218
+ return parsed;
219
+ };
220
+ export const cssRgbaToRgba = (rgba) => {
221
+ if (rgba) {
222
+ const [m, r, g, b, , a] = /^rgba?\((\d+)\s*[\s,]\s*(\d+)\s*[\s,]\s*(\d+)(\s*[\s,]\s*(\d*(.\d+)?))?\)/i.exec(rgba) || [];
223
+ return m ? [limit(r, 0, 255), limit(g, 0, 255), limit(b, 0, 255), limit(a ?? 1, 0, 1)] : undefined;
224
+ }
225
+ return undefined;
226
+ };
227
+ export const cssHslaToHsla = (hsla) => {
228
+ if (hsla) {
229
+ const [m, h, s, l, , a] = /^hsla?\((\d+)\s*[\s,]\s*(\d+)\s*[\s,]\s*(\d+)(\s*[\s,]\s*(\d*(.\d+)?))?\)/i.exec(hsla) || [];
230
+ return m ? [limit(h, 0, 255), limit(s, 0, 255), limit(l, 0, 255), limit(a ?? 1, 0, 1)] : undefined;
231
+ }
232
+ return undefined;
233
+ };
234
+ export const parseColorToHsla = (color) => {
235
+ if (Array.isArray(color)) {
236
+ return [limit(color[0], 0, 360), limit(color[1], 0, 100), limit(color[2], 0, 100), limit(color[3] ?? 1, 0, 1)];
237
+ }
238
+ const parsed = cssHslaToHsla(color);
239
+ if (parsed && parsed.length === 3) {
240
+ parsed.push(1);
241
+ }
242
+ return parsed;
243
+ };
244
+ export const rgbToHsl = (r, g, b) => {
245
+ [r, g, b] = [limit(r, 0, 255) / 255, limit(g, 0, 255) / 255, limit(b, 0, 255) / 255];
246
+ const max = Math.max(r, g, b);
247
+ const min = Math.min(r, g, b);
248
+ let h, s = (max + min) / 2;
249
+ const l = (max + min) / 2;
250
+ if (max == min) {
251
+ h = s = 0; // achromatic
252
+ return [h * 360, s * 100, l * 100].map(Math.round);
253
+ }
254
+ const d = max - min;
255
+ s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
256
+ switch (max) {
257
+ case r:
258
+ h = (g - b) / d + (g < b ? 6 : 0);
259
+ break;
260
+ case g:
261
+ h = (b - r) / d + 2;
262
+ break;
263
+ case b:
264
+ h = (r - g) / d + 4;
265
+ break;
266
+ }
267
+ h = (h || 0) / 6;
268
+ return [h * 360, s * 100, l * 100].map(Math.round);
269
+ };
270
+ export const rgbToHex = (r, g, b) => {
271
+ [r, g, b] = [limit(r, 0, 255), limit(g, 0, 255), limit(b, 0, 255)];
272
+ return '#' + ('000000' + ((r << 16) | (g << 8) | b).toString(16)).slice(-6);
273
+ };
274
+ export const rgbToInt = (r, g, b) => {
275
+ return (r << 16) | (g << 8) | b;
276
+ };
277
+ export const rgbToHsv = (r, g, b) => {
278
+ [r, g, b] = [limit(r, 0, 255) / 255, limit(g, 0, 255) / 255, limit(b, 0, 255) / 255];
279
+ const max = Math.max(r, g, b);
280
+ const min = Math.min(r, g, b);
281
+ let h, s = max;
282
+ const v = max;
283
+ const d = max - min;
284
+ s = max === 0 ? 0 : d / max;
285
+ if (max == min) {
286
+ h = 0;
287
+ return [h, s, v];
288
+ }
289
+ switch (max) {
290
+ case r:
291
+ h = (g - b) / d + (g < b ? 6 : 0);
292
+ break;
293
+ case g:
294
+ h = (b - r) / d + 2;
295
+ break;
296
+ case b:
297
+ h = (r - g) / d + 4;
298
+ break;
299
+ }
300
+ h = (h || 0) / 6;
301
+ return [h, s, v];
302
+ };
303
+ export const formatColor = (data, format) => {
304
+ switch (format) {
305
+ case 'rgb':
306
+ default:
307
+ return data.slice(0, 3);
308
+ case 'rgbcss':
309
+ return `rgb(${data[0]}, ${data[1]}, ${data[2]})`;
310
+ case 'rgbcss4':
311
+ return `rgb(${data[0]}, ${data[1]}, ${data[2]}, ${data[3]})`;
312
+ case 'rgba':
313
+ return data;
314
+ case 'rgbacss':
315
+ return `rgba(${data[0]}, ${data[1]}, ${data[2]}, ${data[3]})`;
316
+ case 'hsl':
317
+ return rgbToHsl(data[0], data[1], data[2]);
318
+ case 'hslcss':
319
+ data = rgbToHsl(data[0], data[1], data[2]);
320
+ return `hsl(${data[0]}, ${data[1]}, ${data[2]})`;
321
+ case 'hslcss4': {
322
+ const hh = rgbToHsl(data[0], data[1], data[2]);
323
+ return `hsl(${hh[0]}, ${hh[1]}, ${hh[2]}, ${data[3]})`;
324
+ }
325
+ case 'hsla':
326
+ return [...rgbToHsl(data[0], data[1], data[2]), data[3]];
327
+ case 'hslacss': {
328
+ const ha = rgbToHsl(data[0], data[1], data[2]);
329
+ return `hsla(${ha[0]}, ${ha[1]}, ${ha[2]}, ${data[3]})`;
330
+ }
331
+ case 'hex':
332
+ return rgbToHex(data[0], data[1], data[2]);
333
+ case 'hexcss4':
334
+ return rgbToHex(data[0], data[1], data[2]) + ('00' + parseInt((data[3] * 255).toString()).toString(16)).slice(-2);
335
+ case 'int':
336
+ return rgbToInt(data[0], data[1], data[2]);
337
+ }
338
+ };
339
+ export const parseColor = (color, format) => {
340
+ if (!isNil(color)) {
341
+ let data = [];
342
+ data = parseColorToRgba(color) || (parseColorToHsla(color) && [...hslToRgb(data[0], data[1], data[2]), data[3]]);
343
+ if (data) {
344
+ if (typeof format === 'object') {
345
+ return ['rgb', 'rgbcss', 'rgbcss4', 'rgba', 'rgbacss', 'hsl', 'hslcss', 'hslcss4', 'hsla', 'hslacss', 'hex', 'hexcss4', 'int'].reduce((m, f) => {
346
+ set(m, f, formatColor(data, f));
347
+ return m;
348
+ }, format);
349
+ }
350
+ return formatColor(data, format);
351
+ }
352
+ }
353
+ return undefined;
354
+ };
355
+ export const defaultHelper = () => {
356
+ return {
357
+ setHue: () => {
358
+ return;
359
+ },
360
+ grabColor: () => [],
361
+ findColor: () => [],
362
+ };
363
+ };
364
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9zcmMvdXRpbHMvcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQVc7SUFDaEMsU0FBUyxFQUFFLFNBQVM7SUFDcEIsWUFBWSxFQUFFLFNBQVM7SUFDdkIsSUFBSSxFQUFFLFNBQVM7SUFDZixVQUFVLEVBQUUsU0FBUztJQUNyQixLQUFLLEVBQUUsU0FBUztJQUNoQixLQUFLLEVBQUUsU0FBUztJQUNoQixNQUFNLEVBQUUsU0FBUztJQUNqQixLQUFLLEVBQUUsU0FBUztJQUNoQixjQUFjLEVBQUUsU0FBUztJQUN6QixJQUFJLEVBQUUsU0FBUztJQUNmLFVBQVUsRUFBRSxTQUFTO0lBQ3JCLEtBQUssRUFBRSxTQUFTO0lBQ2hCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLFVBQVUsRUFBRSxTQUFTO0lBQ3JCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLEtBQUssRUFBRSxTQUFTO0lBQ2hCLGNBQWMsRUFBRSxTQUFTO0lBQ3pCLFFBQVEsRUFBRSxTQUFTO0lBQ25CLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLElBQUksRUFBRSxTQUFTO0lBQ2YsUUFBUSxFQUFFLFNBQVM7SUFDbkIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsYUFBYSxFQUFFLFNBQVM7SUFDeEIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsV0FBVyxFQUFFLFNBQVM7SUFDdEIsY0FBYyxFQUFFLFNBQVM7SUFDekIsVUFBVSxF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QUNoQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtJQUM1QyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1QsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxBQUFELEVBQUcsQ0FBQyxDQUFDLEdBQUcsNEVBQTRFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV4SCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3JHLENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtJQUM1QyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1QsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxBQUFELEVBQUcsQ0FBQyxDQUFDLEdBQUcsNEVBQTRFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV4SCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3JHLENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQTZCLEVBQUUsRUFBRTtJQUNoRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakgsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVwQyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUU7SUFDMUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNyRixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlCLElBQUksQ0FBQyxFQUNILENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTFCLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBRXhCLE9BQU8sQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFFcEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNwRCxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ1osS0FBSyxDQUFDO1lBQ0osQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsTUFBTTtRQUNSLEtBQUssQ0FBQztZQUNKLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BCLE1BQU07UUFDUixLQUFLLENBQUM7WUFDSixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwQixNQUFNO0lBQ1YsQ0FBQztJQUNELENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFakIsT0FBTyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFO0lBQzFELENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFbkUsT0FBTyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFO0lBQzFELE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUU7SUFDMUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNyRixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlCLElBQUksQ0FBQyxFQUNILENBQUMsR0FBRyxHQUFHLENBQUM7SUFDVixNQUFNLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDZCxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ3BCLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFFNUIsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRU4sT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJ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QUUsQ0FBQyxFQUFFO1FBQ25CLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO0tBQ3BCLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBnZXQsIGlzTmlsLCBzZXQgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBJQ29sb3IsIElQaWNrZXJPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBjb25zdCBDb2xvck5hbWVzOiBJQ29sb3IgPSB7XG4gIGFsaWNlYmx1ZTogJyNGMEY4RkYnLFxuICBhbnRpcXVld2hpdGU6ICcjRkFFQkQ3JyxcbiAgYXF1YTogJyMwMEZGRkYnLFxuICBhcXVhbWFyaW5lOiAnIzdGRkZENCcsXG4gIGF6dXJlOiAnI0YwRkZGRicsXG4gIGJlaWdlOiAnI0Y1RjVEQycsXG4gIGJpc3F1ZTogJyNGRkU0QzQnLFxuICBibGFjazogJyMwMDAwMDAnLFxuICBibGFuY2hlZGFsbW9uZDogJyNGRkVCQ0QnLFxuICBibHVlOiAnIzAwMDBGRicsXG4gIGJsdWV2aW9sZXQ6ICcjOEEyQkUyJyxcbiAgYnJvd246ICcjQTUyQTJBJyxcbiAgYnVybHl3b29kOiAnI0RFQjg4NycsXG4gIGNhZGV0Ymx1ZTogJyM1RjlFQTAnLFxuICBjaGFydHJldXNlOiAnIzdGRkYwMCcsXG4gIGNob2NvbGF0ZTogJyNEMjY5MUUnLFxuICBjb3JhbDogJyNGRjdGNTAnLFxuICBjb3JuZmxvd2VyYmx1ZTogJyM2NDk1RUQnLFxuICBjb3Juc2lsazogJyNGRkY4REMnLFxuICBjcmltc29uOiAnI0RDMTQzQycsXG4gIGN5YW46ICcjMDBGRkZGJyxcbiAgZGFya2JsdWU6ICcjMDAwMDhCJyxcbiAgZGFya2N5YW46ICcjMDA4QjhCJyxcbiAgZGFya2dvbGRlbnJvZDogJyNCODg2MEInLFxuICBkYXJrZ3JheTogJyNBOUE5QTknLFxuICBkYXJrZ3JleTogJyNBOUE5QTknLFxuICBkYXJrZ3JlZW46ICcjMDA2NDAwJyxcbiAgZGFya2toYWtpOiAnI0JEQjc2QicsXG4gIGRhcmttYWdlbnRhOiAnIzhCMDA4QicsXG4gIGRhcmtvbGl2ZWdyZWVuOiAnIzU1NkIyRicsXG4gIGRhcmtvcmFuZ2U6ICcjRkY4QzAwJyxcbiAgZGFya29yY2hpZDogJyM5OTMyQ0MnLFxuICBkYXJrcmVkOiAnIzhCMDAwMCcsXG4gIGRhcmtzYWxtb246ICcjRTk5NjdBJyxcbiAgZGFya3NlYWdyZWVuOiAnIzhGQkM4RicsXG4gIGRhcmtzbGF0ZWJsdWU6ICcjNDgzRDhCJyxcbiAgZGFya3NsYXRlZ3JheTogJyMyRjRGNEYnLFxuICBkYXJrc2xhdGVncmV5OiAnIzJGNEY0RicsXG4gIGRhcmt0dXJxdW9pc2U6ICcjMDBDRUQxJyxcbiAgZGFya3Zpb2xldDogJyM5NDAwRDMnLFxuICBkZWVwcGluazogJyNGRjE0OTMnLFxuICBkZWVwc2t5Ymx1ZTogJyMwMEJGRkYnLFxuICBkaW1ncmF5OiAnIzY5Njk2OScsXG4gIGRpbWdyZXk6ICcjNjk2OTY5JyxcbiAgZG9kZ2VyYmx1ZTogJyMxRTkwRkYnLFxuICBmaXJlYnJpY2s6ICcjQjIyMjIyJyxcbiAgZmxvcmFsd2hpdGU6ICcjRkZGQUYwJyxcbiAgZm9yZXN0Z3JlZW46ICcjMjI4QjIyJyxcbiAgZnVjaHNpYTogJyNGRjAwRkYnLFxuICBnYWluc2Jvcm86ICcjRENEQ0RDJyxcbiAgZ2hvc3R3aGl0ZTogJyNGOEY4RkYnLFxuICBnb2xkOiAnI0ZGRDcwMCcsXG4gIGdvbGRlbnJvZDogJyNEQUE1MjAnLFxuICBncmF5OiAnIzgwODA4MCcsXG4gIGdyZXk6ICcjODA4MDgwJyxcbiAgZ3JlZW46ICcjMDA4MDAwJyxcbiAgZ3JlZW55ZWxsb3c6ICcjQURGRjJGJyxcbiAgaG9uZXlkZXc6ICcjRjBGRkYwJyxcbiAgaG90cGluazogJyNGRjY5QjQnLFxuICBpbmRpYW5yZWQ6ICcjQ0Q1QzVDJyxcbiAgaW5kaWdvOiAnIzRCMDA4MicsXG4gIGl2b3J5OiAnI0ZGRkZGMCcsXG4gIGtoYWtpOiAnI0YwRTY4QycsXG4gIGxhdmVuZGVyOiAnI0U2RTZGQScsXG4gIGxhdmVuZGVyYmx1c2g6ICcjRkZGMEY1JyxcbiAgbGF3bmdyZWVuOiAnIzdDRkMwMCcsXG4gIGxlbW9uY2hpZmZvbjogJyNGRkZBQ0QnLFxuICBsaWdodGJsdWU6ICcjQUREOEU2JyxcbiAgbGlnaHRjb3JhbDogJyNGMDgwODAnLFxuICBsaWdodGN5YW46ICcjRTBGRkZGJyxcbiAgbGlnaHRnb2xkZW5yb2R5ZWxsb3c6ICcjRkFGQUQyJyxcbiAgbGlnaHRncmF5OiAnI0QzRDNEMycsXG4gIGxpZ2h0Z3JleTogJyNEM0QzRDMnLFxuICBsaWdodGdyZWVuOiAnIzkwRUU5MCcsXG4gIGxpZ2h0cGluazogJyNGRkI2QzEnLFxuICBsaWdodHNhbG1vbjogJyNGRkEwN0EnLFxuICBsaWdodHNlYWdyZWVuOiAnIzIwQjJBQScsXG4gIGxpZ2h0c2t5Ymx1ZTogJyM4N0NFRkEnLFxuICBsaWdodHNsYXRlZ3JheTogJyM3Nzg4OTknLFxuICBsaWdodHNsYXRlZ3JleTogJyM3Nzg4OTknLFxuICBsaWdodHN0ZWVsYmx1ZTogJyNCMEM0REUnLFxuICBsaWdodHllbGxvdzogJyNGRkZGRTAnLFxuICBsaW1lOiAnIzAwRkYwMCcsXG4gIGxpbWVncmVlbjogJyMzMkNEMzInLFxuICBsaW5lbjogJyNGQUYwRTYnLFxuICBtYWdlbnRhOiAnI0ZGMDBGRicsXG4gIG1hcm9vbjogJyM4MDAwMDAnLFxuICBtZWRpdW1hcXVhbWFyaW5lOiAnIzY2Q0RBQScsXG4gIG1lZGl1bWJsdWU6ICcjMDAwMENEJyxcbiAgbWVkaXVtb3JjaGlkOiAnI0JBNTVEMycsXG4gIG1lZGl1bXB1cnBsZTogJyM5MzcwREInLFxuICBtZWRpdW1zZWFncmVlbjogJyMzQ0IzNzEnLFxuICBtZWRpdW1zbGF0ZWJsdWU6ICcjN0I2OEVFJyxcbiAgbWVkaXVtc3ByaW5nZ3JlZW46ICcjMDBGQTlBJyxcbiAgbWVkaXVtdHVycXVvaXNlOiAnIzQ4RDFDQycsXG4gIG1lZGl1bXZpb2xldHJlZDogJyNDNzE1ODUnLFxuICBtaWRuaWdodGJsdWU6ICcjMTkxOTcwJyxcbiAgbWludGNyZWFtOiAnI0Y1RkZGQScsXG4gIG1pc3R5cm9zZTogJyNGRkU0RTEnLFxuICBtb2NjYXNpbjogJyNGRkU0QjUnLFxuICBuYXZham93aGl0ZTogJyNGRkRFQUQnLFxuICBuYXZ5OiAnIzAwMDA4MCcsXG4gIG9sZGxhY2U6ICcjRkRGNUU2JyxcbiAgb2xpdmU6ICcjODA4MDAwJyxcbiAgb2xpdmVkcmFiOiAnIzZCOEUyMycsXG4gIG9yYW5nZTogJyNGRkE1MDAnLFxuICBvcmFuZ2VyZWQ6ICcjRkY0NTAwJyxcbiAgb3JjaGlkOiAnI0RBNzBENicsXG4gIHBhbGVnb2xkZW5yb2Q6ICcjRUVFOEFBJyxcbiAgcGFsZWdyZWVuOiAnIzk4RkI5OCcsXG4gIHBhbGV0dXJxdW9pc2U6ICcjQUZFRUVFJyxcbiAgcGFsZXZpb2xldHJlZDogJyNEQjcwOTMnLFxuICBwYXBheWF3aGlwOiAnI0ZGRUZENScsXG4gIHBlYWNocHVmZjogJyNGRkRBQjknLFxuICBwZXJ1OiAnI0NEODUzRicsXG4gIHBpbms6ICcjRkZDMENCJyxcbiAgcGx1bTogJyNEREEwREQnLFxuICBwb3dkZXJibHVlOiAnI0IwRTBFNicsXG4gIHB1cnBsZTogJyM4MDAwODAnLFxuICByZWJlY2NhcHVycGxlOiAnIzY2MzM5OScsXG4gIHJlZDogJyNGRjAwMDAnLFxuICByb3N5YnJvd246ICcjQkM4RjhGJyxcbiAgcm95YWxibHVlOiAnIzQxNjlFMScsXG4gIHNhZGRsZWJyb3duOiAnIzhCNDUxMycsXG4gIHNhbG1vbjogJyNGQTgwNzInLFxuICBzYW5keWJyb3duOiAnI0Y0QTQ2MCcsXG4gIHNlYWdyZWVuOiAnIzJFOEI1NycsXG4gIHNlYXNoZWxsOiAnI0ZGRjVFRScsXG4gIHNpZW5uYTogJyNBMDUyMkQnLFxuICBzaWx2ZXI6ICcjQzBDMEMwJyxcbiAgc2t5Ymx1ZTogJyM4N0NFRUInLFxuICBzbGF0ZWJsdWU6ICcjNkE1QUNEJyxcbiAgc2xhdGVncmF5OiAnIzcwODA5MCcsXG4gIHNsYXRlZ3JleTogJyM3MDgwOTAnLFxuICBzbm93OiAnI0ZGRkFGQScsXG4gIHNwcmluZ2dyZWVuOiAnIzAwRkY3RicsXG4gIHN0ZWVsYmx1ZTogJyM0NjgyQjQnLFxuICB0YW46ICcjRDJCNDhDJyxcbiAgdGVhbDogJyMwMDgwODAnLFxuICB0aGlzdGxlOiAnI0Q4QkZEOCcsXG4gIHRvbWF0bzogJyNGRjYzNDcnLFxuICB0dXJxdW9pc2U6ICcjNDBFMEQwJyxcbiAgdmlvbGV0OiAnI0VFODJFRScsXG4gIHdoZWF0OiAnI0Y1REVCMycsXG4gIHdoaXRlOiAnI0ZGRkZGRicsXG4gIHdoaXRlc21va2U6ICcjRjVGNUY1JyxcbiAgeWVsbG93OiAnI0ZGRkYwMCcsXG4gIHllbGxvd2dyZWVuOiAnIzlBQ0QzMicsXG59O1xuZXhwb3J0IGNvbnN0IG9wdGlvbnNEZWZhdWx0ID0gKCk6IElQaWNrZXJPcHRpb25zID0+IHtcbiAgcmV0dXJuIHtcbiAgICBzaG93SHNsOiBmYWxzZSxcbiAgICBzaG93UmdiOiB0cnVlLFxuICAgIHNob3dIZXg6IHRydWUsXG4gICAgc2hvd0FscGhhOiBmYWxzZSxcbiAgICBjb2xvcjogJyNmZjAwMDAnLFxuICAgIGZvcm1hdDogJ2NvbG9yJyxcbiAgICBzbEJhclNpemU6IFs0MjAsIDIwMF0sXG4gICAgaHVlQmFyU2l6ZTogWzQyMCwgMjBdLFxuICAgIGFscGhhQmFyU2l6ZTogWzQyMCwgMjBdLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGxpbWl0ID0gKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikgPT4ge1xuICB2YWx1ZSA9ICt2YWx1ZTtcbiAgcmV0dXJuIGlzTmFOKHZhbHVlKSA/IG1pbiA6IHZhbHVlIDwgbWluID8gbWluIDogdmFsdWUgPiBtYXggPyBtYXggOiB2YWx1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBoc2xUb1JnYiA9IChoOiBudW1iZXIsIHM6IG51bWJlciwgbDogbnVtYmVyKSA9PiB7XG4gIGxldCByLCBnLCBiO1xuICBbaCwgcywgbF0gPSBbbGltaXQoaCwgMCwgMzYwKSAvIDM2MCwgbGltaXQocywgMCwgMTAwKSAvIDEwMCwgbGltaXQobCwgMCwgMTAwKSAvIDEwMF07XG5cbiAgaWYgKHMgPT0gMCkge1xuICAgIHIgPSBnID0gYiA9IGw7IC8vIGFjaHJvbWF0aWNcblxuICAgIHJldHVybiBbciAqIDI1NSwgZyAqIDI1NSwgYiAqIDI1NV0ubWFwKE1hdGgucm91bmQpO1xuICB9XG4gIGNvbnN0IGh1ZVRvUmdiID0gKHA6IG51bWJlciwgcTogbnVtYmVyLCB0OiBudW1iZXIpID0+IHtcbiAgICBpZiAodCA8IDApIHQgKz0gMTtcbiAgICBpZiAodCA+IDEpIHQgLT0gMTtcbiAgICBpZiAodCA8IDEgLyA2KSByZXR1cm4gcCArIChxIC0gcCkgKiA2ICogdDtcbiAgICBpZiAodCA8IDEgLyAyKSByZXR1cm4gcTtcbiAgICBpZiAodCA8IDIgLyAzKSByZXR1cm4gcCArIChxIC0gcCkgKiAoMiAvIDMgLSB0KSAqIDY7XG5cbiAgICByZXR1cm4gcDtcbiAgfTtcbiAgY29uc3QgcSA9IGwgPCAwLjUgPyBsICogKDEgKyBzKSA6IGwgKyBzIC0gbCAqIHM7XG4gIGNvbnN0IHAgPSAyICogbCAtIHE7XG5cbiAgciA9IGh1ZVRvUmdiKHAsIHEsIGggKyAxIC8gMyk7XG4gIGcgPSBodWVUb1JnYihwLCBxLCBoKTtcbiAgYiA9IGh1ZVRvUmdiKHAsIHEsIGggLSAxIC8gMyk7XG5cbiAgcmV0dXJuIFtyICogMjU1LCBnICogMjU1LCBiICogMjU1XS5tYXAoTWF0aC5yb3VuZCk7XG59O1xuXG5leHBvcnQgY29uc3QgY3NzQ29sb3JUb1JnYmEgPSAoY29sb3I6IHN0cmluZykgPT4ge1xuICBpZiAoY29sb3IpIHtcbiAgICBjb25zdCBjb2xvckJ5TmFtZSA9IGdldChDb2xvck5hbWVzLCBjb2xvci50b0xvd2VyQ2FzZSgpKTtcbiAgICBjb25zdCBbLCAsICwgciwgZywgYiwgYSwgLCByciwgZ2csIGJiLCBhYV0gPSAvXlxccyojPygoKFswLTlBLUZdKShbMC05QS1GXSkoWzAtOUEtRl0pKFswLTlBLUZdKT8pfCgoWzAtOUEtRl17Mn0pKFswLTlBLUZdezJ9KShbMC05QS1GXXsyfSkoWzAtOUEtRl17Mn0pPykpXFxzKiQvaS5leGVjKGNvbG9yQnlOYW1lIHx8IGNvbG9yKSB8fCBbXTtcbiAgICBpZiAoIWlzTmlsKHIpKSB7XG4gICAgICByZXR1cm4gW3BhcnNlSW50KHIgKyByLCAxNiksIHBhcnNlSW50KGcgKyBnLCAxNiksIHBhcnNlSW50KGIgKyBiLCAxNiksIGEgPyArKHBhcnNlSW50KGEgKyBhLCAxNikgLyAyNTUpLnRvRml4ZWQoMikgOiAxXTtcbiAgICB9XG4gICAgaWYgKCFpc05pbChycikpIHtcbiAgICAgIHJldHVybiBbcGFyc2VJbnQocnIsIDE2KSwgcGFyc2VJbnQoZ2csIDE2KSwgcGFyc2VJbnQoYmIsIDE2KSwgYWEgPyArKHBhcnNlSW50KGFhLCAxNikgLyAyNTUpLnRvRml4ZWQoMikgOiAxXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQ29sb3JUb1JnYmEgPSAoY29sb3I6IHN0cmluZyB8IEFycmF5PG51bWJlcj4pID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY29sb3IpKSB7XG4gICAgcmV0dXJuIFtsaW1pdChjb2xvclswXSwgMCwgMjU1KSwgbGltaXQoY29sb3JbMV0sIDAsIDI1NSksIGxpbWl0KGNvbG9yWzJdLCAwLCAyNTUpLCBsaW1pdChjb2xvclszXSA/PyAxLCAwLCAxKV07XG4gIH1cbiAgY29uc3QgcGFyc2VkID0gY3NzQ29sb3JUb1JnYmEoY29sb3IpIHx8IGNzc1JnYmFUb1JnYmEoY29sb3IpO1xuXG4gIGlmIChwYXJzZWQgJiYgcGFyc2VkLmxlbmd0aCA9PT0gMykge1xuICAgIHBhcnNlZC5wdXNoKDEpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn07XG5cbmV4cG9ydCBjb25zdCBjc3NSZ2JhVG9SZ2JhID0gKHJnYmE6IHN0cmluZykgPT4ge1xuICBpZiAocmdiYSkge1xuICAgIGNvbnN0IFttLCByLCBnLCBiLCAsIGFdID0gL15yZ2JhP1xcKChcXGQrKVxccypbXFxzLF1cXHMqKFxcZCspXFxzKltcXHMsXVxccyooXFxkKykoXFxzKltcXHMsXVxccyooXFxkKiguXFxkKyk/KSk/XFwpL2kuZXhlYyhyZ2JhKSB8fCBbXTtcblxuICAgIHJldHVybiBtID8gW2xpbWl0KHIsIDAsIDI1NSksIGxpbWl0KGcsIDAsIDI1NSksIGxpbWl0KGIsIDAsIDI1NSksIGxpbWl0KGEgPz8gMSwgMCwgMSldIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBjc3NIc2xhVG9Ic2xhID0gKGhzbGE6IHN0cmluZykgPT4ge1xuICBpZiAoaHNsYSkge1xuICAgIGNvbnN0IFttLCBoLCBzLCBsLCAsIGFdID0gL15oc2xhP1xcKChcXGQrKVxccypbXFxzLF1cXHMqKFxcZCspXFxzKltcXHMsXVxccyooXFxkKykoXFxzKltcXHMsXVxccyooXFxkKiguXFxkKyk/KSk/XFwpL2kuZXhlYyhoc2xhKSB8fCBbXTtcblxuICAgIHJldHVybiBtID8gW2xpbWl0KGgsIDAsIDI1NSksIGxpbWl0KHMsIDAsIDI1NSksIGxpbWl0KGwsIDAsIDI1NSksIGxpbWl0KGEgPz8gMSwgMCwgMSldIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbG9yVG9Ic2xhID0gKGNvbG9yOiBzdHJpbmcgfCBBcnJheTxudW1iZXI+KSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSkge1xuICAgIHJldHVybiBbbGltaXQoY29sb3JbMF0sIDAsIDM2MCksIGxpbWl0KGNvbG9yWzFdLCAwLCAxMDApLCBsaW1pdChjb2xvclsyXSwgMCwgMTAwKSwgbGltaXQoY29sb3JbM10gPz8gMSwgMCwgMSldO1xuICB9XG4gIGNvbnN0IHBhcnNlZCA9IGNzc0hzbGFUb0hzbGEoY29sb3IpO1xuXG4gIGlmIChwYXJzZWQgJiYgcGFyc2VkLmxlbmd0aCA9PT0gMykge1xuICAgIHBhcnNlZC5wdXNoKDEpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn07XG5cbmV4cG9ydCBjb25zdCByZ2JUb0hzbCA9IChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKSA9PiB7XG4gIFtyLCBnLCBiXSA9IFtsaW1pdChyLCAwLCAyNTUpIC8gMjU1LCBsaW1pdChnLCAwLCAyNTUpIC8gMjU1LCBsaW1pdChiLCAwLCAyNTUpIC8gMjU1XTtcbiAgY29uc3QgbWF4ID0gTWF0aC5tYXgociwgZywgYik7XG4gIGNvbnN0IG1pbiA9IE1hdGgubWluKHIsIGcsIGIpO1xuICBsZXQgaCxcbiAgICBzID0gKG1heCArIG1pbikgLyAyO1xuICBjb25zdCBsID0gKG1heCArIG1pbikgLyAyO1xuXG4gIGlmIChtYXggPT0gbWluKSB7XG4gICAgaCA9IHMgPSAwOyAvLyBhY2hyb21hdGljXG5cbiAgICByZXR1cm4gW2ggKiAzNjAsIHMgKiAxMDAsIGwgKiAxMDBdLm1hcChNYXRoLnJvdW5kKTtcbiAgfVxuICBjb25zdCBkID0gbWF4IC0gbWluO1xuXG4gIHMgPSBsID4gMC41ID8gZCAvICgyIC0gbWF4IC0gbWluKSA6IGQgLyAobWF4ICsgbWluKTtcbiAgc3dpdGNoIChtYXgpIHtcbiAgICBjYXNlIHI6XG4gICAgICBoID0gKGcgLSBiKSAvIGQgKyAoZyA8IGIgPyA2IDogMCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIGc6XG4gICAgICBoID0gKGIgLSByKSAvIGQgKyAyO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBiOlxuICAgICAgaCA9IChyIC0gZykgLyBkICsgNDtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGggPSAoaCB8fCAwKSAvIDY7XG5cbiAgcmV0dXJuIFtoICogMzYwLCBzICogMTAwLCBsICogMTAwXS5tYXAoTWF0aC5yb3VuZCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmdiVG9IZXggPSAocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcikgPT4ge1xuICBbciwgZywgYl0gPSBbbGltaXQociwgMCwgMjU1KSwgbGltaXQoZywgMCwgMjU1KSwgbGltaXQoYiwgMCwgMjU1KV07XG5cbiAgcmV0dXJuICcjJyArICgnMDAwMDAwJyArICgociA8PCAxNikgfCAoZyA8PCA4KSB8IGIpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTYpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJnYlRvSW50ID0gKHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIChyIDw8IDE2KSB8IChnIDw8IDgpIHwgYjtcbn07XG5cbmV4cG9ydCBjb25zdCByZ2JUb0hzdiA9IChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKSA9PiB7XG4gIFtyLCBnLCBiXSA9IFtsaW1pdChyLCAwLCAyNTUpIC8gMjU1LCBsaW1pdChnLCAwLCAyNTUpIC8gMjU1LCBsaW1pdChiLCAwLCAyNTUpIC8gMjU1XTtcbiAgY29uc3QgbWF4ID0gTWF0aC5tYXgociwgZywgYik7XG4gIGNvbnN0IG1pbiA9IE1hdGgubWluKHIsIGcsIGIpO1xuICBsZXQgaCxcbiAgICBzID0gbWF4O1xuICBjb25zdCB2ID0gbWF4O1xuICBjb25zdCBkID0gbWF4IC0gbWluO1xuICBzID0gbWF4ID09PSAwID8gMCA6IGQgLyBtYXg7XG5cbiAgaWYgKG1heCA9PSBtaW4pIHtcbiAgICBoID0gMDtcblxuICAgIHJldHVybiBbaCwgcywgdl07XG4gIH1cbiAgc3dpdGNoIChtYXgpIHtcbiAgICBjYXNlIHI6XG4gICAgICBoID0gKGcgLSBiKSAvIGQgKyAoZyA8IGIgPyA2IDogMCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIGc6XG4gICAgICBoID0gKGIgLSByKSAvIGQgKyAyO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBiOlxuICAgICAgaCA9IChyIC0gZykgLyBkICsgNDtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGggPSAoaCB8fCAwKSAvIDY7XG5cbiAgcmV0dXJuIFtoLCBzLCB2XTtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDb2xvciA9IChkYXRhOiBBcnJheTxudW1iZXI+LCBmb3JtYXQ6IHN0cmluZykgPT4ge1xuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgJ3JnYic6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkYXRhLnNsaWNlKDAsIDMpO1xuICAgIGNhc2UgJ3JnYmNzcyc6XG4gICAgICByZXR1cm4gYHJnYigke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19KWA7XG4gICAgY2FzZSAncmdiY3NzNCc6XG4gICAgICByZXR1cm4gYHJnYigke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19LCAke2RhdGFbM119KWA7XG4gICAgY2FzZSAncmdiYSc6XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICBjYXNlICdyZ2JhY3NzJzpcbiAgICAgIHJldHVybiBgcmdiYSgke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19LCAke2RhdGFbM119KWA7XG4gICAgY2FzZSAnaHNsJzpcbiAgICAgIHJldHVybiByZ2JUb0hzbChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKTtcbiAgICBjYXNlICdoc2xjc3MnOlxuICAgICAgZGF0YSA9IHJnYlRvSHNsKGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0pO1xuXG4gICAgICByZXR1cm4gYGhzbCgke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19KWA7XG4gICAgY2FzZSAnaHNsY3NzNCc6IHtcbiAgICAgIGNvbnN0IGhoID0gcmdiVG9Ic2woZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSk7XG5cbiAgICAgIHJldHVybiBgaHNsKCR7aGhbMF19LCAke2hoWzFdfSwgJHtoaFsyXX0sICR7ZGF0YVszXX0pYDtcbiAgICB9XG4gICAgY2FzZSAnaHNsYSc6XG4gICAgICByZXR1cm4gWy4uLnJnYlRvSHNsKGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0pLCBkYXRhWzNdXTtcbiAgICBjYXNlICdoc2xhY3NzJzoge1xuICAgICAgY29uc3QgaGEgPSByZ2JUb0hzbChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKTtcblxuICAgICAgcmV0dXJuIGBoc2xhKCR7aGFbMF19LCAke2hhWzFdfSwgJHtoYVsyXX0sICR7ZGF0YVszXX0pYDtcbiAgICB9XG4gICAgY2FzZSAnaGV4JzpcbiAgICAgIHJldHVybiByZ2JUb0hleChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKTtcbiAgICBjYXNlICdoZXhjc3M0JzpcbiAgICAgIHJldHVybiByZ2JUb0hleChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKSArICgnMDAnICsgcGFyc2VJbnQoKGRhdGFbM10gKiAyNTUpLnRvU3RyaW5nKCkpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpO1xuICAgIGNhc2UgJ2ludCc6XG4gICAgICByZXR1cm4gcmdiVG9JbnQoZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbG9yID0gKGNvbG9yOiBzdHJpbmcgfCBBcnJheTxudW1iZXI+LCBmb3JtYXQ6IHN0cmluZyB8IG9iamVjdCkgPT4ge1xuICBpZiAoIWlzTmlsKGNvbG9yKSkge1xuICAgIGxldCBkYXRhOiBBcnJheTxudW1iZXI+IHwgdW5kZWZpbmVkID0gW107XG5cbiAgICBkYXRhID0gcGFyc2VDb2xvclRvUmdiYShjb2xvcikgfHwgKHBhcnNlQ29sb3JUb0hzbGEoY29sb3IpICYmIFsuLi5oc2xUb1JnYihkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKSwgZGF0YVszXV0pO1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAodHlwZW9mIGZvcm1hdCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIFsncmdiJywgJ3JnYmNzcycsICdyZ2Jjc3M0JywgJ3JnYmEnLCAncmdiYWNzcycsICdoc2wnLCAnaHNsY3NzJywgJ2hzbGNzczQnLCAnaHNsYScsICdoc2xhY3NzJywgJ2hleCcsICdoZXhjc3M0JywgJ2ludCddLnJlZHVjZSgobSwgZikgPT4ge1xuICAgICAgICAgIHNldDxhbnk+KG0sIGYsIGZvcm1hdENvbG9yKGRhdGEsIGYpKTtcblxuICAgICAgICAgIHJldHVybiBtO1xuICAgICAgICB9LCBmb3JtYXQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9ybWF0Q29sb3IoZGF0YSwgZm9ybWF0IGFzIHN0cmluZyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0SGVscGVyID0gKCkgPT4ge1xuICByZXR1cm4ge1xuICAgIHNldEh1ZTogKCkgPT4ge1xuICAgICAgcmV0dXJuO1xuICAgIH0sXG4gICAgZ3JhYkNvbG9yOiAoKSA9PiBbXSxcbiAgICBmaW5kQ29sb3I6ICgpID0+IFtdLFxuICB9O1xufTtcbiJdfQ==