valtech-components 2.0.877 → 2.0.879
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/atoms/pattern/motifs.mjs +127 -33
- package/esm2022/lib/components/atoms/pattern/pattern.component.mjs +11 -8
- package/esm2022/lib/components/atoms/pattern/types.mjs +1 -1
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +137 -40
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/pattern/motifs.d.ts +47 -19
- package/lib/components/atoms/pattern/pattern.component.d.ts +1 -3
- package/lib/components/atoms/pattern/types.d.ts +33 -14
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -6,39 +6,64 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Original spec: `assets/Valtech Pattern System.html` (single-page demo).
|
|
8
8
|
* Cada motif es función `(fill: string) => string` que devuelve SVG inner
|
|
9
|
-
* markup. Tile es
|
|
9
|
+
* markup. Tile es 100x100 unidades; el motif se renderiza dentro de un `<g
|
|
10
10
|
* transform="translate(col*100 row*100)">` con un `<rect width=100 height=100
|
|
11
11
|
* fill=bg/>` de fondo.
|
|
12
12
|
*/
|
|
13
|
-
/**
|
|
14
|
-
* Chevrons stroke-based con linecap/linejoin redondos — visualmente coherente
|
|
15
|
-
* con el símbolo de marca Valtech (`>_`). Stroke-width 18 (default), 12 para
|
|
16
|
-
* variants `small-*`.
|
|
17
|
-
*/
|
|
18
13
|
const CHEV_STROKE = 18;
|
|
19
14
|
const CHEV_SMALL_STROKE = 12;
|
|
20
15
|
const chevStyle = (f, w = CHEV_STROKE) => `stroke="${f}" stroke-width="${w}" stroke-linecap="round" stroke-linejoin="round" fill="none"`;
|
|
21
16
|
export const PATTERN_MOTIFS = {
|
|
17
|
+
// ── Chevrons ────────────────────────────────────────────────
|
|
22
18
|
'chev-r': f => `<path d="M22 18 L72 50 L22 82" ${chevStyle(f)}/>`,
|
|
23
19
|
'chev-l': f => `<path d="M78 18 L28 50 L78 82" ${chevStyle(f)}/>`,
|
|
24
20
|
'chev-d': f => `<path d="M18 22 L50 72 L82 22" ${chevStyle(f)}/>`,
|
|
25
21
|
'chev-u': f => `<path d="M18 78 L50 28 L82 78" ${chevStyle(f)}/>`,
|
|
26
|
-
'tri-tl': f => `<polygon points="0,0 100,0 0,100" fill="${f}"/>`,
|
|
27
|
-
'tri-tr': f => `<polygon points="0,0 100,0 100,100" fill="${f}"/>`,
|
|
28
|
-
'tri-bl': f => `<polygon points="0,0 100,100 0,100" fill="${f}"/>`,
|
|
29
|
-
'tri-br': f => `<polygon points="100,0 100,100 0,100" fill="${f}"/>`,
|
|
30
|
-
solid: () => ``,
|
|
31
|
-
diamond: f => `<polygon points="50,12 88,50 50,88 12,50" fill="${f}"/>`,
|
|
32
22
|
'small-r': f => `<path d="M38 32 L62 50 L38 68" ${chevStyle(f, CHEV_SMALL_STROKE)}/>`,
|
|
33
23
|
'small-l': f => `<path d="M62 32 L38 50 L62 68" ${chevStyle(f, CHEV_SMALL_STROKE)}/>`,
|
|
34
24
|
'arrow-r': f => `<path d="M10 42 L60 42 L60 28 L92 50 L60 72 L60 58 L10 58 Z" fill="${f}"/>`,
|
|
35
25
|
'arrow-l': f => `<path d="M90 42 L40 42 L40 28 L8 50 L40 72 L40 58 L90 58 Z" fill="${f}"/>`,
|
|
36
|
-
|
|
26
|
+
// ── Strokes ─────────────────────────────────────────────────
|
|
27
|
+
cross: f => `<path d="M50 12 L50 88 M12 50 L88 50" ${chevStyle(f, 16)}/>`,
|
|
28
|
+
'x-mark': f => `<path d="M18 18 L82 82 M82 18 L18 82" ${chevStyle(f, 16)}/>`,
|
|
29
|
+
'slash-r': f => `<line x1="18" y1="82" x2="82" y2="18" stroke="${f}" stroke-width="16" stroke-linecap="round"/>`,
|
|
30
|
+
'slash-l': f => `<line x1="18" y1="18" x2="82" y2="82" stroke="${f}" stroke-width="16" stroke-linecap="round"/>`,
|
|
31
|
+
// ── Filled shapes ───────────────────────────────────────────
|
|
32
|
+
circle: f => `<circle cx="50" cy="50" r="40" fill="${f}"/>`,
|
|
33
|
+
'circle-sm': f => `<circle cx="50" cy="50" r="24" fill="${f}"/>`,
|
|
34
|
+
dot: f => `<circle cx="50" cy="50" r="12" fill="${f}"/>`,
|
|
35
|
+
diamond: f => `<polygon points="50,12 88,50 50,88 12,50" fill="${f}"/>`,
|
|
36
|
+
solid: () => ``,
|
|
37
|
+
// ── Triangles & halves ──────────────────────────────────────
|
|
38
|
+
'tri-tl': f => `<polygon points="0,0 100,0 0,100" fill="${f}"/>`,
|
|
39
|
+
'tri-tr': f => `<polygon points="0,0 100,0 100,100" fill="${f}"/>`,
|
|
40
|
+
'tri-bl': f => `<polygon points="0,0 100,100 0,100" fill="${f}"/>`,
|
|
41
|
+
'tri-br': f => `<polygon points="100,0 100,100 0,100" fill="${f}"/>`,
|
|
37
42
|
'half-l': f => `<rect x="0" y="0" width="50" height="100" fill="${f}"/>`,
|
|
38
43
|
'half-t': f => `<rect x="0" y="0" width="100" height="50" fill="${f}"/>`,
|
|
44
|
+
'house-d': f => `<polygon points="50,20 88,50 12,50" fill="${f}"/><rect x="28" y="50" width="44" height="32" fill="${f}"/>`,
|
|
45
|
+
// ── Corner arcs ─────────────────────────────────────────────
|
|
46
|
+
'corner-tl': f => `<path d="M 0 0 L 100 0 A 100 100 0 0 1 0 100 Z" fill="${f}"/>`,
|
|
47
|
+
'corner-tr': f => `<path d="M 100 0 L 0 0 A 100 100 0 0 0 100 100 Z" fill="${f}"/>`,
|
|
48
|
+
'corner-bl': f => `<path d="M 0 100 L 100 100 A 100 100 0 0 0 0 0 Z" fill="${f}"/>`,
|
|
49
|
+
'corner-br': f => `<path d="M 100 100 L 0 100 A 100 100 0 0 1 100 0 Z" fill="${f}"/>`,
|
|
50
|
+
// ── Logo symbol ──────────────────────────────────────────────
|
|
51
|
+
underscore: f => `<rect x="14" y="72" width="72" height="14" rx="5" fill="${f}"/>`,
|
|
52
|
+
// ── Números — monospace bold, baseline centrada en tile 100x100 ──
|
|
53
|
+
'num-0': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">0</text>`,
|
|
54
|
+
'num-1': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">1</text>`,
|
|
55
|
+
'num-2': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">2</text>`,
|
|
56
|
+
'num-3': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">3</text>`,
|
|
57
|
+
'num-4': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">4</text>`,
|
|
58
|
+
'num-5': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">5</text>`,
|
|
59
|
+
'num-6': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">6</text>`,
|
|
60
|
+
'num-7': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">7</text>`,
|
|
61
|
+
'num-8': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">8</text>`,
|
|
62
|
+
'num-9': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">9</text>`,
|
|
39
63
|
};
|
|
40
64
|
export const MOTIF_KEYS = Object.keys(PATTERN_MOTIFS);
|
|
41
|
-
|
|
65
|
+
// ── Familias ─────────────────────────────────────────────────────────────────
|
|
66
|
+
/** Chevron family — orientaciones + variantes pequeñas. */
|
|
42
67
|
export const CHEV_KEYS = [
|
|
43
68
|
'chev-r',
|
|
44
69
|
'chev-l',
|
|
@@ -49,6 +74,31 @@ export const CHEV_KEYS = [
|
|
|
49
74
|
'arrow-r',
|
|
50
75
|
'arrow-l',
|
|
51
76
|
];
|
|
77
|
+
/** Stroke family — líneas, cruces y el guión bajo del logo `>_`. */
|
|
78
|
+
export const STROKE_KEYS = [
|
|
79
|
+
'cross',
|
|
80
|
+
'x-mark',
|
|
81
|
+
'slash-r',
|
|
82
|
+
'slash-l',
|
|
83
|
+
'underscore',
|
|
84
|
+
];
|
|
85
|
+
/** Numeric family — dígitos 0-9 en monospace bold. */
|
|
86
|
+
export const NUM_KEYS = [
|
|
87
|
+
'num-0',
|
|
88
|
+
'num-1',
|
|
89
|
+
'num-2',
|
|
90
|
+
'num-3',
|
|
91
|
+
'num-4',
|
|
92
|
+
'num-5',
|
|
93
|
+
'num-6',
|
|
94
|
+
'num-7',
|
|
95
|
+
'num-8',
|
|
96
|
+
'num-9',
|
|
97
|
+
];
|
|
98
|
+
/** Circle / dot family — formas curvas centradas. */
|
|
99
|
+
export const CIRCLE_KEYS = ['circle', 'circle-sm', 'dot'];
|
|
100
|
+
/** Diamond solo — forma geométrica angular centrada. */
|
|
101
|
+
export const SHAPE_KEYS = ['diamond'];
|
|
52
102
|
/** Triangle / half-fill family. */
|
|
53
103
|
export const TRI_KEYS = [
|
|
54
104
|
'tri-tl',
|
|
@@ -59,9 +109,9 @@ export const TRI_KEYS = [
|
|
|
59
109
|
'half-t',
|
|
60
110
|
'house-d',
|
|
61
111
|
];
|
|
62
|
-
/**
|
|
63
|
-
export const
|
|
64
|
-
/** No-foreground tiles — solo
|
|
112
|
+
/** Corner arc family — mezcla suave con triangles. */
|
|
113
|
+
export const CORNER_KEYS = ['corner-tl', 'corner-tr', 'corner-bl', 'corner-br'];
|
|
114
|
+
/** No-foreground tiles — solo rect de fondo. */
|
|
65
115
|
export const SOLID_KEYS = ['solid'];
|
|
66
116
|
export const PATTERN_PALETTES = {
|
|
67
117
|
purple: ['#0e0420', '#2a1158', '#4a1d96', '#7026df', '#9156e8', '#b48eea', '#d9c3f5', '#ebdcfd'],
|
|
@@ -76,10 +126,33 @@ export const PATTERN_PALETTES = {
|
|
|
76
126
|
'#dccef5',
|
|
77
127
|
'#f0e6fc',
|
|
78
128
|
],
|
|
129
|
+
midnight: [
|
|
130
|
+
'#020814',
|
|
131
|
+
'#071428',
|
|
132
|
+
'#0d2248',
|
|
133
|
+
'#1a3a6e',
|
|
134
|
+
'#2656a8',
|
|
135
|
+
'#4d82d4',
|
|
136
|
+
'#8ab4eb',
|
|
137
|
+
'#c5d9f5',
|
|
138
|
+
],
|
|
139
|
+
ember: ['#120200', '#2e0800', '#6b1a00', '#b83200', '#e85a10', '#f59042', '#f9c48a', '#fde8cc'],
|
|
140
|
+
forest: ['#010a04', '#052010', '#0a4020', '#0f6635', '#18a058', '#3ece80', '#86e8b4', '#c4f5dc'],
|
|
141
|
+
rose: ['#12010a', '#2e0420', '#6b0a48', '#b01870', '#e040a0', '#f080c8', '#f8bce4', '#fde0f3'],
|
|
142
|
+
gold: ['#100800', '#2a1a00', '#5c3800', '#9e6000', '#d4920a', '#f0bc40', '#f8da8c', '#fdf0cc'],
|
|
143
|
+
mono: ['#080808', '#1a1a1a', '#303030', '#484848', '#707070', '#9e9e9e', '#cecece', '#f0f0f0'],
|
|
79
144
|
};
|
|
145
|
+
export const PATTERN_STYLE_CONFIGS = {
|
|
146
|
+
branded: { chev: 0.58, stroke: 0.1, circle: 0.04, shape: 0.06, solid: 0.18, num: 0.0 },
|
|
147
|
+
geometric: { chev: 0.15, stroke: 0.05, circle: 0.18, shape: 0.14, solid: 0.1, num: 0.0 },
|
|
148
|
+
minimal: { chev: 0.25, stroke: 0.1, circle: 0.12, shape: 0.04, solid: 0.38, num: 0.0 },
|
|
149
|
+
dense: { chev: 0.4, stroke: 0.14, circle: 0.12, shape: 0.1, solid: 0.08, num: 0.02 },
|
|
150
|
+
code: { chev: 0.35, stroke: 0.18, circle: 0.02, shape: 0.02, solid: 0.12, num: 0.2 },
|
|
151
|
+
};
|
|
152
|
+
// ── RNG ──────────────────────────────────────────────────────────────────────
|
|
80
153
|
/**
|
|
81
154
|
* Mulberry32 seeded RNG — devuelve función `()=>[0,1)`.
|
|
82
|
-
* Deterministic: mismo seed → misma secuencia.
|
|
155
|
+
* Deterministic: mismo seed → misma secuencia.
|
|
83
156
|
*/
|
|
84
157
|
export function mulberry32(seed) {
|
|
85
158
|
return function () {
|
|
@@ -90,22 +163,43 @@ export function mulberry32(seed) {
|
|
|
90
163
|
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
|
|
91
164
|
};
|
|
92
165
|
}
|
|
166
|
+
function pickFrom(arr, rng) {
|
|
167
|
+
return arr[Math.floor(rng() * arr.length)];
|
|
168
|
+
}
|
|
93
169
|
/**
|
|
94
|
-
* Genera UN tile
|
|
95
|
-
*
|
|
96
|
-
* tiles en `val-pattern` sin regenerar la grid completa.
|
|
170
|
+
* Genera UN tile respetando densidades de familia + contraste de palette.
|
|
171
|
+
* Acepta un config opcional de densidades (de PatternStyleKey o chevronDensity legacy).
|
|
97
172
|
*/
|
|
98
|
-
export function generateRandomTile(palette, chevronDensity = 0.55, rng = Math.random) {
|
|
173
|
+
export function generateRandomTile(palette, chevronDensity = 0.55, rng = Math.random, densityConfig) {
|
|
174
|
+
const cfg = densityConfig ?? {
|
|
175
|
+
chev: chevronDensity,
|
|
176
|
+
stroke: 0.08,
|
|
177
|
+
circle: 0.05,
|
|
178
|
+
shape: 0.07,
|
|
179
|
+
solid: 0.2,
|
|
180
|
+
};
|
|
99
181
|
const roll = rng();
|
|
100
182
|
let key;
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
183
|
+
const t1 = cfg.chev;
|
|
184
|
+
const t2 = t1 + cfg.stroke;
|
|
185
|
+
const t3 = t2 + cfg.circle;
|
|
186
|
+
const t4 = t3 + cfg.shape;
|
|
187
|
+
const t5 = t4 + cfg.solid;
|
|
188
|
+
const t6 = t5 + (cfg.num ?? 0);
|
|
189
|
+
if (roll < t1)
|
|
190
|
+
key = pickFrom(CHEV_KEYS, rng);
|
|
191
|
+
else if (roll < t2)
|
|
192
|
+
key = pickFrom(STROKE_KEYS, rng);
|
|
193
|
+
else if (roll < t3)
|
|
194
|
+
key = pickFrom(CIRCLE_KEYS, rng);
|
|
195
|
+
else if (roll < t4)
|
|
196
|
+
key = pickFrom(SHAPE_KEYS, rng);
|
|
197
|
+
else if (roll < t5)
|
|
198
|
+
key = pickFrom(SOLID_KEYS, rng);
|
|
199
|
+
else if (roll < t6)
|
|
200
|
+
key = pickFrom(NUM_KEYS, rng);
|
|
107
201
|
else
|
|
108
|
-
key = TRI_KEYS
|
|
202
|
+
key = pickFrom([...TRI_KEYS, ...CORNER_KEYS], rng);
|
|
109
203
|
const bgIdx = Math.floor(rng() * palette.length);
|
|
110
204
|
let fgIdx = Math.floor(rng() * palette.length);
|
|
111
205
|
let tries = 0;
|
|
@@ -115,20 +209,20 @@ export function generateRandomTile(palette, chevronDensity = 0.55, rng = Math.ra
|
|
|
115
209
|
}
|
|
116
210
|
return { motif: key, bg: palette[bgIdx], fg: palette[fgIdx] };
|
|
117
211
|
}
|
|
118
|
-
/** Genera matriz de tiles
|
|
212
|
+
/** Genera matriz completa de tiles. */
|
|
119
213
|
export function generatePatternTiles(cfg) {
|
|
120
214
|
const { cols, rows, seed, palette } = cfg;
|
|
121
215
|
const chevronDensity = cfg.chevronDensity ?? 0.55;
|
|
216
|
+
const densityConfig = cfg.style ? PATTERN_STYLE_CONFIGS[cfg.style] : undefined;
|
|
122
217
|
const r = mulberry32(seed);
|
|
123
218
|
const tiles = [];
|
|
124
219
|
for (let i = 0; i < cols * rows; i++) {
|
|
125
|
-
tiles.push(generateRandomTile(palette, chevronDensity, r));
|
|
220
|
+
tiles.push(generateRandomTile(palette, chevronDensity, r, densityConfig));
|
|
126
221
|
}
|
|
127
222
|
return tiles;
|
|
128
223
|
}
|
|
129
224
|
/**
|
|
130
225
|
* Renderiza el inner SVG (sin el `<svg>` root) para una matriz de tiles.
|
|
131
|
-
* Caller wraps en `<svg viewBox="0 0 {cols*100} {rows*100}" preserveAspectRatio="xMidYMid slice">`.
|
|
132
226
|
*/
|
|
133
227
|
export function renderPatternSvgInner(tiles, cols, baseColor) {
|
|
134
228
|
const W = cols * 100;
|
|
@@ -144,4 +238,4 @@ export function renderPatternSvgInner(tiles, cols, baseColor) {
|
|
|
144
238
|
}
|
|
145
239
|
return inner;
|
|
146
240
|
}
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW90aWZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2F0b21zL3BhdHRlcm4vbW90aWZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBcUJIOzs7O0dBSUc7QUFDSCxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDdkIsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFDN0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFTLEVBQUUsSUFBWSxXQUFXLEVBQUUsRUFBRSxDQUN2RCxXQUFXLENBQUMsbUJBQW1CLENBQUMsOERBQThELENBQUM7QUFFakcsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFvRDtJQUM3RSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQ2pFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGtDQUFrQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDakUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsa0NBQWtDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUNqRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQ2pFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLDJDQUEyQyxDQUFDLEtBQUs7SUFDaEUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsNkNBQTZDLENBQUMsS0FBSztJQUNsRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyw2Q0FBNkMsQ0FBQyxLQUFLO0lBQ2xFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLCtDQUErQyxDQUFDLEtBQUs7SUFDcEUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7SUFDZixP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YUFBYSxDQUFDLFdBQVcsU0FBUyxLQUFLLENBQUM7SUFDckUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN0QyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUUsQ0FBQztRQUNwQixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QyxLQUFLLElBQUksMkJBQTJCLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsMkNBQTJDLENBQUMsQ0FBQyxFQUFFLE1BQU0sS0FBSyxNQUFNLENBQUM7SUFDekgsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVmFsdGVjaCBQYXR0ZXJuIFN5c3RlbSDigJQgbW90aWZzICsgcGFsZXR0ZXMuXG4gKlxuICogUHVyZSBkYXRhICsgaGVscGVycywgc2luIGRlcGVuZGVuY2lhcyBBbmd1bGFyLiBSZXVzYWJsZSBkZXNkZSBOb2RlL3NjcmlwdHNcbiAqIChlLmcuLCBnZW5lcmF0ZSBzdGF0aWMgdGh1bWJuYWlscykgbyBkZXNkZSBlbCBjb21wb25lbnRlIGB2YWwtcGF0dGVybmAuXG4gKlxuICogT3JpZ2luYWwgc3BlYzogYGFzc2V0cy9WYWx0ZWNoIFBhdHRlcm4gU3lzdGVtLmh0bWxgIChzaW5nbGUtcGFnZSBkZW1vKS5cbiAqIENhZGEgbW90aWYgZXMgZnVuY2nDs24gYChmaWxsOiBzdHJpbmcpID0+IHN0cmluZ2AgcXVlIGRldnVlbHZlIFNWRyBpbm5lclxuICogbWFya3VwLiBUaWxlIGVzIDEwMMOXMTAwIHVuaWRhZGVzOyBlbCBtb3RpZiBzZSByZW5kZXJpemEgZGVudHJvIGRlIHVuIGA8Z1xuICogdHJhbnNmb3JtPVwidHJhbnNsYXRlKGNvbCoxMDAgcm93KjEwMClcIj5gIGNvbiB1biBgPHJlY3Qgd2lkdGg9MTAwIGhlaWdodD0xMDBcbiAqIGZpbGw9YmcvPmAgZGUgZm9uZG8uXG4gKi9cblxuZXhwb3J0IHR5cGUgUGF0dGVybk1vdGlmS2V5ID1cbiAgfCAnY2hldi1yJ1xuICB8ICdjaGV2LWwnXG4gIHwgJ2NoZXYtZCdcbiAgfCAnY2hldi11J1xuICB8ICd0cmktdGwnXG4gIHwgJ3RyaS10cidcbiAgfCAndHJpLWJsJ1xuICB8ICd0cmktYnInXG4gIHwgJ3NvbGlkJ1xuICB8ICdkaWFtb25kJ1xuICB8ICdzbWFsbC1yJ1xuICB8ICdzbWFsbC1sJ1xuICB8ICdhcnJvdy1yJ1xuICB8ICdhcnJvdy1sJ1xuICB8ICdob3VzZS1kJ1xuICB8ICdoYWxmLWwnXG4gIHwgJ2hhbGYtdCc7XG5cbi8qKlxuICogQ2hldnJvbnMgc3Ryb2tlLWJhc2VkIGNvbiBsaW5lY2FwL2xpbmVqb2luIHJlZG9uZG9zIOKAlCB2aXN1YWxtZW50ZSBjb2hlcmVudGVcbiAqIGNvbiBlbCBzw61tYm9sbyBkZSBtYXJjYSBWYWx0ZWNoIChgPl9gKS4gU3Ryb2tlLXdpZHRoIDE4IChkZWZhdWx0KSwgMTIgcGFyYVxuICogdmFyaWFudHMgYHNtYWxsLSpgLlxuICovXG5jb25zdCBDSEVWX1NUUk9LRSA9IDE4O1xuY29uc3QgQ0hFVl9TTUFMTF9TVFJPS0UgPSAxMjtcbmNvbnN0IGNoZXZTdHlsZSA9IChmOiBzdHJpbmcsIHc6IG51bWJlciA9IENIRVZfU1RST0tFKSA9PlxuICBgc3Ryb2tlPVwiJHtmfVwiIHN0cm9rZS13aWR0aD1cIiR7d31cIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBmaWxsPVwibm9uZVwiYDtcblxuZXhwb3J0IGNvbnN0IFBBVFRFUk5fTU9USUZTOiBSZWNvcmQ8UGF0dGVybk1vdGlmS2V5LCAoZmc6IHN0cmluZykgPT4gc3RyaW5nPiA9IHtcbiAgJ2NoZXYtcic6IGYgPT4gYDxwYXRoIGQ9XCJNMjIgMTggTDcyIDUwIEwyMiA4MlwiICR7Y2hldlN0eWxlKGYpfS8+YCxcbiAgJ2NoZXYtbCc6IGYgPT4gYDxwYXRoIGQ9XCJNNzggMTggTDI4IDUwIEw3OCA4MlwiICR7Y2hldlN0eWxlKGYpfS8+YCxcbiAgJ2NoZXYtZCc6IGYgPT4gYDxwYXRoIGQ9XCJNMTggMjIgTDUwIDcyIEw4MiAyMlwiICR7Y2hldlN0eWxlKGYpfS8+YCxcbiAgJ2NoZXYtdSc6IGYgPT4gYDxwYXRoIGQ9XCJNMTggNzggTDUwIDI4IEw4MiA3OFwiICR7Y2hldlN0eWxlKGYpfS8+YCxcbiAgJ3RyaS10bCc6IGYgPT4gYDxwb2x5Z29uIHBvaW50cz1cIjAsMCAxMDAsMCAwLDEwMFwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gICd0cmktdHInOiBmID0+IGA8cG9seWdvbiBwb2ludHM9XCIwLDAgMTAwLDAgMTAwLDEwMFwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gICd0cmktYmwnOiBmID0+IGA8cG9seWdvbiBwb2ludHM9XCIwLDAgMTAwLDEwMCAwLDEwMFwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gICd0cmktYnInOiBmID0+IGA8cG9seWdvbiBwb2ludHM9XCIxMDAsMCAxMDAsMTAwIDAsMTAwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgc29saWQ6ICgpID0+IGBgLFxuICBkaWFtb25kOiBmID0+IGA8cG9seWdvbiBwb2ludHM9XCI1MCwxMiA4OCw1MCA1MCw4OCAxMiw1MFwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gICdzbWFsbC1yJzogZiA9PiBgPHBhdGggZD1cIk0zOCAzMiBMNjIgNTAgTDM4IDY4XCIgJHtjaGV2U3R5bGUoZiwgQ0hFVl9TTUFMTF9TVFJPS0UpfS8+YCxcbiAgJ3NtYWxsLWwnOiBmID0+IGA8cGF0aCBkPVwiTTYyIDMyIEwzOCA1MCBMNjIgNjhcIiAke2NoZXZTdHlsZShmLCBDSEVWX1NNQUxMX1NUUk9LRSl9Lz5gLFxuICAnYXJyb3ctcic6IGYgPT4gYDxwYXRoIGQ9XCJNMTAgNDIgTDYwIDQyIEw2MCAyOCBMOTIgNTAgTDYwIDcyIEw2MCA1OCBMMTAgNTggWlwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gICdhcnJvdy1sJzogZiA9PiBgPHBhdGggZD1cIk05MCA0MiBMNDAgNDIgTDQwIDI4IEw4IDUwIEw0MCA3MiBMNDAgNTggTDkwIDU4IFpcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnaG91c2UtZCc6IGYgPT5cbiAgICBgPHBvbHlnb24gcG9pbnRzPVwiNTAsMjAgODgsNTAgMTIsNTBcIiBmaWxsPVwiJHtmfVwiLz48cmVjdCB4PVwiMjhcIiB5PVwiNTBcIiB3aWR0aD1cIjQ0XCIgaGVpZ2h0PVwiMzJcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnaGFsZi1sJzogZiA9PiBgPHJlY3QgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNTBcIiBoZWlnaHQ9XCIxMDBcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnaGFsZi10JzogZiA9PiBgPHJlY3QgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMTAwXCIgaGVpZ2h0PVwiNTBcIiBmaWxsPVwiJHtmfVwiLz5gLFxufTtcblxuZXhwb3J0IGNvbnN0IE1PVElGX0tFWVM6IFBhdHRlcm5Nb3RpZktleVtdID0gT2JqZWN0LmtleXMoUEFUVEVSTl9NT1RJRlMpIGFzIFBhdHRlcm5Nb3RpZktleVtdO1xuXG4vKiogQ2hldnJvbiBmYW1pbHkg4oCUIG9yaWVudGF0aW9ucyArIHNpemUgdmFyaWFudHMgKyBhcnJvd3MuICovXG5leHBvcnQgY29uc3QgQ0hFVl9LRVlTOiBQYXR0ZXJuTW90aWZLZXlbXSA9IFtcbiAgJ2NoZXYtcicsXG4gICdjaGV2LWwnLFxuICAnY2hldi1kJyxcbiAgJ2NoZXYtdScsXG4gICdzbWFsbC1yJyxcbiAgJ3NtYWxsLWwnLFxuICAnYXJyb3ctcicsXG4gICdhcnJvdy1sJyxcbl07XG5cbi8qKiBUcmlhbmdsZSAvIGhhbGYtZmlsbCBmYW1pbHkuICovXG5leHBvcnQgY29uc3QgVFJJX0tFWVM6IFBhdHRlcm5Nb3RpZktleVtdID0gW1xuICAndHJpLXRsJyxcbiAgJ3RyaS10cicsXG4gICd0cmktYmwnLFxuICAndHJpLWJyJyxcbiAgJ2hhbGYtbCcsXG4gICdoYWxmLXQnLFxuICAnaG91c2UtZCcsXG5dO1xuXG4vKiogQ2VudGVyIHNoYXBlIGZhbWlseSAoY3VycmVudGx5IHNvbG8gZGlhbW9uZCkuICovXG5leHBvcnQgY29uc3QgU0hBUEVfS0VZUzogUGF0dGVybk1vdGlmS2V5W10gPSBbJ2RpYW1vbmQnXTtcblxuLyoqIE5vLWZvcmVncm91bmQgdGlsZXMg4oCUIHNvbG8gZWwgcmVjdCBkZSBmb25kby4gKi9cbmV4cG9ydCBjb25zdCBTT0xJRF9LRVlTOiBQYXR0ZXJuTW90aWZLZXlbXSA9IFsnc29saWQnXTtcblxuLyoqIEJ1aWx0LWluIHBhbGV0dGVzIOKAlCBkYXJrIOKGkiBsaWdodCAoOCBjb2xvcnMpLiAqL1xuZXhwb3J0IHR5cGUgUGF0dGVyblBhbGV0dGVLZXkgPSAncHVycGxlJyB8ICdpbmsnIHwgJ2xhdmVuZGVyJztcblxuZXhwb3J0IGNvbnN0IFBBVFRFUk5fUEFMRVRURVM6IFJlY29yZDxQYXR0ZXJuUGFsZXR0ZUtleSwgc3RyaW5nW10+ID0ge1xuICBwdXJwbGU6IFsnIzBlMDQyMCcsICcjMmExMTU4JywgJyM0YTFkOTYnLCAnIzcwMjZkZicsICcjOTE1NmU4JywgJyNiNDhlZWEnLCAnI2Q5YzNmNScsICcjZWJkY2ZkJ10sXG4gIGluazogWycjMDAwMDAwJywgJyMwYTBmMWMnLCAnIzFhMjIzNScsICcjMmQzYTU1JywgJyM0YTU4NzgnLCAnIzdkOGFhNScsICcjYjhjMWQ0JywgJyNlNGU4ZjAnXSxcbiAgbGF2ZW5kZXI6IFtcbiAgICAnIzFhMGUzYScsXG4gICAgJyMyZTE3NTUnLFxuICAgICcjNWEzYWEwJyxcbiAgICAnIzdlNWRjNicsXG4gICAgJyNhMThiZDknLFxuICAgICcjYzRhOGYwJyxcbiAgICAnI2RjY2VmNScsXG4gICAgJyNmMGU2ZmMnLFxuICBdLFxufTtcblxuLyoqXG4gKiBNdWxiZXJyeTMyIHNlZWRlZCBSTkcg4oCUIGRldnVlbHZlIGZ1bmNpw7NuIGAoKT0+WzAsMSlgLlxuICogRGV0ZXJtaW5pc3RpYzogbWlzbW8gc2VlZCDihpIgbWlzbWEgc2VjdWVuY2lhLiDDmnRpbCBwYXJhIHBhdHJvbmVzIHJlcHJvZHVjaWJsZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtdWxiZXJyeTMyKHNlZWQ6IG51bWJlcik6ICgpID0+IG51bWJlciB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgc2VlZCA9IChzZWVkICsgMHg2ZDJiNzlmNSkgPj4+IDA7XG4gICAgbGV0IHQgPSBzZWVkO1xuICAgIHQgPSBNYXRoLmltdWwodCBeICh0ID4+PiAxNSksIHQgfCAxKTtcbiAgICB0IF49IHQgKyBNYXRoLmltdWwodCBeICh0ID4+PiA3KSwgdCB8IDYxKTtcbiAgICByZXR1cm4gKCh0IF4gKHQgPj4+IDE0KSkgPj4+IDApIC8gNDI5NDk2NzI5NjtcbiAgfTtcbn1cblxuLyoqXG4gKiBEZW5zaWRhZCBkZSBjaGV2cm9ucyAoMC4uMSkuIEVsIHJlc3RvIHNlIHJlcGFydGUgZW50cmUgc29saWQgKDIwJSksIHNoYXBlXG4gKiAoMTUlKSB5IHRyaSAocmVzdG8pLCBwcm9wb3JjaW9uYWwgYWwgZ2FwIGxlZnQgZGVzcHXDqXMgZGVsIHRocmVzaG9sZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXR0ZXJuR2VuQ29uZmlnIHtcbiAgY29sczogbnVtYmVyO1xuICByb3dzOiBudW1iZXI7XG4gIHNlZWQ6IG51bWJlcjtcbiAgcGFsZXR0ZTogc3RyaW5nW107XG4gIGNoZXZyb25EZW5zaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5UaWxlIHtcbiAgbW90aWY6IFBhdHRlcm5Nb3RpZktleTtcbiAgYmc6IHN0cmluZztcbiAgZmc6IHN0cmluZztcbn1cblxuLyoqXG4gKiBHZW5lcmEgVU4gdGlsZSBjb24gbW90aWYvYmcvZmcgcmVzcGV0YW5kbyBkZW5zaWRhZGVzICsgY29udHJhc3RlLlxuICogQ2FsbGVyIHBhc2Egcm5nIChNYXRoLnJhbmRvbSBvIHNlZWRlZCkg4oCUIMO6dGlsIHBhcmEgcmVzaHVmZmxlIGluZGl2aWR1YWwgZGVcbiAqIHRpbGVzIGVuIGB2YWwtcGF0dGVybmAgc2luIHJlZ2VuZXJhciBsYSBncmlkIGNvbXBsZXRhLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVSYW5kb21UaWxlKFxuICBwYWxldHRlOiBzdHJpbmdbXSxcbiAgY2hldnJvbkRlbnNpdHkgPSAwLjU1LFxuICBybmc6ICgpID0+IG51bWJlciA9IE1hdGgucmFuZG9tXG4pOiBQYXR0ZXJuVGlsZSB7XG4gIGNvbnN0IHJvbGwgPSBybmcoKTtcbiAgbGV0IGtleTogUGF0dGVybk1vdGlmS2V5O1xuICBpZiAocm9sbCA8IGNoZXZyb25EZW5zaXR5KSBrZXkgPSBDSEVWX0tFWVNbTWF0aC5mbG9vcihybmcoKSAqIENIRVZfS0VZUy5sZW5ndGgpXSE7XG4gIGVsc2UgaWYgKHJvbGwgPCBjaGV2cm9uRGVuc2l0eSArIDAuMikga2V5ID0gU09MSURfS0VZU1tNYXRoLmZsb29yKHJuZygpICogU09MSURfS0VZUy5sZW5ndGgpXSE7XG4gIGVsc2UgaWYgKHJvbGwgPCBjaGV2cm9uRGVuc2l0eSArIDAuMzUpIGtleSA9IFNIQVBFX0tFWVNbTWF0aC5mbG9vcihybmcoKSAqIFNIQVBFX0tFWVMubGVuZ3RoKV0hO1xuICBlbHNlIGtleSA9IFRSSV9LRVlTW01hdGguZmxvb3Iocm5nKCkgKiBUUklfS0VZUy5sZW5ndGgpXSE7XG5cbiAgY29uc3QgYmdJZHggPSBNYXRoLmZsb29yKHJuZygpICogcGFsZXR0ZS5sZW5ndGgpO1xuICBsZXQgZmdJZHggPSBNYXRoLmZsb29yKHJuZygpICogcGFsZXR0ZS5sZW5ndGgpO1xuICBsZXQgdHJpZXMgPSAwO1xuICB3aGlsZSAoTWF0aC5hYnMoZmdJZHggLSBiZ0lkeCkgPCAzICYmIHRyaWVzIDwgNikge1xuICAgIGZnSWR4ID0gTWF0aC5mbG9vcihybmcoKSAqIHBhbGV0dGUubGVuZ3RoKTtcbiAgICB0cmllcysrO1xuICB9XG4gIHJldHVybiB7IG1vdGlmOiBrZXksIGJnOiBwYWxldHRlW2JnSWR4XSEsIGZnOiBwYWxldHRlW2ZnSWR4XSEgfTtcbn1cblxuLyoqIEdlbmVyYSBtYXRyaXogZGUgdGlsZXMgYXBsaWNhbmRvIGRlbnNpZGFkZXMgKyByZWdsYXMgZGUgY29udHJhc3RlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUGF0dGVyblRpbGVzKGNmZzogUGF0dGVybkdlbkNvbmZpZyk6IFBhdHRlcm5UaWxlW10ge1xuICBjb25zdCB7IGNvbHMsIHJvd3MsIHNlZWQsIHBhbGV0dGUgfSA9IGNmZztcbiAgY29uc3QgY2hldnJvbkRlbnNpdHkgPSBjZmcuY2hldnJvbkRlbnNpdHkgPz8gMC41NTtcbiAgY29uc3QgciA9IG11bGJlcnJ5MzIoc2VlZCk7XG4gIGNvbnN0IHRpbGVzOiBQYXR0ZXJuVGlsZVtdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY29scyAqIHJvd3M7IGkrKykge1xuICAgIHRpbGVzLnB1c2goZ2VuZXJhdGVSYW5kb21UaWxlKHBhbGV0dGUsIGNoZXZyb25EZW5zaXR5LCByKSk7XG4gIH1cbiAgcmV0dXJuIHRpbGVzO1xufVxuXG4vKipcbiAqIFJlbmRlcml6YSBlbCBpbm5lciBTVkcgKHNpbiBlbCBgPHN2Zz5gIHJvb3QpIHBhcmEgdW5hIG1hdHJpeiBkZSB0aWxlcy5cbiAqIENhbGxlciB3cmFwcyBlbiBgPHN2ZyB2aWV3Qm94PVwiMCAwIHtjb2xzKjEwMH0ge3Jvd3MqMTAwfVwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBzbGljZVwiPmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJQYXR0ZXJuU3ZnSW5uZXIoXG4gIHRpbGVzOiBQYXR0ZXJuVGlsZVtdLFxuICBjb2xzOiBudW1iZXIsXG4gIGJhc2VDb2xvcjogc3RyaW5nXG4pOiBzdHJpbmcge1xuICBjb25zdCBXID0gY29scyAqIDEwMDtcbiAgY29uc3Qgcm93cyA9IE1hdGguY2VpbCh0aWxlcy5sZW5ndGggLyBjb2xzKTtcbiAgY29uc3QgSCA9IHJvd3MgKiAxMDA7XG4gIGxldCBpbm5lciA9IGA8cmVjdCB3aWR0aD1cIiR7V31cIiBoZWlnaHQ9XCIke0h9XCIgZmlsbD1cIiR7YmFzZUNvbG9yfVwiLz5gO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgYyA9IGkgJSBjb2xzO1xuICAgIGNvbnN0IHIgPSBNYXRoLmZsb29yKGkgLyBjb2xzKTtcbiAgICBjb25zdCB0ID0gdGlsZXNbaV0hO1xuICAgIGNvbnN0IHNoYXBlID0gUEFUVEVSTl9NT1RJRlNbdC5tb3RpZl0odC5mZyk7XG4gICAgaW5uZXIgKz0gYDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgke2MgKiAxMDB9ICR7ciAqIDEwMH0pXCI+PHJlY3Qgd2lkdGg9XCIxMDBcIiBoZWlnaHQ9XCIxMDBcIiBmaWxsPVwiJHt0LmJnfVwiLz4ke3NoYXBlfTwvZz5gO1xuICB9XG4gIHJldHVybiBpbm5lcjtcbn1cbiJdfQ==
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW90aWZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2F0b21zL3BhdHRlcm4vbW90aWZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBNkNILE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN2QixNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUM3QixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVMsRUFBRSxJQUFZLFdBQVcsRUFBRSxFQUFFLENBQ3ZELFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyw4REFBOEQsQ0FBQztBQUVqRyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQW9EO0lBQzdFLCtEQUErRDtJQUMvRCxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQ2pFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGtDQUFrQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDakUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsa0NBQWtDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUNqRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQ2pFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGtDQUFrQyxTQUFTLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLElBQUk7SUFDckYsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsa0NBQWtDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtJQUNyRixTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxzRUFBc0UsQ0FBQyxLQUFLO0lBQzVGLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFFQUFx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QWEsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxLQUFvQixFQUNwQixJQUFZLEVBQ1osU0FBaUI7SUFFakIsTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNyQixJQUFJLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsV0FBVyxTQUFTLEtBQUssQ0FBQztJQUNyRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDbkIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDL0IsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBRSxDQUFDO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLEtBQUssSUFBSSwyQkFBMkIsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRywyQ0FBMkMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQztJQUN6SCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBWYWx0ZWNoIFBhdHRlcm4gU3lzdGVtIOKAlCBtb3RpZnMgKyBwYWxldHRlcy5cbiAqXG4gKiBQdXJlIGRhdGEgKyBoZWxwZXJzLCBzaW4gZGVwZW5kZW5jaWFzIEFuZ3VsYXIuIFJldXNhYmxlIGRlc2RlIE5vZGUvc2NyaXB0c1xuICogKGUuZy4sIGdlbmVyYXRlIHN0YXRpYyB0aHVtYm5haWxzKSBvIGRlc2RlIGVsIGNvbXBvbmVudGUgYHZhbC1wYXR0ZXJuYC5cbiAqXG4gKiBPcmlnaW5hbCBzcGVjOiBgYXNzZXRzL1ZhbHRlY2ggUGF0dGVybiBTeXN0ZW0uaHRtbGAgKHNpbmdsZS1wYWdlIGRlbW8pLlxuICogQ2FkYSBtb3RpZiBlcyBmdW5jacOzbiBgKGZpbGw6IHN0cmluZykgPT4gc3RyaW5nYCBxdWUgZGV2dWVsdmUgU1ZHIGlubmVyXG4gKiBtYXJrdXAuIFRpbGUgZXMgMTAweDEwMCB1bmlkYWRlczsgZWwgbW90aWYgc2UgcmVuZGVyaXphIGRlbnRybyBkZSB1biBgPGdcbiAqIHRyYW5zZm9ybT1cInRyYW5zbGF0ZShjb2wqMTAwIHJvdyoxMDApXCI+YCBjb24gdW4gYDxyZWN0IHdpZHRoPTEwMCBoZWlnaHQ9MTAwXG4gKiBmaWxsPWJnLz5gIGRlIGZvbmRvLlxuICovXG5cbmV4cG9ydCB0eXBlIFBhdHRlcm5Nb3RpZktleSA9XG4gIHwgJ2NoZXYtcidcbiAgfCAnY2hldi1sJ1xuICB8ICdjaGV2LWQnXG4gIHwgJ2NoZXYtdSdcbiAgfCAndHJpLXRsJ1xuICB8ICd0cmktdHInXG4gIHwgJ3RyaS1ibCdcbiAgfCAndHJpLWJyJ1xuICB8ICdzb2xpZCdcbiAgfCAnZGlhbW9uZCdcbiAgfCAnc21hbGwtcidcbiAgfCAnc21hbGwtbCdcbiAgfCAnYXJyb3ctcidcbiAgfCAnYXJyb3ctbCdcbiAgfCAnaG91c2UtZCdcbiAgfCAnaGFsZi1sJ1xuICB8ICdoYWxmLXQnXG4gIC8vIOKUgOKUgCBOdWV2b3MgbW90aWZzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICB8ICdjaXJjbGUnXG4gIHwgJ2NpcmNsZS1zbSdcbiAgfCAnZG90J1xuICB8ICdjcm9zcydcbiAgfCAneC1tYXJrJ1xuICB8ICdzbGFzaC1yJ1xuICB8ICdzbGFzaC1sJ1xuICB8ICdjb3JuZXItdGwnXG4gIHwgJ2Nvcm5lci10cidcbiAgfCAnY29ybmVyLWJsJ1xuICB8ICdjb3JuZXItYnInXG4gIC8vIOKUgOKUgCBMb2dvIHN5bWJvbHMgKyBuw7ptZXJvcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgfCAndW5kZXJzY29yZSdcbiAgfCAnbnVtLTAnXG4gIHwgJ251bS0xJ1xuICB8ICdudW0tMidcbiAgfCAnbnVtLTMnXG4gIHwgJ251bS00J1xuICB8ICdudW0tNSdcbiAgfCAnbnVtLTYnXG4gIHwgJ251bS03J1xuICB8ICdudW0tOCdcbiAgfCAnbnVtLTknO1xuXG5jb25zdCBDSEVWX1NUUk9LRSA9IDE4O1xuY29uc3QgQ0hFVl9TTUFMTF9TVFJPS0UgPSAxMjtcbmNvbnN0IGNoZXZTdHlsZSA9IChmOiBzdHJpbmcsIHc6IG51bWJlciA9IENIRVZfU1RST0tFKSA9PlxuICBgc3Ryb2tlPVwiJHtmfVwiIHN0cm9rZS13aWR0aD1cIiR7d31cIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBmaWxsPVwibm9uZVwiYDtcblxuZXhwb3J0IGNvbnN0IFBBVFRFUk5fTU9USUZTOiBSZWNvcmQ8UGF0dGVybk1vdGlmS2V5LCAoZmc6IHN0cmluZykgPT4gc3RyaW5nPiA9IHtcbiAgLy8g4pSA4pSAIENoZXZyb25zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAnY2hldi1yJzogZiA9PiBgPHBhdGggZD1cIk0yMiAxOCBMNzIgNTAgTDIyIDgyXCIgJHtjaGV2U3R5bGUoZil9Lz5gLFxuICAnY2hldi1sJzogZiA9PiBgPHBhdGggZD1cIk03OCAxOCBMMjggNTAgTDc4IDgyXCIgJHtjaGV2U3R5bGUoZil9Lz5gLFxuICAnY2hldi1kJzogZiA9PiBgPHBhdGggZD1cIk0xOCAyMiBMNTAgNzIgTDgyIDIyXCIgJHtjaGV2U3R5bGUoZil9Lz5gLFxuICAnY2hldi11JzogZiA9PiBgPHBhdGggZD1cIk0xOCA3OCBMNTAgMjggTDgyIDc4XCIgJHtjaGV2U3R5bGUoZil9Lz5gLFxuICAnc21hbGwtcic6IGYgPT4gYDxwYXRoIGQ9XCJNMzggMzIgTDYyIDUwIEwzOCA2OFwiICR7Y2hldlN0eWxlKGYsIENIRVZfU01BTExfU1RST0tFKX0vPmAsXG4gICdzbWFsbC1sJzogZiA9PiBgPHBhdGggZD1cIk02MiAzMiBMMzggNTAgTDYyIDY4XCIgJHtjaGV2U3R5bGUoZiwgQ0hFVl9TTUFMTF9TVFJPS0UpfS8+YCxcbiAgJ2Fycm93LXInOiBmID0+IGA8cGF0aCBkPVwiTTEwIDQyIEw2MCA0MiBMNjAgMjggTDkyIDUwIEw2MCA3MiBMNjAgNTggTDEwIDU4IFpcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnYXJyb3ctbCc6IGYgPT4gYDxwYXRoIGQ9XCJNOTAgNDIgTDQwIDQyIEw0MCAyOCBMOCA1MCBMNDAgNzIgTDQwIDU4IEw5MCA1OCBaXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgLy8g4pSA4pSAIFN0cm9rZXMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIGNyb3NzOiBmID0+IGA8cGF0aCBkPVwiTTUwIDEyIEw1MCA4OCBNMTIgNTAgTDg4IDUwXCIgJHtjaGV2U3R5bGUoZiwgMTYpfS8+YCxcbiAgJ3gtbWFyayc6IGYgPT4gYDxwYXRoIGQ9XCJNMTggMTggTDgyIDgyIE04MiAxOCBMMTggODJcIiAke2NoZXZTdHlsZShmLCAxNil9Lz5gLFxuICAnc2xhc2gtcic6IGYgPT5cbiAgICBgPGxpbmUgeDE9XCIxOFwiIHkxPVwiODJcIiB4Mj1cIjgyXCIgeTI9XCIxOFwiIHN0cm9rZT1cIiR7Zn1cIiBzdHJva2Utd2lkdGg9XCIxNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+YCxcbiAgJ3NsYXNoLWwnOiBmID0+XG4gICAgYDxsaW5lIHgxPVwiMThcIiB5MT1cIjE4XCIgeDI9XCI4MlwiIHkyPVwiODJcIiBzdHJva2U9XCIke2Z9XCIgc3Ryb2tlLXdpZHRoPVwiMTZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPmAsXG4gIC8vIOKUgOKUgCBGaWxsZWQgc2hhcGVzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICBjaXJjbGU6IGYgPT4gYDxjaXJjbGUgY3g9XCI1MFwiIGN5PVwiNTBcIiByPVwiNDBcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnY2lyY2xlLXNtJzogZiA9PiBgPGNpcmNsZSBjeD1cIjUwXCIgY3k9XCI1MFwiIHI9XCIyNFwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gIGRvdDogZiA9PiBgPGNpcmNsZSBjeD1cIjUwXCIgY3k9XCI1MFwiIHI9XCIxMlwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gIGRpYW1vbmQ6IGYgPT4gYDxwb2x5Z29uIHBvaW50cz1cIjUwLDEyIDg4LDUwIDUwLDg4IDEyLDUwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgc29saWQ6ICgpID0+IGBgLFxuICAvLyDilIDilIAgVHJpYW5nbGVzICYgaGFsdmVzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAndHJpLXRsJzogZiA9PiBgPHBvbHlnb24gcG9pbnRzPVwiMCwwIDEwMCwwIDAsMTAwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ3RyaS10cic6IGYgPT4gYDxwb2x5Z29uIHBvaW50cz1cIjAsMCAxMDAsMCAxMDAsMTAwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ3RyaS1ibCc6IGYgPT4gYDxwb2x5Z29uIHBvaW50cz1cIjAsMCAxMDAsMTAwIDAsMTAwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ3RyaS1icic6IGYgPT4gYDxwb2x5Z29uIHBvaW50cz1cIjEwMCwwIDEwMCwxMDAgMCwxMDBcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnaGFsZi1sJzogZiA9PiBgPHJlY3QgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNTBcIiBoZWlnaHQ9XCIxMDBcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnaGFsZi10JzogZiA9PiBgPHJlY3QgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMTAwXCIgaGVpZ2h0PVwiNTBcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnaG91c2UtZCc6IGYgPT5cbiAgICBgPHBvbHlnb24gcG9pbnRzPVwiNTAsMjAgODgsNTAgMTIsNTBcIiBmaWxsPVwiJHtmfVwiLz48cmVjdCB4PVwiMjhcIiB5PVwiNTBcIiB3aWR0aD1cIjQ0XCIgaGVpZ2h0PVwiMzJcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAvLyDilIDilIAgQ29ybmVyIGFyY3Mg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICdjb3JuZXItdGwnOiBmID0+IGA8cGF0aCBkPVwiTSAwIDAgTCAxMDAgMCBBIDEwMCAxMDAgMCAwIDEgMCAxMDAgWlwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gICdjb3JuZXItdHInOiBmID0+IGA8cGF0aCBkPVwiTSAxMDAgMCBMIDAgMCBBIDEwMCAxMDAgMCAwIDAgMTAwIDEwMCBaXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ2Nvcm5lci1ibCc6IGYgPT4gYDxwYXRoIGQ9XCJNIDAgMTAwIEwgMTAwIDEwMCBBIDEwMCAxMDAgMCAwIDAgMCAwIFpcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnY29ybmVyLWJyJzogZiA9PiBgPHBhdGggZD1cIk0gMTAwIDEwMCBMIDAgMTAwIEEgMTAwIDEwMCAwIDAgMSAxMDAgMCBaXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgLy8g4pSA4pSAIExvZ28gc3ltYm9sIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICB1bmRlcnNjb3JlOiBmID0+IGA8cmVjdCB4PVwiMTRcIiB5PVwiNzJcIiB3aWR0aD1cIjcyXCIgaGVpZ2h0PVwiMTRcIiByeD1cIjVcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAvLyDilIDilIAgTsO6bWVyb3Mg4oCUIG1vbm9zcGFjZSBib2xkLCBiYXNlbGluZSBjZW50cmFkYSBlbiB0aWxlIDEwMHgxMDAg4pSA4pSAXG4gICdudW0tMCc6IGYgPT5cbiAgICBgPHRleHQgeD1cIjUwXCIgeT1cIjc2XCIgZm9udC1zaXplPVwiNjhcIiBmb250LXdlaWdodD1cIjgwMFwiIGZvbnQtZmFtaWx5PVwidWktbW9ub3NwYWNlLCdDb3VyaWVyIE5ldycsbW9ub3NwYWNlXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBmaWxsPVwiJHtmfVwiPjA8L3RleHQ+YCxcbiAgJ251bS0xJzogZiA9PlxuICAgIGA8dGV4dCB4PVwiNTBcIiB5PVwiNzZcIiBmb250LXNpemU9XCI2OFwiIGZvbnQtd2VpZ2h0PVwiODAwXCIgZm9udC1mYW1pbHk9XCJ1aS1tb25vc3BhY2UsJ0NvdXJpZXIgTmV3Jyxtb25vc3BhY2VcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIGZpbGw9XCIke2Z9XCI+MTwvdGV4dD5gLFxuICAnbnVtLTInOiBmID0+XG4gICAgYDx0ZXh0IHg9XCI1MFwiIHk9XCI3NlwiIGZvbnQtc2l6ZT1cIjY4XCIgZm9udC13ZWlnaHQ9XCI4MDBcIiBmb250LWZhbWlseT1cInVpLW1vbm9zcGFjZSwnQ291cmllciBOZXcnLG1vbm9zcGFjZVwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCIgZmlsbD1cIiR7Zn1cIj4yPC90ZXh0PmAsXG4gICdudW0tMyc6IGYgPT5cbiAgICBgPHRleHQgeD1cIjUwXCIgeT1cIjc2XCIgZm9udC1zaXplPVwiNjhcIiBmb250LXdlaWdodD1cIjgwMFwiIGZvbnQtZmFtaWx5PVwidWktbW9ub3NwYWNlLCdDb3VyaWVyIE5ldycsbW9ub3NwYWNlXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBmaWxsPVwiJHtmfVwiPjM8L3RleHQ+YCxcbiAgJ251bS00JzogZiA9PlxuICAgIGA8dGV4dCB4PVwiNTBcIiB5PVwiNzZcIiBmb250LXNpemU9XCI2OFwiIGZvbnQtd2VpZ2h0PVwiODAwXCIgZm9udC1mYW1pbHk9XCJ1aS1tb25vc3BhY2UsJ0NvdXJpZXIgTmV3Jyxtb25vc3BhY2VcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIGZpbGw9XCIke2Z9XCI+NDwvdGV4dD5gLFxuICAnbnVtLTUnOiBmID0+XG4gICAgYDx0ZXh0IHg9XCI1MFwiIHk9XCI3NlwiIGZvbnQtc2l6ZT1cIjY4XCIgZm9udC13ZWlnaHQ9XCI4MDBcIiBmb250LWZhbWlseT1cInVpLW1vbm9zcGFjZSwnQ291cmllciBOZXcnLG1vbm9zcGFjZVwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCIgZmlsbD1cIiR7Zn1cIj41PC90ZXh0PmAsXG4gICdudW0tNic6IGYgPT5cbiAgICBgPHRleHQgeD1cIjUwXCIgeT1cIjc2XCIgZm9udC1zaXplPVwiNjhcIiBmb250LXdlaWdodD1cIjgwMFwiIGZvbnQtZmFtaWx5PVwidWktbW9ub3NwYWNlLCdDb3VyaWVyIE5ldycsbW9ub3NwYWNlXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBmaWxsPVwiJHtmfVwiPjY8L3RleHQ+YCxcbiAgJ251bS03JzogZiA9PlxuICAgIGA8dGV4dCB4PVwiNTBcIiB5PVwiNzZcIiBmb250LXNpemU9XCI2OFwiIGZvbnQtd2VpZ2h0PVwiODAwXCIgZm9udC1mYW1pbHk9XCJ1aS1tb25vc3BhY2UsJ0NvdXJpZXIgTmV3Jyxtb25vc3BhY2VcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIGZpbGw9XCIke2Z9XCI+NzwvdGV4dD5gLFxuICAnbnVtLTgnOiBmID0+XG4gICAgYDx0ZXh0IHg9XCI1MFwiIHk9XCI3NlwiIGZvbnQtc2l6ZT1cIjY4XCIgZm9udC13ZWlnaHQ9XCI4MDBcIiBmb250LWZhbWlseT1cInVpLW1vbm9zcGFjZSwnQ291cmllciBOZXcnLG1vbm9zcGFjZVwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCIgZmlsbD1cIiR7Zn1cIj44PC90ZXh0PmAsXG4gICdudW0tOSc6IGYgPT5cbiAgICBgPHRleHQgeD1cIjUwXCIgeT1cIjc2XCIgZm9udC1zaXplPVwiNjhcIiBmb250LXdlaWdodD1cIjgwMFwiIGZvbnQtZmFtaWx5PVwidWktbW9ub3NwYWNlLCdDb3VyaWVyIE5ldycsbW9ub3NwYWNlXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBmaWxsPVwiJHtmfVwiPjk8L3RleHQ+YCxcbn07XG5cbmV4cG9ydCBjb25zdCBNT1RJRl9LRVlTOiBQYXR0ZXJuTW90aWZLZXlbXSA9IE9iamVjdC5rZXlzKFBBVFRFUk5fTU9USUZTKSBhcyBQYXR0ZXJuTW90aWZLZXlbXTtcblxuLy8g4pSA4pSAIEZhbWlsaWFzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKiogQ2hldnJvbiBmYW1pbHkg4oCUIG9yaWVudGFjaW9uZXMgKyB2YXJpYW50ZXMgcGVxdWXDsWFzLiAqL1xuZXhwb3J0IGNvbnN0IENIRVZfS0VZUzogUGF0dGVybk1vdGlmS2V5W10gPSBbXG4gICdjaGV2LXInLFxuICAnY2hldi1sJyxcbiAgJ2NoZXYtZCcsXG4gICdjaGV2LXUnLFxuICAnc21hbGwtcicsXG4gICdzbWFsbC1sJyxcbiAgJ2Fycm93LXInLFxuICAnYXJyb3ctbCcsXG5dO1xuXG4vKiogU3Ryb2tlIGZhbWlseSDigJQgbMOtbmVhcywgY3J1Y2VzIHkgZWwgZ3Vpw7NuIGJham8gZGVsIGxvZ28gYD5fYC4gKi9cbmV4cG9ydCBjb25zdCBTVFJPS0VfS0VZUzogUGF0dGVybk1vdGlmS2V5W10gPSBbXG4gICdjcm9zcycsXG4gICd4LW1hcmsnLFxuICAnc2xhc2gtcicsXG4gICdzbGFzaC1sJyxcbiAgJ3VuZGVyc2NvcmUnLFxuXTtcblxuLyoqIE51bWVyaWMgZmFtaWx5IOKAlCBkw61naXRvcyAwLTkgZW4gbW9ub3NwYWNlIGJvbGQuICovXG5leHBvcnQgY29uc3QgTlVNX0tFWVM6IFBhdHRlcm5Nb3RpZktleVtdID0gW1xuICAnbnVtLTAnLFxuICAnbnVtLTEnLFxuICAnbnVtLTInLFxuICAnbnVtLTMnLFxuICAnbnVtLTQnLFxuICAnbnVtLTUnLFxuICAnbnVtLTYnLFxuICAnbnVtLTcnLFxuICAnbnVtLTgnLFxuICAnbnVtLTknLFxuXTtcblxuLyoqIENpcmNsZSAvIGRvdCBmYW1pbHkg4oCUIGZvcm1hcyBjdXJ2YXMgY2VudHJhZGFzLiAqL1xuZXhwb3J0IGNvbnN0IENJUkNMRV9LRVlTOiBQYXR0ZXJuTW90aWZLZXlbXSA9IFsnY2lyY2xlJywgJ2NpcmNsZS1zbScsICdkb3QnXTtcblxuLyoqIERpYW1vbmQgc29sbyDigJQgZm9ybWEgZ2VvbcOpdHJpY2EgYW5ndWxhciBjZW50cmFkYS4gKi9cbmV4cG9ydCBjb25zdCBTSEFQRV9LRVlTOiBQYXR0ZXJuTW90aWZLZXlbXSA9IFsnZGlhbW9uZCddO1xuXG4vKiogVHJpYW5nbGUgLyBoYWxmLWZpbGwgZmFtaWx5LiAqL1xuZXhwb3J0IGNvbnN0IFRSSV9LRVlTOiBQYXR0ZXJuTW90aWZLZXlbXSA9IFtcbiAgJ3RyaS10bCcsXG4gICd0cmktdHInLFxuICAndHJpLWJsJyxcbiAgJ3RyaS1icicsXG4gICdoYWxmLWwnLFxuICAnaGFsZi10JyxcbiAgJ2hvdXNlLWQnLFxuXTtcblxuLyoqIENvcm5lciBhcmMgZmFtaWx5IOKAlCBtZXpjbGEgc3VhdmUgY29uIHRyaWFuZ2xlcy4gKi9cbmV4cG9ydCBjb25zdCBDT1JORVJfS0VZUzogUGF0dGVybk1vdGlmS2V5W10gPSBbJ2Nvcm5lci10bCcsICdjb3JuZXItdHInLCAnY29ybmVyLWJsJywgJ2Nvcm5lci1iciddO1xuXG4vKiogTm8tZm9yZWdyb3VuZCB0aWxlcyDigJQgc29sbyByZWN0IGRlIGZvbmRvLiAqL1xuZXhwb3J0IGNvbnN0IFNPTElEX0tFWVM6IFBhdHRlcm5Nb3RpZktleVtdID0gWydzb2xpZCddO1xuXG4vLyDilIDilIAgUGFsZXRhcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqIEJ1aWx0LWluIHBhbGV0dGVzIOKAlCA4IGNvbG9yZXMgZGFyayDihpIgbGlnaHQuICovXG5leHBvcnQgdHlwZSBQYXR0ZXJuUGFsZXR0ZUtleSA9XG4gIHwgJ3B1cnBsZSdcbiAgfCAnaW5rJ1xuICB8ICdsYXZlbmRlcidcbiAgfCAnbWlkbmlnaHQnXG4gIHwgJ2VtYmVyJ1xuICB8ICdmb3Jlc3QnXG4gIHwgJ3Jvc2UnXG4gIHwgJ2dvbGQnXG4gIHwgJ21vbm8nO1xuXG5leHBvcnQgY29uc3QgUEFUVEVSTl9QQUxFVFRFUzogUmVjb3JkPFBhdHRlcm5QYWxldHRlS2V5LCBzdHJpbmdbXT4gPSB7XG4gIHB1cnBsZTogWycjMGUwNDIwJywgJyMyYTExNTgnLCAnIzRhMWQ5NicsICcjNzAyNmRmJywgJyM5MTU2ZTgnLCAnI2I0OGVlYScsICcjZDljM2Y1JywgJyNlYmRjZmQnXSxcbiAgaW5rOiBbJyMwMDAwMDAnLCAnIzBhMGYxYycsICcjMWEyMjM1JywgJyMyZDNhNTUnLCAnIzRhNTg3OCcsICcjN2Q4YWE1JywgJyNiOGMxZDQnLCAnI2U0ZThmMCddLFxuICBsYXZlbmRlcjogW1xuICAgICcjMWEwZTNhJyxcbiAgICAnIzJlMTc1NScsXG4gICAgJyM1YTNhYTAnLFxuICAgICcjN2U1ZGM2JyxcbiAgICAnI2ExOGJkOScsXG4gICAgJyNjNGE4ZjAnLFxuICAgICcjZGNjZWY1JyxcbiAgICAnI2YwZTZmYycsXG4gIF0sXG4gIG1pZG5pZ2h0OiBbXG4gICAgJyMwMjA4MTQnLFxuICAgICcjMDcxNDI4JyxcbiAgICAnIzBkMjI0OCcsXG4gICAgJyMxYTNhNmUnLFxuICAgICcjMjY1NmE4JyxcbiAgICAnIzRkODJkNCcsXG4gICAgJyM4YWI0ZWInLFxuICAgICcjYzVkOWY1JyxcbiAgXSxcbiAgZW1iZXI6IFsnIzEyMDIwMCcsICcjMmUwODAwJywgJyM2YjFhMDAnLCAnI2I4MzIwMCcsICcjZTg1YTEwJywgJyNmNTkwNDInLCAnI2Y5YzQ4YScsICcjZmRlOGNjJ10sXG4gIGZvcmVzdDogWycjMDEwYTA0JywgJyMwNTIwMTAnLCAnIzBhNDAyMCcsICcjMGY2NjM1JywgJyMxOGEwNTgnLCAnIzNlY2U4MCcsICcjODZlOGI0JywgJyNjNGY1ZGMnXSxcbiAgcm9zZTogWycjMTIwMTBhJywgJyMyZTA0MjAnLCAnIzZiMGE0OCcsICcjYjAxODcwJywgJyNlMDQwYTAnLCAnI2YwODBjOCcsICcjZjhiY2U0JywgJyNmZGUwZjMnXSxcbiAgZ29sZDogWycjMTAwODAwJywgJyMyYTFhMDAnLCAnIzVjMzgwMCcsICcjOWU2MDAwJywgJyNkNDkyMGEnLCAnI2YwYmM0MCcsICcjZjhkYThjJywgJyNmZGYwY2MnXSxcbiAgbW9ubzogWycjMDgwODA4JywgJyMxYTFhMWEnLCAnIzMwMzAzMCcsICcjNDg0ODQ4JywgJyM3MDcwNzAnLCAnIzllOWU5ZScsICcjY2VjZWNlJywgJyNmMGYwZjAnXSxcbn07XG5cbi8vIOKUgOKUgCBQcmVzZXRzIGRlIGVzdGlsbyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBQcmVzZXQgZGUgY29tcG9zaWNpw7NuIGRlbCBwYXRyw7NuLiBDb250cm9sYSBxdcOpIGZhbWlsaWFzIHByZWRvbWluYW4uXG4gKlxuICogLSBgYnJhbmRlZGAgICDihpIgQ2hldnJvbnMgZG9taW5hbnRlcyAoaWRlbnRpZGFkIFZhbHRlY2ggYD5fYCkuIERlZmF1bHQuXG4gKiAtIGBnZW9tZXRyaWNgIOKGkiBUcmnDoW5ndWxvcywgZXNxdWluYXMgeSBjw61yY3Vsb3MuIE3DoXMgYXJxdWl0ZWN0w7NuaWNvLlxuICogLSBgbWluaW1hbGAgICDihpIgRXNwYWNpb3Mgc8OzbGlkb3MgY29uIHRyYXpvcyBzdXRpbGVzLiBMaW1waW8sIGNvcnBvcmF0aXZvLlxuICogLSBgZGVuc2VgICAgICDihpIgTWV6Y2xhIHJpY2EgZGUgdG9kYXMgbGFzIGZhbWlsaWFzLiBNw6F4aW1hIHRleHR1cmEuXG4gKiAtIGBjb2RlYCAgICAgIOKGkiBOw7ptZXJvcywgdW5kZXJzY29yZSB5IGNoZXZyb25zLiBMb29rIGRlIHRlcm1pbmFsLlxuICovXG5leHBvcnQgdHlwZSBQYXR0ZXJuU3R5bGVLZXkgPSAnYnJhbmRlZCcgfCAnZ2VvbWV0cmljJyB8ICdtaW5pbWFsJyB8ICdkZW5zZScgfCAnY29kZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVybkRlbnNpdHlDb25maWcge1xuICAvKiogUHJvYmFiaWxpZGFkIGRlIGNoZXZyb24gZmFtaWx5LiAqL1xuICBjaGV2OiBudW1iZXI7XG4gIC8qKiBQcm9iYWJpbGlkYWQgZGUgc3Ryb2tlIGZhbWlseSAoY3Jvc3MsIHgsIHNsYXNoLCB1bmRlcnNjb3JlKS4gKi9cbiAgc3Ryb2tlOiBudW1iZXI7XG4gIC8qKiBQcm9iYWJpbGlkYWQgZGUgY8OtcmN1bG9zLiAqL1xuICBjaXJjbGU6IG51bWJlcjtcbiAgLyoqIFByb2JhYmlsaWRhZCBkZSBkaWFtb25kLiAqL1xuICBzaGFwZTogbnVtYmVyO1xuICAvKiogUHJvYmFiaWxpZGFkIGRlIHNvbGlkIChlc3BhY2lvIHZhY8OtbykuICovXG4gIHNvbGlkOiBudW1iZXI7XG4gIC8qKiBQcm9iYWJpbGlkYWQgZGUgbnVtZXJpYyBmYW1pbHkgKDAtOSkuIERlZmF1bHQ6IDAuICovXG4gIG51bT86IG51bWJlcjtcbiAgLyoqIFJlc3RvIOKGkiB0cmlhbmdsZXMgKyBjb3JuZXJzLiAqL1xufVxuXG5leHBvcnQgY29uc3QgUEFUVEVSTl9TVFlMRV9DT05GSUdTOiBSZWNvcmQ8UGF0dGVyblN0eWxlS2V5LCBQYXR0ZXJuRGVuc2l0eUNvbmZpZz4gPSB7XG4gIGJyYW5kZWQ6IHsgY2hldjogMC41OCwgc3Ryb2tlOiAwLjEsIGNpcmNsZTogMC4wNCwgc2hhcGU6IDAuMDYsIHNvbGlkOiAwLjE4LCBudW06IDAuMCB9LFxuICBnZW9tZXRyaWM6IHsgY2hldjogMC4xNSwgc3Ryb2tlOiAwLjA1LCBjaXJjbGU6IDAuMTgsIHNoYXBlOiAwLjE0LCBzb2xpZDogMC4xLCBudW06IDAuMCB9LFxuICBtaW5pbWFsOiB7IGNoZXY6IDAuMjUsIHN0cm9rZTogMC4xLCBjaXJjbGU6IDAuMTIsIHNoYXBlOiAwLjA0LCBzb2xpZDogMC4zOCwgbnVtOiAwLjAgfSxcbiAgZGVuc2U6IHsgY2hldjogMC40LCBzdHJva2U6IDAuMTQsIGNpcmNsZTogMC4xMiwgc2hhcGU6IDAuMSwgc29saWQ6IDAuMDgsIG51bTogMC4wMiB9LFxuICBjb2RlOiB7IGNoZXY6IDAuMzUsIHN0cm9rZTogMC4xOCwgY2lyY2xlOiAwLjAyLCBzaGFwZTogMC4wMiwgc29saWQ6IDAuMTIsIG51bTogMC4yIH0sXG59O1xuXG4vLyDilIDilIAgUk5HIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIE11bGJlcnJ5MzIgc2VlZGVkIFJORyDigJQgZGV2dWVsdmUgZnVuY2nDs24gYCgpPT5bMCwxKWAuXG4gKiBEZXRlcm1pbmlzdGljOiBtaXNtbyBzZWVkIOKGkiBtaXNtYSBzZWN1ZW5jaWEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtdWxiZXJyeTMyKHNlZWQ6IG51bWJlcik6ICgpID0+IG51bWJlciB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgc2VlZCA9IChzZWVkICsgMHg2ZDJiNzlmNSkgPj4+IDA7XG4gICAgbGV0IHQgPSBzZWVkO1xuICAgIHQgPSBNYXRoLmltdWwodCBeICh0ID4+PiAxNSksIHQgfCAxKTtcbiAgICB0IF49IHQgKyBNYXRoLmltdWwodCBeICh0ID4+PiA3KSwgdCB8IDYxKTtcbiAgICByZXR1cm4gKCh0IF4gKHQgPj4+IDE0KSkgPj4+IDApIC8gNDI5NDk2NzI5NjtcbiAgfTtcbn1cblxuLy8g4pSA4pSAIEdlbmVyYWNpw7NuIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5HZW5Db25maWcge1xuICBjb2xzOiBudW1iZXI7XG4gIHJvd3M6IG51bWJlcjtcbiAgc2VlZDogbnVtYmVyO1xuICBwYWxldHRlOiBzdHJpbmdbXTtcbiAgY2hldnJvbkRlbnNpdHk/OiBudW1iZXI7XG4gIHN0eWxlPzogUGF0dGVyblN0eWxlS2V5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5UaWxlIHtcbiAgbW90aWY6IFBhdHRlcm5Nb3RpZktleTtcbiAgYmc6IHN0cmluZztcbiAgZmc6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gcGlja0Zyb208VD4oYXJyOiBUW10sIHJuZzogKCkgPT4gbnVtYmVyKTogVCB7XG4gIHJldHVybiBhcnJbTWF0aC5mbG9vcihybmcoKSAqIGFyci5sZW5ndGgpXSE7XG59XG5cbi8qKlxuICogR2VuZXJhIFVOIHRpbGUgcmVzcGV0YW5kbyBkZW5zaWRhZGVzIGRlIGZhbWlsaWEgKyBjb250cmFzdGUgZGUgcGFsZXR0ZS5cbiAqIEFjZXB0YSB1biBjb25maWcgb3BjaW9uYWwgZGUgZGVuc2lkYWRlcyAoZGUgUGF0dGVyblN0eWxlS2V5IG8gY2hldnJvbkRlbnNpdHkgbGVnYWN5KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUmFuZG9tVGlsZShcbiAgcGFsZXR0ZTogc3RyaW5nW10sXG4gIGNoZXZyb25EZW5zaXR5ID0gMC41NSxcbiAgcm5nOiAoKSA9PiBudW1iZXIgPSBNYXRoLnJhbmRvbSxcbiAgZGVuc2l0eUNvbmZpZz86IFBhdHRlcm5EZW5zaXR5Q29uZmlnXG4pOiBQYXR0ZXJuVGlsZSB7XG4gIGNvbnN0IGNmZyA9IGRlbnNpdHlDb25maWcgPz8ge1xuICAgIGNoZXY6IGNoZXZyb25EZW5zaXR5LFxuICAgIHN0cm9rZTogMC4wOCxcbiAgICBjaXJjbGU6IDAuMDUsXG4gICAgc2hhcGU6IDAuMDcsXG4gICAgc29saWQ6IDAuMixcbiAgfTtcblxuICBjb25zdCByb2xsID0gcm5nKCk7XG4gIGxldCBrZXk6IFBhdHRlcm5Nb3RpZktleTtcblxuICBjb25zdCB0MSA9IGNmZy5jaGV2O1xuICBjb25zdCB0MiA9IHQxICsgY2ZnLnN0cm9rZTtcbiAgY29uc3QgdDMgPSB0MiArIGNmZy5jaXJjbGU7XG4gIGNvbnN0IHQ0ID0gdDMgKyBjZmcuc2hhcGU7XG4gIGNvbnN0IHQ1ID0gdDQgKyBjZmcuc29saWQ7XG4gIGNvbnN0IHQ2ID0gdDUgKyAoY2ZnLm51bSA/PyAwKTtcblxuICBpZiAocm9sbCA8IHQxKSBrZXkgPSBwaWNrRnJvbShDSEVWX0tFWVMsIHJuZyk7XG4gIGVsc2UgaWYgKHJvbGwgPCB0Mikga2V5ID0gcGlja0Zyb20oU1RST0tFX0tFWVMsIHJuZyk7XG4gIGVsc2UgaWYgKHJvbGwgPCB0Mykga2V5ID0gcGlja0Zyb20oQ0lSQ0xFX0tFWVMsIHJuZyk7XG4gIGVsc2UgaWYgKHJvbGwgPCB0NCkga2V5ID0gcGlja0Zyb20oU0hBUEVfS0VZUywgcm5nKTtcbiAgZWxzZSBpZiAocm9sbCA8IHQ1KSBrZXkgPSBwaWNrRnJvbShTT0xJRF9LRVlTLCBybmcpO1xuICBlbHNlIGlmIChyb2xsIDwgdDYpIGtleSA9IHBpY2tGcm9tKE5VTV9LRVlTLCBybmcpO1xuICBlbHNlIGtleSA9IHBpY2tGcm9tKFsuLi5UUklfS0VZUywgLi4uQ09STkVSX0tFWVNdLCBybmcpO1xuXG4gIGNvbnN0IGJnSWR4ID0gTWF0aC5mbG9vcihybmcoKSAqIHBhbGV0dGUubGVuZ3RoKTtcbiAgbGV0IGZnSWR4ID0gTWF0aC5mbG9vcihybmcoKSAqIHBhbGV0dGUubGVuZ3RoKTtcbiAgbGV0IHRyaWVzID0gMDtcbiAgd2hpbGUgKE1hdGguYWJzKGZnSWR4IC0gYmdJZHgpIDwgMyAmJiB0cmllcyA8IDYpIHtcbiAgICBmZ0lkeCA9IE1hdGguZmxvb3Iocm5nKCkgKiBwYWxldHRlLmxlbmd0aCk7XG4gICAgdHJpZXMrKztcbiAgfVxuICByZXR1cm4geyBtb3RpZjoga2V5LCBiZzogcGFsZXR0ZVtiZ0lkeF0hLCBmZzogcGFsZXR0ZVtmZ0lkeF0hIH07XG59XG5cbi8qKiBHZW5lcmEgbWF0cml6IGNvbXBsZXRhIGRlIHRpbGVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUGF0dGVyblRpbGVzKGNmZzogUGF0dGVybkdlbkNvbmZpZyk6IFBhdHRlcm5UaWxlW10ge1xuICBjb25zdCB7IGNvbHMsIHJvd3MsIHNlZWQsIHBhbGV0dGUgfSA9IGNmZztcbiAgY29uc3QgY2hldnJvbkRlbnNpdHkgPSBjZmcuY2hldnJvbkRlbnNpdHkgPz8gMC41NTtcbiAgY29uc3QgZGVuc2l0eUNvbmZpZyA9IGNmZy5zdHlsZSA/IFBBVFRFUk5fU1RZTEVfQ09ORklHU1tjZmcuc3R5bGVdIDogdW5kZWZpbmVkO1xuICBjb25zdCByID0gbXVsYmVycnkzMihzZWVkKTtcbiAgY29uc3QgdGlsZXM6IFBhdHRlcm5UaWxlW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2xzICogcm93czsgaSsrKSB7XG4gICAgdGlsZXMucHVzaChnZW5lcmF0ZVJhbmRvbVRpbGUocGFsZXR0ZSwgY2hldnJvbkRlbnNpdHksIHIsIGRlbnNpdHlDb25maWcpKTtcbiAgfVxuICByZXR1cm4gdGlsZXM7XG59XG5cbi8qKlxuICogUmVuZGVyaXphIGVsIGlubmVyIFNWRyAoc2luIGVsIGA8c3ZnPmAgcm9vdCkgcGFyYSB1bmEgbWF0cml6IGRlIHRpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyUGF0dGVyblN2Z0lubmVyKFxuICB0aWxlczogUGF0dGVyblRpbGVbXSxcbiAgY29sczogbnVtYmVyLFxuICBiYXNlQ29sb3I6IHN0cmluZ1xuKTogc3RyaW5nIHtcbiAgY29uc3QgVyA9IGNvbHMgKiAxMDA7XG4gIGNvbnN0IHJvd3MgPSBNYXRoLmNlaWwodGlsZXMubGVuZ3RoIC8gY29scyk7XG4gIGNvbnN0IEggPSByb3dzICogMTAwO1xuICBsZXQgaW5uZXIgPSBgPHJlY3Qgd2lkdGg9XCIke1d9XCIgaGVpZ2h0PVwiJHtIfVwiIGZpbGw9XCIke2Jhc2VDb2xvcn1cIi8+YDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aWxlcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGMgPSBpICUgY29scztcbiAgICBjb25zdCByID0gTWF0aC5mbG9vcihpIC8gY29scyk7XG4gICAgY29uc3QgdCA9IHRpbGVzW2ldITtcbiAgICBjb25zdCBzaGFwZSA9IFBBVFRFUk5fTU9USUZTW3QubW90aWZdKHQuZmcpO1xuICAgIGlubmVyICs9IGA8ZyB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoJHtjICogMTAwfSAke3IgKiAxMDB9KVwiPjxyZWN0IHdpZHRoPVwiMTAwXCIgaGVpZ2h0PVwiMTAwXCIgZmlsbD1cIiR7dC5iZ31cIi8+JHtzaGFwZX08L2c+YDtcbiAgfVxuICByZXR1cm4gaW5uZXI7XG59XG4iXX0=
|
|
@@ -2,7 +2,7 @@ import { CommonModule } from '@angular/common';
|
|
|
2
2
|
import { Component, computed, effect, Input, signal } from '@angular/core';
|
|
3
3
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
4
|
import { inject } from '@angular/core';
|
|
5
|
-
import { generatePatternTiles, generateRandomTile, PATTERN_PALETTES, renderPatternSvgInner, } from './motifs';
|
|
5
|
+
import { generatePatternTiles, generateRandomTile, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, renderPatternSvgInner, } from './motifs';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
/**
|
|
8
8
|
* `val-pattern`
|
|
@@ -33,7 +33,6 @@ import * as i0 from "@angular/core";
|
|
|
33
33
|
* ```
|
|
34
34
|
*/
|
|
35
35
|
export class PatternComponent {
|
|
36
|
-
/** Object-first input. Cambios disparan re-render por signals. */
|
|
37
36
|
set props(value) {
|
|
38
37
|
if (!value)
|
|
39
38
|
return;
|
|
@@ -43,7 +42,9 @@ export class PatternComponent {
|
|
|
43
42
|
this.rows.set(Math.max(1, value.rows));
|
|
44
43
|
if (value.seed !== undefined)
|
|
45
44
|
this.seed.set(value.seed);
|
|
46
|
-
if (value.
|
|
45
|
+
if (value.style !== undefined)
|
|
46
|
+
this.patternStyle.set(value.style);
|
|
47
|
+
if (value.chevronDensity !== undefined && value.style === undefined) {
|
|
47
48
|
this.chevronDensity.set(Math.min(1, Math.max(0, value.chevronDensity)));
|
|
48
49
|
}
|
|
49
50
|
if (value.preserveAspect !== undefined)
|
|
@@ -67,11 +68,10 @@ export class PatternComponent {
|
|
|
67
68
|
this.seed = signal(this.randomSeed());
|
|
68
69
|
this.paletteRef = signal(PATTERN_PALETTES.purple);
|
|
69
70
|
this.chevronDensity = signal(0.55);
|
|
71
|
+
this.patternStyle = signal(undefined);
|
|
70
72
|
this.preserveAspect = signal('slice');
|
|
71
73
|
this.animated = signal(false);
|
|
72
|
-
/** ms entre reshuffles (modo animated). Default 8000ms — "de vez en cuando". */
|
|
73
74
|
this.reshuffleInterval = signal(8000);
|
|
74
|
-
/** Tiles a cambiar por tick. 0 → reseed grid completo (default). >0 → staggered. */
|
|
75
75
|
this.tilesPerTick = signal(0);
|
|
76
76
|
/**
|
|
77
77
|
* Tiles signal — mutable. Se regenera completa cuando cambia seed/cols/rows/
|
|
@@ -104,7 +104,8 @@ export class PatternComponent {
|
|
|
104
104
|
const seed = this.seed();
|
|
105
105
|
const palette = this.paletteRef();
|
|
106
106
|
const density = this.chevronDensity();
|
|
107
|
-
this.
|
|
107
|
+
const style = this.patternStyle();
|
|
108
|
+
this.tiles.set(generatePatternTiles({ cols, rows, seed, palette, chevronDensity: density, style }));
|
|
108
109
|
}, { allowSignalWrites: true });
|
|
109
110
|
// Modo animated: cada `reshuffleInterval` ms regenera el grid completo
|
|
110
111
|
// con un seed nuevo. Visualmente: el patrón cambia de vez en cuando.
|
|
@@ -146,9 +147,11 @@ export class PatternComponent {
|
|
|
146
147
|
const next = [...current];
|
|
147
148
|
const palette = this.paletteRef();
|
|
148
149
|
const density = this.chevronDensity();
|
|
150
|
+
const style = this.patternStyle();
|
|
151
|
+
const densityConfig = style ? PATTERN_STYLE_CONFIGS[style] : undefined;
|
|
149
152
|
for (let n = 0; n < count; n++) {
|
|
150
153
|
const idx = Math.floor(Math.random() * next.length);
|
|
151
|
-
next[idx] = generateRandomTile(palette, density);
|
|
154
|
+
next[idx] = generateRandomTile(palette, density, Math.random, densityConfig);
|
|
152
155
|
}
|
|
153
156
|
this.tiles.set(next);
|
|
154
157
|
}
|
|
@@ -175,4 +178,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
175
178
|
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
176
179
|
type: Input
|
|
177
180
|
}] } });
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvcGF0dGVybi9wYXR0ZXJuLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBR2hCLHFCQUFxQixHQUN0QixNQUFNLFVBQVUsQ0FBQzs7QUFHbEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCRztBQW9DSCxNQUFNLE9BQU8sZ0JBQWdCO0lBaUIzQixrRUFBa0U7SUFDbEUsSUFBYSxLQUFLLENBQUMsS0FBa0M7UUFDbkQsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBQ25CLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckUsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNyRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUztZQUFFLElB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QUMsWUFBWSxDQUFDLFlBQ2IsMkRBQTJEO3dEQWlEeEQsS0FBSztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIElucHV0LCBPbkRlc3Ryb3ksIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBnZW5lcmF0ZVBhdHRlcm5UaWxlcyxcbiAgZ2VuZXJhdGVSYW5kb21UaWxlLFxuICBQQVRURVJOX1BBTEVUVEVTLFxuICBQYXR0ZXJuUGFsZXR0ZUtleSxcbiAgUGF0dGVyblRpbGUsXG4gIHJlbmRlclBhdHRlcm5TdmdJbm5lcixcbn0gZnJvbSAnLi9tb3RpZnMnO1xuaW1wb3J0IHsgUGF0dGVybk1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogYHZhbC1wYXR0ZXJuYFxuICpcbiAqIENvbXBvbmVudGUgZGUgZm9uZG8gZ2VvbcOpdHJpY28gaW5zcGlyYWRvIGVuIGVsIHNpc3RlbWEgVmFsdGVjaC4gUmVuZGVyaXphIHVuXG4gKiBncmlkIGRlIHRpbGVzIDEwMMOXMTAwIGNvbiBtb3RpZnMgKGNoZXZyb25zLCB0cmlhbmdsZXMsIGRpYW1vbmRzLCBhcnJvd3MpIGVuXG4gKiB1biBTVkcgaW5saW5lLiBEZXRlcm1pbmlzdGEgdsOtYSBgc2VlZGAgbyBhbmltYWRvIHbDrWEgYHJlc2h1ZmZsZWAuXG4gKlxuICogQ2VybyBkZXBlbmRlbmNpYXMgZXh0ZXJuYXMg4oCUIHRvZG8gU1ZHLlxuICpcbiAqIEBleGFtcGxlIENvbW8gZm9uZG8gZGUgY2FyZCAoQ1NTIGFic29sdXRlKTpcbiAqIGBgYHNjc3NcbiAqIC5jYXJkIHsgcG9zaXRpb246IHJlbGF0aXZlOyBvdmVyZmxvdzogaGlkZGVuOyB9XG4gKiAuY2FyZCB2YWwtcGF0dGVybiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgaW5zZXQ6IDA7IHotaW5kZXg6IDA7IG9wYWNpdHk6IDAuNDsgfVxuICogLmNhcmQgLmNvbnRlbnQgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDE7IH1cbiAqIGBgYFxuICpcbiAqIGBgYGh0bWxcbiAqIDxkaXYgY2xhc3M9XCJjYXJkXCI+XG4gKiAgIDx2YWwtcGF0dGVybiBbcHJvcHNdPVwieyBwYWxldHRlOiAncHVycGxlJywgY29sczogNiwgcm93czogMywgc2VlZDogNDIgfVwiIC8+XG4gKiAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+VHUgY29udGVuaWRvIGFxdcOtPC9kaXY+XG4gKiA8L2Rpdj5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIENvbW8gYmFja2dyb3VuZCBhbmltYWRvIChoZXJvL2xvZ2luKTpcbiAqIGBgYGh0bWxcbiAqIDx2YWwtcGF0dGVybiBbcHJvcHNdPVwieyBwYWxldHRlOiAnbGF2ZW5kZXInLCBjb2xzOiAxNiwgcm93czogOCwgYW5pbWF0ZWQ6IHRydWUgfVwiIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXBhdHRlcm4nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGAgPGRpdiBjbGFzcz1cInZhbC1wYXR0ZXJuXCIgW2lubmVySFRNTF09XCJzdmdIdG1sKClcIj48L2Rpdj4gYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIH1cblxuICAgICAgLnZhbC1wYXR0ZXJuIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC42cyBlYXNlLWluLW91dDtcbiAgICAgIH1cblxuICAgICAgLyogU3BlY2lmaWNpdHkgMCwyLDAg4oCUIGJlYXRzIFVBIGRlZmF1bHRzIHBhcmEgU1ZHLiBXaWR0aC9oZWlnaHQgZnVlcnphblxuICAgICAgICogZmlsbCBkZWwgY29udGFpbmVyLiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwic2xpY2VcIiBlbiBlbCB2aWV3Qm94IGhhY2UgZWxcbiAgICAgICAqIGNyb3AvY292ZXIuIFNpbiBlc3RvLCBlbCBTVkcgY2FlIGEgc3UgaW50cmluc2ljIGFzcGVjdCByYXRpbyBkZWxcbiAgICAgICAqIHZpZXdCb3ggeSBkZWphIGZyYW5qYXMgY3VhbmRvIGVsIGNvbnRhaW5lciBubyBtYXRjaGVhIChlai4gbW9iaWxlXG4gICAgICAgKiBjb24gY29scy9yb3dzIHdpZGUtYXNwZWN0KS4gKi9cbiAgICAgIC52YWwtcGF0dGVybiBzdmcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQYXR0ZXJuQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvbHMgPSBzaWduYWwoMTIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvd3MgPSBzaWduYWwoNCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VlZCA9IHNpZ25hbCh0aGlzLnJhbmRvbVNlZWQoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGFsZXR0ZVJlZiA9IHNpZ25hbDxzdHJpbmdbXT4oUEFUVEVSTl9QQUxFVFRFUy5wdXJwbGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoZXZyb25EZW5zaXR5ID0gc2lnbmFsKDAuNTUpO1xuICBwcml2YXRlIHJlYWRvbmx5IHByZXNlcnZlQXNwZWN0ID0gc2lnbmFsPCdzbGljZScgfCAnbWVldCc+KCdzbGljZScpO1xuICBwcml2YXRlIHJlYWRvbmx5IGFuaW1hdGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgLyoqIG1zIGVudHJlIHJlc2h1ZmZsZXMgKG1vZG8gYW5pbWF0ZWQpLiBEZWZhdWx0IDgwMDBtcyDigJQgXCJkZSB2ZXogZW4gY3VhbmRvXCIuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzaHVmZmxlSW50ZXJ2YWwgPSBzaWduYWwoODAwMCk7XG4gIC8qKiBUaWxlcyBhIGNhbWJpYXIgcG9yIHRpY2suIDAg4oaSIHJlc2VlZCBncmlkIGNvbXBsZXRvIChkZWZhdWx0KS4gPjAg4oaSIHN0YWdnZXJlZC4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSB0aWxlc1BlclRpY2sgPSBzaWduYWwoMCk7XG5cbiAgcHJpdmF0ZSB0aW1lcj86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcblxuICAvKiogT2JqZWN0LWZpcnN0IGlucHV0LiBDYW1iaW9zIGRpc3BhcmFuIHJlLXJlbmRlciBwb3Igc2lnbmFscy4gKi9cbiAgQElucHV0KCkgc2V0IHByb3BzKHZhbHVlOiBQYXR0ZXJuTWV0YWRhdGEgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm47XG4gICAgaWYgKHZhbHVlLmNvbHMgIT09IHVuZGVmaW5lZCkgdGhpcy5jb2xzLnNldChNYXRoLm1heCgxLCB2YWx1ZS5jb2xzKSk7XG4gICAgaWYgKHZhbHVlLnJvd3MgIT09IHVuZGVmaW5lZCkgdGhpcy5yb3dzLnNldChNYXRoLm1heCgxLCB2YWx1ZS5yb3dzKSk7XG4gICAgaWYgKHZhbHVlLnNlZWQgIT09IHVuZGVmaW5lZCkgdGhpcy5zZWVkLnNldCh2YWx1ZS5zZWVkKTtcbiAgICBpZiAodmFsdWUuY2hldnJvbkRlbnNpdHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jaGV2cm9uRGVuc2l0eS5zZXQoTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgdmFsdWUuY2hldnJvbkRlbnNpdHkpKSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5wcmVzZXJ2ZUFzcGVjdCAhPT0gdW5kZWZpbmVkKSB0aGlzLnByZXNlcnZlQXNwZWN0LnNldCh2YWx1ZS5wcmVzZXJ2ZUFzcGVjdCk7XG4gICAgaWYgKHZhbHVlLnBhbGV0dGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5wYWxldHRlUmVmLnNldCh0aGlzLnJlc29sdmVQYWxldHRlKHZhbHVlLnBhbGV0dGUpKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnJlc2h1ZmZsZUludGVydmFsICE9PSB1bmRlZmluZWQgJiYgdmFsdWUucmVzaHVmZmxlSW50ZXJ2YWwgPiAwKSB7XG4gICAgICB0aGlzLnJlc2h1ZmZsZUludGVydmFsLnNldCh2YWx1ZS5yZXNodWZmbGVJbnRlcnZhbCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS50aWxlc1BlclRpY2sgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS50aWxlc1BlclRpY2sgPj0gMCkge1xuICAgICAgdGhpcy50aWxlc1BlclRpY2suc2V0KE1hdGguZmxvb3IodmFsdWUudGlsZXNQZXJUaWNrKSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5hbmltYXRlZCAhPT0gdW5kZWZpbmVkKSB0aGlzLmFuaW1hdGVkLnNldCghIXZhbHVlLmFuaW1hdGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaWxlcyBzaWduYWwg4oCUIG11dGFibGUuIFNlIHJlZ2VuZXJhIGNvbXBsZXRhIGN1YW5kbyBjYW1iaWEgc2VlZC9jb2xzL3Jvd3MvXG4gICAqIHBhbGV0dGUvZGVuc2l0eS4gRW4gbW9kbyBhbmltYXRlZCwgdGlsZXMgaW5kaXZpZHVhbGVzIHNlIHNvYnJlc2NyaWJlbiBzaW5cbiAgICogdG9jYXIgZWwgcmVzdG8gKGVmZWN0byBzdGFnZ2VyZWQpLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSB0aWxlcyA9IHNpZ25hbDxQYXR0ZXJuVGlsZVtdPihbXSk7XG5cbiAgLyoqIFNWRyBjb21wbGV0byBjb21vIHN0cmluZyBzYW5pdGl6ZWQgcGFyYSBgW2lubmVySFRNTF1gLiAqL1xuICByZWFkb25seSBzdmdIdG1sID0gY29tcHV0ZWQ8U2FmZUh0bWw+KCgpID0+IHtcbiAgICBjb25zdCBjb2xzID0gdGhpcy5jb2xzKCk7XG4gICAgY29uc3Qgcm93cyA9IHRoaXMucm93cygpO1xuICAgIGNvbnN0IHBhbGV0dGUgPSB0aGlzLnBhbGV0dGVSZWYoKTtcbiAgICBjb25zdCBpbm5lciA9IHJlbmRlclBhdHRlcm5TdmdJbm5lcih0aGlzLnRpbGVzKCksIGNvbHMsIHBhbGV0dGVbMF0hKTtcbiAgICBjb25zdCBhc3BlY3QgPSB0aGlzLnByZXNlcnZlQXNwZWN0KCkgPT09ICdtZWV0JyA/ICd4TWlkWU1pZCBtZWV0JyA6ICd4TWlkWU1pZCBzbGljZSc7XG4gICAgLy8gd2lkdGgvaGVpZ2h0PVwiMTAwJVwiIGNvbW8gQVRSSUJVVE9TIChubyBzb2xvIENTUykg4oCUIGFsZ3Vub3MgYnJvd3NlcnNcbiAgICAvLyAoU2FmYXJpL2lPUykgaWdub3JhbiBDU1MgaGVpZ2h0IGVuIFNWRyBzaW4gYXRyaWJ1dG9zIHkgY2FlbiBhbCBpbnRyaW5zaWNcbiAgICAvLyBhc3BlY3QgZGVsIHZpZXdCb3gsIGRlamFuZG8gZnJhbmphcyB2YWPDrWFzIGN1YW5kbyBlbCBjb250YWluZXIgbm9cbiAgICAvLyBtYXRjaGVhIGVsIHJhdGlvLlxuICAgIGNvbnN0IHN2ZyA9IGA8c3ZnIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiB2aWV3Qm94PVwiMCAwICR7Y29scyAqIDEwMH0gJHtyb3dzICogMTAwfVwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCIke2FzcGVjdH1cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgc3R5bGU9XCJkaXNwbGF5OmJsb2NrO1wiPiR7aW5uZXJ9PC9zdmc+YDtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoc3ZnKTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gUmVnZW5lcmEgZ3JpZCBjb21wbGV0YSBjdWFuZG8gY2FtYmlhbiBwcm9wcyBlc3RydWN0dXJhbGVzIChjb2xzL3Jvd3MvXG4gICAgLy8gcGFsZXR0ZS9kZW5zaXR5L3NlZWQpLiBFbCBzZWVkIHNvbG8gY2FtYmlhIGV4cGzDrWNpdGFtZW50ZSB2aWEgcHJvcHMgb1xuICAgIC8vIG1vdW50IGluaWNpYWwg4oCUIE5PIHNlIG11dGEgZW4gbW9kbyBhbmltYXRlZC5cbiAgICAvLyBgYWxsb3dTaWduYWxXcml0ZXM6IHRydWVgIHJlcXVlcmlkbyBlbiBBbmd1bGFyIDE4OiBlc2NyaWJpbW9zIGEgYHRpbGVzYFxuICAgIC8vIHNpZ25hbCBkZW50cm8gZGVsIGVmZmVjdCAoY29uc3VtaWRvIHBvciBzdmdIdG1sIGNvbXB1dGVkKS5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHMgPSB0aGlzLmNvbHMoKTtcbiAgICAgICAgY29uc3Qgcm93cyA9IHRoaXMucm93cygpO1xuICAgICAgICBjb25zdCBzZWVkID0gdGhpcy5zZWVkKCk7XG4gICAgICAgIGNvbnN0IHBhbGV0dGUgPSB0aGlzLnBhbGV0dGVSZWYoKTtcbiAgICAgICAgY29uc3QgZGVuc2l0eSA9IHRoaXMuY2hldnJvbkRlbnNpdHkoKTtcbiAgICAgICAgdGhpcy50aWxlcy5zZXQoZ2VuZXJhdGVQYXR0ZXJuVGlsZXMoeyBjb2xzLCByb3dzLCBzZWVkLCBwYWxldHRlLCBjaGV2cm9uRGVuc2l0eTogZGVuc2l0eSB9KSk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcblxuICAgIC8vIE1vZG8gYW5pbWF0ZWQ6IGNhZGEgYHJlc2h1ZmZsZUludGVydmFsYCBtcyByZWdlbmVyYSBlbCBncmlkIGNvbXBsZXRvXG4gICAgLy8gY29uIHVuIHNlZWQgbnVldm8uIFZpc3VhbG1lbnRlOiBlbCBwYXRyw7NuIGNhbWJpYSBkZSB2ZXogZW4gY3VhbmRvLlxuICAgIC8vIFNpIGB0aWxlc1BlclRpY2sgPiAwYCB5IDwgdG90YWwgdGlsZXMsIGhhY2Ugc3RhZ2dlcmVkIChyZWVtcGxhemEgc29sb1xuICAgIC8vIE4gdGlsZXMgZW4gdmV6IGRlIHRvZGEgbGEgZ3JpZCkuIERlZmF1bHQgdGlsZXNQZXJUaWNrPTAg4oaSIHJlc2VlZCB0b3RhbC5cbiAgICBlZmZlY3Qob25DbGVhbnVwID0+IHtcbiAgICAgIGNvbnN0IGlzQW5pbWF0ZWQgPSB0aGlzLmFuaW1hdGVkKCk7XG4gICAgICBjb25zdCBpbnRlcnZhbCA9IHRoaXMucmVzaHVmZmxlSW50ZXJ2YWwoKTtcbiAgICAgIGNvbnN0IHBlclRpY2sgPSB0aGlzLnRpbGVzUGVyVGljaygpO1xuICAgICAgaWYgKHRoaXMudGltZXIpIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICB0aGlzLnRpbWVyID0gdW5kZWZpbmVkO1xuICAgICAgaWYgKCFpc0FuaW1hdGVkKSByZXR1cm47XG4gICAgICB0aGlzLnRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBpZiAocGVyVGljayA+IDApIHtcbiAgICAgICAgICB0aGlzLm11dGF0ZVJhbmRvbVRpbGVzKHBlclRpY2spO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VlZC5zZXQodGhpcy5yYW5kb21TZWVkKCkpO1xuICAgICAgICB9XG4gICAgICB9LCBpbnRlcnZhbCk7XG4gICAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICAgICAgdGhpcy50aW1lciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVlbXBsYXphIGBjb3VudGAgdGlsZXMgcmFuZG9tIGRlbCBncmlkIGFjdHVhbCBjb24gdGlsZXMgbnVldm9zIGdlbmVyYWRvcy5cbiAgICogVXNhZG8gcGFyYSBzdGFnZ2VyZWQgcmVzaHVmZmxlIChvcHQtaW4gdmlhIGB0aWxlc1BlclRpY2sgPiAwYCkuXG4gICAqL1xuICBwcml2YXRlIG11dGF0ZVJhbmRvbVRpbGVzKGNvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy50aWxlcygpO1xuICAgIGlmIChjdXJyZW50Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IG5leHQgPSBbLi4uY3VycmVudF07XG4gICAgY29uc3QgcGFsZXR0ZSA9IHRoaXMucGFsZXR0ZVJlZigpO1xuICAgIGNvbnN0IGRlbnNpdHkgPSB0aGlzLmNoZXZyb25EZW5zaXR5KCk7XG4gICAgZm9yIChsZXQgbiA9IDA7IG4gPCBjb3VudDsgbisrKSB7XG4gICAgICBjb25zdCBpZHggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBuZXh0Lmxlbmd0aCk7XG4gICAgICBuZXh0W2lkeF0gPSBnZW5lcmF0ZVJhbmRvbVRpbGUocGFsZXR0ZSwgZGVuc2l0eSk7XG4gICAgfVxuICAgIHRoaXMudGlsZXMuc2V0KG5leHQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGltZXIpIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVQYWxldHRlKHA6IFBhdHRlcm5QYWxldHRlS2V5IHwgc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocCkpIHtcbiAgICAgIC8vIEFjZXB0YSBhcnJheXMgZGUgY3VhbHF1aWVyIGxvbmdpdHVkIOKJpTI7IHRpbGUgY29udHJhc3QgbG9naWMgdXNhIMOtbmRpY2VzLlxuICAgICAgcmV0dXJuIHAubGVuZ3RoID49IDIgPyBwIDogUEFUVEVSTl9QQUxFVFRFUy5wdXJwbGU7XG4gICAgfVxuICAgIHJldHVybiBQQVRURVJOX1BBTEVUVEVTW3BdID8/IFBBVFRFUk5fUEFMRVRURVMucHVycGxlO1xuICB9XG5cbiAgcHJpdmF0ZSByYW5kb21TZWVkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDFfMDAwXzAwMCk7XG4gIH1cbn1cbiJdfQ==
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvcGF0dGVybi9wYXR0ZXJuLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUtyQixxQkFBcUIsR0FDdEIsTUFBTSxVQUFVLENBQUM7O0FBR2xCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFvQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQWdCM0IsSUFBYSxLQUFLLENBQUMsS0FBa0M7UUFDbkQsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBQ25CLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckUsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNyRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUztZQUFFLElB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QUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUNyRCxDQUFDO1FBQ0QsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7SUFDeEQsQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDOytHQTNJVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQixtR0EvQmpCLDJEQUEyRCxvU0FEM0QsWUFBWTs7NEZBZ0NYLGdCQUFnQjtrQkFuQzVCLFNBQVM7K0JBQ0UsYUFBYSxjQUNYLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiLDJEQUEyRDt3REErQ3hELEtBQUs7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBJbnB1dCwgT25EZXN0cm95LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgZ2VuZXJhdGVQYXR0ZXJuVGlsZXMsXG4gIGdlbmVyYXRlUmFuZG9tVGlsZSxcbiAgUEFUVEVSTl9QQUxFVFRFUyxcbiAgUEFUVEVSTl9TVFlMRV9DT05GSUdTLFxuICBQYXR0ZXJuRGVuc2l0eUNvbmZpZyxcbiAgUGF0dGVyblBhbGV0dGVLZXksXG4gIFBhdHRlcm5TdHlsZUtleSxcbiAgUGF0dGVyblRpbGUsXG4gIHJlbmRlclBhdHRlcm5TdmdJbm5lcixcbn0gZnJvbSAnLi9tb3RpZnMnO1xuaW1wb3J0IHsgUGF0dGVybk1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogYHZhbC1wYXR0ZXJuYFxuICpcbiAqIENvbXBvbmVudGUgZGUgZm9uZG8gZ2VvbcOpdHJpY28gaW5zcGlyYWRvIGVuIGVsIHNpc3RlbWEgVmFsdGVjaC4gUmVuZGVyaXphIHVuXG4gKiBncmlkIGRlIHRpbGVzIDEwMMOXMTAwIGNvbiBtb3RpZnMgKGNoZXZyb25zLCB0cmlhbmdsZXMsIGRpYW1vbmRzLCBhcnJvd3MpIGVuXG4gKiB1biBTVkcgaW5saW5lLiBEZXRlcm1pbmlzdGEgdsOtYSBgc2VlZGAgbyBhbmltYWRvIHbDrWEgYHJlc2h1ZmZsZWAuXG4gKlxuICogQ2VybyBkZXBlbmRlbmNpYXMgZXh0ZXJuYXMg4oCUIHRvZG8gU1ZHLlxuICpcbiAqIEBleGFtcGxlIENvbW8gZm9uZG8gZGUgY2FyZCAoQ1NTIGFic29sdXRlKTpcbiAqIGBgYHNjc3NcbiAqIC5jYXJkIHsgcG9zaXRpb246IHJlbGF0aXZlOyBvdmVyZmxvdzogaGlkZGVuOyB9XG4gKiAuY2FyZCB2YWwtcGF0dGVybiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgaW5zZXQ6IDA7IHotaW5kZXg6IDA7IG9wYWNpdHk6IDAuNDsgfVxuICogLmNhcmQgLmNvbnRlbnQgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDE7IH1cbiAqIGBgYFxuICpcbiAqIGBgYGh0bWxcbiAqIDxkaXYgY2xhc3M9XCJjYXJkXCI+XG4gKiAgIDx2YWwtcGF0dGVybiBbcHJvcHNdPVwieyBwYWxldHRlOiAncHVycGxlJywgY29sczogNiwgcm93czogMywgc2VlZDogNDIgfVwiIC8+XG4gKiAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+VHUgY29udGVuaWRvIGFxdcOtPC9kaXY+XG4gKiA8L2Rpdj5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIENvbW8gYmFja2dyb3VuZCBhbmltYWRvIChoZXJvL2xvZ2luKTpcbiAqIGBgYGh0bWxcbiAqIDx2YWwtcGF0dGVybiBbcHJvcHNdPVwieyBwYWxldHRlOiAnbGF2ZW5kZXInLCBjb2xzOiAxNiwgcm93czogOCwgYW5pbWF0ZWQ6IHRydWUgfVwiIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXBhdHRlcm4nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGAgPGRpdiBjbGFzcz1cInZhbC1wYXR0ZXJuXCIgW2lubmVySFRNTF09XCJzdmdIdG1sKClcIj48L2Rpdj4gYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIH1cblxuICAgICAgLnZhbC1wYXR0ZXJuIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC42cyBlYXNlLWluLW91dDtcbiAgICAgIH1cblxuICAgICAgLyogU3BlY2lmaWNpdHkgMCwyLDAg4oCUIGJlYXRzIFVBIGRlZmF1bHRzIHBhcmEgU1ZHLiBXaWR0aC9oZWlnaHQgZnVlcnphblxuICAgICAgICogZmlsbCBkZWwgY29udGFpbmVyLiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwic2xpY2VcIiBlbiBlbCB2aWV3Qm94IGhhY2UgZWxcbiAgICAgICAqIGNyb3AvY292ZXIuIFNpbiBlc3RvLCBlbCBTVkcgY2FlIGEgc3UgaW50cmluc2ljIGFzcGVjdCByYXRpbyBkZWxcbiAgICAgICAqIHZpZXdCb3ggeSBkZWphIGZyYW5qYXMgY3VhbmRvIGVsIGNvbnRhaW5lciBubyBtYXRjaGVhIChlai4gbW9iaWxlXG4gICAgICAgKiBjb24gY29scy9yb3dzIHdpZGUtYXNwZWN0KS4gKi9cbiAgICAgIC52YWwtcGF0dGVybiBzdmcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQYXR0ZXJuQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvbHMgPSBzaWduYWwoMTIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvd3MgPSBzaWduYWwoNCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VlZCA9IHNpZ25hbCh0aGlzLnJhbmRvbVNlZWQoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGFsZXR0ZVJlZiA9IHNpZ25hbDxzdHJpbmdbXT4oUEFUVEVSTl9QQUxFVFRFUy5wdXJwbGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoZXZyb25EZW5zaXR5ID0gc2lnbmFsKDAuNTUpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBhdHRlcm5TdHlsZSA9IHNpZ25hbDxQYXR0ZXJuU3R5bGVLZXkgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlc2VydmVBc3BlY3QgPSBzaWduYWw8J3NsaWNlJyB8ICdtZWV0Jz4oJ3NsaWNlJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYW5pbWF0ZWQgPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc2h1ZmZsZUludGVydmFsID0gc2lnbmFsKDgwMDApO1xuICBwcml2YXRlIHJlYWRvbmx5IHRpbGVzUGVyVGljayA9IHNpZ25hbCgwKTtcblxuICBwcml2YXRlIHRpbWVyPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuXG4gIEBJbnB1dCgpIHNldCBwcm9wcyh2YWx1ZTogUGF0dGVybk1ldGFkYXRhIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuICAgIGlmICh2YWx1ZS5jb2xzICE9PSB1bmRlZmluZWQpIHRoaXMuY29scy5zZXQoTWF0aC5tYXgoMSwgdmFsdWUuY29scykpO1xuICAgIGlmICh2YWx1ZS5yb3dzICE9PSB1bmRlZmluZWQpIHRoaXMucm93cy5zZXQoTWF0aC5tYXgoMSwgdmFsdWUucm93cykpO1xuICAgIGlmICh2YWx1ZS5zZWVkICE9PSB1bmRlZmluZWQpIHRoaXMuc2VlZC5zZXQodmFsdWUuc2VlZCk7XG4gICAgaWYgKHZhbHVlLnN0eWxlICE9PSB1bmRlZmluZWQpIHRoaXMucGF0dGVyblN0eWxlLnNldCh2YWx1ZS5zdHlsZSk7XG4gICAgaWYgKHZhbHVlLmNoZXZyb25EZW5zaXR5ICE9PSB1bmRlZmluZWQgJiYgdmFsdWUuc3R5bGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jaGV2cm9uRGVuc2l0eS5zZXQoTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgdmFsdWUuY2hldnJvbkRlbnNpdHkpKSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5wcmVzZXJ2ZUFzcGVjdCAhPT0gdW5kZWZpbmVkKSB0aGlzLnByZXNlcnZlQXNwZWN0LnNldCh2YWx1ZS5wcmVzZXJ2ZUFzcGVjdCk7XG4gICAgaWYgKHZhbHVlLnBhbGV0dGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5wYWxldHRlUmVmLnNldCh0aGlzLnJlc29sdmVQYWxldHRlKHZhbHVlLnBhbGV0dGUpKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnJlc2h1ZmZsZUludGVydmFsICE9PSB1bmRlZmluZWQgJiYgdmFsdWUucmVzaHVmZmxlSW50ZXJ2YWwgPiAwKSB7XG4gICAgICB0aGlzLnJlc2h1ZmZsZUludGVydmFsLnNldCh2YWx1ZS5yZXNodWZmbGVJbnRlcnZhbCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS50aWxlc1BlclRpY2sgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS50aWxlc1BlclRpY2sgPj0gMCkge1xuICAgICAgdGhpcy50aWxlc1BlclRpY2suc2V0KE1hdGguZmxvb3IodmFsdWUudGlsZXNQZXJUaWNrKSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5hbmltYXRlZCAhPT0gdW5kZWZpbmVkKSB0aGlzLmFuaW1hdGVkLnNldCghIXZhbHVlLmFuaW1hdGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaWxlcyBzaWduYWwg4oCUIG11dGFibGUuIFNlIHJlZ2VuZXJhIGNvbXBsZXRhIGN1YW5kbyBjYW1iaWEgc2VlZC9jb2xzL3Jvd3MvXG4gICAqIHBhbGV0dGUvZGVuc2l0eS4gRW4gbW9kbyBhbmltYXRlZCwgdGlsZXMgaW5kaXZpZHVhbGVzIHNlIHNvYnJlc2NyaWJlbiBzaW5cbiAgICogdG9jYXIgZWwgcmVzdG8gKGVmZWN0byBzdGFnZ2VyZWQpLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSB0aWxlcyA9IHNpZ25hbDxQYXR0ZXJuVGlsZVtdPihbXSk7XG5cbiAgLyoqIFNWRyBjb21wbGV0byBjb21vIHN0cmluZyBzYW5pdGl6ZWQgcGFyYSBgW2lubmVySFRNTF1gLiAqL1xuICByZWFkb25seSBzdmdIdG1sID0gY29tcHV0ZWQ8U2FmZUh0bWw+KCgpID0+IHtcbiAgICBjb25zdCBjb2xzID0gdGhpcy5jb2xzKCk7XG4gICAgY29uc3Qgcm93cyA9IHRoaXMucm93cygpO1xuICAgIGNvbnN0IHBhbGV0dGUgPSB0aGlzLnBhbGV0dGVSZWYoKTtcbiAgICBjb25zdCBpbm5lciA9IHJlbmRlclBhdHRlcm5TdmdJbm5lcih0aGlzLnRpbGVzKCksIGNvbHMsIHBhbGV0dGVbMF0hKTtcbiAgICBjb25zdCBhc3BlY3QgPSB0aGlzLnByZXNlcnZlQXNwZWN0KCkgPT09ICdtZWV0JyA/ICd4TWlkWU1pZCBtZWV0JyA6ICd4TWlkWU1pZCBzbGljZSc7XG4gICAgLy8gd2lkdGgvaGVpZ2h0PVwiMTAwJVwiIGNvbW8gQVRSSUJVVE9TIChubyBzb2xvIENTUykg4oCUIGFsZ3Vub3MgYnJvd3NlcnNcbiAgICAvLyAoU2FmYXJpL2lPUykgaWdub3JhbiBDU1MgaGVpZ2h0IGVuIFNWRyBzaW4gYXRyaWJ1dG9zIHkgY2FlbiBhbCBpbnRyaW5zaWNcbiAgICAvLyBhc3BlY3QgZGVsIHZpZXdCb3gsIGRlamFuZG8gZnJhbmphcyB2YWPDrWFzIGN1YW5kbyBlbCBjb250YWluZXIgbm9cbiAgICAvLyBtYXRjaGVhIGVsIHJhdGlvLlxuICAgIGNvbnN0IHN2ZyA9IGA8c3ZnIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiB2aWV3Qm94PVwiMCAwICR7Y29scyAqIDEwMH0gJHtyb3dzICogMTAwfVwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCIke2FzcGVjdH1cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgc3R5bGU9XCJkaXNwbGF5OmJsb2NrO1wiPiR7aW5uZXJ9PC9zdmc+YDtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoc3ZnKTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gUmVnZW5lcmEgZ3JpZCBjb21wbGV0YSBjdWFuZG8gY2FtYmlhbiBwcm9wcyBlc3RydWN0dXJhbGVzIChjb2xzL3Jvd3MvXG4gICAgLy8gcGFsZXR0ZS9kZW5zaXR5L3NlZWQpLiBFbCBzZWVkIHNvbG8gY2FtYmlhIGV4cGzDrWNpdGFtZW50ZSB2aWEgcHJvcHMgb1xuICAgIC8vIG1vdW50IGluaWNpYWwg4oCUIE5PIHNlIG11dGEgZW4gbW9kbyBhbmltYXRlZC5cbiAgICAvLyBgYWxsb3dTaWduYWxXcml0ZXM6IHRydWVgIHJlcXVlcmlkbyBlbiBBbmd1bGFyIDE4OiBlc2NyaWJpbW9zIGEgYHRpbGVzYFxuICAgIC8vIHNpZ25hbCBkZW50cm8gZGVsIGVmZmVjdCAoY29uc3VtaWRvIHBvciBzdmdIdG1sIGNvbXB1dGVkKS5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHMgPSB0aGlzLmNvbHMoKTtcbiAgICAgICAgY29uc3Qgcm93cyA9IHRoaXMucm93cygpO1xuICAgICAgICBjb25zdCBzZWVkID0gdGhpcy5zZWVkKCk7XG4gICAgICAgIGNvbnN0IHBhbGV0dGUgPSB0aGlzLnBhbGV0dGVSZWYoKTtcbiAgICAgICAgY29uc3QgZGVuc2l0eSA9IHRoaXMuY2hldnJvbkRlbnNpdHkoKTtcbiAgICAgICAgY29uc3Qgc3R5bGUgPSB0aGlzLnBhdHRlcm5TdHlsZSgpO1xuICAgICAgICB0aGlzLnRpbGVzLnNldChnZW5lcmF0ZVBhdHRlcm5UaWxlcyh7IGNvbHMsIHJvd3MsIHNlZWQsIHBhbGV0dGUsIGNoZXZyb25EZW5zaXR5OiBkZW5zaXR5LCBzdHlsZSB9KSk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcblxuICAgIC8vIE1vZG8gYW5pbWF0ZWQ6IGNhZGEgYHJlc2h1ZmZsZUludGVydmFsYCBtcyByZWdlbmVyYSBlbCBncmlkIGNvbXBsZXRvXG4gICAgLy8gY29uIHVuIHNlZWQgbnVldm8uIFZpc3VhbG1lbnRlOiBlbCBwYXRyw7NuIGNhbWJpYSBkZSB2ZXogZW4gY3VhbmRvLlxuICAgIC8vIFNpIGB0aWxlc1BlclRpY2sgPiAwYCB5IDwgdG90YWwgdGlsZXMsIGhhY2Ugc3RhZ2dlcmVkIChyZWVtcGxhemEgc29sb1xuICAgIC8vIE4gdGlsZXMgZW4gdmV6IGRlIHRvZGEgbGEgZ3JpZCkuIERlZmF1bHQgdGlsZXNQZXJUaWNrPTAg4oaSIHJlc2VlZCB0b3RhbC5cbiAgICBlZmZlY3Qob25DbGVhbnVwID0+IHtcbiAgICAgIGNvbnN0IGlzQW5pbWF0ZWQgPSB0aGlzLmFuaW1hdGVkKCk7XG4gICAgICBjb25zdCBpbnRlcnZhbCA9IHRoaXMucmVzaHVmZmxlSW50ZXJ2YWwoKTtcbiAgICAgIGNvbnN0IHBlclRpY2sgPSB0aGlzLnRpbGVzUGVyVGljaygpO1xuICAgICAgaWYgKHRoaXMudGltZXIpIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICB0aGlzLnRpbWVyID0gdW5kZWZpbmVkO1xuICAgICAgaWYgKCFpc0FuaW1hdGVkKSByZXR1cm47XG4gICAgICB0aGlzLnRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBpZiAocGVyVGljayA+IDApIHtcbiAgICAgICAgICB0aGlzLm11dGF0ZVJhbmRvbVRpbGVzKHBlclRpY2spO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VlZC5zZXQodGhpcy5yYW5kb21TZWVkKCkpO1xuICAgICAgICB9XG4gICAgICB9LCBpbnRlcnZhbCk7XG4gICAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICAgICAgdGhpcy50aW1lciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVlbXBsYXphIGBjb3VudGAgdGlsZXMgcmFuZG9tIGRlbCBncmlkIGFjdHVhbCBjb24gdGlsZXMgbnVldm9zIGdlbmVyYWRvcy5cbiAgICogVXNhZG8gcGFyYSBzdGFnZ2VyZWQgcmVzaHVmZmxlIChvcHQtaW4gdmlhIGB0aWxlc1BlclRpY2sgPiAwYCkuXG4gICAqL1xuICBwcml2YXRlIG11dGF0ZVJhbmRvbVRpbGVzKGNvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy50aWxlcygpO1xuICAgIGlmIChjdXJyZW50Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IG5leHQgPSBbLi4uY3VycmVudF07XG4gICAgY29uc3QgcGFsZXR0ZSA9IHRoaXMucGFsZXR0ZVJlZigpO1xuICAgIGNvbnN0IGRlbnNpdHkgPSB0aGlzLmNoZXZyb25EZW5zaXR5KCk7XG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLnBhdHRlcm5TdHlsZSgpO1xuICAgIGNvbnN0IGRlbnNpdHlDb25maWc6IFBhdHRlcm5EZW5zaXR5Q29uZmlnIHwgdW5kZWZpbmVkID0gc3R5bGUgPyBQQVRURVJOX1NUWUxFX0NPTkZJR1Nbc3R5bGVdIDogdW5kZWZpbmVkO1xuICAgIGZvciAobGV0IG4gPSAwOyBuIDwgY291bnQ7IG4rKykge1xuICAgICAgY29uc3QgaWR4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbmV4dC5sZW5ndGgpO1xuICAgICAgbmV4dFtpZHhdID0gZ2VuZXJhdGVSYW5kb21UaWxlKHBhbGV0dGUsIGRlbnNpdHksIE1hdGgucmFuZG9tLCBkZW5zaXR5Q29uZmlnKTtcbiAgICB9XG4gICAgdGhpcy50aWxlcy5zZXQobmV4dCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50aW1lcikgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVBhbGV0dGUocDogUGF0dGVyblBhbGV0dGVLZXkgfCBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwKSkge1xuICAgICAgLy8gQWNlcHRhIGFycmF5cyBkZSBjdWFscXVpZXIgbG9uZ2l0dWQg4omlMjsgdGlsZSBjb250cmFzdCBsb2dpYyB1c2Egw61uZGljZXMuXG4gICAgICByZXR1cm4gcC5sZW5ndGggPj0gMiA/IHAgOiBQQVRURVJOX1BBTEVUVEVTLnB1cnBsZTtcbiAgICB9XG4gICAgcmV0dXJuIFBBVFRFUk5fUEFMRVRURVNbcF0gPz8gUEFUVEVSTl9QQUxFVFRFUy5wdXJwbGU7XG4gIH1cblxuICBwcml2YXRlIHJhbmRvbVNlZWQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMV8wMDBfMDAwKTtcbiAgfVxufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvcGF0dGVybi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0dGVyblBhbGV0dGVLZXksIFBhdHRlcm5TdHlsZUtleSB9IGZyb20gJy4vbW90aWZzJztcblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBkZWwgY29tcG9uZW50ZSBgdmFsLXBhdHRlcm5gLlxuICpcbiAqIEBleGFtcGxlIFN0YXRpYyAoc2VlZCBmaWpvLCByZXByb2R1Y2libGUpOlxuICogYGBgaHRtbFxuICogPHZhbC1wYXR0ZXJuIFtwcm9wc109XCJ7IHBhbGV0dGU6ICdwdXJwbGUnLCBjb2xzOiAxMiwgcm93czogNCwgc2VlZDogNDIgfVwiIC8+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBBbmltYXRlZCB3aG9sZS1ncmlkIHJlc2h1ZmZsZSAoY2FkYSAxMHMpOlxuICogYGBgaHRtbFxuICogPHZhbC1wYXR0ZXJuIFtwcm9wc109XCJ7IHBhbGV0dGU6ICdtaWRuaWdodCcsIGNvbHM6IDE0LCByb3dzOiA1LCBhbmltYXRlZDogdHJ1ZSwgcmVzaHVmZmxlSW50ZXJ2YWw6IDEwMDAwIH1cIiAvPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQW5pbWF0ZWQgc3RhZ2dlcmVkICgyIHRpbGVzIGNhZGEgODAwbXMg4oCUIHN1dGlsKTpcbiAqIGBgYGh0bWxcbiAqIDx2YWwtcGF0dGVybiBbcHJvcHNdPVwieyBhbmltYXRlZDogdHJ1ZSwgcmVzaHVmZmxlSW50ZXJ2YWw6IDgwMCwgdGlsZXNQZXJUaWNrOiAyIH1cIiAvPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgUHJlc2V0IGdlb23DqXRyaWNvIGNvbiBwYWxldGEgZW1iZXI6XG4gKiBgYGBodG1sXG4gKiA8dmFsLXBhdHRlcm4gW3Byb3BzXT1cInsgcGFsZXR0ZTogJ2VtYmVyJywgc3R5bGU6ICdnZW9tZXRyaWMnLCBjb2xzOiAxMCwgcm93czogNCB9XCIgLz5cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5NZXRhZGF0YSB7XG4gIC8qKlxuICAgKiBQYWxldHRlIGJ1aWx0LWluIG8gYXJyYXkgY3VzdG9tIGRlIDggY29sb3JlcyBkYXJrIOKGkiBsaWdodC5cbiAgICogQnVpbHQtaW5zOiBgJ3B1cnBsZScgfCAnaW5rJyB8ICdsYXZlbmRlcicgfCAnbWlkbmlnaHQnIHwgJ2VtYmVyJyB8ICdmb3Jlc3QnIHwgJ3Jvc2UnIHwgJ2dvbGQnIHwgJ21vbm8nYC5cbiAgICogRGVmYXVsdDogYCdwdXJwbGUnYC5cbiAgICovXG4gIHBhbGV0dGU/OiBQYXR0ZXJuUGFsZXR0ZUtleSB8IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBQcmVzZXQgZGUgY29tcG9zaWNpw7NuIGRlIGZhbWlsaWFzIGRlIG1vdGlmcy5cbiAgICogLSBgYnJhbmRlZGAgICDihpIgQ2hldnJvbnMgZG9taW5hbnRlcyAoaWRlbnRpZGFkIFZhbHRlY2gpLiBEZWZhdWx0LlxuICAgKiAtIGBnZW9tZXRyaWNgIOKGkiBUcmnDoW5ndWxvcywgZXNxdWluYXMgcmVkb25kZWFkYXMgeSBjw61yY3Vsb3MuXG4gICAqIC0gYG1pbmltYWxgICAg4oaSIE1heW9yw61hIHPDs2xpZG8gY29uIHRyYXpvcyBzdXRpbGVzLiBMb29rIGNvcnBvcmF0aXZvIGxpbXBpby5cbiAgICogLSBgZGVuc2VgICAgICDihpIgTWV6Y2xhIHJpY2EgZGUgdG9kYXMgbGFzIGZhbWlsaWFzLiBNw6F4aW1hIHRleHR1cmEuXG4gICAqIC0gYGNvZGVgICAgICAg4oaSIE7Dum1lcm9zLCB1bmRlcnNjb3JlIGBfYCB5IGNoZXZyb25zLiBMb29rIGRlIHRlcm1pbmFsL2PDs2RpZ28uXG4gICAqXG4gICAqIEN1YW5kbyBzZSB1c2EgYHN0eWxlYCwgc29icmVlc2NyaWJlIGBjaGV2cm9uRGVuc2l0eWAuXG4gICAqL1xuICBzdHlsZT86IFBhdHRlcm5TdHlsZUtleTtcblxuICAvKiogQ29sdW1uYXMgZGVsIGdyaWQuIERlZmF1bHQ6IDEyLiAqL1xuICBjb2xzPzogbnVtYmVyO1xuXG4gIC8qKiBGaWxhcyBkZWwgZ3JpZC4gRGVmYXVsdDogNC4gKi9cbiAgcm93cz86IG51bWJlcjtcblxuICAvKipcbiAgICogU2VlZCBwYXJhIE11bGJlcnJ5MzIg4oCUIGRldGVybWluYSBlbCBwYXRyw7NuLiBTaSBubyBzZSBwYXNhLCBnZW5lcmEgdW5vIHJhbmRvbVxuICAgKiBhbCBtb3VudCB5IHF1ZWRhIGZpam8gKGEgbWVub3MgcXVlIGBhbmltYXRlZDogdHJ1ZWApLlxuICAgKi9cbiAgc2VlZD86IG51bWJlcjtcblxuICAvKipcbiAgICogRGVuc2lkYWQgZGUgY2hldnJvbnMgKDAuLjEpLiBJZ25vcmFkbyBzaSBzZSBwYXNhIGBzdHlsZWAuXG4gICAqIERlZmF1bHQ6IGAwLjU1YC5cbiAgICovXG4gIGNoZXZyb25EZW5zaXR5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTaSBgdHJ1ZWAsIGVsIHBhdHLDs24gYW5pbWEgdGlsZXMgcGVyacOzZGljYW1lbnRlLlxuICAgKiBDb24gYHRpbGVzUGVyVGljazogMGAgKGRlZmF1bHQpOiByZXNlZWQgY29tcGxldG8gZGUgbGEgZ3JpZC5cbiAgICogQ29uIGB0aWxlc1BlclRpY2sgPiAwYDogcmVzaHVmZmxlIHBhcmNpYWwgKHN0YWdnZXJlZCDigJQgbcOhcyBzdXRpbCkuXG4gICAqIERlZmF1bHQ6IGBmYWxzZWAuXG4gICAqL1xuICBhbmltYXRlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIG1zIGVudHJlIHVwZGF0ZXMgKG1vZG8gYW5pbWF0ZWQpLlxuICAgKiBEZWZhdWx0OiBgODAwMGAuXG4gICAqL1xuICByZXNodWZmbGVJbnRlcnZhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogQ3XDoW50b3MgdGlsZXMgY2FtYmlhciBwb3IgdGljayAobW9kbyBhbmltYXRlZCkuXG4gICAqIGAwYCDihpIgcmVzZWVkIGdyaWQgY29tcGxldGEuIGAxLU5gIOKGkiBzdGFnZ2VyZWQgc3V0aWwuXG4gICAqIERlZmF1bHQ6IGAwYC5cbiAgICovXG4gIHRpbGVzUGVyVGljaz86IG51bWJlcjtcblxuICAvKipcbiAgICogYHNsaWNlYCAoZGVmYXVsdCkg4oCUIGN1YnJlIHRvZG8gZWwgY29udGVuZWRvciBjb24gY3JvcCBzaSBuZWNlc2FyaW8uXG4gICAqIGBtZWV0YCDigJQgZml0IGNvbXBsZXRvIHNpbiBjcm9wLlxuICAgKi9cbiAgcHJlc2VydmVBc3BlY3Q/OiAnc2xpY2UnIHwgJ21lZXQnO1xufVxuIl19
|
package/esm2022/lib/version.mjs
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Current version of valtech-components.
|
|
3
3
|
* This is automatically updated during the publish process.
|
|
4
4
|
*/
|
|
5
|
-
export const VERSION = '2.0.
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
export const VERSION = '2.0.879';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC44NzknO1xuIl19
|