easy-email-pro-kit 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.cjs.js +1 -1
- package/lib/index.es.js +548 -536
- package/package.json +1 -1
package/lib/index.es.js
CHANGED
|
@@ -2,14 +2,14 @@ var mn = Object.defineProperty, pn = Object.defineProperties;
|
|
|
2
2
|
var bn = Object.getOwnPropertyDescriptors;
|
|
3
3
|
var Qe = Object.getOwnPropertySymbols;
|
|
4
4
|
var kt = Object.prototype.hasOwnProperty, Yt = Object.prototype.propertyIsEnumerable;
|
|
5
|
-
var at = (t, n, d) => n in t ? mn(t, n, { enumerable: !0, configurable: !0, writable: !0, value: d }) : t[n] = d,
|
|
5
|
+
var at = (t, n, d) => n in t ? mn(t, n, { enumerable: !0, configurable: !0, writable: !0, value: d }) : t[n] = d, we = (t, n) => {
|
|
6
6
|
for (var d in n || (n = {}))
|
|
7
7
|
kt.call(n, d) && at(t, d, n[d]);
|
|
8
8
|
if (Qe)
|
|
9
9
|
for (var d of Qe(n))
|
|
10
10
|
Yt.call(n, d) && at(t, d, n[d]);
|
|
11
11
|
return t;
|
|
12
|
-
},
|
|
12
|
+
}, Se = (t, n) => pn(t, bn(n));
|
|
13
13
|
var Gt = (t, n) => {
|
|
14
14
|
var d = {};
|
|
15
15
|
for (var p in t)
|
|
@@ -20,7 +20,7 @@ var Gt = (t, n) => {
|
|
|
20
20
|
return d;
|
|
21
21
|
};
|
|
22
22
|
var Et = (t, n, d) => (at(t, typeof n != "symbol" ? n + "" : n, d), d);
|
|
23
|
-
var
|
|
23
|
+
var Ze = (t, n, d) => new Promise((p, f) => {
|
|
24
24
|
var y = (b) => {
|
|
25
25
|
try {
|
|
26
26
|
a(d.next(b));
|
|
@@ -37,8 +37,8 @@ var Se = (t, n, d) => new Promise((p, f) => {
|
|
|
37
37
|
a((d = d.apply(t, n)).next());
|
|
38
38
|
});
|
|
39
39
|
import { useEmailRenderContext as gn, EmailRenderProvider as Ue, components as $e, ElementType as st, ResponsivePlugin as yn, BlockManager as et, classnames as Fe, mergeBlock as Oe, createCustomBlock as ft, t as A, ElementCategory as wt, NodeUtils as fn, ElementPlugin as Mt } from "easy-email-pro-core";
|
|
40
|
-
import { get as qt, set as
|
|
41
|
-
import
|
|
40
|
+
import { get as qt, set as Ne, flatMap as wn, cloneDeep as Ve, isEqual as _e, merge as Mn } from "lodash";
|
|
41
|
+
import S, { useState as xt, useEffect as qe, useRef as zt, useMemo as xn } from "react";
|
|
42
42
|
import { AttributesPanelWrapper as vt, ResponsiveTabs as Tt, useEditorContext as St, CollapseWrapper as Zt, AttributeField as ne, ResponsiveField as ie, previewLoadImage as $t, useElementInteract as vn, ConfigPanelsMap as Nt } from "easy-email-pro-theme";
|
|
43
43
|
import Tn from "react-dom/server";
|
|
44
44
|
import { Collapse as Te, Button as Dt, Message as Wt, Grid as lt, Divider as ct } from "@arco-design/web-react";
|
|
@@ -48,7 +48,7 @@ import { HistoryEditor as Zn } from "slate-history";
|
|
|
48
48
|
const { Raw: Re } = $e;
|
|
49
49
|
function Nn(t) {
|
|
50
50
|
const { desktop: n, mobile: d } = t, p = gn(), { displayMode: f = "desktop-mobile" } = p;
|
|
51
|
-
return f === "only-desktop" ? /* @__PURE__ */
|
|
51
|
+
return f === "only-desktop" ? /* @__PURE__ */ S.createElement(Ue, Se(we({}, p), { displayMode: "only-desktop" }), /* @__PURE__ */ S.createElement(S.Fragment, null, /* @__PURE__ */ S.createElement(n, null))) : f === "only-mobile" ? /* @__PURE__ */ S.createElement(S.Fragment, null, /* @__PURE__ */ S.createElement(Re, null, "<!-- htmlmin:ignore --><!--[if !mso]><!--><!-- htmlmin:ignore -->"), /* @__PURE__ */ S.createElement(Ue, Se(we({}, p), { displayMode: "only-mobile" }), /* @__PURE__ */ S.createElement(S.Fragment, null, /* @__PURE__ */ S.createElement(d, null))), /* @__PURE__ */ S.createElement(Re, null, "<!-- htmlmin:ignore --><!--<![endif]--><!-- htmlmin:ignore -->")) : /* @__PURE__ */ S.createElement(S.Fragment, null, /* @__PURE__ */ S.createElement(Ue, Se(we({}, p), { displayMode: "only-desktop" }), /* @__PURE__ */ S.createElement(S.Fragment, null, /* @__PURE__ */ S.createElement(n, null))), /* @__PURE__ */ S.createElement(Re, null, "<!-- htmlmin:ignore --><!--[if !mso]><!--><!-- htmlmin:ignore -->"), /* @__PURE__ */ S.createElement(Ue, Se(we({}, p), { displayMode: "only-mobile" }), /* @__PURE__ */ S.createElement(S.Fragment, null, /* @__PURE__ */ S.createElement(d, null))), /* @__PURE__ */ S.createElement(Re, null, "<!-- htmlmin:ignore --><!--<![endif]--><!-- htmlmin:ignore -->"));
|
|
52
52
|
}
|
|
53
53
|
const Dn = "hide-desktop-block", Wn = "hide-mobile-block", Cn = "hide-desktop-inline-block", Ln = "hide-mobile-inline-block", Kt = [
|
|
54
54
|
st.GROUP,
|
|
@@ -59,7 +59,7 @@ class _r extends yn {
|
|
|
59
59
|
constructor() {
|
|
60
60
|
super(...arguments);
|
|
61
61
|
Et(this, "generateResponsive", (d) => {
|
|
62
|
-
var
|
|
62
|
+
var J;
|
|
63
63
|
const {
|
|
64
64
|
mode: p,
|
|
65
65
|
displayMode: f,
|
|
@@ -68,68 +68,80 @@ class _r extends yn {
|
|
|
68
68
|
mergetagsData: a = {},
|
|
69
69
|
children: b,
|
|
70
70
|
context: w,
|
|
71
|
-
idx: x
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
let L = G;
|
|
75
|
-
const K = et.getBlockByType(y.type);
|
|
76
|
-
if (!K)
|
|
71
|
+
idx: x
|
|
72
|
+
} = d, G = et.getBlockByType(y.type);
|
|
73
|
+
if (!G)
|
|
77
74
|
throw new Error(`${y.type} block is not registered`);
|
|
78
|
-
const I = y.mobileAttributes && Object.keys(y.mobileAttributes).some((
|
|
75
|
+
const I = y.mobileAttributes && Object.keys(y.mobileAttributes).some((R) => y.mobileAttributes[R] !== y.attributes[R]), K = Kt.includes(G.type) ? Cn : Dn, L = Kt.includes(G.type) ? Ln : Wn, v = qt(y, "attributes.css-class") || "";
|
|
79
76
|
if (f === "only-desktop") {
|
|
80
|
-
if (
|
|
77
|
+
if (y.visible === "mobile" || v.includes(K))
|
|
81
78
|
return null;
|
|
82
|
-
|
|
79
|
+
v.includes(L) || Ne(
|
|
83
80
|
y,
|
|
84
81
|
"attributes.css-class",
|
|
85
|
-
Fe(
|
|
82
|
+
Fe(v, L)
|
|
86
83
|
);
|
|
87
84
|
} else if (f === "only-mobile") {
|
|
88
|
-
if (
|
|
85
|
+
if (v.includes(L))
|
|
89
86
|
return null;
|
|
90
|
-
|
|
87
|
+
v.includes(K) || Ne(
|
|
91
88
|
y,
|
|
92
89
|
"attributes.css-class",
|
|
93
|
-
Fe(
|
|
90
|
+
Fe(v, K)
|
|
94
91
|
);
|
|
95
92
|
}
|
|
96
|
-
f === "only-mobile"
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
93
|
+
if (f === "only-mobile") {
|
|
94
|
+
if (y.visible === "desktop")
|
|
95
|
+
return null;
|
|
96
|
+
y.attributes = Oe(
|
|
97
|
+
Oe(
|
|
98
|
+
G.defaultData.attributes,
|
|
99
|
+
G.defaultData.mobileAttributes
|
|
100
|
+
),
|
|
101
|
+
y.attributes
|
|
102
|
+
);
|
|
103
|
+
} else
|
|
104
|
+
y.attributes = Oe(
|
|
105
|
+
((J = G.defaultData) == null ? void 0 : J.attributes) || {},
|
|
106
|
+
y.attributes
|
|
107
|
+
);
|
|
108
|
+
y.visible === "desktop" ? Ne(
|
|
106
109
|
y,
|
|
107
110
|
"attributes.css-class",
|
|
108
|
-
Fe(
|
|
109
|
-
) : y.visible === "mobile" &&
|
|
111
|
+
Fe(v, L)
|
|
112
|
+
) : y.visible === "mobile" && Ne(
|
|
110
113
|
y,
|
|
111
114
|
"attributes.css-class",
|
|
112
|
-
Fe(
|
|
113
|
-
);
|
|
114
|
-
const
|
|
115
|
+
Fe(v, K)
|
|
116
|
+
), y.visible;
|
|
117
|
+
const _ = y.visible === "desktop" ? null : G.render({
|
|
115
118
|
mode: p,
|
|
116
119
|
children: b,
|
|
117
120
|
context: w,
|
|
118
121
|
idx: x,
|
|
119
|
-
node:
|
|
122
|
+
node: Se(we({}, y), {
|
|
120
123
|
attributes: Oe(y.attributes, y.mobileAttributes),
|
|
121
124
|
mobileAttributes: void 0
|
|
122
125
|
}),
|
|
123
126
|
keepEmptyAttributes: h,
|
|
124
127
|
mergetagsData: a
|
|
125
|
-
})
|
|
126
|
-
|
|
128
|
+
}), re = G.render(Se(we({}, d), {
|
|
129
|
+
mode: p,
|
|
130
|
+
children: b,
|
|
131
|
+
context: w,
|
|
132
|
+
idx: x,
|
|
133
|
+
node: y,
|
|
134
|
+
keepEmptyAttributes: h,
|
|
135
|
+
mergetagsData: a
|
|
136
|
+
}));
|
|
137
|
+
let V = re;
|
|
138
|
+
return I && (V = /* @__PURE__ */ S.createElement(S.Fragment, null, /* @__PURE__ */ S.createElement(
|
|
127
139
|
Nn,
|
|
128
140
|
{
|
|
129
|
-
desktop: () => /* @__PURE__ */
|
|
130
|
-
mobile: () => /* @__PURE__ */
|
|
141
|
+
desktop: () => /* @__PURE__ */ S.createElement(S.Fragment, null, re),
|
|
142
|
+
mobile: () => /* @__PURE__ */ S.createElement(S.Fragment, null, _)
|
|
131
143
|
}
|
|
132
|
-
))),
|
|
144
|
+
))), V;
|
|
133
145
|
});
|
|
134
146
|
}
|
|
135
147
|
}
|
|
@@ -178,14 +190,14 @@ function In(t) {
|
|
|
178
190
|
value: a
|
|
179
191
|
}
|
|
180
192
|
];
|
|
181
|
-
return /* @__PURE__ */
|
|
193
|
+
return /* @__PURE__ */ S.createElement(
|
|
182
194
|
"div",
|
|
183
195
|
{
|
|
184
196
|
style: {
|
|
185
197
|
color: n.color
|
|
186
198
|
}
|
|
187
199
|
},
|
|
188
|
-
/* @__PURE__ */
|
|
200
|
+
/* @__PURE__ */ S.createElement("div", null, /* @__PURE__ */ S.createElement(
|
|
189
201
|
"div",
|
|
190
202
|
{
|
|
191
203
|
style: {
|
|
@@ -195,7 +207,7 @@ function In(t) {
|
|
|
195
207
|
paddingBottom: 15
|
|
196
208
|
}
|
|
197
209
|
},
|
|
198
|
-
b.map((w, x) => /* @__PURE__ */
|
|
210
|
+
b.map((w, x) => /* @__PURE__ */ S.createElement(
|
|
199
211
|
"div",
|
|
200
212
|
{
|
|
201
213
|
key: w.unit,
|
|
@@ -205,7 +217,7 @@ function In(t) {
|
|
|
205
217
|
justifyContent: "center"
|
|
206
218
|
}
|
|
207
219
|
},
|
|
208
|
-
/* @__PURE__ */
|
|
220
|
+
/* @__PURE__ */ S.createElement(
|
|
209
221
|
"div",
|
|
210
222
|
{
|
|
211
223
|
style: {
|
|
@@ -221,9 +233,9 @@ function In(t) {
|
|
|
221
233
|
fontSize: 24
|
|
222
234
|
}
|
|
223
235
|
},
|
|
224
|
-
/* @__PURE__ */
|
|
236
|
+
/* @__PURE__ */ S.createElement("div", { style: { height: "100%", overflow: "hidden" } }, /* @__PURE__ */ S.createElement("div", { className: w.unit }, w.value))
|
|
225
237
|
),
|
|
226
|
-
x !== b.length - 1 && /* @__PURE__ */
|
|
238
|
+
x !== b.length - 1 && /* @__PURE__ */ S.createElement(
|
|
227
239
|
"div",
|
|
228
240
|
{
|
|
229
241
|
key: w.unit,
|
|
@@ -232,7 +244,7 @@ function In(t) {
|
|
|
232
244
|
":"
|
|
233
245
|
)
|
|
234
246
|
))
|
|
235
|
-
), /* @__PURE__ */
|
|
247
|
+
), /* @__PURE__ */ S.createElement(
|
|
236
248
|
"div",
|
|
237
249
|
{
|
|
238
250
|
style: {
|
|
@@ -242,7 +254,7 @@ function In(t) {
|
|
|
242
254
|
paddingBottom: 10
|
|
243
255
|
}
|
|
244
256
|
},
|
|
245
|
-
b.map((w, x) => /* @__PURE__ */
|
|
257
|
+
b.map((w, x) => /* @__PURE__ */ S.createElement(
|
|
246
258
|
"div",
|
|
247
259
|
{
|
|
248
260
|
key: w.unit,
|
|
@@ -252,7 +264,7 @@ function In(t) {
|
|
|
252
264
|
justifyContent: "center"
|
|
253
265
|
}
|
|
254
266
|
},
|
|
255
|
-
/* @__PURE__ */
|
|
267
|
+
/* @__PURE__ */ S.createElement(
|
|
256
268
|
"div",
|
|
257
269
|
{
|
|
258
270
|
key: w.unit,
|
|
@@ -268,7 +280,7 @@ function In(t) {
|
|
|
268
280
|
},
|
|
269
281
|
w.unit
|
|
270
282
|
),
|
|
271
|
-
x !== b.length - 1 && /* @__PURE__ */
|
|
283
|
+
x !== b.length - 1 && /* @__PURE__ */ S.createElement(
|
|
272
284
|
"div",
|
|
273
285
|
{
|
|
274
286
|
style: {
|
|
@@ -309,8 +321,8 @@ const { Image: kn, Raw: Yn, Spacer: Gn, ContentEditableBlock: En, HtmlDomNode: X
|
|
|
309
321
|
create: (t) => {
|
|
310
322
|
const n = {
|
|
311
323
|
type: Pe.MARKETING_COUNTDOWN,
|
|
312
|
-
data:
|
|
313
|
-
attributes:
|
|
324
|
+
data: we({}, dt.data),
|
|
325
|
+
attributes: we({}, dt.attributes),
|
|
314
326
|
children: [
|
|
315
327
|
{
|
|
316
328
|
type: "text",
|
|
@@ -350,9 +362,9 @@ const { Image: kn, Raw: Yn, Spacer: Gn, ContentEditableBlock: En, HtmlDomNode: X
|
|
|
350
362
|
const { node: n, mode: d } = t, { attributes: p, children: f } = n;
|
|
351
363
|
if (d === "testing") {
|
|
352
364
|
const y = Tn.renderToString(
|
|
353
|
-
/* @__PURE__ */
|
|
365
|
+
/* @__PURE__ */ S.createElement(In, { attributes: n.attributes, data: n.data })
|
|
354
366
|
);
|
|
355
|
-
return /* @__PURE__ */
|
|
367
|
+
return /* @__PURE__ */ S.createElement(
|
|
356
368
|
Xt,
|
|
357
369
|
{
|
|
358
370
|
tagName: "div",
|
|
@@ -366,7 +378,7 @@ const { Image: kn, Raw: Yn, Spacer: Gn, ContentEditableBlock: En, HtmlDomNode: X
|
|
|
366
378
|
lineHeight: 1
|
|
367
379
|
}
|
|
368
380
|
},
|
|
369
|
-
/* @__PURE__ */
|
|
381
|
+
/* @__PURE__ */ S.createElement(
|
|
370
382
|
Xt,
|
|
371
383
|
{
|
|
372
384
|
tagName: "div",
|
|
@@ -376,15 +388,15 @@ const { Image: kn, Raw: Yn, Spacer: Gn, ContentEditableBlock: En, HtmlDomNode: X
|
|
|
376
388
|
display: "table"
|
|
377
389
|
}
|
|
378
390
|
},
|
|
379
|
-
f.map((h, a) => fn.isTextElement(h) ? /* @__PURE__ */
|
|
380
|
-
/* @__PURE__ */
|
|
381
|
-
/* @__PURE__ */
|
|
391
|
+
f.map((h, a) => fn.isTextElement(h) ? /* @__PURE__ */ S.createElement(En, { key: a, node: h }) : null),
|
|
392
|
+
/* @__PURE__ */ S.createElement(Gn, { height: "20px" }),
|
|
393
|
+
/* @__PURE__ */ S.createElement(Yn, null, y)
|
|
382
394
|
)
|
|
383
395
|
);
|
|
384
396
|
}
|
|
385
|
-
return /* @__PURE__ */
|
|
397
|
+
return /* @__PURE__ */ S.createElement(
|
|
386
398
|
kn,
|
|
387
|
-
|
|
399
|
+
Se(we({
|
|
388
400
|
idx: t.idx
|
|
389
401
|
}, t.node.attributes), {
|
|
390
402
|
children: n.children
|
|
@@ -429,7 +441,7 @@ const { Image: kn, Raw: Yn, Spacer: Gn, ContentEditableBlock: En, HtmlDomNode: X
|
|
|
429
441
|
create: (t) => {
|
|
430
442
|
const n = {
|
|
431
443
|
type: Pe.MARKETING_SHOPWINDOW,
|
|
432
|
-
data:
|
|
444
|
+
data: we({}, jt.data),
|
|
433
445
|
attributes: {
|
|
434
446
|
src: "https://res.cloudinary.com/djnkpbshx/image/upload/v1688116417/easy-email-pro/gsdrahrenerqzrdnihsv.gif"
|
|
435
447
|
},
|
|
@@ -450,9 +462,9 @@ const { Image: kn, Raw: Yn, Spacer: Gn, ContentEditableBlock: En, HtmlDomNode: X
|
|
|
450
462
|
"border-style",
|
|
451
463
|
"border-color"
|
|
452
464
|
]), a = d ? `${p || "1px"} ${f || "solid"} ${y || "#AAAAAA"}` : "";
|
|
453
|
-
return /* @__PURE__ */
|
|
465
|
+
return /* @__PURE__ */ S.createElement(
|
|
454
466
|
zn,
|
|
455
|
-
|
|
467
|
+
Se(we({
|
|
456
468
|
idx: t.idx
|
|
457
469
|
}, h), {
|
|
458
470
|
data: n.data,
|
|
@@ -501,8 +513,8 @@ const { Image: kn, Raw: Yn, Spacer: Gn, ContentEditableBlock: En, HtmlDomNode: X
|
|
|
501
513
|
create: (t) => {
|
|
502
514
|
const n = {
|
|
503
515
|
type: Pe.MARKETING_QR_CODE,
|
|
504
|
-
data:
|
|
505
|
-
attributes:
|
|
516
|
+
data: we({}, ut.data),
|
|
517
|
+
attributes: we({}, ut.attributes),
|
|
506
518
|
children: [
|
|
507
519
|
{
|
|
508
520
|
text: ""
|
|
@@ -514,21 +526,21 @@ const { Image: kn, Raw: Yn, Spacer: Gn, ContentEditableBlock: En, HtmlDomNode: X
|
|
|
514
526
|
category: wt.IMAGE,
|
|
515
527
|
render(t) {
|
|
516
528
|
const { node: n } = t;
|
|
517
|
-
return /* @__PURE__ */
|
|
529
|
+
return /* @__PURE__ */ S.createElement(
|
|
518
530
|
Kn,
|
|
519
|
-
|
|
531
|
+
Se(we({
|
|
520
532
|
idx: t.idx
|
|
521
533
|
}, t.node.attributes), {
|
|
522
534
|
children: n.children
|
|
523
535
|
})
|
|
524
536
|
);
|
|
525
537
|
}
|
|
526
|
-
}), He = document.createElement("canvas"), At = He.getContext("2d"), Xn = (t) =>
|
|
538
|
+
}), He = document.createElement("canvas"), At = He.getContext("2d"), Xn = (t) => Ze(void 0, null, function* () {
|
|
527
539
|
const n = new Image();
|
|
528
540
|
return n.src = t, yield new Promise((d, p) => {
|
|
529
541
|
n.onload = d, n.onerror = p;
|
|
530
542
|
}), n;
|
|
531
|
-
}), On = (t) =>
|
|
543
|
+
}), On = (t) => Ze(void 0, null, function* () {
|
|
532
544
|
const n = new Image();
|
|
533
545
|
return n.crossOrigin = "anonymous", new Promise((d, p) => {
|
|
534
546
|
n.onload = () => {
|
|
@@ -579,7 +591,7 @@ function nn(t) {
|
|
|
579
591
|
}), n;
|
|
580
592
|
}
|
|
581
593
|
const Pn = function(d) {
|
|
582
|
-
return
|
|
594
|
+
return Ze(this, arguments, function* (t, n = {}) {
|
|
583
595
|
const p = n.width || t.offsetWidth, f = n.height || t.offsetHeight, { overwrite: y = [], wrapper: h = (x) => x } = n, a = nn(t);
|
|
584
596
|
if (a.setAttribute("xmlns", "http://www.w3.org/1999/xhtml"), a.classList.remove("outline"), n.styleText) {
|
|
585
597
|
const x = document.createElement("style");
|
|
@@ -588,24 +600,24 @@ const Pn = function(d) {
|
|
|
588
600
|
y.forEach((x) => {
|
|
589
601
|
if (x.selector === "" && x instanceof HTMLElement) {
|
|
590
602
|
const G = x.style;
|
|
591
|
-
Object.keys(x.style).forEach((
|
|
592
|
-
G.setProperty(
|
|
593
|
-
}), x.innerText && (a.innerText = x.innerText), x.innerHTML && (a.innerHTML = x.innerHTML), x.attrs && Object.keys(x.attrs).forEach((
|
|
594
|
-
a.setAttribute(
|
|
603
|
+
Object.keys(x.style).forEach((I) => {
|
|
604
|
+
G.setProperty(I, x.style[I]);
|
|
605
|
+
}), x.innerText && (a.innerText = x.innerText), x.innerHTML && (a.innerHTML = x.innerHTML), x.attrs && Object.keys(x.attrs).forEach((I) => {
|
|
606
|
+
a.setAttribute(I, x.attrs[I]);
|
|
595
607
|
});
|
|
596
608
|
}
|
|
597
609
|
a.querySelectorAll(x.selector).forEach((G) => {
|
|
598
610
|
if (qt(G, "nodeType") === 1) {
|
|
599
|
-
const
|
|
600
|
-
if (x.style && Object.keys(x.style).forEach((
|
|
601
|
-
K.setProperty(
|
|
602
|
-
}), x.innerText && (
|
|
603
|
-
for (const
|
|
604
|
-
|
|
611
|
+
const I = G, K = I.style;
|
|
612
|
+
if (x.style && Object.keys(x.style).forEach((L) => {
|
|
613
|
+
K.setProperty(L, x.style[L]);
|
|
614
|
+
}), x.innerText && (I.innerText = x.innerText), x.innerHTML && (I.innerHTML = x.innerHTML), x.attrs)
|
|
615
|
+
for (const L in x.attrs)
|
|
616
|
+
I.setAttribute(L, x.attrs[L]);
|
|
605
617
|
}
|
|
606
618
|
});
|
|
607
619
|
}), yield Promise.all(
|
|
608
|
-
[...a.querySelectorAll("img")].map((x) =>
|
|
620
|
+
[...a.querySelectorAll("img")].map((x) => Ze(this, null, function* () {
|
|
609
621
|
x.src = yield On(x);
|
|
610
622
|
}))
|
|
611
623
|
);
|
|
@@ -614,7 +626,7 @@ const Pn = function(d) {
|
|
|
614
626
|
return w = w.replace(/\n/g, "").replace(/\t/g, "").replace(/#/g, "%23"), w;
|
|
615
627
|
});
|
|
616
628
|
};
|
|
617
|
-
var An = Object.defineProperty, Qn = Object.defineProperties, Un = Object.getOwnPropertyDescriptors, Qt = Object.getOwnPropertySymbols, Fn = Object.prototype.hasOwnProperty, Rn = Object.prototype.propertyIsEnumerable,
|
|
629
|
+
var An = Object.defineProperty, Qn = Object.defineProperties, Un = Object.getOwnPropertyDescriptors, Qt = Object.getOwnPropertySymbols, Fn = Object.prototype.hasOwnProperty, Rn = Object.prototype.propertyIsEnumerable, De = Math.pow, Ut = (t, n, d) => n in t ? An(t, n, { enumerable: !0, configurable: !0, writable: !0, value: d }) : t[n] = d, ke = (t, n) => {
|
|
618
630
|
for (var d in n || (n = {}))
|
|
619
631
|
Fn.call(n, d) && Ut(t, d, n[d]);
|
|
620
632
|
if (Qt)
|
|
@@ -1443,7 +1455,7 @@ function pt(t) {
|
|
|
1443
1455
|
}
|
|
1444
1456
|
}
|
|
1445
1457
|
function Hn(t) {
|
|
1446
|
-
const n = t[0] + Ce(25974 * t[1], ae) + Ce(14143 * t[2], ae), d = t[0] + Ce(-6918 * t[1], ae) + Ce(-4185 * t[2], ae), p = t[0] + Ce(-5864 * t[1], ae) + Ce(-84638 * t[2], ae), f =
|
|
1458
|
+
const n = t[0] + Ce(25974 * t[1], ae) + Ce(14143 * t[2], ae), d = t[0] + Ce(-6918 * t[1], ae) + Ce(-4185 * t[2], ae), p = t[0] + Ce(-5864 * t[1], ae) + Ce(-84638 * t[2], ae), f = De(n, 2) * n / je, y = De(d, 2) * d / je, h = De(p, 2) * p / je, a = pt((267169 * f + -216771 * y + 15137 * h + ae / 2) / ae), b = pt((-83127 * f + 171030 * y + -22368 * h + ae / 2) / ae), w = pt((-275 * f + -46099 * y + 111909 * h + ae / 2) / ae);
|
|
1447
1459
|
return a << 16 | b << 8 | w;
|
|
1448
1460
|
}
|
|
1449
1461
|
function _n(t) {
|
|
@@ -1491,15 +1503,15 @@ function an(t) {
|
|
|
1491
1503
|
finderCache: p
|
|
1492
1504
|
} = n;
|
|
1493
1505
|
function f(h, a, b) {
|
|
1494
|
-
const { left: w, right: x, longest: G, oklab:
|
|
1495
|
-
|
|
1506
|
+
const { left: w, right: x, longest: G, oklab: I, colorBoxIndex: K } = d[h], L = Math.min(
|
|
1507
|
+
De(a[0] - I[0], 2) + De(a[1] - I[1], 2) + De(a[2] - I[2], 2),
|
|
1496
1508
|
4294967295 - 1
|
|
1497
1509
|
);
|
|
1498
|
-
|
|
1499
|
-
let
|
|
1510
|
+
L < b.dist && (b.colorBoxIndex = K, b.dist = L);
|
|
1511
|
+
let v, X;
|
|
1500
1512
|
if (w !== -1 || x !== -1) {
|
|
1501
|
-
const
|
|
1502
|
-
|
|
1513
|
+
const _ = a[G] - I[G];
|
|
1514
|
+
_ <= 0 ? (v = w, X = x) : (v = x, X = w), v !== -1 && f(v, a, b), X !== -1 && De(_, 2) < b.dist && f(X, a, b);
|
|
1503
1515
|
}
|
|
1504
1516
|
}
|
|
1505
1517
|
function y(h) {
|
|
@@ -1549,9 +1561,9 @@ function nr(t, n) {
|
|
|
1549
1561
|
} else if (n === "hex") {
|
|
1550
1562
|
y = [];
|
|
1551
1563
|
for (let h = f.length, a = 0; a < h; a++) {
|
|
1552
|
-
const { value: b, percentage: w } = f[a], x = b[0].toString(16).padStart(2, "0"), G = b[1].toString(16).padStart(2, "0"),
|
|
1564
|
+
const { value: b, percentage: w } = f[a], x = b[0].toString(16).padStart(2, "0"), G = b[1].toString(16).padStart(2, "0"), I = b[2].toString(16).padStart(2, "0");
|
|
1553
1565
|
y.push({
|
|
1554
|
-
value: `#${x}${G}${
|
|
1566
|
+
value: `#${x}${G}${I}`,
|
|
1555
1567
|
percentage: w
|
|
1556
1568
|
});
|
|
1557
1569
|
}
|
|
@@ -1568,7 +1580,7 @@ function gt(t, n, d) {
|
|
|
1568
1580
|
} = d, {
|
|
1569
1581
|
statsMode: x,
|
|
1570
1582
|
colorSamples: G,
|
|
1571
|
-
colorSamplesCache:
|
|
1583
|
+
colorSamplesCache: I
|
|
1572
1584
|
} = t;
|
|
1573
1585
|
let K;
|
|
1574
1586
|
if (ArrayBuffer.isView(n))
|
|
@@ -1577,46 +1589,46 @@ function gt(t, n, d) {
|
|
|
1577
1589
|
K = new Uint8ClampedArray(n);
|
|
1578
1590
|
else if (Array.isArray(n))
|
|
1579
1591
|
if (Array.isArray(n[0])) {
|
|
1580
|
-
const
|
|
1581
|
-
for (let
|
|
1582
|
-
|
|
1592
|
+
const L = [];
|
|
1593
|
+
for (let v = n.length, X = 0; X < v; X++)
|
|
1594
|
+
L.push(
|
|
1583
1595
|
(p = n[X][0]) != null ? p : 0,
|
|
1584
1596
|
(f = n[X][1]) != null ? f : 0,
|
|
1585
1597
|
(y = n[X][2]) != null ? y : 0,
|
|
1586
1598
|
(h = n[X][3]) != null ? h : 255
|
|
1587
1599
|
);
|
|
1588
|
-
K = new Uint8ClampedArray(
|
|
1600
|
+
K = new Uint8ClampedArray(L);
|
|
1589
1601
|
} else
|
|
1590
1602
|
K = new Uint8ClampedArray(n);
|
|
1591
1603
|
else if (typeof n == "string") {
|
|
1592
|
-
const
|
|
1593
|
-
if (!
|
|
1604
|
+
const L = a == null ? void 0 : a();
|
|
1605
|
+
if (!L)
|
|
1594
1606
|
return;
|
|
1595
|
-
const
|
|
1596
|
-
return $n(n).then((X) => (
|
|
1607
|
+
const v = L.canvas;
|
|
1608
|
+
return $n(n).then((X) => (L.clearRect(0, 0, v.width, v.height), v.width = X.width, v.height = X.height, L.drawImage(X, 0, 0, v.width, v.height), gt(
|
|
1597
1609
|
t,
|
|
1598
|
-
|
|
1610
|
+
L.getImageData(0, 0, v.width, v.height).data,
|
|
1599
1611
|
d
|
|
1600
1612
|
)));
|
|
1601
1613
|
} else {
|
|
1602
|
-
const
|
|
1603
|
-
if (!
|
|
1614
|
+
const L = a == null ? void 0 : a();
|
|
1615
|
+
if (!L)
|
|
1604
1616
|
return;
|
|
1605
|
-
const
|
|
1606
|
-
return
|
|
1617
|
+
const v = L.canvas;
|
|
1618
|
+
return L.clearRect(0, 0, v.width, v.height), v.width = typeof n.width == "number" ? n.width : n.width.baseVal.value, v.height = typeof n.height == "number" ? n.height : n.height.baseVal.value, L.drawImage(n, 0, 0, v.width, v.height), gt(
|
|
1607
1619
|
t,
|
|
1608
|
-
|
|
1620
|
+
L.getImageData(0, 0, v.width, v.height).data,
|
|
1609
1621
|
d
|
|
1610
1622
|
);
|
|
1611
1623
|
}
|
|
1612
|
-
for (let
|
|
1613
|
-
const X = K[
|
|
1614
|
-
if (w && V === 0 || x === "diff" && b && X === b[
|
|
1624
|
+
for (let L = K.length, v = 0; v < L; v += 4) {
|
|
1625
|
+
const X = K[v], _ = K[v + 1], re = K[v + 2], V = K[v + 3];
|
|
1626
|
+
if (w && V === 0 || x === "diff" && b && X === b[v] && _ === b[v + 1] && re === b[v + 2] && V === b[v + 3])
|
|
1615
1627
|
continue;
|
|
1616
|
-
const J = X << 16 |
|
|
1617
|
-
let se =
|
|
1618
|
-
se || (se = /* @__PURE__ */ new Map(),
|
|
1619
|
-
let me = se.get(
|
|
1628
|
+
const J = X << 16 | _ << 8 | re, R = V * 1e8 + J, E = R % 32768;
|
|
1629
|
+
let se = I.get(E);
|
|
1630
|
+
se || (se = /* @__PURE__ */ new Map(), I.set(E, se));
|
|
1631
|
+
let me = se.get(R);
|
|
1620
1632
|
if (me !== void 0) {
|
|
1621
1633
|
G[me].count++;
|
|
1622
1634
|
continue;
|
|
@@ -1626,7 +1638,7 @@ function gt(t, n, d) {
|
|
|
1626
1638
|
srgb: J,
|
|
1627
1639
|
oklab: rn(J),
|
|
1628
1640
|
count: 1
|
|
1629
|
-
}) - 1, se.set(
|
|
1641
|
+
}) - 1, se.set(R, me);
|
|
1630
1642
|
}
|
|
1631
1643
|
return K;
|
|
1632
1644
|
}
|
|
@@ -1646,7 +1658,7 @@ function sn(t, n) {
|
|
|
1646
1658
|
const h = [0, 0, 0];
|
|
1647
1659
|
for (let a = p; a < f; a++) {
|
|
1648
1660
|
const b = d[a];
|
|
1649
|
-
h[0] +=
|
|
1661
|
+
h[0] += De(b.oklab[0] - t.oklab[0], 2) * b.count, h[1] += De(b.oklab[1] - t.oklab[1], 2) * b.count, h[2] += De(b.oklab[2] - t.oklab[2], 2) * b.count;
|
|
1650
1662
|
}
|
|
1651
1663
|
t.sort = qn(h[0], h[1], h[2]), t.score = Math.max(h[0], h[1], h[2]);
|
|
1652
1664
|
}
|
|
@@ -1685,19 +1697,19 @@ function rr(t) {
|
|
|
1685
1697
|
};
|
|
1686
1698
|
let b = 0;
|
|
1687
1699
|
const w = [];
|
|
1688
|
-
for (let
|
|
1689
|
-
const { oklab: X } = n[
|
|
1690
|
-
p.has(
|
|
1700
|
+
for (let L = n.length, v = 0; v < L; v++) {
|
|
1701
|
+
const { oklab: X } = n[v];
|
|
1702
|
+
p.has(v) || X[0] < h.min[0] || X[1] < h.min[1] || X[2] < h.min[2] || X[0] > h.max[0] || X[1] > h.max[1] || X[2] > h.max[2] || (X[0] < a.min[0] && (a.min[0] = X[0]), X[1] < a.min[1] && (a.min[1] = X[1]), X[2] < a.min[2] && (a.min[2] = X[2]), X[0] > a.max[0] && (a.max[0] = X[0]), X[1] > a.max[1] && (a.max[1] = X[1]), X[2] > a.max[2] && (a.max[2] = X[2]), w[b++] = {
|
|
1691
1703
|
oklab: X,
|
|
1692
|
-
colorBoxIndex:
|
|
1704
|
+
colorBoxIndex: v
|
|
1693
1705
|
});
|
|
1694
1706
|
}
|
|
1695
1707
|
let x = 0;
|
|
1696
1708
|
if (!b)
|
|
1697
1709
|
return { colorBoxIndex: -1, longest: x };
|
|
1698
|
-
const G = a.max[0] - a.min[0],
|
|
1699
|
-
return G >=
|
|
1700
|
-
colorBoxIndex: w.sort((
|
|
1710
|
+
const G = a.max[0] - a.min[0], I = a.max[1] - a.min[1], K = a.max[2] - a.min[2];
|
|
1711
|
+
return G >= I && G >= K ? x = 0 : K >= G && K >= I ? x = 2 : I >= G && I >= K && (x = 1), {
|
|
1712
|
+
colorBoxIndex: w.sort((L, v) => L.oklab[x] - v.oklab[x])[b >> 1].colorBoxIndex,
|
|
1701
1713
|
longest: x
|
|
1702
1714
|
};
|
|
1703
1715
|
}
|
|
@@ -1711,11 +1723,11 @@ function rr(t) {
|
|
|
1711
1723
|
colorBoxIndex: a
|
|
1712
1724
|
}, G = d.push(x) - 1;
|
|
1713
1725
|
p.set(a, !0);
|
|
1714
|
-
const
|
|
1715
|
-
|
|
1716
|
-
const
|
|
1717
|
-
let
|
|
1718
|
-
return K.min[b] <= K.max[b] && (
|
|
1726
|
+
const I = { max: [...h.max], min: [...h.min] }, K = { max: [...h.max], min: [...h.min] };
|
|
1727
|
+
I.max[b] = w[b], K.min[b] = Math.min(w[b] + 1, 65535);
|
|
1728
|
+
const L = y(I);
|
|
1729
|
+
let v = -1;
|
|
1730
|
+
return K.min[b] <= K.max[b] && (v = y(K)), x.left = L, x.right = v, G;
|
|
1719
1731
|
}
|
|
1720
1732
|
return d;
|
|
1721
1733
|
}
|
|
@@ -1733,42 +1745,42 @@ function or(t, n = {}) {
|
|
|
1733
1745
|
let h = Rt({ end: p.length }, t), a = 1;
|
|
1734
1746
|
const b = [h];
|
|
1735
1747
|
function w() {
|
|
1736
|
-
let G = -1,
|
|
1748
|
+
let G = -1, I = -1;
|
|
1737
1749
|
if (a === f)
|
|
1738
1750
|
return -1;
|
|
1739
1751
|
for (let K = 0; K < a; K++) {
|
|
1740
|
-
const
|
|
1741
|
-
|
|
1752
|
+
const L = b[K];
|
|
1753
|
+
L.length >= 2 && L.score > I && (G = K, I = L.score);
|
|
1742
1754
|
}
|
|
1743
1755
|
return G;
|
|
1744
1756
|
}
|
|
1745
|
-
function x(G,
|
|
1757
|
+
function x(G, I) {
|
|
1746
1758
|
const K = Rt({
|
|
1747
|
-
start:
|
|
1759
|
+
start: I + 1,
|
|
1748
1760
|
end: G.end,
|
|
1749
1761
|
sorted: G.sorted
|
|
1750
1762
|
}, t);
|
|
1751
1763
|
G.end -= K.length, sn(G, t), b.push(K), a++;
|
|
1752
1764
|
}
|
|
1753
1765
|
for (; h && h.length > 1; ) {
|
|
1754
|
-
const { start: G, end:
|
|
1755
|
-
if (K !==
|
|
1756
|
-
const V = p.slice(G,
|
|
1757
|
-
for (let J = V.length,
|
|
1758
|
-
p[G +
|
|
1766
|
+
const { start: G, end: I, sort: K, sorted: L } = h;
|
|
1767
|
+
if (K !== L) {
|
|
1768
|
+
const V = p.slice(G, I).sort(_n(K));
|
|
1769
|
+
for (let J = V.length, R = 0; R < J; R++)
|
|
1770
|
+
p[G + R] = V[R];
|
|
1759
1771
|
h.sorted = K;
|
|
1760
1772
|
}
|
|
1761
|
-
const
|
|
1762
|
-
let X = G,
|
|
1763
|
-
for (let V =
|
|
1773
|
+
const v = h.weight + 1 >> 1;
|
|
1774
|
+
let X = G, _ = 0;
|
|
1775
|
+
for (let V = I - 2; X < V && (_ += p[X].count, !(_ > v)); X++)
|
|
1764
1776
|
;
|
|
1765
1777
|
x(h, X);
|
|
1766
|
-
const
|
|
1767
|
-
h =
|
|
1778
|
+
const re = w();
|
|
1779
|
+
h = re >= 0 ? b[re] : null;
|
|
1768
1780
|
}
|
|
1769
|
-
for (let G = b.length,
|
|
1770
|
-
b[
|
|
1771
|
-
t.colorBoxes = b.sort((G,
|
|
1781
|
+
for (let G = b.length, I = 0; I < G; I++)
|
|
1782
|
+
b[I].srgb = Hn(b[I].oklab);
|
|
1783
|
+
t.colorBoxes = b.sort((G, I) => G.srgb - I.srgb), t.colorBoxesIndexTree = rr(t), y && (t.colorSamples = [], t.colorSamplesCache.clear()), t.finderCache.clear();
|
|
1772
1784
|
}
|
|
1773
1785
|
function ir(t, n, d) {
|
|
1774
1786
|
const { colorBoxes: p } = t;
|
|
@@ -1895,11 +1907,11 @@ function xr(t) {
|
|
|
1895
1907
|
}
|
|
1896
1908
|
function vr(t, n) {
|
|
1897
1909
|
var d;
|
|
1898
|
-
const { top: p = 0, left: f = 0, width: y, height: h, rawWidth: a, rate: b = 4, callback: w } = n, x = new Uint8ClampedArray(y * h * b), G = f * b,
|
|
1899
|
-
for (let
|
|
1910
|
+
const { top: p = 0, left: f = 0, width: y, height: h, rawWidth: a, rate: b = 4, callback: w } = n, x = new Uint8ClampedArray(y * h * b), G = f * b, I = p * b, K = y * b, L = a * b;
|
|
1911
|
+
for (let v = 0; v < h; v++)
|
|
1900
1912
|
for (let X = 0; X < K; X++) {
|
|
1901
|
-
const
|
|
1902
|
-
x[
|
|
1913
|
+
const _ = (I + v) * L + (G + X);
|
|
1914
|
+
x[v * K + X] = (d = w == null ? void 0 : w(_)) != null ? d : t[_];
|
|
1903
1915
|
}
|
|
1904
1916
|
return x;
|
|
1905
1917
|
}
|
|
@@ -1949,12 +1961,12 @@ function Tr(t) {
|
|
|
1949
1961
|
throw new Error("Height invalid.");
|
|
1950
1962
|
let y = 0;
|
|
1951
1963
|
if ((n = f.colorTable) != null && n.length) {
|
|
1952
|
-
let
|
|
1953
|
-
if (
|
|
1964
|
+
let I = f.colorTable.length;
|
|
1965
|
+
if (I < 2 || I > 256 || I & I - 1)
|
|
1954
1966
|
throw new Error("Invalid color table length, must be power of 2 and 2 .. 256.");
|
|
1955
|
-
for (;
|
|
1967
|
+
for (; I >>= 1; )
|
|
1956
1968
|
++y;
|
|
1957
|
-
if (
|
|
1969
|
+
if (I = 1 << y, f.colorTableSize = --y, f.backgroundColorIndex >= I)
|
|
1958
1970
|
throw new Error("Background index out of range.");
|
|
1959
1971
|
if (f.backgroundColorIndex === 0)
|
|
1960
1972
|
throw new Error("Background index explicitly passed as 0.");
|
|
@@ -1974,24 +1986,24 @@ function Sr(t, n, d) {
|
|
|
1974
1986
|
let h = f();
|
|
1975
1987
|
p(0);
|
|
1976
1988
|
const a = 1 << t, b = a - 1, w = a + 1;
|
|
1977
|
-
let x = w + 1, G = t + 1,
|
|
1978
|
-
function
|
|
1979
|
-
for (;
|
|
1980
|
-
p(K & 255), K >>= 8,
|
|
1989
|
+
let x = w + 1, G = t + 1, I = 0, K = 0;
|
|
1990
|
+
function L(R) {
|
|
1991
|
+
for (; I >= R; )
|
|
1992
|
+
p(K & 255), K >>= 8, I -= 8, y(h) === 256 && (p(255, h), h = f(), p(0));
|
|
1981
1993
|
}
|
|
1982
|
-
function
|
|
1983
|
-
K |=
|
|
1994
|
+
function v(R) {
|
|
1995
|
+
K |= R << I, I += G, L(8);
|
|
1984
1996
|
}
|
|
1985
|
-
let X = n[0] & b,
|
|
1986
|
-
|
|
1987
|
-
for (let
|
|
1988
|
-
if (J = n[E] & b,
|
|
1989
|
-
for (K |= X <<
|
|
1990
|
-
p(K & 255), K >>= 8,
|
|
1991
|
-
x === 4096 ? (
|
|
1997
|
+
let X = n[0] & b, _ = {}, re, V, J;
|
|
1998
|
+
v(a);
|
|
1999
|
+
for (let R = n.length, E = 1; E < R; ++E)
|
|
2000
|
+
if (J = n[E] & b, re = X << 8 | J, V = _[re], V === void 0) {
|
|
2001
|
+
for (K |= X << I, I += G; I >= 8; )
|
|
2002
|
+
p(K & 255), K >>= 8, I -= 8, y(h) === 256 && (p(255, h), h = f(), p(0));
|
|
2003
|
+
x === 4096 ? (v(a), x = w + 1, G = t + 1, _ = {}) : (x >= 1 << G && ++G, _[re] = x++), X = J;
|
|
1992
2004
|
} else
|
|
1993
2005
|
X = V;
|
|
1994
|
-
|
|
2006
|
+
v(X), v(w), L(1), y(h) === 1 ? p(0, h) : (p(y(h) - 1, h), p(0));
|
|
1995
2007
|
}
|
|
1996
2008
|
function Zr(t) {
|
|
1997
2009
|
var n, d, p;
|
|
@@ -2004,31 +2016,31 @@ function Zr(t) {
|
|
|
2004
2016
|
left: w = 0,
|
|
2005
2017
|
top: x = 0,
|
|
2006
2018
|
width: G = 0,
|
|
2007
|
-
height:
|
|
2019
|
+
height: I = 0,
|
|
2008
2020
|
delay: K = 100,
|
|
2009
|
-
colorTable:
|
|
2021
|
+
colorTable: L
|
|
2010
2022
|
} = t;
|
|
2011
2023
|
let {
|
|
2012
|
-
disposal:
|
|
2024
|
+
disposal: v = 0
|
|
2013
2025
|
} = t;
|
|
2014
2026
|
const X = (n = t.graphicControl) == null ? void 0 : n.transparent;
|
|
2015
|
-
let
|
|
2027
|
+
let _ = (p = (d = t.graphicControl) == null ? void 0 : d.transparentIndex) != null ? p : 255;
|
|
2016
2028
|
if (w < 0 || w > 65535)
|
|
2017
2029
|
throw new Error("Left invalid.");
|
|
2018
2030
|
if (x < 0 || x > 65535)
|
|
2019
2031
|
throw new Error("Top invalid.");
|
|
2020
2032
|
if (G <= 0 || G > 65535)
|
|
2021
2033
|
throw new Error("Width invalid.");
|
|
2022
|
-
if (
|
|
2034
|
+
if (I <= 0 || I > 65535)
|
|
2023
2035
|
throw new Error("Height invalid.");
|
|
2024
|
-
let
|
|
2036
|
+
let re = 8, V = L ? L.length : 0;
|
|
2025
2037
|
if (V) {
|
|
2026
2038
|
if (V < 2 || V > 256 || V & V - 1)
|
|
2027
2039
|
throw new Error("Invalid color table length, must be power of 2 and 2 .. 256.");
|
|
2028
2040
|
for (; V >>= 1; )
|
|
2029
|
-
++
|
|
2041
|
+
++re;
|
|
2030
2042
|
}
|
|
2031
|
-
return y(ln), y(ur), y(hr), X ?
|
|
2043
|
+
return y(ln), y(ur), y(hr), X ? v || (v = 2) : _ = 0, y(parseInt(`000${Number(v & 7).toString(2).padStart(3, "0")}0${X ? 1 : 0}`, 2)), a(K / 10), y(_), y(0), y(lr), a(w), a(x), a(G), a(I), L != null && L.length ? (y(parseInt(`10000${(re - 1).toString(2).padStart(3, "0")}`, 2)), h(L.flat())) : y(0), Sr(re, t.imageData, f), b();
|
|
2032
2044
|
}
|
|
2033
2045
|
function Nr(t) {
|
|
2034
2046
|
const {
|
|
@@ -2060,33 +2072,33 @@ function Dr(t) {
|
|
|
2060
2072
|
transparent: w,
|
|
2061
2073
|
imageData: x
|
|
2062
2074
|
} = y;
|
|
2063
|
-
let G = 0,
|
|
2075
|
+
let G = 0, I = 0, K = a - 1, L = b - 1, v;
|
|
2064
2076
|
if (w) {
|
|
2065
|
-
for (;
|
|
2077
|
+
for (; I < L; ) {
|
|
2066
2078
|
let V = !0;
|
|
2067
2079
|
for (let J = 0; J < a; J++)
|
|
2068
|
-
if (x[a *
|
|
2080
|
+
if (x[a * I + J] !== d) {
|
|
2069
2081
|
V = !1;
|
|
2070
2082
|
break;
|
|
2071
2083
|
}
|
|
2072
2084
|
if (!V)
|
|
2073
2085
|
break;
|
|
2074
|
-
|
|
2086
|
+
I++;
|
|
2075
2087
|
}
|
|
2076
|
-
for (;
|
|
2088
|
+
for (; L > I; ) {
|
|
2077
2089
|
let V = !0;
|
|
2078
2090
|
for (let J = 0; J < a; J++)
|
|
2079
|
-
if (x[a *
|
|
2091
|
+
if (x[a * L + J] !== d) {
|
|
2080
2092
|
V = !1;
|
|
2081
2093
|
break;
|
|
2082
2094
|
}
|
|
2083
2095
|
if (!V)
|
|
2084
2096
|
break;
|
|
2085
|
-
|
|
2097
|
+
L--;
|
|
2086
2098
|
}
|
|
2087
2099
|
for (; G < K; ) {
|
|
2088
2100
|
let V = !0;
|
|
2089
|
-
for (let J =
|
|
2101
|
+
for (let J = I; J < L; J++)
|
|
2090
2102
|
if (x[a * J + G] !== d) {
|
|
2091
2103
|
V = !1;
|
|
2092
2104
|
break;
|
|
@@ -2097,7 +2109,7 @@ function Dr(t) {
|
|
|
2097
2109
|
}
|
|
2098
2110
|
for (; K > G; ) {
|
|
2099
2111
|
let V = !0;
|
|
2100
|
-
for (let J =
|
|
2112
|
+
for (let J = I; J < L; J++)
|
|
2101
2113
|
if (x[a * J + K] !== d) {
|
|
2102
2114
|
V = !1;
|
|
2103
2115
|
break;
|
|
@@ -2108,40 +2120,40 @@ function Dr(t) {
|
|
|
2108
2120
|
}
|
|
2109
2121
|
} else {
|
|
2110
2122
|
if (p) {
|
|
2111
|
-
for (;
|
|
2123
|
+
for (; I < L; ) {
|
|
2112
2124
|
let V = !0;
|
|
2113
2125
|
for (let J = 0; J < a; J++) {
|
|
2114
|
-
const
|
|
2115
|
-
if (x[
|
|
2126
|
+
const R = a * I + J;
|
|
2127
|
+
if (x[R] !== p[R]) {
|
|
2116
2128
|
V = !1;
|
|
2117
2129
|
break;
|
|
2118
2130
|
}
|
|
2119
2131
|
}
|
|
2120
2132
|
if (!V)
|
|
2121
2133
|
break;
|
|
2122
|
-
|
|
2134
|
+
I++;
|
|
2123
2135
|
}
|
|
2124
|
-
for (;
|
|
2136
|
+
for (; L > I; ) {
|
|
2125
2137
|
let V = !0;
|
|
2126
2138
|
for (let J = 0; J < a; J++) {
|
|
2127
|
-
const
|
|
2128
|
-
if (x[
|
|
2139
|
+
const R = a * L + J;
|
|
2140
|
+
if (x[R] !== p[R]) {
|
|
2129
2141
|
V = !1;
|
|
2130
2142
|
break;
|
|
2131
2143
|
}
|
|
2132
2144
|
}
|
|
2133
2145
|
if (!V)
|
|
2134
2146
|
break;
|
|
2135
|
-
|
|
2147
|
+
L--;
|
|
2136
2148
|
}
|
|
2137
|
-
if (
|
|
2149
|
+
if (I === L)
|
|
2138
2150
|
G = K;
|
|
2139
2151
|
else {
|
|
2140
2152
|
for (; G < K; ) {
|
|
2141
2153
|
let V = !0;
|
|
2142
|
-
for (let J =
|
|
2143
|
-
const
|
|
2144
|
-
if (x[
|
|
2154
|
+
for (let J = I; J <= L; J++) {
|
|
2155
|
+
const R = J * a + G;
|
|
2156
|
+
if (x[R] !== p[R]) {
|
|
2145
2157
|
V = !1;
|
|
2146
2158
|
break;
|
|
2147
2159
|
}
|
|
@@ -2152,9 +2164,9 @@ function Dr(t) {
|
|
|
2152
2164
|
}
|
|
2153
2165
|
for (; K > G; ) {
|
|
2154
2166
|
let V = !0;
|
|
2155
|
-
for (let J =
|
|
2156
|
-
const
|
|
2157
|
-
if (x[
|
|
2167
|
+
for (let J = I; J <= L; J++) {
|
|
2168
|
+
const R = J * a + K;
|
|
2169
|
+
if (x[R] !== p[R]) {
|
|
2158
2170
|
V = !1;
|
|
2159
2171
|
break;
|
|
2160
2172
|
}
|
|
@@ -2165,30 +2177,30 @@ function Dr(t) {
|
|
|
2165
2177
|
}
|
|
2166
2178
|
}
|
|
2167
2179
|
}
|
|
2168
|
-
|
|
2180
|
+
v = p, p = x;
|
|
2169
2181
|
}
|
|
2170
|
-
const X = K + 1 - G,
|
|
2182
|
+
const X = K + 1 - G, _ = L + 1 - I, re = vr(
|
|
2171
2183
|
x,
|
|
2172
2184
|
{
|
|
2173
2185
|
left: G,
|
|
2174
|
-
top:
|
|
2186
|
+
top: I,
|
|
2175
2187
|
width: X,
|
|
2176
|
-
height:
|
|
2188
|
+
height: _,
|
|
2177
2189
|
rawWidth: a,
|
|
2178
2190
|
rate: 1,
|
|
2179
2191
|
callback: (V) => {
|
|
2180
|
-
if (!w &&
|
|
2192
|
+
if (!w && v && x[V] === v[V])
|
|
2181
2193
|
return d;
|
|
2182
2194
|
}
|
|
2183
2195
|
}
|
|
2184
2196
|
);
|
|
2185
2197
|
return {
|
|
2186
2198
|
left: G,
|
|
2187
|
-
top:
|
|
2199
|
+
top: I,
|
|
2188
2200
|
width: X,
|
|
2189
|
-
height:
|
|
2201
|
+
height: _,
|
|
2190
2202
|
disposal: w && h !== f - 1 ? 2 : 1,
|
|
2191
|
-
imageData:
|
|
2203
|
+
imageData: re
|
|
2192
2204
|
};
|
|
2193
2205
|
});
|
|
2194
2206
|
}
|
|
@@ -2224,11 +2236,11 @@ function Cr(t) {
|
|
|
2224
2236
|
return {
|
|
2225
2237
|
call: function() {
|
|
2226
2238
|
let a = 0;
|
|
2227
|
-
return (b, w, x, G) => new Promise((
|
|
2239
|
+
return (b, w, x, G) => new Promise((I) => {
|
|
2228
2240
|
const K = h(G);
|
|
2229
2241
|
if (!K)
|
|
2230
|
-
return
|
|
2231
|
-
n.set(a,
|
|
2242
|
+
return I(void 0);
|
|
2243
|
+
n.set(a, I), K.postMessage({ id: a++, type: b, data: w }, { transfer: x });
|
|
2232
2244
|
});
|
|
2233
2245
|
}()
|
|
2234
2246
|
};
|
|
@@ -2254,36 +2266,36 @@ function Lr(t) {
|
|
|
2254
2266
|
}),
|
|
2255
2267
|
worker: Cr({ workerUrl: p, workerNumber: f }),
|
|
2256
2268
|
encodeId: 0,
|
|
2257
|
-
encode(
|
|
2269
|
+
encode(v) {
|
|
2258
2270
|
return Ie(this, null, function* () {
|
|
2259
|
-
const { log: X, frames:
|
|
2271
|
+
const { log: X, frames: _, encodeId: re, width: V, height: J } = w;
|
|
2260
2272
|
w.encodeId++;
|
|
2261
|
-
const { width:
|
|
2262
|
-
let { imageData: se } =
|
|
2263
|
-
X.time(`palette:sample-${
|
|
2273
|
+
const { width: R = V, height: E = J } = v;
|
|
2274
|
+
let { imageData: se } = v;
|
|
2275
|
+
X.time(`palette:sample-${re}`);
|
|
2264
2276
|
try {
|
|
2265
2277
|
se = typeof se == "string" ? yield xr(se) : se;
|
|
2266
2278
|
const me = wr(se, "uint8ClampedArray", {
|
|
2267
|
-
width:
|
|
2279
|
+
width: R,
|
|
2268
2280
|
height: E
|
|
2269
2281
|
});
|
|
2270
|
-
|
|
2271
|
-
width:
|
|
2282
|
+
_.push(Ae(ke({
|
|
2283
|
+
width: R,
|
|
2272
2284
|
height: E
|
|
2273
|
-
},
|
|
2285
|
+
}, v), {
|
|
2274
2286
|
imageData: me
|
|
2275
2287
|
})), yield x(me);
|
|
2276
2288
|
} finally {
|
|
2277
|
-
X.timeEnd(`palette:sample-${
|
|
2289
|
+
X.timeEnd(`palette:sample-${re}`);
|
|
2278
2290
|
}
|
|
2279
2291
|
});
|
|
2280
2292
|
},
|
|
2281
2293
|
flush() {
|
|
2282
2294
|
return Ie(this, null, function* () {
|
|
2283
|
-
const { log:
|
|
2284
|
-
|
|
2285
|
-
const
|
|
2286
|
-
|
|
2295
|
+
const { log: v, frames: X, width: _, height: re, maxColors: V, palette: J } = w;
|
|
2296
|
+
v.time("palette:generate");
|
|
2297
|
+
const R = yield G(V), E = Jt(R).getColors("rgb").map((W) => W.value);
|
|
2298
|
+
v.debug("palette:maxColors", V);
|
|
2287
2299
|
const se = E.map((W) => {
|
|
2288
2300
|
const C = W[0].toString(16).padStart(2, "0"), D = W[1].toString(16).padStart(2, "0"), M = W[2].toString(16).padStart(2, "0");
|
|
2289
2301
|
return `#${C}${D}${M}`;
|
|
@@ -2293,13 +2305,13 @@ function Lr(t) {
|
|
|
2293
2305
|
...se.map((W) => `margin: 1px; background: ${W}`)
|
|
2294
2306
|
); E.length < y; )
|
|
2295
2307
|
E.push([0, 0, 0]);
|
|
2296
|
-
|
|
2297
|
-
const me = yield
|
|
2308
|
+
v.timeEnd("palette:generate"), v.time("frames:index");
|
|
2309
|
+
const me = yield I({
|
|
2298
2310
|
frames: X,
|
|
2299
|
-
palette:
|
|
2311
|
+
palette: R,
|
|
2300
2312
|
transparentIndex: h
|
|
2301
2313
|
});
|
|
2302
|
-
|
|
2314
|
+
v.timeEnd("frames:index"), v.time("frames:crop");
|
|
2303
2315
|
const ve = yield K({
|
|
2304
2316
|
frames: me.map((W, C) => {
|
|
2305
2317
|
const { width: D = 1, height: M = 1 } = X[C];
|
|
@@ -2310,8 +2322,8 @@ function Lr(t) {
|
|
|
2310
2322
|
}),
|
|
2311
2323
|
transparentIndex: h
|
|
2312
2324
|
});
|
|
2313
|
-
|
|
2314
|
-
const Le = yield Promise.all(X.map((W, C) =>
|
|
2325
|
+
v.timeEnd("frames:crop"), v.time("frames:encode");
|
|
2326
|
+
const Le = yield Promise.all(X.map((W, C) => L(
|
|
2315
2327
|
Ae(ke(ke({}, W), ve[C]), {
|
|
2316
2328
|
graphicControl: Ae(ke({}, W.graphicControl), {
|
|
2317
2329
|
transparent: !0,
|
|
@@ -2319,61 +2331,61 @@ function Lr(t) {
|
|
|
2319
2331
|
})
|
|
2320
2332
|
})
|
|
2321
2333
|
)));
|
|
2322
|
-
|
|
2334
|
+
v.timeEnd("frames:encode"), v.time("output");
|
|
2323
2335
|
const ge = Tr(Ae(ke({}, t), {
|
|
2324
2336
|
colorTable: E,
|
|
2325
2337
|
backgroundColorIndex: h,
|
|
2326
|
-
width:
|
|
2327
|
-
height:
|
|
2338
|
+
width: _,
|
|
2339
|
+
height: re
|
|
2328
2340
|
})), Ye = fr(Le), Y = new Uint8Array(ge.length + Ye.byteLength + 1);
|
|
2329
|
-
return Y.set(ge), Y.set(Ye, ge.byteLength), Y[Y.length - 1] = mr,
|
|
2341
|
+
return Y.set(ge), Y.set(Ye, ge.byteLength), Y[Y.length - 1] = mr, v.timeEnd("output"), J.reset(), w.frames = [], w.encodeId = 0, Y;
|
|
2330
2342
|
});
|
|
2331
2343
|
}
|
|
2332
2344
|
};
|
|
2333
|
-
function x(
|
|
2345
|
+
function x(v) {
|
|
2334
2346
|
return Ie(this, null, function* () {
|
|
2335
2347
|
(yield w.worker.call(
|
|
2336
2348
|
"palette:addSample",
|
|
2337
|
-
|
|
2349
|
+
v,
|
|
2338
2350
|
void 0,
|
|
2339
2351
|
0
|
|
2340
|
-
)) || w.palette.addSample(
|
|
2352
|
+
)) || w.palette.addSample(v);
|
|
2341
2353
|
});
|
|
2342
2354
|
}
|
|
2343
|
-
function G(
|
|
2355
|
+
function G(v) {
|
|
2344
2356
|
return Ie(this, null, function* () {
|
|
2345
2357
|
return (yield w.worker.call(
|
|
2346
2358
|
"palette:generate",
|
|
2347
|
-
{ maxColors:
|
|
2359
|
+
{ maxColors: v },
|
|
2348
2360
|
void 0,
|
|
2349
2361
|
0
|
|
2350
|
-
)) || (w.palette.generate({ maxColors:
|
|
2362
|
+
)) || (w.palette.generate({ maxColors: v }), w.palette.context);
|
|
2351
2363
|
});
|
|
2352
2364
|
}
|
|
2353
|
-
function
|
|
2365
|
+
function I(v) {
|
|
2354
2366
|
return Ie(this, null, function* () {
|
|
2355
2367
|
return (yield w.worker.call(
|
|
2356
2368
|
"frames:index",
|
|
2357
|
-
|
|
2358
|
-
)) || Nr(
|
|
2369
|
+
v
|
|
2370
|
+
)) || Nr(v);
|
|
2359
2371
|
});
|
|
2360
2372
|
}
|
|
2361
|
-
function K(
|
|
2373
|
+
function K(v) {
|
|
2362
2374
|
return Ie(this, null, function* () {
|
|
2363
2375
|
return (yield w.worker.call(
|
|
2364
2376
|
"frames:crop",
|
|
2365
|
-
|
|
2366
|
-
|
|
2367
|
-
)) || Dr(
|
|
2377
|
+
v,
|
|
2378
|
+
v.frames.map((_) => _.imageData.buffer)
|
|
2379
|
+
)) || Dr(v);
|
|
2368
2380
|
});
|
|
2369
2381
|
}
|
|
2370
|
-
function
|
|
2382
|
+
function L(v) {
|
|
2371
2383
|
return Ie(this, null, function* () {
|
|
2372
2384
|
return (yield w.worker.call(
|
|
2373
2385
|
"frame:encode",
|
|
2374
|
-
|
|
2375
|
-
[
|
|
2376
|
-
)) || Zr(
|
|
2386
|
+
v,
|
|
2387
|
+
[v.imageData.buffer]
|
|
2388
|
+
)) || Zr(v);
|
|
2377
2389
|
});
|
|
2378
2390
|
}
|
|
2379
2391
|
return w;
|
|
@@ -2386,13 +2398,13 @@ function Ir(t) {
|
|
|
2386
2398
|
return yield d.flush();
|
|
2387
2399
|
});
|
|
2388
2400
|
}
|
|
2389
|
-
const kr = "data:application/javascript;base64,dmFyIEdlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgc2U9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sczt2YXIgSGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxxZT1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO3ZhciBBPU1hdGgucG93LGllPShCLHgsayk9PnggaW4gQj9HZShCLHgse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmt9KTpCW3hdPWssWj0oQix4KT0+e2Zvcih2YXIgayBpbiB4fHwoeD17fSkpSGUuY2FsbCh4LGspJiZpZShCLGsseFtrXSk7aWYoc2UpZm9yKHZhciBrIG9mIHNlKHgpKXFlLmNhbGwoeCxrKSYmaWUoQixrLHhba10pO3JldHVybiBCfTsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y29uc3QgQj10eXBlb2Ygd2luZG93PCJ1Iix4PTY1NTM2LTEsaz14KngsY2U9NTEyLTEsTD1bMCwyMCw0MCw2MCw4MCw5OSwxMTksMTM5LDE1OSwxNzksMTk5LDIxOSwyNDEsMjY0LDI4OCwzMTMsMzQwLDM2NywzOTYsNDI3LDQ1OCw0OTEsNTI2LDU2Miw1OTksNjM3LDY3Nyw3MTgsNzYxLDgwNSw4NTEsODk4LDk0Nyw5OTcsMTA0OCwxMTAxLDExNTYsMTIxMiwxMjcwLDEzMzAsMTM5MSwxNDUzLDE1MTcsMTU4MywxNjUxLDE3MjAsMTc5MCwxODYzLDE5MzcsMjAxMywyMDkwLDIxNzAsMjI1MCwyMzMzLDI0MTgsMjUwNCwyNTkyLDI2ODEsMjc3MywyODY2LDI5NjEsMzA1OCwzMTU3LDMyNTgsMzM2MCwzNDY0LDM1NzAsMzY3OCwzNzg4LDM5MDAsNDAxNCw0MTI5LDQyNDcsNDM2Niw0NDg4LDQ2MTEsNDczNiw0ODY0LDQ5OTMsNTEyNCw1MjU3LDUzOTIsNTUzMCw1NjY5LDU4MTAsNTk1Myw2MDk5LDYyNDYsNjM5NSw2NTQ3LDY3MDAsNjg1Niw3MDE0LDcxNzQsNzMzNSw3NTAwLDc2NjYsNzgzNCw4MDA0LDgxNzcsODM1Miw4NTI4LDg3MDgsODg4OSw5MDcyLDkyNTgsOTQ0NSw5NjM1LDk4MjgsMTAwMjIsMTAyMTksMTA0MTcsMTA2MTksMTA4MjIsMTEwMjgsMTEyMzUsMTE0NDYsMTE2NTgsMTE4NzMsMTIwOTAsMTIzMDksMTI1MzAsMTI3NTQsMTI5ODAsMTMyMDksMTM0NDAsMTM2NzMsMTM5MDksMTQxNDYsMTQzODcsMTQ2MjksMTQ4NzQsMTUxMjIsMTUzNzEsMTU2MjMsMTU4NzgsMTYxMzUsMTYzOTQsMTY2NTYsMTY5MjAsMTcxODcsMTc0NTYsMTc3MjcsMTgwMDEsMTgyNzcsMTg1NTYsMTg4MzcsMTkxMjEsMTk0MDcsMTk2OTYsMTk5ODcsMjAyODEsMjA1NzcsMjA4NzYsMjExNzcsMjE0ODEsMjE3ODcsMjIwOTYsMjI0MDcsMjI3MjEsMjMwMzgsMjMzNTcsMjM2NzgsMjQwMDIsMjQzMjksMjQ2NTgsMjQ5OTAsMjUzMjUsMjU2NjIsMjYwMDEsMjYzNDQsMjY2ODgsMjcwMzYsMjczODYsMjc3MzksMjgwOTQsMjg0NTIsMjg4MTMsMjkxNzYsMjk1NDIsMjk5MTEsMzAyODIsMzA2NTYsMzEwMzMsMzE0MTIsMzE3OTQsMzIxNzksMzI1NjcsMzI5NTcsMzMzNTAsMzM3NDUsMzQxNDMsMzQ1NDQsMzQ5NDgsMzUzNTUsMzU3NjQsMzYxNzYsMzY1OTEsMzcwMDgsMzc0MjksMzc4NTIsMzgyNzgsMzg3MDYsMzkxMzgsMzk1NzIsNDAwMDksNDA0NDksNDA4OTEsNDEzMzcsNDE3ODUsNDIyMzYsNDI2OTAsNDMxNDcsNDM2MDYsNDQwNjksNDQ1MzQsNDUwMDIsNDU0NzMsNDU5NDcsNDY0MjMsNDY5MDMsNDczODUsNDc4NzEsNDgzNTksNDg4NTAsNDkzNDQsNDk4NDEsNTAzNDEsNTA4NDQsNTEzNDksNTE4NTgsNTIzNjksNTI4ODQsNTM0MDEsNTM5MjEsNTQ0NDUsNTQ5NzEsNTU1MDAsNTYwMzIsNTY1NjcsNTcxMDUsNTc2NDYsNTgxOTAsNTg3MzcsNTkyODcsNTk4NDAsNjAzOTYsNjA5NTUsNjE1MTcsNjIwODIsNjI2NTAsNjMyMjEsNjM3OTUsNjQzNzIsNjQ5NTIsNjU1MzVdLEc9WzAsNiwxMywxOCwyMiwyNSwyOCwzMSwzNCwzNiwzOCw0MCw0Miw0NCw0Niw0OCw1MCw1MSw1Myw1NCw1Niw1Nyw1OSw2MCw2MSw2Miw2NCw2NSw2Niw2Nyw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Niw4Nyw4OCw4OSw5MCw5MSw5MSw5Miw5Myw5NCw5NSw5NSw5Niw5Nyw5OCw5OCw5OSwxMDAsMTAxLDEwMSwxMDIsMTAzLDEwMywxMDQsMTA1LDEwNiwxMDYsMTA3LDEwOCwxMDgsMTA5LDExMCwxMTAsMTExLDExMSwxMTIsMTEzLDExMywxMTQsMTE1LDExNSwxMTYsMTE2LDExNywxMTgsMTE4LDExOSwxMTksMTIwLDEyMSwxMjEsMTIyLDEyMiwxMjMsMTIzLDEyNCwxMjUsMTI1LDEyNiwxMjYsMTI3LDEyNywxMjgsMTI4LDEyOSwxMjksMTMwLDEzMCwxMzEsMTMyLDEzMiwxMzMsMTMzLDEzNCwxMzQsMTM1LDEzNSwxMzYsMTM2LDEzNywxMzcsMTM4LDEzOCwxMzksMTM5LDE0MCwxNDAsMTQwLDE0MSwxNDEsMTQyLDE0MiwxNDMsMTQzLDE0NCwxNDQsMTQ1LDE0NSwxNDYsMTQ2LDE0NywxNDcsMTQ3LDE0OCwxNDgsMTQ5LDE0OSwxNTAsMTUwLDE1MSwxNTEsMTUxLDE1MiwxNTIsMTUzLDE1MywxNTQsMTU0LDE1NCwxNTUsMTU1LDE1NiwxNTYsMTU2LDE1NywxNTcsMTU4LDE1OCwxNTksMTU5LDE1OSwxNjAsMTYwLDE2MSwxNjEsMTYxLDE2MiwxNjIsMTYzLDE2MywxNjMsMTY0LDE2NCwxNjUsMTY1LDE2NSwxNjYsMTY2LDE2NiwxNjcsMTY3LDE2OCwxNjgsMTY4LDE2OSwxNjksMTY5LDE3MCwxNzAsMTcxLDE3MSwxNzEsMTcyLDE3MiwxNzIsMTczLDE3MywxNzQsMTc0LDE3NCwxNzUsMTc1LDE3NSwxNzYsMTc2LDE3NiwxNzcsMTc3LDE3NywxNzgsMTc4LDE3OSwxNzksMTc5LDE4MCwxODAsMTgwLDE4MSwxODEsMTgxLDE4MiwxODIsMTgyLDE4MywxODMsMTgzLDE4NCwxODQsMTg0LDE4NSwxODUsMTg1LDE4NiwxODYsMTg2LDE4NywxODcsMTg3LDE4OCwxODgsMTg4LDE4OSwxODksMTg5LDE5MCwxOTAsMTkwLDE5MSwxOTEsMTkxLDE5MiwxOTIsMTkyLDE5MywxOTMsMTkzLDE5MywxOTQsMTk0LDE5NCwxOTUsMTk1LDE5NSwxOTYsMTk2LDE5NiwxOTcsMTk3LDE5NywxOTgsMTk4LDE5OCwxOTgsMTk5LDE5OSwxOTksMjAwLDIwMCwyMDAsMjAxLDIwMSwyMDEsMjAxLDIwMiwyMDIsMjAyLDIwMywyMDMsMjAzLDIwNCwyMDQsMjA0LDIwNCwyMDUsMjA1LDIwNSwyMDYsMjA2LDIwNiwyMDYsMjA3LDIwNywyMDcsMjA4LDIwOCwyMDgsMjA4LDIwOSwyMDksMjA5LDIxMCwyMTAsMjEwLDIxMCwyMTEsMjExLDIxMSwyMTIsMjEyLDIxMiwyMTIsMjEzLDIxMywyMTMsMjE0LDIxNCwyMTQsMjE0LDIxNSwyMTUsMjE1LDIxNSwyMTYsMjE2LDIxNiwyMTcsMjE3LDIxNywyMTcsMjE4LDIxOCwyMTgsMjE4LDIxOSwyMTksMjE5LDIyMCwyMjAsMjIwLDIyMCwyMjEsMjIxLDIyMSwyMjEsMjIyLDIyMiwyMjIsMjIyLDIyMywyMjMsMjIzLDIyNCwyMjQsMjI0LDIyNCwyMjUsMjI1LDIyNSwyMjUsMjI2LDIyNiwyMjYsMjI2LDIyNywyMjcsMjI3LDIyNywyMjgsMjI4LDIyOCwyMjgsMjI5LDIyOSwyMjksMjI5LDIzMCwyMzAsMjMwLDIzMCwyMzEsMjMxLDIzMSwyMzEsMjMyLDIzMiwyMzIsMjMyLDIzMywyMzMsMjMzLDIzMywyMzQsMjM0LDIzNCwyMzQsMjM1LDIzNSwyMzUsMjM1LDIzNiwyMzYsMjM2LDIzNiwyMzcsMjM3LDIzNywyMzcsMjM4LDIzOCwyMzgsMjM4LDIzOSwyMzksMjM5LDIzOSwyMzksMjQwLDI0MCwyNDAsMjQwLDI0MSwyNDEsMjQxLDI0MSwyNDIsMjQyLDI0MiwyNDIsMjQzLDI0MywyNDMsMjQzLDI0MywyNDQsMjQ0LDI0NCwyNDQsMjQ1LDI0NSwyNDUsMjQ1LDI0NiwyNDYsMjQ2LDI0NiwyNDYsMjQ3LDI0NywyNDcsMjQ3LDI0OCwyNDgsMjQ4LDI0OCwyNDksMjQ5LDI0OSwyNDksMjQ5LDI1MCwyNTAsMjUwLDI1MCwyNTEsMjUxLDI1MSwyNTEsMjUxLDI1MiwyNTIsMjUyLDI1MiwyNTMsMjUzLDI1MywyNTMsMjUzLDI1NCwyNTQsMjU0LDI1NCwyNTUsMjU1LDI1NV07ZnVuY3Rpb24gUihuKXtsZXQgZTtpZihuPD0wKXJldHVybiAwO2lmKG4+PXgpcmV0dXJuIHg7ZT1uKihuKihuKy0xNDQxMDcpL3grMTMyMTE0KS94KzE0Mzc5O2ZvcihsZXQgbz0wO288MjtvKyspe2NvbnN0IGk9ZSplKmUsbD1uKygyKmkray8yKS9rO2U9KGUqKDIqbisoaStrLzIpL2spK2wvMikvbH1yZXR1cm4gZX1mdW5jdGlvbiBfKG4sZSl7cmV0dXJuKG5eZSk8MD8obi1lLzIpL2U6KG4rZS8yKS9lfWZ1bmN0aW9uIEgobil7Y29uc3QgZT1MW24+PjE2JjI1NV0sbz1MW24+PjgmMjU1XSxpPUxbbiYyNTVdLGw9KDI3MDE1KmUrMzUxNDkqbyszMzcyKmkreC8yKS94LGM9KDEzODg3KmUrNDQ2MTAqbys3MDM4KmkreC8yKS94LGE9KDU3ODcqZSsxODQ2MipvKzQxMjg2KmkreC8yKS94LHQ9UihsKSxyPVIoYykscz1SKGEpO3JldHVybltfKDEzNzkyKnQrNTIwMTAqci0yNjcqcyx4KSxfKDEyOTYyOCp0LTE1OTE1OCpyKzI5NTMwKnMseCksXygxNjk4KnQrNTEyOTkqci01Mjk5NypzLHgpXX1mdW5jdGlvbiB6KG4pe2lmKG48PTApcmV0dXJuIDA7aWYobj49eClyZXR1cm4gMjU1O3tjb25zdCBlPW4qY2Usbz1+fihlL3gpLGk9ZSV4LGw9R1tvXSxjPUdbbysxXTtyZXR1cm4oaSooYy1sKSt4LzIpL3grbH19ZnVuY3Rpb24gZmUobil7Y29uc3QgZT1uWzBdK18oMjU5NzQqblsxXSx4KStfKDE0MTQzKm5bMl0seCksbz1uWzBdK18oLTY5MTgqblsxXSx4KStfKC00MTg1Km5bMl0seCksaT1uWzBdK18oLTU4NjQqblsxXSx4KStfKC04NDYzOCpuWzJdLHgpLGw9QShlLDIpKmUvayxjPUEobywyKSpvL2ssYT1BKGksMikqaS9rLHQ9eigoMjY3MTY5KmwrLTIxNjc3MSpjKzE1MTM3KmEreC8yKS94KSxyPXooKC04MzEyNypsKzE3MTAzMCpjKy0yMjM2OCphK3gvMikveCkscz16KCgtMjc1KmwrLTQ2MDk5KmMrMTExOTA5KmEreC8yKS94KTtyZXR1cm4gdDw8MTZ8cjw8OHxzfWZ1bmN0aW9uIGRlKG4pe2NvbnN0IGU9e2w6MCxhOjEsYjoyfSxvPW5bMF0saT1uWzFdLGw9blsyXSxjPWVbb10sYT1lW2ldLHQ9ZVtsXTtyZXR1cm4ocixzKT0+ci5va2xhYltjXS1zLm9rbGFiW2NdfHxyLm9rbGFiW2FdLXMub2tsYWJbYV18fHIub2tsYWJbdF0tcy5va2xhYlt0XX1mdW5jdGlvbiB1ZShuLGUsbyl7cmV0dXJuIG4+PWU/ZT49bz8ibGFiIjpuPj1vPyJsYmEiOiJibGEiOm4+PW8/ImFsYiI6ZT49bz8iYWJsIjoiYmFsIn1mdW5jdGlvbiBoZShuKXtyZXR1cm4gbmV3IFByb21pc2UoZT0+e2NvbnN0IG89bmV3IEltYWdlO28uZGVjb2Rpbmc9InN5bmMiLG8ubG9hZGluZz0iZWFnZXIiLG8uY3Jvc3NPcmlnaW49ImFub255bW91cyIsby5vbmxvYWQ9KCk9PmUobyksby5vbmVycm9yPSgpPT5lKG8pLG8uc3JjPW59KX1mdW5jdGlvbiBxKG4pe3JldHVybiBuJiZ0eXBlb2Ygbj09Im9iamVjdCImJiJfX0NPTlRFWFRfXyJpbiBufWZ1bmN0aW9uIGdlKG4pe3JldHVybiBxKG4pP246cGUobil9ZnVuY3Rpb24gcGUobj17fSl7Y29uc3R7bWF4Q29sb3JzOmU9MjU2LHN0YXRzTW9kZTpvPSJmdWxsIixzYW1wbGVzOmk9W10sc2tpcFRyYW5zcGFyZW50Omw9ITB9PW47cmV0dXJue19fQ09OVEVYVF9fOiEwLHNhbXBsZXM6aSxtYXhDb2xvcnM6ZSxzdGF0c01vZGU6byxza2lwVHJhbnNwYXJlbnQ6bCxjb2xvclNhbXBsZXM6W10sY29sb3JTYW1wbGVzQ2FjaGU6bmV3IE1hcCxjb2xvckJveGVzOltdLGNvbG9yQm94ZXNJbmRleFRyZWU6W10sZmluZGVyQ2FjaGU6bmV3IE1hcH19ZnVuY3Rpb24gWShuKXtjb25zdCBlPXEobik/bjpuLmNvbnRleHQse2NvbG9yQm94ZXNJbmRleFRyZWU6byxmaW5kZXJDYWNoZTppfT1lO2Z1bmN0aW9uIGwoYSx0LHIpe2NvbnN0e2xlZnQ6cyxyaWdodDp1LGxvbmdlc3Q6ZCxva2xhYjpoLGNvbG9yQm94SW5kZXg6Yn09b1thXSxwPU1hdGgubWluKEEodFswXS1oWzBdLDIpK0EodFsxXS1oWzFdLDIpK0EodFsyXS1oWzJdLDIpLDQyOTQ5NjcyOTUtMSk7cDxyLmRpc3QmJihyLmNvbG9yQm94SW5kZXg9YixyLmRpc3Q9cCk7bGV0IGYsZztpZihzIT09LTF8fHUhPT0tMSl7Y29uc3QgQz10W2RdLWhbZF07Qzw9MD8oZj1zLGc9dSk6KGY9dSxnPXMpLGYhPT0tMSYmbChmLHQsciksZyE9PS0xJiZBKEMsMik8ci5kaXN0JiZsKGcsdCxyKX19ZnVuY3Rpb24gYyhhKXtjb25zdCB0PXtkaXN0Ok51bWJlci5NQVhfU0FGRV9JTlRFR0VSLGNvbG9yQm94SW5kZXg6LTF9O3JldHVybiBsKDAsYSx0KSx0LmNvbG9yQm94SW5kZXh9cmV0dXJuIGE9Pntjb25zdCB0PWElMzI3Njg7bGV0IHI9aS5nZXQodCk7cnx8KHI9bmV3IE1hcCxpLnNldCh0LHIpKTtsZXQgcz1yLmdldChhKTtyZXR1cm4gcyE9PXZvaWQgMHx8KHM9YyhIKGEpKSxyLnNldChhLHMpKSxzfX1mdW5jdGlvbiBtZShuLGUpe2NvbnN0e2NvbG9yQm94ZXM6b309bixpPW8ucmVkdWNlKChhLHQpPT5hK3Qud2VpZ2h0LDApO2lmKCFlKXJldHVybiBuLmNvbG9yQm94ZXMubWFwKGE9Pntjb25zdHtzcmdiOnQsd2VpZ2h0OnJ9PWE7cmV0dXJue3ZhbHVlOnQscGVyY2VudGFnZTpyL2l9fSk7Y29uc3QgbD1bXTtmb3IobGV0IGE9by5sZW5ndGgsdD0wO3Q8YTt0Kyspe2NvbnN0e3NyZ2I6cix3ZWlnaHQ6c309b1t0XTtsLnB1c2goe3ZhbHVlOltyPj4xNiYyNTUscj4+OCYyNTUsciYyNTVdLHBlcmNlbnRhZ2U6cy9pfSl9bGV0IGM7aWYoZT09PSJidWZmZXIiKXtjPW5ldyBVaW50OENsYW1wZWRBcnJheShsLmxlbmd0aCo0KTtmb3IobGV0IGE9bC5sZW5ndGgsdD0wO3Q8YTt0Kyspe2NvbnN0IHI9dCo0LHM9bFt0XS52YWx1ZTtjW3JdPXNbMF0sY1tyKzFdPXNbMV0sY1tyKzJdPXNbMl0sY1tyKzNdPTI1NX19ZWxzZSBpZihlPT09ImhleCIpe2M9W107Zm9yKGxldCBhPWwubGVuZ3RoLHQ9MDt0PGE7dCsrKXtjb25zdHt2YWx1ZTpyLHBlcmNlbnRhZ2U6c309bFt0XSx1PXJbMF0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSxkPXJbMV0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSxoPXJbMl0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKTtjLnB1c2goe3ZhbHVlOmAjJHt1fSR7ZH0ke2h9YCxwZXJjZW50YWdlOnN9KX19ZWxzZSBjPWw7cmV0dXJuIGN9ZnVuY3Rpb24gRihuLGUsbyl7dmFyIHUsZCxoLGI7Y29uc3R7Z2V0Q29udGV4dDJkOmkscHJldmlvdXNTYW1wbGU6bCxza2lwVHJhbnNwYXJlbnQ6Y309byx7c3RhdHNNb2RlOmEsY29sb3JTYW1wbGVzOnQsY29sb3JTYW1wbGVzQ2FjaGU6cn09bjtsZXQgcztpZihBcnJheUJ1ZmZlci5pc1ZpZXcoZSkpcz1uZXcgVWludDhDbGFtcGVkQXJyYXkoZS5idWZmZXIpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGUpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKSlpZihBcnJheS5pc0FycmF5KGVbMF0pKXtjb25zdCBwPVtdO2ZvcihsZXQgZj1lLmxlbmd0aCxnPTA7ZzxmO2crKylwLnB1c2goKHU9ZVtnXVswXSkhPW51bGw/dTowLChkPWVbZ11bMV0pIT1udWxsP2Q6MCwoaD1lW2ddWzJdKSE9bnVsbD9oOjAsKGI9ZVtnXVszXSkhPW51bGw/YjoyNTUpO3M9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHApfWVsc2Ugcz1uZXcgVWludDhDbGFtcGVkQXJyYXkoZSk7ZWxzZSBpZih0eXBlb2YgZT09InN0cmluZyIpe2NvbnN0IHA9aT09bnVsbD92b2lkIDA6aSgpO2lmKCFwKXJldHVybjtjb25zdCBmPXAuY2FudmFzO3JldHVybiBoZShlKS50aGVuKGc9PihwLmNsZWFyUmVjdCgwLDAsZi53aWR0aCxmLmhlaWdodCksZi53aWR0aD1nLndpZHRoLGYuaGVpZ2h0PWcuaGVpZ2h0LHAuZHJhd0ltYWdlKGcsMCwwLGYud2lkdGgsZi5oZWlnaHQpLEYobixwLmdldEltYWdlRGF0YSgwLDAsZi53aWR0aCxmLmhlaWdodCkuZGF0YSxvKSkpfWVsc2V7Y29uc3QgcD1pPT1udWxsP3ZvaWQgMDppKCk7aWYoIXApcmV0dXJuO2NvbnN0IGY9cC5jYW52YXM7cmV0dXJuIHAuY2xlYXJSZWN0KDAsMCxmLndpZHRoLGYuaGVpZ2h0KSxmLndpZHRoPXR5cGVvZiBlLndpZHRoPT0ibnVtYmVyIj9lLndpZHRoOmUud2lkdGguYmFzZVZhbC52YWx1ZSxmLmhlaWdodD10eXBlb2YgZS5oZWlnaHQ9PSJudW1iZXIiP2UuaGVpZ2h0OmUuaGVpZ2h0LmJhc2VWYWwudmFsdWUscC5kcmF3SW1hZ2UoZSwwLDAsZi53aWR0aCxmLmhlaWdodCksRihuLHAuZ2V0SW1hZ2VEYXRhKDAsMCxmLndpZHRoLGYuaGVpZ2h0KS5kYXRhLG8pfWZvcihsZXQgcD1zLmxlbmd0aCxmPTA7ZjxwO2YrPTQpe2NvbnN0IGc9c1tmXSxDPXNbZisxXSx5PXNbZisyXSx3PXNbZiszXTtpZihjJiZ3PT09MHx8YT09PSJkaWZmIiYmbCYmZz09PWxbZl0mJkM9PT1sW2YrMV0mJnk9PT1sW2YrMl0mJnc9PT1sW2YrM10pY29udGludWU7Y29uc3QgbT1nPDwxNnxDPDw4fHksUz13KjFlOCttLEk9UyUzMjc2ODtsZXQgVD1yLmdldChJKTtUfHwoVD1uZXcgTWFwLHIuc2V0KEksVCkpO2xldCBFPVQuZ2V0KFMpO2lmKEUhPT12b2lkIDApe3RbRV0uY291bnQrKztjb250aW51ZX1FPXQucHVzaCh7YWxwaGE6dyxzcmdiOm0sb2tsYWI6SChtKSxjb3VudDoxfSktMSxULnNldChTLEUpfXJldHVybiBzfWZ1bmN0aW9uIEoobixlKXtjb25zdHtjb2xvclNhbXBsZXM6b309ZSx7c3RhcnQ6aSxlbmQ6bH09bjtuLmxlbmd0aD1sLWksbi53ZWlnaHQ9MDtjb25zdCBjPVswLDAsMF07Zm9yKGxldCB0PWk7dDxsO3QrKyl7Y29uc3Qgcj1vW3RdO2NbMF0rPXIub2tsYWJbMF0qci5jb3VudCxjWzFdKz1yLm9rbGFiWzFdKnIuY291bnQsY1syXSs9ci5va2xhYlsyXSpyLmNvdW50LG4ud2VpZ2h0Kz1yLmNvdW50fW4ub2tsYWI9W2NbMF0vbi53ZWlnaHQsY1sxXS9uLndlaWdodCxjWzJdL24ud2VpZ2h0XTtjb25zdCBhPVswLDAsMF07Zm9yKGxldCB0PWk7dDxsO3QrKyl7Y29uc3Qgcj1vW3RdO2FbMF0rPUEoci5va2xhYlswXS1uLm9rbGFiWzBdLDIpKnIuY291bnQsYVsxXSs9QShyLm9rbGFiWzFdLW4ub2tsYWJbMV0sMikqci5jb3VudCxhWzJdKz1BKHIub2tsYWJbMl0tbi5va2xhYlsyXSwyKSpyLmNvdW50fW4uc29ydD11ZShhWzBdLGFbMV0sYVsyXSksbi5zY29yZT1NYXRoLm1heChhWzBdLGFbMV0sYVsyXSl9ZnVuY3Rpb24gUShuLGUpe2NvbnN0IG89Wih7c3RhcnQ6MCxlbmQ6MCxsZW5ndGg6MCxzY29yZTowLHdlaWdodDowLHNvcnQ6ImxhYiIsc29ydGVkOm51bGwsc3JnYjowLG9rbGFiOlswLDAsMF19LG4pO3JldHVybiBKKG8sZSksb31mdW5jdGlvbiB3ZShuKXtjb25zdHtjb2xvckJveGVzOmV9PW4sbz1bXSxpPW5ldyBNYXA7Zm9yKGxldCBhPS0xLHQ9ZS5sZW5ndGgscj0wO3I8dDtyKyspe2NvbnN0e3NyZ2I6c309ZVtyXTtpZihzPT09YSl7aS5zZXQociwhMCk7Y29udGludWV9YT1zfWMoe21pbjpbLTY1NTM1LC02NTUzNSwtNjU1MzVdLG1heDpbNjU1MzUsNjU1MzUsNjU1MzVdfSk7ZnVuY3Rpb24gbChhKXtjb25zdCB0PXttaW46WzY1NTM1LDY1NTM1LDY1NTM1XSxtYXg6Wy02NTUzNSwtNjU1MzUsLTY1NTM1XX07bGV0IHI9MDtjb25zdCBzPVtdO2ZvcihsZXQgcD1lLmxlbmd0aCxmPTA7ZjxwO2YrKyl7Y29uc3R7b2tsYWI6Z309ZVtmXTtpLmhhcyhmKXx8Z1swXTxhLm1pblswXXx8Z1sxXTxhLm1pblsxXXx8Z1syXTxhLm1pblsyXXx8Z1swXT5hLm1heFswXXx8Z1sxXT5hLm1heFsxXXx8Z1syXT5hLm1heFsyXXx8KGdbMF08dC5taW5bMF0mJih0Lm1pblswXT1nWzBdKSxnWzFdPHQubWluWzFdJiYodC5taW5bMV09Z1sxXSksZ1syXTx0Lm1pblsyXSYmKHQubWluWzJdPWdbMl0pLGdbMF0+dC5tYXhbMF0mJih0Lm1heFswXT1nWzBdKSxnWzFdPnQubWF4WzFdJiYodC5tYXhbMV09Z1sxXSksZ1syXT50Lm1heFsyXSYmKHQubWF4WzJdPWdbMl0pLHNbcisrXT17b2tsYWI6Zyxjb2xvckJveEluZGV4OmZ9KX1sZXQgdT0wO2lmKCFyKXJldHVybntjb2xvckJveEluZGV4Oi0xLGxvbmdlc3Q6dX07Y29uc3QgZD10Lm1heFswXS10Lm1pblswXSxoPXQubWF4WzFdLXQubWluWzFdLGI9dC5tYXhbMl0tdC5taW5bMl07cmV0dXJuIGQ+PWgmJmQ+PWI/dT0wOmI+PWQmJmI+PWg/dT0yOmg+PWQmJmg+PWImJih1PTEpLHtjb2xvckJveEluZGV4OnMuc29ydCgocCxmKT0+cC5va2xhYlt1XS1mLm9rbGFiW3VdKVtyPj4xXS5jb2xvckJveEluZGV4LGxvbmdlc3Q6dX19ZnVuY3Rpb24gYyhhKXtjb25zdHtjb2xvckJveEluZGV4OnQsbG9uZ2VzdDpyfT1sKGEpO2lmKHQ8MClyZXR1cm4tMTtjb25zdHtva2xhYjpzfT1lW3RdLHU9e2xvbmdlc3Q6cixva2xhYjpzLGNvbG9yQm94SW5kZXg6dH0sZD1vLnB1c2godSktMTtpLnNldCh0LCEwKTtjb25zdCBoPXttYXg6Wy4uLmEubWF4XSxtaW46Wy4uLmEubWluXX0sYj17bWF4OlsuLi5hLm1heF0sbWluOlsuLi5hLm1pbl19O2gubWF4W3JdPXNbcl0sYi5taW5bcl09TWF0aC5taW4oc1tyXSsxLDY1NTM1KTtjb25zdCBwPWMoaCk7bGV0IGY9LTE7cmV0dXJuIGIubWluW3JdPD1iLm1heFtyXSYmKGY9YyhiKSksdS5sZWZ0PXAsdS5yaWdodD1mLGR9cmV0dXJuIG99ZnVuY3Rpb24gYmUobixlPXt9KXtjb25zdHttYXhDb2xvcnM6byxjb2xvclNhbXBsZXM6aX09bjtpZighaS5sZW5ndGgpcmV0dXJuO2NvbnN0e21heENvbG9yczpsPW8sY2xlYXJTYW1wbGVzOmM9ITB9PWU7bGV0IGE9USh7ZW5kOmkubGVuZ3RofSxuKSx0PTE7Y29uc3Qgcj1bYV07ZnVuY3Rpb24gcygpe2xldCBkPS0xLGg9LTE7aWYodD09PWwpcmV0dXJuLTE7Zm9yKGxldCBiPTA7Yjx0O2IrKyl7Y29uc3QgcD1yW2JdO3AubGVuZ3RoPj0yJiZwLnNjb3JlPmgmJihkPWIsaD1wLnNjb3JlKX1yZXR1cm4gZH1mdW5jdGlvbiB1KGQsaCl7Y29uc3QgYj1RKHtzdGFydDpoKzEsZW5kOmQuZW5kLHNvcnRlZDpkLnNvcnRlZH0sbik7ZC5lbmQtPWIubGVuZ3RoLEooZCxuKSxyLnB1c2goYiksdCsrfWZvcig7YSYmYS5sZW5ndGg+MTspe2NvbnN0e3N0YXJ0OmQsZW5kOmgsc29ydDpiLHNvcnRlZDpwfT1hO2lmKGIhPT1wKXtjb25zdCB3PWkuc2xpY2UoZCxoKS5zb3J0KGRlKGIpKTtmb3IobGV0IG09dy5sZW5ndGgsUz0wO1M8bTtTKyspaVtkK1NdPXdbU107YS5zb3J0ZWQ9Yn1jb25zdCBmPWEud2VpZ2h0KzE+PjE7bGV0IGc9ZCxDPTA7Zm9yKGxldCB3PWgtMjtnPHcmJihDKz1pW2ddLmNvdW50LCEoQz5mKSk7ZysrKTt1KGEsZyk7Y29uc3QgeT1zKCk7YT15Pj0wP3JbeV06bnVsbH1mb3IobGV0IGQ9ci5sZW5ndGgsaD0wO2g8ZDtoKyspcltoXS5zcmdiPWZlKHJbaF0ub2tsYWIpO24uY29sb3JCb3hlcz1yLnNvcnQoKGQsaCk9PmQuc3JnYi1oLnNyZ2IpLG4uY29sb3JCb3hlc0luZGV4VHJlZT13ZShuKSxjJiYobi5jb2xvclNhbXBsZXM9W10sbi5jb2xvclNhbXBsZXNDYWNoZS5jbGVhcigpKSxuLmZpbmRlckNhY2hlLmNsZWFyKCl9ZnVuY3Rpb24geGUobixlLG8pe2NvbnN0e2NvbG9yQm94ZXM6aX09bjtpZighZSlyZXR1cm47bGV0IGw7aWYodHlwZW9mIG89PSJudW1iZXIiKWw9bztlbHNlIGlmKHR5cGVvZiBvPT0ic3RyaW5nIil7Y29uc3Qgcj1vLnJlcGxhY2UoL14jLywiIikscz1bYCR7clswXX0ke3JbMV19YCxgJHtyWzJdfSR7clszXX1gLGAke3JbNF19JHtyWzVdfWBdLm1hcCh1PT5wYXJzZUludCh1LDE2KSk7bD1zWzBdPDwxNnxzWzFdPDw4fHNbMl19ZWxzZSBpZihBcnJheS5pc0FycmF5KG8pKWw9b1swXTw8MTZ8b1sxXTw8OHxvWzJdO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5zdXBwb3J0ZWQgY29sb3IgZm9ybWF0Iik7Y29uc3QgYz1lKGwpO2lmKGM9PT12b2lkIDApcmV0dXJuO2NvbnN0IGE9aVtjXTtpZighYSlyZXR1cm47Y29uc3R7c3JnYjp0fT1hO2lmKHR5cGVvZiBvPT0ic3RyaW5nIil7Y29uc3Qgcj0odD4+MTYmMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpLHM9KHQ+PjgmMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpLHU9KHQmMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpO3JldHVybnt2YWx1ZTpgIyR7cn0ke3N9JHt1fWAsaW5kZXg6Y319ZWxzZSBpZih0eXBlb2Ygbz09Im9iamVjdCImJkFycmF5LmlzQXJyYXkobykpcmV0dXJue3ZhbHVlOlt0Pj4xNiYyNTUsdD4+OCYyNTUsdCYyNTVdLGluZGV4OmN9O3JldHVybnt2YWx1ZTp0LGluZGV4OmN9fWZ1bmN0aW9uIFNlKG4pe24uY29sb3JTYW1wbGVzPVtdLG4uY29sb3JTYW1wbGVzQ2FjaGUuY2xlYXIoKSxuLmNvbG9yQm94ZXM9W10sbi5jb2xvckJveGVzSW5kZXhUcmVlPVtdLG4uZmluZGVyQ2FjaGUuY2xlYXIoKX1mdW5jdGlvbiBDZShuKXtjb25zdCBlPWdlKG4pLHtzdGF0c01vZGU6byxzYW1wbGVzOmksc2tpcFRyYW5zcGFyZW50Omx9PWUsYz1mdW5jdGlvbigpe2xldCBzO3JldHVybigpPT4oIXMmJkImJihzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSkpLHMpfSgpO2xldCBhPW51bGwsdD1udWxsO2NvbnN0IHI9e2NvbnRleHQ6ZSxhZGRTYW1wbGU6cz0+e2UuY29sb3JTYW1wbGVzLmxlbmd0aD09PTAmJihhPW51bGwpO2NvbnN0IHU9RihlLHMse2dldENvbnRleHQyZDpjLHByZXZpb3VzU2FtcGxlOmEsc2tpcFRyYW5zcGFyZW50Omx9KTtyZXR1cm4odSBpbnN0YW5jZW9mIFByb21pc2U/dTpQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT51KSkudGhlbihkPT57ZCYmbz09PSJkaWZmIiYmKGE9ZCl9KSx1fSxnZW5lcmF0ZShzPXt9KXtjb25zdHtjbGVhclNhbXBsZXM6dT0hMH09cztyZXR1cm4gdSYmKGE9bnVsbCksYmUoZSxzKSx0aGlzfSxnZXRDb2xvcnM6cz0+bWUoZSxzKSxmaW5kTmVhcmVzdENvbG9yOnM9Pih0fHwodD1ZKGUpKSx4ZShlLHQscykpLHJlc2V0OigpPT5TZShlKX07cmV0dXJuIGkubGVuZ3RoJiYoaS5mb3JFYWNoKHM9PnIuYWRkU2FtcGxlKHMpKSxlLnNhbXBsZXM9W10pLHJ9Y29uc3QgeWU9Ilttb2Rlcm4tZ2lmXSIsSWU9IkdJRiIsa2U9WyI4N2EiLCI4OWEiXSxlZT00NCx0ZT0zMyxUZT0yNTUsQWU9MTEsRWU9MjU0LG5lPTI0OSxyZT00LEJlPTEsX2U9MSxNZT01OSxvZT0oLi4ubik9PmNvbnNvbGUud2Fybih5ZSwuLi5uKTtmdW5jdGlvbiB2ZShuKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG4ucmVkdWNlKChvLGkpPT5vK2kuYnl0ZUxlbmd0aCwwKSk7cmV0dXJuIG4ucmVkdWNlKChvLGkpPT4oZS5zZXQoaSxvKSxvK2kuYnl0ZUxlbmd0aCksMCksZX1mdW5jdGlvbiBhZShuLGUsbyl7bGV0IGk7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KG4pKWk9bi5idWZmZXI7ZWxzZSBpZihuIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpaT1uO2Vsc2V7Y29uc3QgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSx7d2lkdGg6YyxoZWlnaHQ6YX09b3x8e30sdD1sLmdldENvbnRleHQoIjJkIik7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIGNhbnZhcyBjb250ZXh0MmQiKTtsLndpZHRoPWMhPW51bGw/Yzp0eXBlb2Ygbi53aWR0aD09Im51bWJlciI/bi53aWR0aDpuLndpZHRoLmJhc2VWYWwudmFsdWUsbC5oZWlnaHQ9YSE9bnVsbD9hOnR5cGVvZiBuLmhlaWdodD09Im51bWJlciI/bi5oZWlnaHQ6bi5oZWlnaHQuYmFzZVZhbC52YWx1ZSx0LmRyYXdJbWFnZShuLDAsMCxsLndpZHRoLGwuaGVpZ2h0KSxpPXQuZ2V0SW1hZ2VEYXRhKDAsMCxsLndpZHRoLGwuaGVpZ2h0KS5kYXRhLmJ1ZmZlcn1zd2l0Y2goZSl7Y2FzZSJ1aW50OEFycmF5IjpyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoaSk7Y2FzZSJ1aW50OENsYW1wZWRBcnJheSI6cmV0dXJuIG5ldyBVaW50OENsYW1wZWRBcnJheShpKTtjYXNlImRhdGFWaWV3IjpyZXR1cm4gbmV3IERhdGFWaWV3KGkpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBvdXRwdXQgZm9ybWF0Iil9fWZ1bmN0aW9uIE5lKG4sZSl7dmFyIHA7Y29uc3R7dG9wOm89MCxsZWZ0Omk9MCx3aWR0aDpsLGhlaWdodDpjLHJhd1dpZHRoOmEscmF0ZTp0PTQsY2FsbGJhY2s6cn09ZSxzPW5ldyBVaW50OENsYW1wZWRBcnJheShsKmMqdCksdT1pKnQsZD1vKnQsaD1sKnQsYj1hKnQ7Zm9yKGxldCBmPTA7ZjxjO2YrKylmb3IobGV0IGc9MDtnPGg7ZysrKXtjb25zdCBDPShkK2YpKmIrKHUrZyk7c1tmKmgrZ109KHA9cj09bnVsbD92b2lkIDA6cihDKSkhPW51bGw/cDpuW0NdfXJldHVybiBzfWZ1bmN0aW9uIFVlKG4pe2NvbnN0IGU9YWUobiwiZGF0YVZpZXciKTtsZXQgbz0wO2NvbnN0IGk9KCk9PmUuZ2V0VWludDgobysrKSxsPWM9PkFycmF5LmZyb20oe2xlbmd0aDpjfSkubWFwKGkpO3JldHVybntnZXRDdXJzb3I6KCk9Pm8sc2V0Q3Vyc29yOmM9Pm89YyxyZWFkQnl0ZTppLHJlYWRCeXRlczpsLHJlYWRTdHJpbmc6Yz0+U3RyaW5nLmZyb21DaGFyQ29kZSguLi5sKGMpKSxyZWFkVW5zaWduZWQ6KCk9PltlLmdldFVpbnQxNihvLCEwKSxvKz0yXVswXSxyZWFkQml0czooKT0+ZS5nZXRVaW50OChvKyspLnRvU3RyaW5nKDIpLnBhZFN0YXJ0KDgsIjAiKS5zcGxpdCgiIikubWFwKE51bWJlcikscmVhZENvbG9yVGFibGU6Yz0+QXJyYXkuZnJvbSh7bGVuZ3RoOmN9LCgpPT5BcnJheS5mcm9tKGwoMykpKSxyZWFkU3ViQmxvY2s6KCk9Pntjb25zdCBjPVtdO2Zvcig7Oyl7Y29uc3QgYT1pKCk7aWYoYT09PTAmJmUuZ2V0VWludDgobykhPT0wKWJyZWFrO2MucHVzaChhKX1yZXR1cm4gY319fWZ1bmN0aW9uIE9lKG4pe2NvbnN0IGU9e30se2dldEN1cnNvcjpvLHNldEN1cnNvcjppLHJlYWRCeXRlOmwscmVhZFN0cmluZzpjLHJlYWRVbnNpZ25lZDphLHJlYWRCaXRzOnQscmVhZENvbG9yVGFibGU6cixyZWFkU3ViQmxvY2s6c309VWUobiksdT0oKT0+KHtpbmRleDowLGRlbGF5OjEwMCxkaXNwb3NhbDowfSksZD1jKDMpLGg9YygzKTtpZihkIT09SWV8fCFrZS5pbmNsdWRlcyhoKSl0aHJvdyBuZXcgRXJyb3IoIlRoaXMgaXMgbm90IGEgODdhLzg5YSBHSUYgZGF0YS4iKTtlLnZlcnNpb249aCxlLndpZHRoPWEoKSxlLmhlaWdodD1hKCk7Y29uc3QgYj10KCk7ZS5nbG9iYWxDb2xvclRhYmxlPSEhYlswXSxlLmNvbG9yUmVzb2x1VGlvbj1wYXJzZUludChiLnNsaWNlKDEsNCkuam9pbigiIiksMikrMSxlLmNvbG9yVGFibGVTb3J0ZWQ9ISFiWzRdO2NvbnN0IHA9cGFyc2VJbnQoYi5zbGljZSg1LDgpLmpvaW4oIiIpLDIpO2UuY29sb3JUYWJsZVNpemU9cD9NYXRoLnBvdygyLHArMSk6MCxlLmJhY2tncm91bmRDb2xvckluZGV4PWwoKSxlLnBpeGVsQXNwZWN0UmF0aW89bCgpLGUuZ2xvYmFsQ29sb3JUYWJsZSYmKGUuY29sb3JUYWJsZVNpemU/ZS5jb2xvclRhYmxlPXIoZS5jb2xvclRhYmxlU2l6ZSk6cygpKSxlLmZyYW1lcz1bXTtsZXQgZj11KCk7Y29uc3QgZz1bXSxDPVtdO2Zvcig7Oyl7Y29uc3QgeT1sKCk7aWYoZy5wdXNoKHkpLHk9PT1lZSl7Zi5sZWZ0PWEoKSxmLnRvcD1hKCksZi53aWR0aD1hKCksZi5oZWlnaHQ9YSgpO2NvbnN0IHc9dCgpO2YubG9jYWxDb2xvclRhYmxlPSEhd1swXSxmLmludGVybGFjZWQ9ISF3WzFdLGYuY29sb3JUYWJsZVNvcnRlZD0hIXdbMl0sZi5yZXNlcnZlZD1wYXJzZUludCh3LnNsaWNlKDMsNSkuam9pbigiIiksMik7Y29uc3QgbT1wYXJzZUludCh3LnNsaWNlKDUsOCkuam9pbigiIiksMik7Zm9yKGYuY29sb3JUYWJsZVNpemU9bT9NYXRoLnBvdygyLG0rMSk6MCxmLmxvY2FsQ29sb3JUYWJsZSYmKGYuY29sb3JUYWJsZT1yKGYuY29sb3JUYWJsZVNpemUpKSxmLmx6d01pbkNvZGVTaXplPWwoKSxmLmltYWdlRGF0YVBvc2l0aW9ucz1bXTs7KXtjb25zdCBTPWwoKTtpZihTPT09MClicmVhaztjb25zdCBJPW8oKTtmLmltYWdlRGF0YVBvc2l0aW9ucy5wdXNoKFtJLFNdKSxpKEkrUyl9ZS5mcmFtZXMucHVzaChmKSxmPXUoKSxmLmluZGV4PWUuZnJhbWVzLmxlbmd0aDtjb250aW51ZX1pZih5PT09dGUpe2NvbnN0IHc9bCgpO2lmKEMucHVzaCh3KSx3PT09VGUpe2lmKGwoKSE9PUFlKWNvbnRpbnVlO2NvbnN0IG09e2lkZW50aWZpZXI6Yyg4KSxjb2RlOmMoMyksZGF0YTpbXX07YCR7bS5pZGVudGlmaWVyfSR7bS5jb2RlfWA9PSJORVRTQ0FQRTIuMCImJmwoKT09PTMmJihlLmxvb3BlZD0hIWwoKSxlLmxvb3BDb3VudD1hKCkpLG0uZGF0YT1zKCksZi5hcHBsaWNhdGlvbj1tO2NvbnRpbnVlfWlmKHc9PT1FZSl7Zi5jb21tZW50PXMoKS5tYXAobT0+U3RyaW5nLmZyb21DaGFyQ29kZShtKSkuam9pbigiIik7Y29udGludWV9aWYodz09PW5lKXtpZihsKCkhPT1yZSljb250aW51ZTtjb25zdCBtPXQoKSxTPXtyZXNlcnZlZDpwYXJzZUludChtLnNsaWNlKDAsMykuam9pbigiIiksMiksZGlzcG9zYWw6cGFyc2VJbnQobS5zbGljZSgzLDYpLmpvaW4oIiIpLDIpLHVzZXJJbnB1dDohIW1bNl0sdHJhbnNwYXJlbnQ6ISFtWzddLGRlbGF5VGltZTphKCksdHJhbnNwYXJlbnRJbmRleDpsKCl9O3MoKSxmLmdyYXBoaWNDb250cm9sPVMsZi5kaXNwb3NhbD1TLmRpc3Bvc2FsLGYuZGVsYXk9KFMuZGVsYXlUaW1lfHwxMCkqMTA7Y29udGludWV9aWYodz09PUJlKXtpZihsKCkhPT1fZSljb250aW51ZTtmLnBsYWluVGV4dD17bGVmdDphKCksdG9wOmEoKSx3aWR0aDphKCksaGVpZ2h0OmEoKSxjZWxsV2lkdGg6bCgpLGNlbGxIZWlnaHQ6bCgpLGNvbG9ySW5kZXg6bCgpLGJhY2tncm91bmRDb2xvckluZGV4OmwoKSxkYXRhOnMoKX07Y29udGludWV9b2UoYFVua25vd24gZXh0ZW5zaW9uIGJsb2NrOiAweCR7dy50b1N0cmluZygxNil9YCxnLnNsaWNlKDAsZy5sZW5ndGgtMSkubWFwKG09PmAweCR7bS50b1N0cmluZygxNil9YCksQy5zbGljZSgwLEMubGVuZ3RoLTEpLm1hcChtPT5gMHgke20udG9TdHJpbmcoMTYpfWApKTtjb250aW51ZX1pZih5PT09TWUpYnJlYWs7b2UoYFVua25vd24gYmxvY2s6IDB4JHt5LnRvU3RyaW5nKDE2KX1gLGcuc2xpY2UoMCxnLmxlbmd0aC0xKS5tYXAodz0+YDB4JHt3LnRvU3RyaW5nKDE2KX1gKSxDLnNsaWNlKDAsQy5sZW5ndGgtMSkubWFwKHc9PmAweCR7dy50b1N0cmluZygxNil9YCkpfXJldHVybiBlfWZ1bmN0aW9uIFBlKG4sZSxvKXtjb25zdCBjPW87bGV0IGEsdCxyLHMsdSxkLGg7Y29uc3QgYj1uZXcgQXJyYXkobykscD1uZXcgQXJyYXkoNDA5NiksZj1uZXcgQXJyYXkoNDA5NiksZz1uZXcgQXJyYXkoNDA5NisxKSxDPW4seT0xPDxDLHc9eSsxO2ZvcihhPXkrMix1PS0xLHI9QysxLHQ9KDE8PHIpLTEsZD0wO2Q8eTtkKyspcFtkXT0wLGZbZF09ZDtsZXQgbSxTLEksVCxFLFA7Zm9yKG09Uz1JPVQ9RT1QPTAsaD0wO2g8Yzspe2lmKFQ9PT0wKXtpZihTPHIpe20rPWVbUF08PFMsUys9OCxQKys7Y29udGludWV9aWYoZD1tJnQsbT4+PXIsUy09cixkPmF8fGQ9PT13KWJyZWFrO2lmKGQ9PT15KXtyPUMrMSx0PSgxPDxyKS0xLGE9eSsyLHU9LTE7Y29udGludWV9aWYodT09PS0xKXtnW1QrK109ZltkXSx1PWQsST1kO2NvbnRpbnVlfWZvcihzPWQsZD09PWEmJihnW1QrK109SSxkPXUpO2Q+eTspZ1tUKytdPWZbZF0sZD1wW2RdO0k9ZltkXSYyNTUsZ1tUKytdPUksYTw0MDk2JiYocFthXT11LGZbYV09SSxhKyssIShhJnQpJiZhPDQwOTYmJihyKyssdCs9YSkpLHU9c31ULS0sYltFKytdPWdbVF0saCsrfWZvcihoPUU7aDxjO2grKyliW2hdPTA7cmV0dXJuIGJ9ZnVuY3Rpb24gJGUobixlKXtjb25zdCBvPW5ldyBBcnJheShuLmxlbmd0aCksaT1uLmxlbmd0aC9lLGw9WzAsNCwyLDFdLGM9WzgsOCw0LDJdO2xldCBhPTA7Zm9yKGxldCB0PTA7dDw0O3QrKylmb3IobGV0IHI9bFt0XTtyPGk7cis9Y1t0XSlvLnNwbGljZS5hcHBseShvLFtyKmUsZV0uY29uY2F0KG4uc2xpY2UoYSplLChhKzEpKmUpKSksYSsrO3JldHVybiBvfWZ1bmN0aW9uIERlKG4pe2NvbnN0IGU9bmV3IE1hcCx7d29ya2VyVXJsOm99PW47bGV0e3dvcmtlck51bWJlcjppPTF9PW47Y29uc3QgbD1bLi4ubmV3IEFycmF5KG8/aTowKV0ubWFwKCgpPT57dHJ5e2NvbnN0IHI9bmV3IFdvcmtlcihvKTtyZXR1cm4gci5vbm1lc3NhZ2U9YyxyfWNhdGNoKHIpe3JldHVybiBudWxsfX0pLmZpbHRlcihCb29sZWFuKTtpPWwubGVuZ3RoO2Z1bmN0aW9uIGMocil7dmFyIGQ7Y29uc3R7aWQ6cyxkYXRhOnV9PXIuZGF0YTsoZD1lLmdldChzKSk9PW51bGx8fGQodSksZS5kZWxldGUocyl9Y29uc3QgYT1mdW5jdGlvbigpe2xldCByPTA7cmV0dXJuIHM9PmxbKHMhPW51bGw/czpyKyspJWldfSgpO3JldHVybntjYWxsOmZ1bmN0aW9uKCl7bGV0IHI9MDtyZXR1cm4ocyx1LGQsaCk9Pm5ldyBQcm9taXNlKGI9Pntjb25zdCBwPWEoaCk7aWYoIXApcmV0dXJuIGIodm9pZCAwKTtlLnNldChyLGIpLHAucG9zdE1lc3NhZ2Uoe2lkOnIrKyx0eXBlOnMsZGF0YTp1fSx7dHJhbnNmZXI6ZH0pfSl9KCl9fWZ1bmN0aW9uIFhlKG4sZSl7Y29uc3Qgbz1hZShuLCJ1aW50OEFycmF5Iik7aWYoZSE9bnVsbCYmZS53b3JrZXJVcmwpcmV0dXJuIERlKHt3b3JrZXJVcmw6ZS53b3JrZXJVcmx9KS5jYWxsKCJmcmFtZXM6ZGVjb2RlIixvLFtvLmJ1ZmZlcl0pO2NvbnN0e2dpZjppPU9lKG4pLHJhbmdlOmx9PWUhPW51bGw/ZTp7fSx7d2lkdGg6YyxoZWlnaHQ6YSxjb2xvclRhYmxlOnQsZnJhbWVzOnJ9PWkscz1sP3Iuc2xpY2UobFswXSxsWzFdKzEpOnIsdT1uZXcgVWludDhDbGFtcGVkQXJyYXkoYyphKjQpO2xldCBkO3JldHVybiBzLm1hcChoPT57dmFyIGxlO2NvbnN0e2xlZnQ6Yix0b3A6cCx3aWR0aDpmLGhlaWdodDpnLGludGVybGFjZWQ6Qyxsb2NhbENvbG9yVGFibGU6eSxjb2xvclRhYmxlOncsbHp3TWluQ29kZVNpemU6bSxpbWFnZURhdGFQb3NpdGlvbnM6UyxncmFwaGljQ29udHJvbDpJLGRpc3Bvc2FsOlQsZGVsYXk6RX09aCxQPXArZyx7dHJhbnNwYXJlbnQ6S2UsdHJhbnNwYXJlbnRJbmRleDpWZX09SSE9bnVsbD9JOnt9LFc9eT93OnQsamU9S2U/VmU6LTEsWmU9dmUoUy5tYXAoKFtNLFVdKT0+by5zdWJhcnJheShNLE0rVSkpKTtsZXQgSz1QZShtLFplLGYqZyk7aWYoQyYmKEs9JGUoSyxmKSksKGQ9PW51bGw/dm9pZCAwOmQuZGlzcG9zYWwpIT09MSl7Y29uc3R7bGVmdDpNPTAsdG9wOlU9MCx3aWR0aDpWPWMsaGVpZ2h0Ok89YX09ZCE9bnVsbD9kOnt9LFg9VStPO2ZvcihsZXQgJD1VOyQ8WDskKyspe2NvbnN0IGo9JCpjK007Zm9yKGxldCBEPTA7RDxWO0QrKyl7Y29uc3Qgdj0oaitEKSo0O3Vbdl09dVt2KzFdPXVbdisyXT11W3YrM109MH19fWZvcihsZXQgTT1wO008UDtNKyspe2NvbnN0IFU9TSpjK2IsVj0oTS1wKSpmO2ZvcihsZXQgTz0wO088ZjtPKyspe2NvbnN0IFg9S1tWK09dO2lmKFg9PT1qZSljb250aW51ZTtjb25zdFskLGosRF09KGxlPVc9PW51bGw/dm9pZCAwOldbWF0pIT1udWxsP2xlOlswLDAsMF0sdj0oVStPKSo0O3Vbdl09JCx1W3YrMV09aix1W3YrMl09RCx1W3YrM109MjU1fX1yZXR1cm4gVCE9PTMmJihkPWgpLHt3aWR0aDpjLGhlaWdodDphLGRlbGF5OkUsaW1hZ2VEYXRhOnUuc2xpY2UoMCl9fSl9ZnVuY3Rpb24gTGUobixlLG8pe2NvbnN0e3dyaXRlQnl0ZTppLGdldEN1cnNvcjpsLGNhbGN1bGF0ZURpc3RhbmNlOmN9PW87aShuKTtsZXQgYT1sKCk7aSgwKTtjb25zdCB0PTE8PG4scj10LTEscz10KzE7bGV0IHU9cysxLGQ9bisxLGg9MCxiPTA7ZnVuY3Rpb24gcChTKXtmb3IoO2g+PVM7KWkoYiYyNTUpLGI+Pj04LGgtPTgsYyhhKT09PTI1NiYmKGkoMjU1LGEpLGE9bCgpLGkoMCkpfWZ1bmN0aW9uIGYoUyl7Ynw9Uzw8aCxoKz1kLHAoOCl9bGV0IGc9ZVswXSZyLEM9e30seSx3LG07Zih0KTtmb3IobGV0IFM9ZS5sZW5ndGgsST0xO0k8UzsrK0kpaWYobT1lW0ldJnIseT1nPDw4fG0sdz1DW3ldLHc9PT12b2lkIDApe2ZvcihifD1nPDxoLGgrPWQ7aD49ODspaShiJjI1NSksYj4+PTgsaC09OCxjKGEpPT09MjU2JiYoaSgyNTUsYSksYT1sKCksaSgwKSk7dT09PTQwOTY/KGYodCksdT1zKzEsZD1uKzEsQz17fSk6KHU+PTE8PGQmJisrZCxDW3ldPXUrKyksZz1tfWVsc2UgZz13O2YoZyksZihzKSxwKDEpLGMoYSk9PT0xP2koMCxhKTooaShjKGEpLTEsYSksaSgwKSl9ZnVuY3Rpb24gUmUobj17fSl7Y29uc3R7Y2h1bmtTaXplOmU9NDA5Nn09bjtsZXQgbz1bbmV3IFVpbnQ4QXJyYXkoZSldLGk9MCxsPTA7Y29uc3QgYz0odCxyKT0+e3I/b1tyWzBdXVtyWzFdXT10OihsPj1lJiYob1srK2ldPW5ldyBVaW50OEFycmF5KGUpLGw9MCksb1tpXVtsKytdPXQpfSxhPXQ9PnQuZm9yRWFjaChyPT5jKHIpKTtyZXR1cm57Z2V0Q3Vyc29yOigpPT5baSxsXSxzZXRDdXJzb3I6dD0+e2k9dFswXSxsPXRbMV19LGNhbGN1bGF0ZURpc3RhbmNlOnQ9PmkqZStsLSh0WzBdKmUrdFsxXSksd3JpdGVCeXRlOmMsd3JpdGVCeXRlczphLHdyaXRlU3RyaW5nOnQ9PnQuc3BsaXQoIiIpLmZvckVhY2goKHIscyk9PmModC5jaGFyQ29kZUF0KHMpKSksd3JpdGVVbnNpZ25lZDp0PT5hKFt0JjI1NSx0Pj44JjI1NV0pLGZsdXNoOigpPT57b1tpXT1vW2ldLnNsaWNlKDAsbCk7Y29uc3QgdD1uZXcgVWludDhBcnJheShvLnJlZHVjZSgocyx1KT0+cyt1LmJ5dGVMZW5ndGgsMCkpO2xldCByPTA7cmV0dXJuIG8uZm9yRWFjaChzPT57dC5zZXQocyxyKSxyKz1zLmJ5dGVMZW5ndGh9KSxvPVtuZXcgVWludDhBcnJheShlKV0saT0wLGw9MCx0fX19ZnVuY3Rpb24gemUobil7dmFyIEMseSx3O2NvbnN0IGU9UmUoKSx7d3JpdGVCeXRlOm8sd3JpdGVCeXRlczppLHdyaXRlVW5zaWduZWQ6bCxmbHVzaDpjfT1lLHtsZWZ0OmE9MCx0b3A6dD0wLHdpZHRoOnI9MCxoZWlnaHQ6cz0wLGRlbGF5OnU9MTAwLGNvbG9yVGFibGU6ZH09bjtsZXR7ZGlzcG9zYWw6aD0wfT1uO2NvbnN0IGI9KEM9bi5ncmFwaGljQ29udHJvbCk9PW51bGw/dm9pZCAwOkMudHJhbnNwYXJlbnQ7bGV0IHA9KHc9KHk9bi5ncmFwaGljQ29udHJvbCk9PW51bGw/dm9pZCAwOnkudHJhbnNwYXJlbnRJbmRleCkhPW51bGw/dzoyNTU7aWYoYTwwfHxhPjY1NTM1KXRocm93IG5ldyBFcnJvcigiTGVmdCBpbnZhbGlkLiIpO2lmKHQ8MHx8dD42NTUzNSl0aHJvdyBuZXcgRXJyb3IoIlRvcCBpbnZhbGlkLiIpO2lmKHI8PTB8fHI+NjU1MzUpdGhyb3cgbmV3IEVycm9yKCJXaWR0aCBpbnZhbGlkLiIpO2lmKHM8PTB8fHM+NjU1MzUpdGhyb3cgbmV3IEVycm9yKCJIZWlnaHQgaW52YWxpZC4iKTtsZXQgZj04LGc9ZD9kLmxlbmd0aDowO2lmKGcpe2lmKGc8Mnx8Zz4yNTZ8fGcmZy0xKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2xvciB0YWJsZSBsZW5ndGgsIG11c3QgYmUgcG93ZXIgb2YgMiBhbmQgMiAuLiAyNTYuIik7Zm9yKDtnPj49MTspKytmfXJldHVybiBvKHRlKSxvKG5lKSxvKHJlKSxiP2h8fChoPTIpOnA9MCxvKHBhcnNlSW50KGAwMDAke051bWJlcihoJjcpLnRvU3RyaW5nKDIpLnBhZFN0YXJ0KDMsIjAiKX0wJHtiPzE6MH1gLDIpKSxsKHUvMTApLG8ocCksbygwKSxvKGVlKSxsKGEpLGwodCksbChyKSxsKHMpLGQhPW51bGwmJmQubGVuZ3RoPyhvKHBhcnNlSW50KGAxMDAwMCR7KGYtMSkudG9TdHJpbmcoMikucGFkU3RhcnQoMywiMCIpfWAsMikpLGkoZC5mbGF0KCkpKTpvKDApLExlKGYsbi5pbWFnZURhdGEsZSksYygpfWZ1bmN0aW9uIEZlKG4pe2NvbnN0e2ZyYW1lczplLHBhbGV0dGU6byx0cmFuc3BhcmVudEluZGV4Oml9PW4sbD1ZKG8pO3JldHVybiBlLm1hcCgoe2ltYWdlRGF0YTpjfSk9PntsZXQgYT0hMTtjb25zdCB0PW5ldyBVaW50OENsYW1wZWRBcnJheShjLmxlbmd0aC80KTtmb3IobGV0IHI9Yy5sZW5ndGgscz0wO3M8cjtzKz00KWNbcyszXT09PTA/KHRbcy80XT1pLGE9ITApOnRbcy80XT1sKGNbc108PDE2fGNbcysxXTw8OHxjW3MrMl0pO3JldHVybntpbWFnZURhdGE6dCx0cmFuc3BhcmVudDphfX0pfWZ1bmN0aW9uIFdlKG4pe2NvbnN0e2ZyYW1lczplLHRyYW5zcGFyZW50SW5kZXg6b309bjtsZXQgaTtjb25zdCBsPWUubGVuZ3RoO3JldHVybiBlLm1hcCgoYyxhKT0+e2NvbnN0e3dpZHRoOnQsaGVpZ2h0OnIsdHJhbnNwYXJlbnQ6cyxpbWFnZURhdGE6dX09YztsZXQgZD0wLGg9MCxiPXQtMSxwPXItMSxmO2lmKHMpe2Zvcig7aDxwOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKylpZih1W3QqaCttXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7aCsrfWZvcig7cD5oOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKylpZih1W3QqcCttXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7cC0tfWZvcig7ZDxiOyl7bGV0IHc9ITA7Zm9yKGxldCBtPWg7bTxwO20rKylpZih1W3QqbStkXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7ZCsrfWZvcig7Yj5kOyl7bGV0IHc9ITA7Zm9yKGxldCBtPWg7bTxwO20rKylpZih1W3QqbStiXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7Yi0tfX1lbHNle2lmKGkpe2Zvcig7aDxwOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKyl7Y29uc3QgUz10KmgrbTtpZih1W1NdIT09aVtTXSl7dz0hMTticmVha319aWYoIXcpYnJlYWs7aCsrfWZvcig7cD5oOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKyl7Y29uc3QgUz10KnArbTtpZih1W1NdIT09aVtTXSl7dz0hMTticmVha319aWYoIXcpYnJlYWs7cC0tfWlmKGg9PT1wKWQ9YjtlbHNle2Zvcig7ZDxiOyl7bGV0IHc9ITA7Zm9yKGxldCBtPWg7bTw9cDttKyspe2NvbnN0IFM9bSp0K2Q7aWYodVtTXSE9PWlbU10pe3c9ITE7YnJlYWt9fWlmKCF3KWJyZWFrO2QrK31mb3IoO2I+ZDspe2xldCB3PSEwO2ZvcihsZXQgbT1oO208PXA7bSsrKXtjb25zdCBTPW0qdCtiO2lmKHVbU10hPT1pW1NdKXt3PSExO2JyZWFrfX1pZighdylicmVhaztiLS19fX1mPWksaT11fWNvbnN0IGc9YisxLWQsQz1wKzEtaCx5PU5lKHUse2xlZnQ6ZCx0b3A6aCx3aWR0aDpnLGhlaWdodDpDLHJhd1dpZHRoOnQscmF0ZToxLGNhbGxiYWNrOnc9PntpZighcyYmZiYmdVt3XT09PWZbd10pcmV0dXJuIG99fSk7cmV0dXJue2xlZnQ6ZCx0b3A6aCx3aWR0aDpnLGhlaWdodDpDLGRpc3Bvc2FsOnMmJmEhPT1sLTE/MjoxLGltYWdlRGF0YTp5fX0pfWNvbnN0IE49Q2Uoe3NraXBUcmFuc3BhcmVudDohMX0pO3NlbGYub25tZXNzYWdlPW49Pntjb25zdHtpZDplLHR5cGU6byxkYXRhOml9PW4uZGF0YTtpZihvPT09InBhbGV0dGU6YWRkU2FtcGxlIiYmTilyZXR1cm4gTi5hZGRTYW1wbGUoaSksc2VsZi5wb3N0TWVzc2FnZSh7aWQ6ZSx0eXBlOm8sZGF0YTohMH0pO2lmKG89PT0icGFsZXR0ZTpnZW5lcmF0ZSImJk4pe04uZ2VuZXJhdGUoaSk7Y29uc3QgbD1aKHt9LE4uY29udGV4dCk7cmV0dXJuIE4ucmVzZXQoKSxzZWxmLnBvc3RNZXNzYWdlKHtpZDplLHR5cGU6byxkYXRhOmx9KX1pZihvPT09ImZyYW1lczppbmRleCIpe2NvbnN0IGw9RmUoaSk7cmV0dXJuIHNlbGYucG9zdE1lc3NhZ2Uoe2lkOmUsdHlwZTpvLGRhdGE6bH0sbC5tYXAoYz0+Yy5pbWFnZURhdGEuYnVmZmVyKSl9aWYobz09PSJmcmFtZXM6Y3JvcCIpe2NvbnN0IGw9V2UoaSk7cmV0dXJuIHNlbGYucG9zdE1lc3NhZ2Uoe2lkOmUsdHlwZTpvLGRhdGE6bH0sbC5tYXAoYz0+Yy5pbWFnZURhdGEuYnVmZmVyKSl9aWYobz09PSJmcmFtZTplbmNvZGUiKXtjb25zdCBsPXplKGkpO3JldHVybiBzZWxmLnBvc3RNZXNzYWdlKHtpZDplLHR5cGU6byxkYXRhOmx9LFtsLmJ1ZmZlcl0pfWlmKG89PT0iZnJhbWVzOmRlY29kZSIpe2NvbnN0IGw9WGUoaSk7cmV0dXJuIHNlbGYucG9zdE1lc3NhZ2Uoe2lkOmUsdHlwZTpvLGRhdGE6bH0sbC5tYXAoYz0+Yy5pbWFnZURhdGEuYnVmZmVyKSl9fX0pKCk7Cg==", dn = (t) => Se(void 0, null, function* () {
|
|
2401
|
+
const kr = "data:application/javascript;base64,dmFyIEdlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgc2U9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sczt2YXIgSGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxxZT1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO3ZhciBBPU1hdGgucG93LGllPShCLHgsayk9PnggaW4gQj9HZShCLHgse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmt9KTpCW3hdPWssWj0oQix4KT0+e2Zvcih2YXIgayBpbiB4fHwoeD17fSkpSGUuY2FsbCh4LGspJiZpZShCLGsseFtrXSk7aWYoc2UpZm9yKHZhciBrIG9mIHNlKHgpKXFlLmNhbGwoeCxrKSYmaWUoQixrLHhba10pO3JldHVybiBCfTsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y29uc3QgQj10eXBlb2Ygd2luZG93PCJ1Iix4PTY1NTM2LTEsaz14KngsY2U9NTEyLTEsTD1bMCwyMCw0MCw2MCw4MCw5OSwxMTksMTM5LDE1OSwxNzksMTk5LDIxOSwyNDEsMjY0LDI4OCwzMTMsMzQwLDM2NywzOTYsNDI3LDQ1OCw0OTEsNTI2LDU2Miw1OTksNjM3LDY3Nyw3MTgsNzYxLDgwNSw4NTEsODk4LDk0Nyw5OTcsMTA0OCwxMTAxLDExNTYsMTIxMiwxMjcwLDEzMzAsMTM5MSwxNDUzLDE1MTcsMTU4MywxNjUxLDE3MjAsMTc5MCwxODYzLDE5MzcsMjAxMywyMDkwLDIxNzAsMjI1MCwyMzMzLDI0MTgsMjUwNCwyNTkyLDI2ODEsMjc3MywyODY2LDI5NjEsMzA1OCwzMTU3LDMyNTgsMzM2MCwzNDY0LDM1NzAsMzY3OCwzNzg4LDM5MDAsNDAxNCw0MTI5LDQyNDcsNDM2Niw0NDg4LDQ2MTEsNDczNiw0ODY0LDQ5OTMsNTEyNCw1MjU3LDUzOTIsNTUzMCw1NjY5LDU4MTAsNTk1Myw2MDk5LDYyNDYsNjM5NSw2NTQ3LDY3MDAsNjg1Niw3MDE0LDcxNzQsNzMzNSw3NTAwLDc2NjYsNzgzNCw4MDA0LDgxNzcsODM1Miw4NTI4LDg3MDgsODg4OSw5MDcyLDkyNTgsOTQ0NSw5NjM1LDk4MjgsMTAwMjIsMTAyMTksMTA0MTcsMTA2MTksMTA4MjIsMTEwMjgsMTEyMzUsMTE0NDYsMTE2NTgsMTE4NzMsMTIwOTAsMTIzMDksMTI1MzAsMTI3NTQsMTI5ODAsMTMyMDksMTM0NDAsMTM2NzMsMTM5MDksMTQxNDYsMTQzODcsMTQ2MjksMTQ4NzQsMTUxMjIsMTUzNzEsMTU2MjMsMTU4NzgsMTYxMzUsMTYzOTQsMTY2NTYsMTY5MjAsMTcxODcsMTc0NTYsMTc3MjcsMTgwMDEsMTgyNzcsMTg1NTYsMTg4MzcsMTkxMjEsMTk0MDcsMTk2OTYsMTk5ODcsMjAyODEsMjA1NzcsMjA4NzYsMjExNzcsMjE0ODEsMjE3ODcsMjIwOTYsMjI0MDcsMjI3MjEsMjMwMzgsMjMzNTcsMjM2NzgsMjQwMDIsMjQzMjksMjQ2NTgsMjQ5OTAsMjUzMjUsMjU2NjIsMjYwMDEsMjYzNDQsMjY2ODgsMjcwMzYsMjczODYsMjc3MzksMjgwOTQsMjg0NTIsMjg4MTMsMjkxNzYsMjk1NDIsMjk5MTEsMzAyODIsMzA2NTYsMzEwMzMsMzE0MTIsMzE3OTQsMzIxNzksMzI1NjcsMzI5NTcsMzMzNTAsMzM3NDUsMzQxNDMsMzQ1NDQsMzQ5NDgsMzUzNTUsMzU3NjQsMzYxNzYsMzY1OTEsMzcwMDgsMzc0MjksMzc4NTIsMzgyNzgsMzg3MDYsMzkxMzgsMzk1NzIsNDAwMDksNDA0NDksNDA4OTEsNDEzMzcsNDE3ODUsNDIyMzYsNDI2OTAsNDMxNDcsNDM2MDYsNDQwNjksNDQ1MzQsNDUwMDIsNDU0NzMsNDU5NDcsNDY0MjMsNDY5MDMsNDczODUsNDc4NzEsNDgzNTksNDg4NTAsNDkzNDQsNDk4NDEsNTAzNDEsNTA4NDQsNTEzNDksNTE4NTgsNTIzNjksNTI4ODQsNTM0MDEsNTM5MjEsNTQ0NDUsNTQ5NzEsNTU1MDAsNTYwMzIsNTY1NjcsNTcxMDUsNTc2NDYsNTgxOTAsNTg3MzcsNTkyODcsNTk4NDAsNjAzOTYsNjA5NTUsNjE1MTcsNjIwODIsNjI2NTAsNjMyMjEsNjM3OTUsNjQzNzIsNjQ5NTIsNjU1MzVdLEc9WzAsNiwxMywxOCwyMiwyNSwyOCwzMSwzNCwzNiwzOCw0MCw0Miw0NCw0Niw0OCw1MCw1MSw1Myw1NCw1Niw1Nyw1OSw2MCw2MSw2Miw2NCw2NSw2Niw2Nyw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Niw4Nyw4OCw4OSw5MCw5MSw5MSw5Miw5Myw5NCw5NSw5NSw5Niw5Nyw5OCw5OCw5OSwxMDAsMTAxLDEwMSwxMDIsMTAzLDEwMywxMDQsMTA1LDEwNiwxMDYsMTA3LDEwOCwxMDgsMTA5LDExMCwxMTAsMTExLDExMSwxMTIsMTEzLDExMywxMTQsMTE1LDExNSwxMTYsMTE2LDExNywxMTgsMTE4LDExOSwxMTksMTIwLDEyMSwxMjEsMTIyLDEyMiwxMjMsMTIzLDEyNCwxMjUsMTI1LDEyNiwxMjYsMTI3LDEyNywxMjgsMTI4LDEyOSwxMjksMTMwLDEzMCwxMzEsMTMyLDEzMiwxMzMsMTMzLDEzNCwxMzQsMTM1LDEzNSwxMzYsMTM2LDEzNywxMzcsMTM4LDEzOCwxMzksMTM5LDE0MCwxNDAsMTQwLDE0MSwxNDEsMTQyLDE0MiwxNDMsMTQzLDE0NCwxNDQsMTQ1LDE0NSwxNDYsMTQ2LDE0NywxNDcsMTQ3LDE0OCwxNDgsMTQ5LDE0OSwxNTAsMTUwLDE1MSwxNTEsMTUxLDE1MiwxNTIsMTUzLDE1MywxNTQsMTU0LDE1NCwxNTUsMTU1LDE1NiwxNTYsMTU2LDE1NywxNTcsMTU4LDE1OCwxNTksMTU5LDE1OSwxNjAsMTYwLDE2MSwxNjEsMTYxLDE2MiwxNjIsMTYzLDE2MywxNjMsMTY0LDE2NCwxNjUsMTY1LDE2NSwxNjYsMTY2LDE2NiwxNjcsMTY3LDE2OCwxNjgsMTY4LDE2OSwxNjksMTY5LDE3MCwxNzAsMTcxLDE3MSwxNzEsMTcyLDE3MiwxNzIsMTczLDE3MywxNzQsMTc0LDE3NCwxNzUsMTc1LDE3NSwxNzYsMTc2LDE3NiwxNzcsMTc3LDE3NywxNzgsMTc4LDE3OSwxNzksMTc5LDE4MCwxODAsMTgwLDE4MSwxODEsMTgxLDE4MiwxODIsMTgyLDE4MywxODMsMTgzLDE4NCwxODQsMTg0LDE4NSwxODUsMTg1LDE4NiwxODYsMTg2LDE4NywxODcsMTg3LDE4OCwxODgsMTg4LDE4OSwxODksMTg5LDE5MCwxOTAsMTkwLDE5MSwxOTEsMTkxLDE5MiwxOTIsMTkyLDE5MywxOTMsMTkzLDE5MywxOTQsMTk0LDE5NCwxOTUsMTk1LDE5NSwxOTYsMTk2LDE5NiwxOTcsMTk3LDE5NywxOTgsMTk4LDE5OCwxOTgsMTk5LDE5OSwxOTksMjAwLDIwMCwyMDAsMjAxLDIwMSwyMDEsMjAxLDIwMiwyMDIsMjAyLDIwMywyMDMsMjAzLDIwNCwyMDQsMjA0LDIwNCwyMDUsMjA1LDIwNSwyMDYsMjA2LDIwNiwyMDYsMjA3LDIwNywyMDcsMjA4LDIwOCwyMDgsMjA4LDIwOSwyMDksMjA5LDIxMCwyMTAsMjEwLDIxMCwyMTEsMjExLDIxMSwyMTIsMjEyLDIxMiwyMTIsMjEzLDIxMywyMTMsMjE0LDIxNCwyMTQsMjE0LDIxNSwyMTUsMjE1LDIxNSwyMTYsMjE2LDIxNiwyMTcsMjE3LDIxNywyMTcsMjE4LDIxOCwyMTgsMjE4LDIxOSwyMTksMjE5LDIyMCwyMjAsMjIwLDIyMCwyMjEsMjIxLDIyMSwyMjEsMjIyLDIyMiwyMjIsMjIyLDIyMywyMjMsMjIzLDIyNCwyMjQsMjI0LDIyNCwyMjUsMjI1LDIyNSwyMjUsMjI2LDIyNiwyMjYsMjI2LDIyNywyMjcsMjI3LDIyNywyMjgsMjI4LDIyOCwyMjgsMjI5LDIyOSwyMjksMjI5LDIzMCwyMzAsMjMwLDIzMCwyMzEsMjMxLDIzMSwyMzEsMjMyLDIzMiwyMzIsMjMyLDIzMywyMzMsMjMzLDIzMywyMzQsMjM0LDIzNCwyMzQsMjM1LDIzNSwyMzUsMjM1LDIzNiwyMzYsMjM2LDIzNiwyMzcsMjM3LDIzNywyMzcsMjM4LDIzOCwyMzgsMjM4LDIzOSwyMzksMjM5LDIzOSwyMzksMjQwLDI0MCwyNDAsMjQwLDI0MSwyNDEsMjQxLDI0MSwyNDIsMjQyLDI0MiwyNDIsMjQzLDI0MywyNDMsMjQzLDI0MywyNDQsMjQ0LDI0NCwyNDQsMjQ1LDI0NSwyNDUsMjQ1LDI0NiwyNDYsMjQ2LDI0NiwyNDYsMjQ3LDI0NywyNDcsMjQ3LDI0OCwyNDgsMjQ4LDI0OCwyNDksMjQ5LDI0OSwyNDksMjQ5LDI1MCwyNTAsMjUwLDI1MCwyNTEsMjUxLDI1MSwyNTEsMjUxLDI1MiwyNTIsMjUyLDI1MiwyNTMsMjUzLDI1MywyNTMsMjUzLDI1NCwyNTQsMjU0LDI1NCwyNTUsMjU1LDI1NV07ZnVuY3Rpb24gUihuKXtsZXQgZTtpZihuPD0wKXJldHVybiAwO2lmKG4+PXgpcmV0dXJuIHg7ZT1uKihuKihuKy0xNDQxMDcpL3grMTMyMTE0KS94KzE0Mzc5O2ZvcihsZXQgbz0wO288MjtvKyspe2NvbnN0IGk9ZSplKmUsbD1uKygyKmkray8yKS9rO2U9KGUqKDIqbisoaStrLzIpL2spK2wvMikvbH1yZXR1cm4gZX1mdW5jdGlvbiBfKG4sZSl7cmV0dXJuKG5eZSk8MD8obi1lLzIpL2U6KG4rZS8yKS9lfWZ1bmN0aW9uIEgobil7Y29uc3QgZT1MW24+PjE2JjI1NV0sbz1MW24+PjgmMjU1XSxpPUxbbiYyNTVdLGw9KDI3MDE1KmUrMzUxNDkqbyszMzcyKmkreC8yKS94LGM9KDEzODg3KmUrNDQ2MTAqbys3MDM4KmkreC8yKS94LGE9KDU3ODcqZSsxODQ2MipvKzQxMjg2KmkreC8yKS94LHQ9UihsKSxyPVIoYykscz1SKGEpO3JldHVybltfKDEzNzkyKnQrNTIwMTAqci0yNjcqcyx4KSxfKDEyOTYyOCp0LTE1OTE1OCpyKzI5NTMwKnMseCksXygxNjk4KnQrNTEyOTkqci01Mjk5NypzLHgpXX1mdW5jdGlvbiB6KG4pe2lmKG48PTApcmV0dXJuIDA7aWYobj49eClyZXR1cm4gMjU1O3tjb25zdCBlPW4qY2Usbz1+fihlL3gpLGk9ZSV4LGw9R1tvXSxjPUdbbysxXTtyZXR1cm4oaSooYy1sKSt4LzIpL3grbH19ZnVuY3Rpb24gZmUobil7Y29uc3QgZT1uWzBdK18oMjU5NzQqblsxXSx4KStfKDE0MTQzKm5bMl0seCksbz1uWzBdK18oLTY5MTgqblsxXSx4KStfKC00MTg1Km5bMl0seCksaT1uWzBdK18oLTU4NjQqblsxXSx4KStfKC04NDYzOCpuWzJdLHgpLGw9QShlLDIpKmUvayxjPUEobywyKSpvL2ssYT1BKGksMikqaS9rLHQ9eigoMjY3MTY5KmwrLTIxNjc3MSpjKzE1MTM3KmEreC8yKS94KSxyPXooKC04MzEyNypsKzE3MTAzMCpjKy0yMjM2OCphK3gvMikveCkscz16KCgtMjc1KmwrLTQ2MDk5KmMrMTExOTA5KmEreC8yKS94KTtyZXR1cm4gdDw8MTZ8cjw8OHxzfWZ1bmN0aW9uIGRlKG4pe2NvbnN0IGU9e2w6MCxhOjEsYjoyfSxvPW5bMF0saT1uWzFdLGw9blsyXSxjPWVbb10sYT1lW2ldLHQ9ZVtsXTtyZXR1cm4ocixzKT0+ci5va2xhYltjXS1zLm9rbGFiW2NdfHxyLm9rbGFiW2FdLXMub2tsYWJbYV18fHIub2tsYWJbdF0tcy5va2xhYlt0XX1mdW5jdGlvbiB1ZShuLGUsbyl7cmV0dXJuIG4+PWU/ZT49bz8ibGFiIjpuPj1vPyJsYmEiOiJibGEiOm4+PW8/ImFsYiI6ZT49bz8iYWJsIjoiYmFsIn1mdW5jdGlvbiBoZShuKXtyZXR1cm4gbmV3IFByb21pc2UoZT0+e2NvbnN0IG89bmV3IEltYWdlO28uZGVjb2Rpbmc9InN5bmMiLG8ubG9hZGluZz0iZWFnZXIiLG8uY3Jvc3NPcmlnaW49ImFub255bW91cyIsby5vbmxvYWQ9KCk9PmUobyksby5vbmVycm9yPSgpPT5lKG8pLG8uc3JjPW59KX1mdW5jdGlvbiBxKG4pe3JldHVybiBuJiZ0eXBlb2Ygbj09Im9iamVjdCImJiJfX0NPTlRFWFRfXyJpbiBufWZ1bmN0aW9uIGdlKG4pe3JldHVybiBxKG4pP246cGUobil9ZnVuY3Rpb24gcGUobj17fSl7Y29uc3R7bWF4Q29sb3JzOmU9MjU2LHN0YXRzTW9kZTpvPSJmdWxsIixzYW1wbGVzOmk9W10sc2tpcFRyYW5zcGFyZW50Omw9ITB9PW47cmV0dXJue19fQ09OVEVYVF9fOiEwLHNhbXBsZXM6aSxtYXhDb2xvcnM6ZSxzdGF0c01vZGU6byxza2lwVHJhbnNwYXJlbnQ6bCxjb2xvclNhbXBsZXM6W10sY29sb3JTYW1wbGVzQ2FjaGU6bmV3IE1hcCxjb2xvckJveGVzOltdLGNvbG9yQm94ZXNJbmRleFRyZWU6W10sZmluZGVyQ2FjaGU6bmV3IE1hcH19ZnVuY3Rpb24gWShuKXtjb25zdCBlPXEobik/bjpuLmNvbnRleHQse2NvbG9yQm94ZXNJbmRleFRyZWU6byxmaW5kZXJDYWNoZTppfT1lO2Z1bmN0aW9uIGwoYSx0LHIpe2NvbnN0e2xlZnQ6cyxyaWdodDp1LGxvbmdlc3Q6ZCxva2xhYjpoLGNvbG9yQm94SW5kZXg6Yn09b1thXSxwPU1hdGgubWluKEEodFswXS1oWzBdLDIpK0EodFsxXS1oWzFdLDIpK0EodFsyXS1oWzJdLDIpLDQyOTQ5NjcyOTUtMSk7cDxyLmRpc3QmJihyLmNvbG9yQm94SW5kZXg9YixyLmRpc3Q9cCk7bGV0IGYsZztpZihzIT09LTF8fHUhPT0tMSl7Y29uc3QgQz10W2RdLWhbZF07Qzw9MD8oZj1zLGc9dSk6KGY9dSxnPXMpLGYhPT0tMSYmbChmLHQsciksZyE9PS0xJiZBKEMsMik8ci5kaXN0JiZsKGcsdCxyKX19ZnVuY3Rpb24gYyhhKXtjb25zdCB0PXtkaXN0Ok51bWJlci5NQVhfU0FGRV9JTlRFR0VSLGNvbG9yQm94SW5kZXg6LTF9O3JldHVybiBsKDAsYSx0KSx0LmNvbG9yQm94SW5kZXh9cmV0dXJuIGE9Pntjb25zdCB0PWElMzI3Njg7bGV0IHI9aS5nZXQodCk7cnx8KHI9bmV3IE1hcCxpLnNldCh0LHIpKTtsZXQgcz1yLmdldChhKTtyZXR1cm4gcyE9PXZvaWQgMHx8KHM9YyhIKGEpKSxyLnNldChhLHMpKSxzfX1mdW5jdGlvbiBtZShuLGUpe2NvbnN0e2NvbG9yQm94ZXM6b309bixpPW8ucmVkdWNlKChhLHQpPT5hK3Qud2VpZ2h0LDApO2lmKCFlKXJldHVybiBuLmNvbG9yQm94ZXMubWFwKGE9Pntjb25zdHtzcmdiOnQsd2VpZ2h0OnJ9PWE7cmV0dXJue3ZhbHVlOnQscGVyY2VudGFnZTpyL2l9fSk7Y29uc3QgbD1bXTtmb3IobGV0IGE9by5sZW5ndGgsdD0wO3Q8YTt0Kyspe2NvbnN0e3NyZ2I6cix3ZWlnaHQ6c309b1t0XTtsLnB1c2goe3ZhbHVlOltyPj4xNiYyNTUscj4+OCYyNTUsciYyNTVdLHBlcmNlbnRhZ2U6cy9pfSl9bGV0IGM7aWYoZT09PSJidWZmZXIiKXtjPW5ldyBVaW50OENsYW1wZWRBcnJheShsLmxlbmd0aCo0KTtmb3IobGV0IGE9bC5sZW5ndGgsdD0wO3Q8YTt0Kyspe2NvbnN0IHI9dCo0LHM9bFt0XS52YWx1ZTtjW3JdPXNbMF0sY1tyKzFdPXNbMV0sY1tyKzJdPXNbMl0sY1tyKzNdPTI1NX19ZWxzZSBpZihlPT09ImhleCIpe2M9W107Zm9yKGxldCBhPWwubGVuZ3RoLHQ9MDt0PGE7dCsrKXtjb25zdHt2YWx1ZTpyLHBlcmNlbnRhZ2U6c309bFt0XSx1PXJbMF0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSxkPXJbMV0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSxoPXJbMl0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKTtjLnB1c2goe3ZhbHVlOmAjJHt1fSR7ZH0ke2h9YCxwZXJjZW50YWdlOnN9KX19ZWxzZSBjPWw7cmV0dXJuIGN9ZnVuY3Rpb24gRihuLGUsbyl7dmFyIHUsZCxoLGI7Y29uc3R7Z2V0Q29udGV4dDJkOmkscHJldmlvdXNTYW1wbGU6bCxza2lwVHJhbnNwYXJlbnQ6Y309byx7c3RhdHNNb2RlOmEsY29sb3JTYW1wbGVzOnQsY29sb3JTYW1wbGVzQ2FjaGU6cn09bjtsZXQgcztpZihBcnJheUJ1ZmZlci5pc1ZpZXcoZSkpcz1uZXcgVWludDhDbGFtcGVkQXJyYXkoZS5idWZmZXIpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGUpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKSlpZihBcnJheS5pc0FycmF5KGVbMF0pKXtjb25zdCBwPVtdO2ZvcihsZXQgZj1lLmxlbmd0aCxnPTA7ZzxmO2crKylwLnB1c2goKHU9ZVtnXVswXSkhPW51bGw/dTowLChkPWVbZ11bMV0pIT1udWxsP2Q6MCwoaD1lW2ddWzJdKSE9bnVsbD9oOjAsKGI9ZVtnXVszXSkhPW51bGw/YjoyNTUpO3M9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHApfWVsc2Ugcz1uZXcgVWludDhDbGFtcGVkQXJyYXkoZSk7ZWxzZSBpZih0eXBlb2YgZT09InN0cmluZyIpe2NvbnN0IHA9aT09bnVsbD92b2lkIDA6aSgpO2lmKCFwKXJldHVybjtjb25zdCBmPXAuY2FudmFzO3JldHVybiBoZShlKS50aGVuKGc9PihwLmNsZWFyUmVjdCgwLDAsZi53aWR0aCxmLmhlaWdodCksZi53aWR0aD1nLndpZHRoLGYuaGVpZ2h0PWcuaGVpZ2h0LHAuZHJhd0ltYWdlKGcsMCwwLGYud2lkdGgsZi5oZWlnaHQpLEYobixwLmdldEltYWdlRGF0YSgwLDAsZi53aWR0aCxmLmhlaWdodCkuZGF0YSxvKSkpfWVsc2V7Y29uc3QgcD1pPT1udWxsP3ZvaWQgMDppKCk7aWYoIXApcmV0dXJuO2NvbnN0IGY9cC5jYW52YXM7cmV0dXJuIHAuY2xlYXJSZWN0KDAsMCxmLndpZHRoLGYuaGVpZ2h0KSxmLndpZHRoPXR5cGVvZiBlLndpZHRoPT0ibnVtYmVyIj9lLndpZHRoOmUud2lkdGguYmFzZVZhbC52YWx1ZSxmLmhlaWdodD10eXBlb2YgZS5oZWlnaHQ9PSJudW1iZXIiP2UuaGVpZ2h0OmUuaGVpZ2h0LmJhc2VWYWwudmFsdWUscC5kcmF3SW1hZ2UoZSwwLDAsZi53aWR0aCxmLmhlaWdodCksRihuLHAuZ2V0SW1hZ2VEYXRhKDAsMCxmLndpZHRoLGYuaGVpZ2h0KS5kYXRhLG8pfWZvcihsZXQgcD1zLmxlbmd0aCxmPTA7ZjxwO2YrPTQpe2NvbnN0IGc9c1tmXSxDPXNbZisxXSx5PXNbZisyXSx3PXNbZiszXTtpZihjJiZ3PT09MHx8YT09PSJkaWZmIiYmbCYmZz09PWxbZl0mJkM9PT1sW2YrMV0mJnk9PT1sW2YrMl0mJnc9PT1sW2YrM10pY29udGludWU7Y29uc3QgbT1nPDwxNnxDPDw4fHksUz13KjFlOCttLEk9UyUzMjc2ODtsZXQgVD1yLmdldChJKTtUfHwoVD1uZXcgTWFwLHIuc2V0KEksVCkpO2xldCBFPVQuZ2V0KFMpO2lmKEUhPT12b2lkIDApe3RbRV0uY291bnQrKztjb250aW51ZX1FPXQucHVzaCh7YWxwaGE6dyxzcmdiOm0sb2tsYWI6SChtKSxjb3VudDoxfSktMSxULnNldChTLEUpfXJldHVybiBzfWZ1bmN0aW9uIEoobixlKXtjb25zdHtjb2xvclNhbXBsZXM6b309ZSx7c3RhcnQ6aSxlbmQ6bH09bjtuLmxlbmd0aD1sLWksbi53ZWlnaHQ9MDtjb25zdCBjPVswLDAsMF07Zm9yKGxldCB0PWk7dDxsO3QrKyl7Y29uc3Qgcj1vW3RdO2NbMF0rPXIub2tsYWJbMF0qci5jb3VudCxjWzFdKz1yLm9rbGFiWzFdKnIuY291bnQsY1syXSs9ci5va2xhYlsyXSpyLmNvdW50LG4ud2VpZ2h0Kz1yLmNvdW50fW4ub2tsYWI9W2NbMF0vbi53ZWlnaHQsY1sxXS9uLndlaWdodCxjWzJdL24ud2VpZ2h0XTtjb25zdCBhPVswLDAsMF07Zm9yKGxldCB0PWk7dDxsO3QrKyl7Y29uc3Qgcj1vW3RdO2FbMF0rPUEoci5va2xhYlswXS1uLm9rbGFiWzBdLDIpKnIuY291bnQsYVsxXSs9QShyLm9rbGFiWzFdLW4ub2tsYWJbMV0sMikqci5jb3VudCxhWzJdKz1BKHIub2tsYWJbMl0tbi5va2xhYlsyXSwyKSpyLmNvdW50fW4uc29ydD11ZShhWzBdLGFbMV0sYVsyXSksbi5zY29yZT1NYXRoLm1heChhWzBdLGFbMV0sYVsyXSl9ZnVuY3Rpb24gUShuLGUpe2NvbnN0IG89Wih7c3RhcnQ6MCxlbmQ6MCxsZW5ndGg6MCxzY29yZTowLHdlaWdodDowLHNvcnQ6ImxhYiIsc29ydGVkOm51bGwsc3JnYjowLG9rbGFiOlswLDAsMF19LG4pO3JldHVybiBKKG8sZSksb31mdW5jdGlvbiB3ZShuKXtjb25zdHtjb2xvckJveGVzOmV9PW4sbz1bXSxpPW5ldyBNYXA7Zm9yKGxldCBhPS0xLHQ9ZS5sZW5ndGgscj0wO3I8dDtyKyspe2NvbnN0e3NyZ2I6c309ZVtyXTtpZihzPT09YSl7aS5zZXQociwhMCk7Y29udGludWV9YT1zfWMoe21pbjpbLTY1NTM1LC02NTUzNSwtNjU1MzVdLG1heDpbNjU1MzUsNjU1MzUsNjU1MzVdfSk7ZnVuY3Rpb24gbChhKXtjb25zdCB0PXttaW46WzY1NTM1LDY1NTM1LDY1NTM1XSxtYXg6Wy02NTUzNSwtNjU1MzUsLTY1NTM1XX07bGV0IHI9MDtjb25zdCBzPVtdO2ZvcihsZXQgcD1lLmxlbmd0aCxmPTA7ZjxwO2YrKyl7Y29uc3R7b2tsYWI6Z309ZVtmXTtpLmhhcyhmKXx8Z1swXTxhLm1pblswXXx8Z1sxXTxhLm1pblsxXXx8Z1syXTxhLm1pblsyXXx8Z1swXT5hLm1heFswXXx8Z1sxXT5hLm1heFsxXXx8Z1syXT5hLm1heFsyXXx8KGdbMF08dC5taW5bMF0mJih0Lm1pblswXT1nWzBdKSxnWzFdPHQubWluWzFdJiYodC5taW5bMV09Z1sxXSksZ1syXTx0Lm1pblsyXSYmKHQubWluWzJdPWdbMl0pLGdbMF0+dC5tYXhbMF0mJih0Lm1heFswXT1nWzBdKSxnWzFdPnQubWF4WzFdJiYodC5tYXhbMV09Z1sxXSksZ1syXT50Lm1heFsyXSYmKHQubWF4WzJdPWdbMl0pLHNbcisrXT17b2tsYWI6Zyxjb2xvckJveEluZGV4OmZ9KX1sZXQgdT0wO2lmKCFyKXJldHVybntjb2xvckJveEluZGV4Oi0xLGxvbmdlc3Q6dX07Y29uc3QgZD10Lm1heFswXS10Lm1pblswXSxoPXQubWF4WzFdLXQubWluWzFdLGI9dC5tYXhbMl0tdC5taW5bMl07cmV0dXJuIGQ+PWgmJmQ+PWI/dT0wOmI+PWQmJmI+PWg/dT0yOmg+PWQmJmg+PWImJih1PTEpLHtjb2xvckJveEluZGV4OnMuc29ydCgocCxmKT0+cC5va2xhYlt1XS1mLm9rbGFiW3VdKVtyPj4xXS5jb2xvckJveEluZGV4LGxvbmdlc3Q6dX19ZnVuY3Rpb24gYyhhKXtjb25zdHtjb2xvckJveEluZGV4OnQsbG9uZ2VzdDpyfT1sKGEpO2lmKHQ8MClyZXR1cm4tMTtjb25zdHtva2xhYjpzfT1lW3RdLHU9e2xvbmdlc3Q6cixva2xhYjpzLGNvbG9yQm94SW5kZXg6dH0sZD1vLnB1c2godSktMTtpLnNldCh0LCEwKTtjb25zdCBoPXttYXg6Wy4uLmEubWF4XSxtaW46Wy4uLmEubWluXX0sYj17bWF4OlsuLi5hLm1heF0sbWluOlsuLi5hLm1pbl19O2gubWF4W3JdPXNbcl0sYi5taW5bcl09TWF0aC5taW4oc1tyXSsxLDY1NTM1KTtjb25zdCBwPWMoaCk7bGV0IGY9LTE7cmV0dXJuIGIubWluW3JdPD1iLm1heFtyXSYmKGY9YyhiKSksdS5sZWZ0PXAsdS5yaWdodD1mLGR9cmV0dXJuIG99ZnVuY3Rpb24gYmUobixlPXt9KXtjb25zdHttYXhDb2xvcnM6byxjb2xvclNhbXBsZXM6aX09bjtpZighaS5sZW5ndGgpcmV0dXJuO2NvbnN0e21heENvbG9yczpsPW8sY2xlYXJTYW1wbGVzOmM9ITB9PWU7bGV0IGE9USh7ZW5kOmkubGVuZ3RofSxuKSx0PTE7Y29uc3Qgcj1bYV07ZnVuY3Rpb24gcygpe2xldCBkPS0xLGg9LTE7aWYodD09PWwpcmV0dXJuLTE7Zm9yKGxldCBiPTA7Yjx0O2IrKyl7Y29uc3QgcD1yW2JdO3AubGVuZ3RoPj0yJiZwLnNjb3JlPmgmJihkPWIsaD1wLnNjb3JlKX1yZXR1cm4gZH1mdW5jdGlvbiB1KGQsaCl7Y29uc3QgYj1RKHtzdGFydDpoKzEsZW5kOmQuZW5kLHNvcnRlZDpkLnNvcnRlZH0sbik7ZC5lbmQtPWIubGVuZ3RoLEooZCxuKSxyLnB1c2goYiksdCsrfWZvcig7YSYmYS5sZW5ndGg+MTspe2NvbnN0e3N0YXJ0OmQsZW5kOmgsc29ydDpiLHNvcnRlZDpwfT1hO2lmKGIhPT1wKXtjb25zdCB3PWkuc2xpY2UoZCxoKS5zb3J0KGRlKGIpKTtmb3IobGV0IG09dy5sZW5ndGgsUz0wO1M8bTtTKyspaVtkK1NdPXdbU107YS5zb3J0ZWQ9Yn1jb25zdCBmPWEud2VpZ2h0KzE+PjE7bGV0IGc9ZCxDPTA7Zm9yKGxldCB3PWgtMjtnPHcmJihDKz1pW2ddLmNvdW50LCEoQz5mKSk7ZysrKTt1KGEsZyk7Y29uc3QgeT1zKCk7YT15Pj0wP3JbeV06bnVsbH1mb3IobGV0IGQ9ci5sZW5ndGgsaD0wO2g8ZDtoKyspcltoXS5zcmdiPWZlKHJbaF0ub2tsYWIpO24uY29sb3JCb3hlcz1yLnNvcnQoKGQsaCk9PmQuc3JnYi1oLnNyZ2IpLG4uY29sb3JCb3hlc0luZGV4VHJlZT13ZShuKSxjJiYobi5jb2xvclNhbXBsZXM9W10sbi5jb2xvclNhbXBsZXNDYWNoZS5jbGVhcigpKSxuLmZpbmRlckNhY2hlLmNsZWFyKCl9ZnVuY3Rpb24geGUobixlLG8pe2NvbnN0e2NvbG9yQm94ZXM6aX09bjtpZighZSlyZXR1cm47bGV0IGw7aWYodHlwZW9mIG89PSJudW1iZXIiKWw9bztlbHNlIGlmKHR5cGVvZiBvPT0ic3RyaW5nIil7Y29uc3Qgcj1vLnJlcGxhY2UoL14jLywiIikscz1bYCR7clswXX0ke3JbMV19YCxgJHtyWzJdfSR7clszXX1gLGAke3JbNF19JHtyWzVdfWBdLm1hcCh1PT5wYXJzZUludCh1LDE2KSk7bD1zWzBdPDwxNnxzWzFdPDw4fHNbMl19ZWxzZSBpZihBcnJheS5pc0FycmF5KG8pKWw9b1swXTw8MTZ8b1sxXTw8OHxvWzJdO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5zdXBwb3J0ZWQgY29sb3IgZm9ybWF0Iik7Y29uc3QgYz1lKGwpO2lmKGM9PT12b2lkIDApcmV0dXJuO2NvbnN0IGE9aVtjXTtpZighYSlyZXR1cm47Y29uc3R7c3JnYjp0fT1hO2lmKHR5cGVvZiBvPT0ic3RyaW5nIil7Y29uc3Qgcj0odD4+MTYmMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpLHM9KHQ+PjgmMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpLHU9KHQmMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpO3JldHVybnt2YWx1ZTpgIyR7cn0ke3N9JHt1fWAsaW5kZXg6Y319ZWxzZSBpZih0eXBlb2Ygbz09Im9iamVjdCImJkFycmF5LmlzQXJyYXkobykpcmV0dXJue3ZhbHVlOlt0Pj4xNiYyNTUsdD4+OCYyNTUsdCYyNTVdLGluZGV4OmN9O3JldHVybnt2YWx1ZTp0LGluZGV4OmN9fWZ1bmN0aW9uIFNlKG4pe24uY29sb3JTYW1wbGVzPVtdLG4uY29sb3JTYW1wbGVzQ2FjaGUuY2xlYXIoKSxuLmNvbG9yQm94ZXM9W10sbi5jb2xvckJveGVzSW5kZXhUcmVlPVtdLG4uZmluZGVyQ2FjaGUuY2xlYXIoKX1mdW5jdGlvbiBDZShuKXtjb25zdCBlPWdlKG4pLHtzdGF0c01vZGU6byxzYW1wbGVzOmksc2tpcFRyYW5zcGFyZW50Omx9PWUsYz1mdW5jdGlvbigpe2xldCBzO3JldHVybigpPT4oIXMmJkImJihzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSkpLHMpfSgpO2xldCBhPW51bGwsdD1udWxsO2NvbnN0IHI9e2NvbnRleHQ6ZSxhZGRTYW1wbGU6cz0+e2UuY29sb3JTYW1wbGVzLmxlbmd0aD09PTAmJihhPW51bGwpO2NvbnN0IHU9RihlLHMse2dldENvbnRleHQyZDpjLHByZXZpb3VzU2FtcGxlOmEsc2tpcFRyYW5zcGFyZW50Omx9KTtyZXR1cm4odSBpbnN0YW5jZW9mIFByb21pc2U/dTpQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT51KSkudGhlbihkPT57ZCYmbz09PSJkaWZmIiYmKGE9ZCl9KSx1fSxnZW5lcmF0ZShzPXt9KXtjb25zdHtjbGVhclNhbXBsZXM6dT0hMH09cztyZXR1cm4gdSYmKGE9bnVsbCksYmUoZSxzKSx0aGlzfSxnZXRDb2xvcnM6cz0+bWUoZSxzKSxmaW5kTmVhcmVzdENvbG9yOnM9Pih0fHwodD1ZKGUpKSx4ZShlLHQscykpLHJlc2V0OigpPT5TZShlKX07cmV0dXJuIGkubGVuZ3RoJiYoaS5mb3JFYWNoKHM9PnIuYWRkU2FtcGxlKHMpKSxlLnNhbXBsZXM9W10pLHJ9Y29uc3QgeWU9Ilttb2Rlcm4tZ2lmXSIsSWU9IkdJRiIsa2U9WyI4N2EiLCI4OWEiXSxlZT00NCx0ZT0zMyxUZT0yNTUsQWU9MTEsRWU9MjU0LG5lPTI0OSxyZT00LEJlPTEsX2U9MSxNZT01OSxvZT0oLi4ubik9PmNvbnNvbGUud2Fybih5ZSwuLi5uKTtmdW5jdGlvbiB2ZShuKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG4ucmVkdWNlKChvLGkpPT5vK2kuYnl0ZUxlbmd0aCwwKSk7cmV0dXJuIG4ucmVkdWNlKChvLGkpPT4oZS5zZXQoaSxvKSxvK2kuYnl0ZUxlbmd0aCksMCksZX1mdW5jdGlvbiBhZShuLGUsbyl7bGV0IGk7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KG4pKWk9bi5idWZmZXI7ZWxzZSBpZihuIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpaT1uO2Vsc2V7Y29uc3QgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSx7d2lkdGg6YyxoZWlnaHQ6YX09b3x8e30sdD1sLmdldENvbnRleHQoIjJkIik7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIGNhbnZhcyBjb250ZXh0MmQiKTtsLndpZHRoPWMhPW51bGw/Yzp0eXBlb2Ygbi53aWR0aD09Im51bWJlciI/bi53aWR0aDpuLndpZHRoLmJhc2VWYWwudmFsdWUsbC5oZWlnaHQ9YSE9bnVsbD9hOnR5cGVvZiBuLmhlaWdodD09Im51bWJlciI/bi5oZWlnaHQ6bi5oZWlnaHQuYmFzZVZhbC52YWx1ZSx0LmRyYXdJbWFnZShuLDAsMCxsLndpZHRoLGwuaGVpZ2h0KSxpPXQuZ2V0SW1hZ2VEYXRhKDAsMCxsLndpZHRoLGwuaGVpZ2h0KS5kYXRhLmJ1ZmZlcn1zd2l0Y2goZSl7Y2FzZSJ1aW50OEFycmF5IjpyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoaSk7Y2FzZSJ1aW50OENsYW1wZWRBcnJheSI6cmV0dXJuIG5ldyBVaW50OENsYW1wZWRBcnJheShpKTtjYXNlImRhdGFWaWV3IjpyZXR1cm4gbmV3IERhdGFWaWV3KGkpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBvdXRwdXQgZm9ybWF0Iil9fWZ1bmN0aW9uIE5lKG4sZSl7dmFyIHA7Y29uc3R7dG9wOm89MCxsZWZ0Omk9MCx3aWR0aDpsLGhlaWdodDpjLHJhd1dpZHRoOmEscmF0ZTp0PTQsY2FsbGJhY2s6cn09ZSxzPW5ldyBVaW50OENsYW1wZWRBcnJheShsKmMqdCksdT1pKnQsZD1vKnQsaD1sKnQsYj1hKnQ7Zm9yKGxldCBmPTA7ZjxjO2YrKylmb3IobGV0IGc9MDtnPGg7ZysrKXtjb25zdCBDPShkK2YpKmIrKHUrZyk7c1tmKmgrZ109KHA9cj09bnVsbD92b2lkIDA6cihDKSkhPW51bGw/cDpuW0NdfXJldHVybiBzfWZ1bmN0aW9uIFVlKG4pe2NvbnN0IGU9YWUobiwiZGF0YVZpZXciKTtsZXQgbz0wO2NvbnN0IGk9KCk9PmUuZ2V0VWludDgobysrKSxsPWM9PkFycmF5LmZyb20oe2xlbmd0aDpjfSkubWFwKGkpO3JldHVybntnZXRDdXJzb3I6KCk9Pm8sc2V0Q3Vyc29yOmM9Pm89YyxyZWFkQnl0ZTppLHJlYWRCeXRlczpsLHJlYWRTdHJpbmc6Yz0+U3RyaW5nLmZyb21DaGFyQ29kZSguLi5sKGMpKSxyZWFkVW5zaWduZWQ6KCk9PltlLmdldFVpbnQxNihvLCEwKSxvKz0yXVswXSxyZWFkQml0czooKT0+ZS5nZXRVaW50OChvKyspLnRvU3RyaW5nKDIpLnBhZFN0YXJ0KDgsIjAiKS5zcGxpdCgiIikubWFwKE51bWJlcikscmVhZENvbG9yVGFibGU6Yz0+QXJyYXkuZnJvbSh7bGVuZ3RoOmN9LCgpPT5BcnJheS5mcm9tKGwoMykpKSxyZWFkU3ViQmxvY2s6KCk9Pntjb25zdCBjPVtdO2Zvcig7Oyl7Y29uc3QgYT1pKCk7aWYoYT09PTAmJmUuZ2V0VWludDgobykhPT0wKWJyZWFrO2MucHVzaChhKX1yZXR1cm4gY319fWZ1bmN0aW9uIE9lKG4pe2NvbnN0IGU9e30se2dldEN1cnNvcjpvLHNldEN1cnNvcjppLHJlYWRCeXRlOmwscmVhZFN0cmluZzpjLHJlYWRVbnNpZ25lZDphLHJlYWRCaXRzOnQscmVhZENvbG9yVGFibGU6cixyZWFkU3ViQmxvY2s6c309VWUobiksdT0oKT0+KHtpbmRleDowLGRlbGF5OjEwMCxkaXNwb3NhbDowfSksZD1jKDMpLGg9YygzKTtpZihkIT09SWV8fCFrZS5pbmNsdWRlcyhoKSl0aHJvdyBuZXcgRXJyb3IoIlRoaXMgaXMgbm90IGEgODdhLzg5YSBHSUYgZGF0YS4iKTtlLnZlcnNpb249aCxlLndpZHRoPWEoKSxlLmhlaWdodD1hKCk7Y29uc3QgYj10KCk7ZS5nbG9iYWxDb2xvclRhYmxlPSEhYlswXSxlLmNvbG9yUmVzb2x1VGlvbj1wYXJzZUludChiLnNsaWNlKDEsNCkuam9pbigiIiksMikrMSxlLmNvbG9yVGFibGVTb3J0ZWQ9ISFiWzRdO2NvbnN0IHA9cGFyc2VJbnQoYi5zbGljZSg1LDgpLmpvaW4oIiIpLDIpO2UuY29sb3JUYWJsZVNpemU9cD9NYXRoLnBvdygyLHArMSk6MCxlLmJhY2tncm91bmRDb2xvckluZGV4PWwoKSxlLnBpeGVsQXNwZWN0UmF0aW89bCgpLGUuZ2xvYmFsQ29sb3JUYWJsZSYmKGUuY29sb3JUYWJsZVNpemU/ZS5jb2xvclRhYmxlPXIoZS5jb2xvclRhYmxlU2l6ZSk6cygpKSxlLmZyYW1lcz1bXTtsZXQgZj11KCk7Y29uc3QgZz1bXSxDPVtdO2Zvcig7Oyl7Y29uc3QgeT1sKCk7aWYoZy5wdXNoKHkpLHk9PT1lZSl7Zi5sZWZ0PWEoKSxmLnRvcD1hKCksZi53aWR0aD1hKCksZi5oZWlnaHQ9YSgpO2NvbnN0IHc9dCgpO2YubG9jYWxDb2xvclRhYmxlPSEhd1swXSxmLmludGVybGFjZWQ9ISF3WzFdLGYuY29sb3JUYWJsZVNvcnRlZD0hIXdbMl0sZi5yZXNlcnZlZD1wYXJzZUludCh3LnNsaWNlKDMsNSkuam9pbigiIiksMik7Y29uc3QgbT1wYXJzZUludCh3LnNsaWNlKDUsOCkuam9pbigiIiksMik7Zm9yKGYuY29sb3JUYWJsZVNpemU9bT9NYXRoLnBvdygyLG0rMSk6MCxmLmxvY2FsQ29sb3JUYWJsZSYmKGYuY29sb3JUYWJsZT1yKGYuY29sb3JUYWJsZVNpemUpKSxmLmx6d01pbkNvZGVTaXplPWwoKSxmLmltYWdlRGF0YVBvc2l0aW9ucz1bXTs7KXtjb25zdCBTPWwoKTtpZihTPT09MClicmVhaztjb25zdCBJPW8oKTtmLmltYWdlRGF0YVBvc2l0aW9ucy5wdXNoKFtJLFNdKSxpKEkrUyl9ZS5mcmFtZXMucHVzaChmKSxmPXUoKSxmLmluZGV4PWUuZnJhbWVzLmxlbmd0aDtjb250aW51ZX1pZih5PT09dGUpe2NvbnN0IHc9bCgpO2lmKEMucHVzaCh3KSx3PT09VGUpe2lmKGwoKSE9PUFlKWNvbnRpbnVlO2NvbnN0IG09e2lkZW50aWZpZXI6Yyg4KSxjb2RlOmMoMyksZGF0YTpbXX07YCR7bS5pZGVudGlmaWVyfSR7bS5jb2RlfWA9PSJORVRTQ0FQRTIuMCImJmwoKT09PTMmJihlLmxvb3BlZD0hIWwoKSxlLmxvb3BDb3VudD1hKCkpLG0uZGF0YT1zKCksZi5hcHBsaWNhdGlvbj1tO2NvbnRpbnVlfWlmKHc9PT1FZSl7Zi5jb21tZW50PXMoKS5tYXAobT0+U3RyaW5nLmZyb21DaGFyQ29kZShtKSkuam9pbigiIik7Y29udGludWV9aWYodz09PW5lKXtpZihsKCkhPT1yZSljb250aW51ZTtjb25zdCBtPXQoKSxTPXtyZXNlcnZlZDpwYXJzZUludChtLnNsaWNlKDAsMykuam9pbigiIiksMiksZGlzcG9zYWw6cGFyc2VJbnQobS5zbGljZSgzLDYpLmpvaW4oIiIpLDIpLHVzZXJJbnB1dDohIW1bNl0sdHJhbnNwYXJlbnQ6ISFtWzddLGRlbGF5VGltZTphKCksdHJhbnNwYXJlbnRJbmRleDpsKCl9O3MoKSxmLmdyYXBoaWNDb250cm9sPVMsZi5kaXNwb3NhbD1TLmRpc3Bvc2FsLGYuZGVsYXk9KFMuZGVsYXlUaW1lfHwxMCkqMTA7Y29udGludWV9aWYodz09PUJlKXtpZihsKCkhPT1fZSljb250aW51ZTtmLnBsYWluVGV4dD17bGVmdDphKCksdG9wOmEoKSx3aWR0aDphKCksaGVpZ2h0OmEoKSxjZWxsV2lkdGg6bCgpLGNlbGxIZWlnaHQ6bCgpLGNvbG9ySW5kZXg6bCgpLGJhY2tncm91bmRDb2xvckluZGV4OmwoKSxkYXRhOnMoKX07Y29udGludWV9b2UoYFVua25vd24gZXh0ZW5zaW9uIGJsb2NrOiAweCR7dy50b1N0cmluZygxNil9YCxnLnNsaWNlKDAsZy5sZW5ndGgtMSkubWFwKG09PmAweCR7bS50b1N0cmluZygxNil9YCksQy5zbGljZSgwLEMubGVuZ3RoLTEpLm1hcChtPT5gMHgke20udG9TdHJpbmcoMTYpfWApKTtjb250aW51ZX1pZih5PT09TWUpYnJlYWs7b2UoYFVua25vd24gYmxvY2s6IDB4JHt5LnRvU3RyaW5nKDE2KX1gLGcuc2xpY2UoMCxnLmxlbmd0aC0xKS5tYXAodz0+YDB4JHt3LnRvU3RyaW5nKDE2KX1gKSxDLnNsaWNlKDAsQy5sZW5ndGgtMSkubWFwKHc9PmAweCR7dy50b1N0cmluZygxNil9YCkpfXJldHVybiBlfWZ1bmN0aW9uIFBlKG4sZSxvKXtjb25zdCBjPW87bGV0IGEsdCxyLHMsdSxkLGg7Y29uc3QgYj1uZXcgQXJyYXkobykscD1uZXcgQXJyYXkoNDA5NiksZj1uZXcgQXJyYXkoNDA5NiksZz1uZXcgQXJyYXkoNDA5NisxKSxDPW4seT0xPDxDLHc9eSsxO2ZvcihhPXkrMix1PS0xLHI9QysxLHQ9KDE8PHIpLTEsZD0wO2Q8eTtkKyspcFtkXT0wLGZbZF09ZDtsZXQgbSxTLEksVCxFLFA7Zm9yKG09Uz1JPVQ9RT1QPTAsaD0wO2g8Yzspe2lmKFQ9PT0wKXtpZihTPHIpe20rPWVbUF08PFMsUys9OCxQKys7Y29udGludWV9aWYoZD1tJnQsbT4+PXIsUy09cixkPmF8fGQ9PT13KWJyZWFrO2lmKGQ9PT15KXtyPUMrMSx0PSgxPDxyKS0xLGE9eSsyLHU9LTE7Y29udGludWV9aWYodT09PS0xKXtnW1QrK109ZltkXSx1PWQsST1kO2NvbnRpbnVlfWZvcihzPWQsZD09PWEmJihnW1QrK109SSxkPXUpO2Q+eTspZ1tUKytdPWZbZF0sZD1wW2RdO0k9ZltkXSYyNTUsZ1tUKytdPUksYTw0MDk2JiYocFthXT11LGZbYV09SSxhKyssIShhJnQpJiZhPDQwOTYmJihyKyssdCs9YSkpLHU9c31ULS0sYltFKytdPWdbVF0saCsrfWZvcihoPUU7aDxjO2grKyliW2hdPTA7cmV0dXJuIGJ9ZnVuY3Rpb24gJGUobixlKXtjb25zdCBvPW5ldyBBcnJheShuLmxlbmd0aCksaT1uLmxlbmd0aC9lLGw9WzAsNCwyLDFdLGM9WzgsOCw0LDJdO2xldCBhPTA7Zm9yKGxldCB0PTA7dDw0O3QrKylmb3IobGV0IHI9bFt0XTtyPGk7cis9Y1t0XSlvLnNwbGljZS5hcHBseShvLFtyKmUsZV0uY29uY2F0KG4uc2xpY2UoYSplLChhKzEpKmUpKSksYSsrO3JldHVybiBvfWZ1bmN0aW9uIERlKG4pe2NvbnN0IGU9bmV3IE1hcCx7d29ya2VyVXJsOm99PW47bGV0e3dvcmtlck51bWJlcjppPTF9PW47Y29uc3QgbD1bLi4ubmV3IEFycmF5KG8/aTowKV0ubWFwKCgpPT57dHJ5e2NvbnN0IHI9bmV3IFdvcmtlcihvKTtyZXR1cm4gci5vbm1lc3NhZ2U9YyxyfWNhdGNoKHIpe3JldHVybiBudWxsfX0pLmZpbHRlcihCb29sZWFuKTtpPWwubGVuZ3RoO2Z1bmN0aW9uIGMocil7dmFyIGQ7Y29uc3R7aWQ6cyxkYXRhOnV9PXIuZGF0YTsoZD1lLmdldChzKSk9PW51bGx8fGQodSksZS5kZWxldGUocyl9Y29uc3QgYT1mdW5jdGlvbigpe2xldCByPTA7cmV0dXJuIHM9PmxbKHMhPW51bGw/czpyKyspJWldfSgpO3JldHVybntjYWxsOmZ1bmN0aW9uKCl7bGV0IHI9MDtyZXR1cm4ocyx1LGQsaCk9Pm5ldyBQcm9taXNlKGI9Pntjb25zdCBwPWEoaCk7aWYoIXApcmV0dXJuIGIodm9pZCAwKTtlLnNldChyLGIpLHAucG9zdE1lc3NhZ2Uoe2lkOnIrKyx0eXBlOnMsZGF0YTp1fSx7dHJhbnNmZXI6ZH0pfSl9KCl9fWZ1bmN0aW9uIFhlKG4sZSl7Y29uc3Qgbz1hZShuLCJ1aW50OEFycmF5Iik7aWYoZSE9bnVsbCYmZS53b3JrZXJVcmwpcmV0dXJuIERlKHt3b3JrZXJVcmw6ZS53b3JrZXJVcmx9KS5jYWxsKCJmcmFtZXM6ZGVjb2RlIixvLFtvLmJ1ZmZlcl0pO2NvbnN0e2dpZjppPU9lKG4pLHJhbmdlOmx9PWUhPW51bGw/ZTp7fSx7d2lkdGg6YyxoZWlnaHQ6YSxjb2xvclRhYmxlOnQsZnJhbWVzOnJ9PWkscz1sP3Iuc2xpY2UobFswXSxsWzFdKzEpOnIsdT1uZXcgVWludDhDbGFtcGVkQXJyYXkoYyphKjQpO2xldCBkO3JldHVybiBzLm1hcChoPT57dmFyIGxlO2NvbnN0e2xlZnQ6Yix0b3A6cCx3aWR0aDpmLGhlaWdodDpnLGludGVybGFjZWQ6Qyxsb2NhbENvbG9yVGFibGU6eSxjb2xvclRhYmxlOncsbHp3TWluQ29kZVNpemU6bSxpbWFnZURhdGFQb3NpdGlvbnM6UyxncmFwaGljQ29udHJvbDpJLGRpc3Bvc2FsOlQsZGVsYXk6RX09aCxQPXArZyx7dHJhbnNwYXJlbnQ6S2UsdHJhbnNwYXJlbnRJbmRleDpWZX09SSE9bnVsbD9JOnt9LFc9eT93OnQsamU9S2U/VmU6LTEsWmU9dmUoUy5tYXAoKFtNLFVdKT0+by5zdWJhcnJheShNLE0rVSkpKTtsZXQgSz1QZShtLFplLGYqZyk7aWYoQyYmKEs9JGUoSyxmKSksKGQ9PW51bGw/dm9pZCAwOmQuZGlzcG9zYWwpIT09MSl7Y29uc3R7bGVmdDpNPTAsdG9wOlU9MCx3aWR0aDpWPWMsaGVpZ2h0Ok89YX09ZCE9bnVsbD9kOnt9LFg9VStPO2ZvcihsZXQgJD1VOyQ8WDskKyspe2NvbnN0IGo9JCpjK007Zm9yKGxldCBEPTA7RDxWO0QrKyl7Y29uc3Qgdj0oaitEKSo0O3Vbdl09dVt2KzFdPXVbdisyXT11W3YrM109MH19fWZvcihsZXQgTT1wO008UDtNKyspe2NvbnN0IFU9TSpjK2IsVj0oTS1wKSpmO2ZvcihsZXQgTz0wO088ZjtPKyspe2NvbnN0IFg9S1tWK09dO2lmKFg9PT1qZSljb250aW51ZTtjb25zdFskLGosRF09KGxlPVc9PW51bGw/dm9pZCAwOldbWF0pIT1udWxsP2xlOlswLDAsMF0sdj0oVStPKSo0O3Vbdl09JCx1W3YrMV09aix1W3YrMl09RCx1W3YrM109MjU1fX1yZXR1cm4gVCE9PTMmJihkPWgpLHt3aWR0aDpjLGhlaWdodDphLGRlbGF5OkUsaW1hZ2VEYXRhOnUuc2xpY2UoMCl9fSl9ZnVuY3Rpb24gTGUobixlLG8pe2NvbnN0e3dyaXRlQnl0ZTppLGdldEN1cnNvcjpsLGNhbGN1bGF0ZURpc3RhbmNlOmN9PW87aShuKTtsZXQgYT1sKCk7aSgwKTtjb25zdCB0PTE8PG4scj10LTEscz10KzE7bGV0IHU9cysxLGQ9bisxLGg9MCxiPTA7ZnVuY3Rpb24gcChTKXtmb3IoO2g+PVM7KWkoYiYyNTUpLGI+Pj04LGgtPTgsYyhhKT09PTI1NiYmKGkoMjU1LGEpLGE9bCgpLGkoMCkpfWZ1bmN0aW9uIGYoUyl7Ynw9Uzw8aCxoKz1kLHAoOCl9bGV0IGc9ZVswXSZyLEM9e30seSx3LG07Zih0KTtmb3IobGV0IFM9ZS5sZW5ndGgsST0xO0k8UzsrK0kpaWYobT1lW0ldJnIseT1nPDw4fG0sdz1DW3ldLHc9PT12b2lkIDApe2ZvcihifD1nPDxoLGgrPWQ7aD49ODspaShiJjI1NSksYj4+PTgsaC09OCxjKGEpPT09MjU2JiYoaSgyNTUsYSksYT1sKCksaSgwKSk7dT09PTQwOTY/KGYodCksdT1zKzEsZD1uKzEsQz17fSk6KHU+PTE8PGQmJisrZCxDW3ldPXUrKyksZz1tfWVsc2UgZz13O2YoZyksZihzKSxwKDEpLGMoYSk9PT0xP2koMCxhKTooaShjKGEpLTEsYSksaSgwKSl9ZnVuY3Rpb24gUmUobj17fSl7Y29uc3R7Y2h1bmtTaXplOmU9NDA5Nn09bjtsZXQgbz1bbmV3IFVpbnQ4QXJyYXkoZSldLGk9MCxsPTA7Y29uc3QgYz0odCxyKT0+e3I/b1tyWzBdXVtyWzFdXT10OihsPj1lJiYob1srK2ldPW5ldyBVaW50OEFycmF5KGUpLGw9MCksb1tpXVtsKytdPXQpfSxhPXQ9PnQuZm9yRWFjaChyPT5jKHIpKTtyZXR1cm57Z2V0Q3Vyc29yOigpPT5baSxsXSxzZXRDdXJzb3I6dD0+e2k9dFswXSxsPXRbMV19LGNhbGN1bGF0ZURpc3RhbmNlOnQ9PmkqZStsLSh0WzBdKmUrdFsxXSksd3JpdGVCeXRlOmMsd3JpdGVCeXRlczphLHdyaXRlU3RyaW5nOnQ9PnQuc3BsaXQoIiIpLmZvckVhY2goKHIscyk9PmModC5jaGFyQ29kZUF0KHMpKSksd3JpdGVVbnNpZ25lZDp0PT5hKFt0JjI1NSx0Pj44JjI1NV0pLGZsdXNoOigpPT57b1tpXT1vW2ldLnNsaWNlKDAsbCk7Y29uc3QgdD1uZXcgVWludDhBcnJheShvLnJlZHVjZSgocyx1KT0+cyt1LmJ5dGVMZW5ndGgsMCkpO2xldCByPTA7cmV0dXJuIG8uZm9yRWFjaChzPT57dC5zZXQocyxyKSxyKz1zLmJ5dGVMZW5ndGh9KSxvPVtuZXcgVWludDhBcnJheShlKV0saT0wLGw9MCx0fX19ZnVuY3Rpb24gemUobil7dmFyIEMseSx3O2NvbnN0IGU9UmUoKSx7d3JpdGVCeXRlOm8sd3JpdGVCeXRlczppLHdyaXRlVW5zaWduZWQ6bCxmbHVzaDpjfT1lLHtsZWZ0OmE9MCx0b3A6dD0wLHdpZHRoOnI9MCxoZWlnaHQ6cz0wLGRlbGF5OnU9MTAwLGNvbG9yVGFibGU6ZH09bjtsZXR7ZGlzcG9zYWw6aD0wfT1uO2NvbnN0IGI9KEM9bi5ncmFwaGljQ29udHJvbCk9PW51bGw/dm9pZCAwOkMudHJhbnNwYXJlbnQ7bGV0IHA9KHc9KHk9bi5ncmFwaGljQ29udHJvbCk9PW51bGw/dm9pZCAwOnkudHJhbnNwYXJlbnRJbmRleCkhPW51bGw/dzoyNTU7aWYoYTwwfHxhPjY1NTM1KXRocm93IG5ldyBFcnJvcigiTGVmdCBpbnZhbGlkLiIpO2lmKHQ8MHx8dD42NTUzNSl0aHJvdyBuZXcgRXJyb3IoIlRvcCBpbnZhbGlkLiIpO2lmKHI8PTB8fHI+NjU1MzUpdGhyb3cgbmV3IEVycm9yKCJXaWR0aCBpbnZhbGlkLiIpO2lmKHM8PTB8fHM+NjU1MzUpdGhyb3cgbmV3IEVycm9yKCJIZWlnaHQgaW52YWxpZC4iKTtsZXQgZj04LGc9ZD9kLmxlbmd0aDowO2lmKGcpe2lmKGc8Mnx8Zz4yNTZ8fGcmZy0xKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2xvciB0YWJsZSBsZW5ndGgsIG11c3QgYmUgcG93ZXIgb2YgMiBhbmQgMiAuLiAyNTYuIik7Zm9yKDtnPj49MTspKytmfXJldHVybiBvKHRlKSxvKG5lKSxvKHJlKSxiP2h8fChoPTIpOnA9MCxvKHBhcnNlSW50KGAwMDAke051bWJlcihoJjcpLnRvU3RyaW5nKDIpLnBhZFN0YXJ0KDMsIjAiKX0wJHtiPzE6MH1gLDIpKSxsKHUvMTApLG8ocCksbygwKSxvKGVlKSxsKGEpLGwodCksbChyKSxsKHMpLGQhPW51bGwmJmQubGVuZ3RoPyhvKHBhcnNlSW50KGAxMDAwMCR7KGYtMSkudG9TdHJpbmcoMikucGFkU3RhcnQoMywiMCIpfWAsMikpLGkoZC5mbGF0KCkpKTpvKDApLExlKGYsbi5pbWFnZURhdGEsZSksYygpfWZ1bmN0aW9uIEZlKG4pe2NvbnN0e2ZyYW1lczplLHBhbGV0dGU6byx0cmFuc3BhcmVudEluZGV4Oml9PW4sbD1ZKG8pO3JldHVybiBlLm1hcCgoe2ltYWdlRGF0YTpjfSk9PntsZXQgYT0hMTtjb25zdCB0PW5ldyBVaW50OENsYW1wZWRBcnJheShjLmxlbmd0aC80KTtmb3IobGV0IHI9Yy5sZW5ndGgscz0wO3M8cjtzKz00KWNbcyszXT09PTA/KHRbcy80XT1pLGE9ITApOnRbcy80XT1sKGNbc108PDE2fGNbcysxXTw8OHxjW3MrMl0pO3JldHVybntpbWFnZURhdGE6dCx0cmFuc3BhcmVudDphfX0pfWZ1bmN0aW9uIFdlKG4pe2NvbnN0e2ZyYW1lczplLHRyYW5zcGFyZW50SW5kZXg6b309bjtsZXQgaTtjb25zdCBsPWUubGVuZ3RoO3JldHVybiBlLm1hcCgoYyxhKT0+e2NvbnN0e3dpZHRoOnQsaGVpZ2h0OnIsdHJhbnNwYXJlbnQ6cyxpbWFnZURhdGE6dX09YztsZXQgZD0wLGg9MCxiPXQtMSxwPXItMSxmO2lmKHMpe2Zvcig7aDxwOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKylpZih1W3QqaCttXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7aCsrfWZvcig7cD5oOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKylpZih1W3QqcCttXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7cC0tfWZvcig7ZDxiOyl7bGV0IHc9ITA7Zm9yKGxldCBtPWg7bTxwO20rKylpZih1W3QqbStkXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7ZCsrfWZvcig7Yj5kOyl7bGV0IHc9ITA7Zm9yKGxldCBtPWg7bTxwO20rKylpZih1W3QqbStiXSE9PW8pe3c9ITE7YnJlYWt9aWYoIXcpYnJlYWs7Yi0tfX1lbHNle2lmKGkpe2Zvcig7aDxwOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKyl7Y29uc3QgUz10KmgrbTtpZih1W1NdIT09aVtTXSl7dz0hMTticmVha319aWYoIXcpYnJlYWs7aCsrfWZvcig7cD5oOyl7bGV0IHc9ITA7Zm9yKGxldCBtPTA7bTx0O20rKyl7Y29uc3QgUz10KnArbTtpZih1W1NdIT09aVtTXSl7dz0hMTticmVha319aWYoIXcpYnJlYWs7cC0tfWlmKGg9PT1wKWQ9YjtlbHNle2Zvcig7ZDxiOyl7bGV0IHc9ITA7Zm9yKGxldCBtPWg7bTw9cDttKyspe2NvbnN0IFM9bSp0K2Q7aWYodVtTXSE9PWlbU10pe3c9ITE7YnJlYWt9fWlmKCF3KWJyZWFrO2QrK31mb3IoO2I+ZDspe2xldCB3PSEwO2ZvcihsZXQgbT1oO208PXA7bSsrKXtjb25zdCBTPW0qdCtiO2lmKHVbU10hPT1pW1NdKXt3PSExO2JyZWFrfX1pZighdylicmVhaztiLS19fX1mPWksaT11fWNvbnN0IGc9YisxLWQsQz1wKzEtaCx5PU5lKHUse2xlZnQ6ZCx0b3A6aCx3aWR0aDpnLGhlaWdodDpDLHJhd1dpZHRoOnQscmF0ZToxLGNhbGxiYWNrOnc9PntpZighcyYmZiYmdVt3XT09PWZbd10pcmV0dXJuIG99fSk7cmV0dXJue2xlZnQ6ZCx0b3A6aCx3aWR0aDpnLGhlaWdodDpDLGRpc3Bvc2FsOnMmJmEhPT1sLTE/MjoxLGltYWdlRGF0YTp5fX0pfWNvbnN0IE49Q2Uoe3NraXBUcmFuc3BhcmVudDohMX0pO3NlbGYub25tZXNzYWdlPW49Pntjb25zdHtpZDplLHR5cGU6byxkYXRhOml9PW4uZGF0YTtpZihvPT09InBhbGV0dGU6YWRkU2FtcGxlIiYmTilyZXR1cm4gTi5hZGRTYW1wbGUoaSksc2VsZi5wb3N0TWVzc2FnZSh7aWQ6ZSx0eXBlOm8sZGF0YTohMH0pO2lmKG89PT0icGFsZXR0ZTpnZW5lcmF0ZSImJk4pe04uZ2VuZXJhdGUoaSk7Y29uc3QgbD1aKHt9LE4uY29udGV4dCk7cmV0dXJuIE4ucmVzZXQoKSxzZWxmLnBvc3RNZXNzYWdlKHtpZDplLHR5cGU6byxkYXRhOmx9KX1pZihvPT09ImZyYW1lczppbmRleCIpe2NvbnN0IGw9RmUoaSk7cmV0dXJuIHNlbGYucG9zdE1lc3NhZ2Uoe2lkOmUsdHlwZTpvLGRhdGE6bH0sbC5tYXAoYz0+Yy5pbWFnZURhdGEuYnVmZmVyKSl9aWYobz09PSJmcmFtZXM6Y3JvcCIpe2NvbnN0IGw9V2UoaSk7cmV0dXJuIHNlbGYucG9zdE1lc3NhZ2Uoe2lkOmUsdHlwZTpvLGRhdGE6bH0sbC5tYXAoYz0+Yy5pbWFnZURhdGEuYnVmZmVyKSl9aWYobz09PSJmcmFtZTplbmNvZGUiKXtjb25zdCBsPXplKGkpO3JldHVybiBzZWxmLnBvc3RNZXNzYWdlKHtpZDplLHR5cGU6byxkYXRhOmx9LFtsLmJ1ZmZlcl0pfWlmKG89PT0iZnJhbWVzOmRlY29kZSIpe2NvbnN0IGw9WGUoaSk7cmV0dXJuIHNlbGYucG9zdE1lc3NhZ2Uoe2lkOmUsdHlwZTpvLGRhdGE6bH0sbC5tYXAoYz0+Yy5pbWFnZURhdGEuYnVmZmVyKSl9fX0pKCk7Cg==", dn = (t) => Ze(void 0, null, function* () {
|
|
2390
2402
|
const {
|
|
2391
2403
|
perFrameTime: n = 1e3 / 24,
|
|
2392
2404
|
gif: d,
|
|
2393
2405
|
images: p,
|
|
2394
2406
|
autoSize: f = !0
|
|
2395
|
-
} = t, y =
|
|
2407
|
+
} = t, y = we({}, d), h = [];
|
|
2396
2408
|
if (f) {
|
|
2397
2409
|
const w = (d == null ? void 0 : d.width) || Math.min(...p.map((G) => G.width)), x = (d == null ? void 0 : d.height) || Math.min(...p.map((G) => G.height));
|
|
2398
2410
|
y.width = w, y.height = x;
|
|
@@ -2418,17 +2430,17 @@ const kr = "data:application/javascript;base64,dmFyIEdlPU9iamVjdC5kZWZpbmVQcm9wZ
|
|
|
2418
2430
|
normalize(t) {
|
|
2419
2431
|
return t ? "true" : void 0;
|
|
2420
2432
|
}
|
|
2421
|
-
}, Gr = ({ nodePath: t }) => /* @__PURE__ */
|
|
2433
|
+
}, Gr = ({ nodePath: t }) => /* @__PURE__ */ S.createElement(vt, null, /* @__PURE__ */ S.createElement(
|
|
2422
2434
|
Tt,
|
|
2423
2435
|
{
|
|
2424
|
-
desktop: /* @__PURE__ */
|
|
2436
|
+
desktop: /* @__PURE__ */ S.createElement(
|
|
2425
2437
|
Bt,
|
|
2426
2438
|
{
|
|
2427
2439
|
mode: fe.DESKTOP,
|
|
2428
2440
|
nodePath: t
|
|
2429
2441
|
}
|
|
2430
2442
|
),
|
|
2431
|
-
mobile: /* @__PURE__ */
|
|
2443
|
+
mobile: /* @__PURE__ */ S.createElement(
|
|
2432
2444
|
Bt,
|
|
2433
2445
|
{
|
|
2434
2446
|
mode: fe.MOBILE,
|
|
@@ -2441,31 +2453,31 @@ function Bt({
|
|
|
2441
2453
|
nodePath: t,
|
|
2442
2454
|
mode: n
|
|
2443
2455
|
}) {
|
|
2444
|
-
const { onUpload: d } = Ct(), { setFieldValue: p } = St(), { selectedNode: f } = Lt(), { setLock: y } = It(), [h, a] = xt(!1), b =
|
|
2456
|
+
const { onUpload: d } = Ct(), { setFieldValue: p } = St(), { selectedNode: f } = Lt(), { setLock: y } = It(), [h, a] = xt(!1), b = S.useRef();
|
|
2445
2457
|
b.current || (b.current = Ve(f)), qe(() => {
|
|
2446
2458
|
var x;
|
|
2447
2459
|
_e((x = b.current) == null ? void 0 : x.data.list, f == null ? void 0 : f.data.list) ? y(!1) : y(!0);
|
|
2448
2460
|
}, [f, y]);
|
|
2449
|
-
const w = () =>
|
|
2461
|
+
const w = () => Ze(this, null, function* () {
|
|
2450
2462
|
if (f)
|
|
2451
2463
|
try {
|
|
2452
2464
|
a(!0);
|
|
2453
2465
|
const x = yield Promise.all(
|
|
2454
|
-
f.data.list.filter((
|
|
2466
|
+
f.data.list.filter((L) => L.src).map((L) => $t(L.src))
|
|
2455
2467
|
), G = yield dn({
|
|
2456
2468
|
images: x,
|
|
2457
2469
|
perFrameTime: 1e3
|
|
2458
|
-
}),
|
|
2470
|
+
}), I = yield d == null ? void 0 : d(new File([G], "shopwindow.gif"));
|
|
2459
2471
|
p(
|
|
2460
2472
|
t,
|
|
2461
2473
|
n === fe.DESKTOP ? "attributes.src" : "mobileAttributes.src",
|
|
2462
|
-
|
|
2474
|
+
I
|
|
2463
2475
|
);
|
|
2464
2476
|
const K = Ve(f);
|
|
2465
|
-
|
|
2477
|
+
Ne(
|
|
2466
2478
|
K,
|
|
2467
2479
|
n === fe.DESKTOP ? "attributes.src" : "mobileAttributes.src",
|
|
2468
|
-
|
|
2480
|
+
I
|
|
2469
2481
|
), b.current = K;
|
|
2470
2482
|
} catch (x) {
|
|
2471
2483
|
console.error(x), Wt.error(String(x));
|
|
@@ -2473,25 +2485,25 @@ function Bt({
|
|
|
2473
2485
|
a(!1);
|
|
2474
2486
|
}
|
|
2475
2487
|
});
|
|
2476
|
-
return f ? /* @__PURE__ */
|
|
2488
|
+
return f ? /* @__PURE__ */ S.createElement(Zt, { defaultActiveKey: ["0", "1", "2", "3"] }, /* @__PURE__ */ S.createElement(
|
|
2477
2489
|
Te.Item,
|
|
2478
2490
|
{
|
|
2479
2491
|
name: "3",
|
|
2480
2492
|
header: A("Image"),
|
|
2481
|
-
extra: /* @__PURE__ */
|
|
2493
|
+
extra: /* @__PURE__ */ S.createElement(Dt, { loading: h, type: "primary", onClick: w }, A("Save as gif"))
|
|
2482
2494
|
},
|
|
2483
|
-
/* @__PURE__ */
|
|
2495
|
+
/* @__PURE__ */ S.createElement(
|
|
2484
2496
|
ne.EditPanelTabsField,
|
|
2485
2497
|
{
|
|
2486
2498
|
path: t,
|
|
2487
2499
|
tabPosition: "top",
|
|
2488
2500
|
name: "data.list",
|
|
2489
2501
|
label: "",
|
|
2490
|
-
renderItem: (x, G) => /* @__PURE__ */
|
|
2502
|
+
renderItem: (x, G) => /* @__PURE__ */ S.createElement(Er, { index: G, path: t }),
|
|
2491
2503
|
renderHeader: (x, G) => x.content || A("Image") + " " + (G + 1)
|
|
2492
2504
|
}
|
|
2493
2505
|
)
|
|
2494
|
-
), /* @__PURE__ */
|
|
2506
|
+
), /* @__PURE__ */ S.createElement(Te.Item, { name: "1", header: A("Image settings") }, /* @__PURE__ */ S.createElement(
|
|
2495
2507
|
ie,
|
|
2496
2508
|
{
|
|
2497
2509
|
component: ne.TextField,
|
|
@@ -2499,7 +2511,7 @@ function Bt({
|
|
|
2499
2511
|
name: "href",
|
|
2500
2512
|
label: A("Link address")
|
|
2501
2513
|
}
|
|
2502
|
-
), /* @__PURE__ */
|
|
2514
|
+
), /* @__PURE__ */ S.createElement(
|
|
2503
2515
|
ie,
|
|
2504
2516
|
{
|
|
2505
2517
|
component: ne.TextField,
|
|
@@ -2508,7 +2520,7 @@ function Bt({
|
|
|
2508
2520
|
label: A("Alt text"),
|
|
2509
2521
|
placeholder: A("Brief description of your image")
|
|
2510
2522
|
}
|
|
2511
|
-
), /* @__PURE__ */
|
|
2523
|
+
), /* @__PURE__ */ S.createElement(
|
|
2512
2524
|
ie,
|
|
2513
2525
|
{
|
|
2514
2526
|
component: ne.SwitchField,
|
|
@@ -2517,42 +2529,42 @@ function Bt({
|
|
|
2517
2529
|
label: A("Full width on mobile"),
|
|
2518
2530
|
formItem: Yr
|
|
2519
2531
|
}
|
|
2520
|
-
)), /* @__PURE__ */
|
|
2532
|
+
)), /* @__PURE__ */ S.createElement(Te.Item, { name: "0", header: A("Dimension") }, /* @__PURE__ */ S.createElement(
|
|
2521
2533
|
ie,
|
|
2522
2534
|
{
|
|
2523
2535
|
component: ne.ImageWidth,
|
|
2524
2536
|
path: t,
|
|
2525
2537
|
name: "width"
|
|
2526
2538
|
}
|
|
2527
|
-
), /* @__PURE__ */
|
|
2539
|
+
), /* @__PURE__ */ S.createElement(
|
|
2528
2540
|
ie,
|
|
2529
2541
|
{
|
|
2530
2542
|
component: ne.Height,
|
|
2531
2543
|
path: t,
|
|
2532
2544
|
name: "height"
|
|
2533
2545
|
}
|
|
2534
|
-
), /* @__PURE__ */
|
|
2546
|
+
), /* @__PURE__ */ S.createElement(
|
|
2535
2547
|
ie,
|
|
2536
2548
|
{
|
|
2537
2549
|
component: ne.Padding,
|
|
2538
2550
|
path: t,
|
|
2539
2551
|
name: ""
|
|
2540
2552
|
}
|
|
2541
|
-
)), /* @__PURE__ */
|
|
2553
|
+
)), /* @__PURE__ */ S.createElement(Te.Item, { name: "2", header: A("Border") }, /* @__PURE__ */ S.createElement(
|
|
2542
2554
|
ie,
|
|
2543
2555
|
{
|
|
2544
2556
|
component: ne.Border,
|
|
2545
2557
|
path: t,
|
|
2546
2558
|
name: ""
|
|
2547
2559
|
}
|
|
2548
|
-
)), /* @__PURE__ */
|
|
2560
|
+
)), /* @__PURE__ */ S.createElement(Te.Item, { name: "4", header: A("Block") }, /* @__PURE__ */ S.createElement(
|
|
2549
2561
|
ie,
|
|
2550
2562
|
{
|
|
2551
2563
|
component: ne.BackgroundColor,
|
|
2552
2564
|
path: t,
|
|
2553
2565
|
name: "container-background-color"
|
|
2554
2566
|
}
|
|
2555
|
-
), /* @__PURE__ */
|
|
2567
|
+
), /* @__PURE__ */ S.createElement(
|
|
2556
2568
|
ie,
|
|
2557
2569
|
{
|
|
2558
2570
|
component: ne.TextAlign,
|
|
@@ -2563,19 +2575,19 @@ function Bt({
|
|
|
2563
2575
|
))) : null;
|
|
2564
2576
|
}
|
|
2565
2577
|
function Er({ index: t, path: n }) {
|
|
2566
|
-
return /* @__PURE__ */
|
|
2578
|
+
return /* @__PURE__ */ S.createElement("div", { style: { paddingTop: 20 } }, /* @__PURE__ */ S.createElement(ne.ImageUrl, { path: n, name: `data.list.[${t}].src` }));
|
|
2567
2579
|
}
|
|
2568
|
-
const zr = ({ nodePath: t }) => /* @__PURE__ */
|
|
2580
|
+
const zr = ({ nodePath: t }) => /* @__PURE__ */ S.createElement(vt, null, /* @__PURE__ */ S.createElement(
|
|
2569
2581
|
Tt,
|
|
2570
2582
|
{
|
|
2571
|
-
desktop: /* @__PURE__ */
|
|
2583
|
+
desktop: /* @__PURE__ */ S.createElement(
|
|
2572
2584
|
Ht,
|
|
2573
2585
|
{
|
|
2574
2586
|
mode: fe.DESKTOP,
|
|
2575
2587
|
nodePath: t
|
|
2576
2588
|
}
|
|
2577
2589
|
),
|
|
2578
|
-
mobile: /* @__PURE__ */
|
|
2590
|
+
mobile: /* @__PURE__ */ S.createElement(
|
|
2579
2591
|
Ht,
|
|
2580
2592
|
{
|
|
2581
2593
|
mode: fe.MOBILE,
|
|
@@ -2588,30 +2600,30 @@ function Ht({
|
|
|
2588
2600
|
nodePath: t,
|
|
2589
2601
|
mode: n
|
|
2590
2602
|
}) {
|
|
2591
|
-
const d = en(), { onUpload: p } = Ct(), { setFieldValue: f } = St(), { selectedNode: y } = Lt(), { setLock: h } = It(), [a, b] = xt(!1), w =
|
|
2603
|
+
const d = en(), { onUpload: p } = Ct(), { setFieldValue: f } = St(), { selectedNode: y } = Lt(), { setLock: h } = It(), [a, b] = xt(!1), w = S.useRef();
|
|
2592
2604
|
w.current || (w.current = Ve(y)), qe(() => {
|
|
2593
2605
|
_e(w.current, y) ? h(!1) : h(!0);
|
|
2594
2606
|
}, [y, h]);
|
|
2595
|
-
const x = () =>
|
|
2607
|
+
const x = () => Ze(this, null, function* () {
|
|
2596
2608
|
if (y)
|
|
2597
2609
|
try {
|
|
2598
2610
|
b(!0);
|
|
2599
|
-
const G = Sn.toDOMNode(d, y),
|
|
2600
|
-
let
|
|
2611
|
+
const G = Sn.toDOMNode(d, y), I = [], K = y.data;
|
|
2612
|
+
let L = K.remainingTime;
|
|
2601
2613
|
switch (K.unit) {
|
|
2602
2614
|
case "minute":
|
|
2603
|
-
|
|
2615
|
+
L = 60 * L;
|
|
2604
2616
|
break;
|
|
2605
2617
|
case "hour":
|
|
2606
|
-
|
|
2618
|
+
L = 60 * 60 * L;
|
|
2607
2619
|
break;
|
|
2608
2620
|
case "day":
|
|
2609
|
-
|
|
2621
|
+
L = 60 * 60 * 24 * L;
|
|
2610
2622
|
}
|
|
2611
|
-
const
|
|
2612
|
-
for (let V = 0; V <
|
|
2613
|
-
const { day: J, hour:
|
|
2614
|
-
|
|
2623
|
+
const v = 60 * 2;
|
|
2624
|
+
for (let V = 0; V < v; V++) {
|
|
2625
|
+
const { day: J, hour: R, minute: E, second: se } = tn(
|
|
2626
|
+
L -= 1
|
|
2615
2627
|
), me = yield Pn(G, {
|
|
2616
2628
|
wrapper(Le) {
|
|
2617
2629
|
const ge = document.createElement("table");
|
|
@@ -2625,7 +2637,7 @@ function Ht({
|
|
|
2625
2637
|
},
|
|
2626
2638
|
{
|
|
2627
2639
|
selector: ".hrs",
|
|
2628
|
-
innerText:
|
|
2640
|
+
innerText: R
|
|
2629
2641
|
},
|
|
2630
2642
|
{
|
|
2631
2643
|
selector: ".mins",
|
|
@@ -2637,37 +2649,37 @@ function Ht({
|
|
|
2637
2649
|
}
|
|
2638
2650
|
]
|
|
2639
2651
|
}), ve = yield Xn(me);
|
|
2640
|
-
|
|
2652
|
+
I.push(ve);
|
|
2641
2653
|
}
|
|
2642
2654
|
const X = yield dn({
|
|
2643
|
-
images:
|
|
2655
|
+
images: I,
|
|
2644
2656
|
perFrameTime: 1e3
|
|
2645
|
-
}),
|
|
2657
|
+
}), _ = yield p == null ? void 0 : p(new File([X], "countdown.gif"));
|
|
2646
2658
|
f(
|
|
2647
2659
|
t,
|
|
2648
2660
|
n === fe.DESKTOP ? "attributes.src" : "mobileAttributes.src",
|
|
2649
|
-
|
|
2661
|
+
_
|
|
2650
2662
|
);
|
|
2651
|
-
const
|
|
2652
|
-
|
|
2653
|
-
|
|
2663
|
+
const re = Ve(y);
|
|
2664
|
+
Ne(
|
|
2665
|
+
re,
|
|
2654
2666
|
n === fe.DESKTOP ? "attributes.src" : "mobileAttributes.src",
|
|
2655
|
-
|
|
2656
|
-
), w.current =
|
|
2667
|
+
_
|
|
2668
|
+
), w.current = re;
|
|
2657
2669
|
} catch (G) {
|
|
2658
2670
|
console.error(G), Wt.error(String(G));
|
|
2659
2671
|
} finally {
|
|
2660
2672
|
b(!1);
|
|
2661
2673
|
}
|
|
2662
2674
|
});
|
|
2663
|
-
return y ? /* @__PURE__ */
|
|
2675
|
+
return y ? /* @__PURE__ */ S.createElement(Zt, { defaultActiveKey: ["0", "1", "2", "3"] }, /* @__PURE__ */ S.createElement(
|
|
2664
2676
|
Te.Item,
|
|
2665
2677
|
{
|
|
2666
2678
|
name: "0",
|
|
2667
2679
|
header: A("Image"),
|
|
2668
|
-
extra: /* @__PURE__ */
|
|
2680
|
+
extra: /* @__PURE__ */ S.createElement(Dt, { loading: a, type: "primary", onClick: x }, A("Save as gif"))
|
|
2669
2681
|
},
|
|
2670
|
-
/* @__PURE__ */
|
|
2682
|
+
/* @__PURE__ */ S.createElement(
|
|
2671
2683
|
ie,
|
|
2672
2684
|
{
|
|
2673
2685
|
component: ne.ImageUrl,
|
|
@@ -2677,7 +2689,7 @@ function Ht({
|
|
|
2677
2689
|
hideInput: !0
|
|
2678
2690
|
}
|
|
2679
2691
|
)
|
|
2680
|
-
), /* @__PURE__ */
|
|
2692
|
+
), /* @__PURE__ */ S.createElement(Te.Item, { name: "3", header: A("Settings") }, /* @__PURE__ */ S.createElement(lt.Row, null, /* @__PURE__ */ S.createElement(lt.Col, { span: 14, style: { textAlign: "right" } }, /* @__PURE__ */ S.createElement(
|
|
2681
2693
|
ne.NumberField,
|
|
2682
2694
|
{
|
|
2683
2695
|
name: "data.remainingTime",
|
|
@@ -2693,7 +2705,7 @@ function Ht({
|
|
|
2693
2705
|
}
|
|
2694
2706
|
}
|
|
2695
2707
|
}
|
|
2696
|
-
)), /* @__PURE__ */
|
|
2708
|
+
)), /* @__PURE__ */ S.createElement(lt.Col, { span: 10 }, /* @__PURE__ */ S.createElement(
|
|
2697
2709
|
ne.SelectField,
|
|
2698
2710
|
{
|
|
2699
2711
|
name: "data.unit",
|
|
@@ -2718,7 +2730,7 @@ function Ht({
|
|
|
2718
2730
|
}
|
|
2719
2731
|
]
|
|
2720
2732
|
}
|
|
2721
|
-
)))), /* @__PURE__ */
|
|
2733
|
+
)))), /* @__PURE__ */ S.createElement(Te.Item, { name: "1", header: A("Colors") }, /* @__PURE__ */ S.createElement(
|
|
2722
2734
|
ie,
|
|
2723
2735
|
{
|
|
2724
2736
|
component: ne.ColorPickerField,
|
|
@@ -2726,7 +2738,7 @@ function Ht({
|
|
|
2726
2738
|
name: "color",
|
|
2727
2739
|
label: A("Text color")
|
|
2728
2740
|
}
|
|
2729
|
-
), /* @__PURE__ */
|
|
2741
|
+
), /* @__PURE__ */ S.createElement(
|
|
2730
2742
|
ne.SyncChildrenField,
|
|
2731
2743
|
{
|
|
2732
2744
|
path: t,
|
|
@@ -2734,7 +2746,7 @@ function Ht({
|
|
|
2734
2746
|
name: "color",
|
|
2735
2747
|
childrenFieldName: "color"
|
|
2736
2748
|
}
|
|
2737
|
-
), /* @__PURE__ */
|
|
2749
|
+
), /* @__PURE__ */ S.createElement(
|
|
2738
2750
|
ie,
|
|
2739
2751
|
{
|
|
2740
2752
|
component: ne.ColorPickerField,
|
|
@@ -2742,7 +2754,7 @@ function Ht({
|
|
|
2742
2754
|
name: "shadow-color",
|
|
2743
2755
|
label: A("Shadow color")
|
|
2744
2756
|
}
|
|
2745
|
-
), /* @__PURE__ */
|
|
2757
|
+
), /* @__PURE__ */ S.createElement(
|
|
2746
2758
|
ie,
|
|
2747
2759
|
{
|
|
2748
2760
|
component: ne.ColorPickerField,
|
|
@@ -2750,7 +2762,7 @@ function Ht({
|
|
|
2750
2762
|
name: "grid-color",
|
|
2751
2763
|
label: A("Grid color")
|
|
2752
2764
|
}
|
|
2753
|
-
), /* @__PURE__ */
|
|
2765
|
+
), /* @__PURE__ */ S.createElement(
|
|
2754
2766
|
ie,
|
|
2755
2767
|
{
|
|
2756
2768
|
component: ne.ColorPickerField,
|
|
@@ -2758,14 +2770,14 @@ function Ht({
|
|
|
2758
2770
|
name: "background-color",
|
|
2759
2771
|
label: A("Background color")
|
|
2760
2772
|
}
|
|
2761
|
-
)), /* @__PURE__ */
|
|
2773
|
+
)), /* @__PURE__ */ S.createElement(
|
|
2762
2774
|
Te.Item,
|
|
2763
2775
|
{
|
|
2764
2776
|
contentStyle: { padding: "28px 13px 8px 13px" },
|
|
2765
2777
|
name: "2",
|
|
2766
2778
|
header: A("Dimension")
|
|
2767
2779
|
},
|
|
2768
|
-
/* @__PURE__ */
|
|
2780
|
+
/* @__PURE__ */ S.createElement(
|
|
2769
2781
|
ie,
|
|
2770
2782
|
{
|
|
2771
2783
|
component: ne.Padding,
|
|
@@ -2796,10 +2808,10 @@ var yt = {}, Xr = {
|
|
|
2796
2808
|
var x = function(Y, W) {
|
|
2797
2809
|
var C = Y, D = X[W], M = null, z = 0, Q = null, j = [], U = {}, pe = function(s, c) {
|
|
2798
2810
|
M = function(i) {
|
|
2799
|
-
for (var g = new Array(i),
|
|
2800
|
-
g[
|
|
2811
|
+
for (var g = new Array(i), T = 0; T < i; T += 1) {
|
|
2812
|
+
g[T] = new Array(i);
|
|
2801
2813
|
for (var O = 0; O < i; O += 1)
|
|
2802
|
-
g[
|
|
2814
|
+
g[T][O] = null;
|
|
2803
2815
|
}
|
|
2804
2816
|
return g;
|
|
2805
2817
|
}(z = 4 * C + 17), Z(0, 0), Z(z - 7, 0), Z(0, z - 7), o(), e(), l(s, c), C >= 7 && r(s), Q == null && (Q = u(C, D, j)), m(Q, c);
|
|
@@ -2814,36 +2826,36 @@ var yt = {}, Xr = {
|
|
|
2814
2826
|
for (var c = 8; c < z - 8; c += 1)
|
|
2815
2827
|
M[6][c] == null && (M[6][c] = c % 2 == 0);
|
|
2816
2828
|
}, o = function() {
|
|
2817
|
-
for (var s =
|
|
2829
|
+
for (var s = _.getPatternPosition(C), c = 0; c < s.length; c += 1)
|
|
2818
2830
|
for (var i = 0; i < s.length; i += 1) {
|
|
2819
|
-
var g = s[c],
|
|
2820
|
-
if (M[g][
|
|
2831
|
+
var g = s[c], T = s[i];
|
|
2832
|
+
if (M[g][T] == null)
|
|
2821
2833
|
for (var O = -2; O <= 2; O += 1)
|
|
2822
2834
|
for (var P = -2; P <= 2; P += 1)
|
|
2823
|
-
M[g + O][
|
|
2835
|
+
M[g + O][T + P] = O == -2 || O == 2 || P == -2 || P == 2 || O == 0 && P == 0;
|
|
2824
2836
|
}
|
|
2825
2837
|
}, r = function(s) {
|
|
2826
|
-
for (var c =
|
|
2838
|
+
for (var c = _.getBCHTypeNumber(C), i = 0; i < 18; i += 1) {
|
|
2827
2839
|
var g = !s && (c >> i & 1) == 1;
|
|
2828
2840
|
M[Math.floor(i / 3)][i % 3 + z - 8 - 3] = g;
|
|
2829
2841
|
}
|
|
2830
2842
|
for (i = 0; i < 18; i += 1)
|
|
2831
2843
|
g = !s && (c >> i & 1) == 1, M[i % 3 + z - 8 - 3][Math.floor(i / 3)] = g;
|
|
2832
2844
|
}, l = function(s, c) {
|
|
2833
|
-
for (var i = D << 3 | c, g =
|
|
2834
|
-
var O = !s && (g >>
|
|
2835
|
-
|
|
2845
|
+
for (var i = D << 3 | c, g = _.getBCHTypeInfo(i), T = 0; T < 15; T += 1) {
|
|
2846
|
+
var O = !s && (g >> T & 1) == 1;
|
|
2847
|
+
T < 6 ? M[T][8] = O : T < 8 ? M[T + 1][8] = O : M[z - 15 + T][8] = O;
|
|
2836
2848
|
}
|
|
2837
|
-
for (
|
|
2838
|
-
O = !s && (g >>
|
|
2849
|
+
for (T = 0; T < 15; T += 1)
|
|
2850
|
+
O = !s && (g >> T & 1) == 1, T < 8 ? M[8][z - T - 1] = O : T < 9 ? M[8][15 - T - 1 + 1] = O : M[8][15 - T - 1] = O;
|
|
2839
2851
|
M[z - 8][8] = !s;
|
|
2840
2852
|
}, m = function(s, c) {
|
|
2841
|
-
for (var i = -1, g = z - 1,
|
|
2853
|
+
for (var i = -1, g = z - 1, T = 7, O = 0, P = _.getMaskFunction(c), k = z - 1; k > 0; k -= 2)
|
|
2842
2854
|
for (k == 6 && (k -= 1); ; ) {
|
|
2843
2855
|
for (var F = 0; F < 2; F += 1)
|
|
2844
2856
|
if (M[g][k - F] == null) {
|
|
2845
|
-
var
|
|
2846
|
-
O < s.length && (
|
|
2857
|
+
var H = !1;
|
|
2858
|
+
O < s.length && (H = (s[O] >>> T & 1) == 1), P(g, k - F) && (H = !H), M[g][k - F] = H, (T -= 1) == -1 && (O += 1, T = 7);
|
|
2847
2859
|
}
|
|
2848
2860
|
if ((g += i) < 0 || z <= g) {
|
|
2849
2861
|
g -= i, i = -i;
|
|
@@ -2851,44 +2863,44 @@ var yt = {}, Xr = {
|
|
|
2851
2863
|
}
|
|
2852
2864
|
}
|
|
2853
2865
|
}, u = function(s, c, i) {
|
|
2854
|
-
for (var g = J.getRSBlocks(s, c),
|
|
2866
|
+
for (var g = J.getRSBlocks(s, c), T = R(), O = 0; O < i.length; O += 1) {
|
|
2855
2867
|
var P = i[O];
|
|
2856
|
-
|
|
2868
|
+
T.put(P.getMode(), 4), T.put(P.getLength(), _.getLengthInBits(P.getMode(), s)), P.write(T);
|
|
2857
2869
|
}
|
|
2858
2870
|
var k = 0;
|
|
2859
2871
|
for (O = 0; O < g.length; O += 1)
|
|
2860
2872
|
k += g[O].dataCount;
|
|
2861
|
-
if (
|
|
2862
|
-
throw "code length overflow. (" +
|
|
2863
|
-
for (
|
|
2864
|
-
|
|
2865
|
-
for (; !(
|
|
2866
|
-
|
|
2867
|
-
return function(F,
|
|
2868
|
-
for (var $ = 0, le = 0,
|
|
2869
|
-
var xe =
|
|
2870
|
-
le = Math.max(le, xe),
|
|
2871
|
-
for (var
|
|
2872
|
-
ee[te][
|
|
2873
|
+
if (T.getLengthInBits() > 8 * k)
|
|
2874
|
+
throw "code length overflow. (" + T.getLengthInBits() + ">" + 8 * k + ")";
|
|
2875
|
+
for (T.getLengthInBits() + 4 <= 8 * k && T.put(0, 4); T.getLengthInBits() % 8 != 0; )
|
|
2876
|
+
T.putBit(!1);
|
|
2877
|
+
for (; !(T.getLengthInBits() >= 8 * k || (T.put(236, 8), T.getLengthInBits() >= 8 * k)); )
|
|
2878
|
+
T.put(17, 8);
|
|
2879
|
+
return function(F, H) {
|
|
2880
|
+
for (var $ = 0, le = 0, B = 0, ee = new Array(H.length), q = new Array(H.length), te = 0; te < H.length; te += 1) {
|
|
2881
|
+
var xe = H[te].dataCount, de = H[te].totalCount - xe;
|
|
2882
|
+
le = Math.max(le, xe), B = Math.max(B, de), ee[te] = new Array(xe);
|
|
2883
|
+
for (var oe = 0; oe < ee[te].length; oe += 1)
|
|
2884
|
+
ee[te][oe] = 255 & F.getBuffer()[oe + $];
|
|
2873
2885
|
$ += xe;
|
|
2874
|
-
var ue =
|
|
2875
|
-
for (q[te] = new Array(ue.getLength() - 1),
|
|
2876
|
-
var he =
|
|
2877
|
-
q[te][
|
|
2886
|
+
var ue = _.getErrorCorrectPolynomial(de), ce = V(ee[te], ue.getLength() - 1).mod(ue);
|
|
2887
|
+
for (q[te] = new Array(ue.getLength() - 1), oe = 0; oe < q[te].length; oe += 1) {
|
|
2888
|
+
var he = oe + ce.getLength() - q[te].length;
|
|
2889
|
+
q[te][oe] = he >= 0 ? ce.getAt(he) : 0;
|
|
2878
2890
|
}
|
|
2879
2891
|
}
|
|
2880
2892
|
var be = 0;
|
|
2881
|
-
for (
|
|
2882
|
-
be +=
|
|
2883
|
-
var ye = new Array(be),
|
|
2884
|
-
for (
|
|
2885
|
-
for (te = 0; te <
|
|
2886
|
-
|
|
2887
|
-
for (
|
|
2888
|
-
for (te = 0; te <
|
|
2889
|
-
|
|
2893
|
+
for (oe = 0; oe < H.length; oe += 1)
|
|
2894
|
+
be += H[oe].totalCount;
|
|
2895
|
+
var ye = new Array(be), Me = 0;
|
|
2896
|
+
for (oe = 0; oe < le; oe += 1)
|
|
2897
|
+
for (te = 0; te < H.length; te += 1)
|
|
2898
|
+
oe < ee[te].length && (ye[Me] = ee[te][oe], Me += 1);
|
|
2899
|
+
for (oe = 0; oe < B; oe += 1)
|
|
2900
|
+
for (te = 0; te < H.length; te += 1)
|
|
2901
|
+
oe < q[te].length && (ye[Me] = q[te][oe], Me += 1);
|
|
2890
2902
|
return ye;
|
|
2891
|
-
}(
|
|
2903
|
+
}(T, g);
|
|
2892
2904
|
};
|
|
2893
2905
|
U.addData = function(s, c) {
|
|
2894
2906
|
var i = null;
|
|
@@ -2918,9 +2930,9 @@ var yt = {}, Xr = {
|
|
|
2918
2930
|
}, U.make = function() {
|
|
2919
2931
|
if (C < 1) {
|
|
2920
2932
|
for (var s = 1; s < 40; s++) {
|
|
2921
|
-
for (var c = J.getRSBlocks(s, D), i =
|
|
2922
|
-
var
|
|
2923
|
-
i.put(
|
|
2933
|
+
for (var c = J.getRSBlocks(s, D), i = R(), g = 0; g < j.length; g++) {
|
|
2934
|
+
var T = j[g];
|
|
2935
|
+
i.put(T.getMode(), 4), i.put(T.getLength(), _.getLengthInBits(T.getMode(), s)), T.write(i);
|
|
2924
2936
|
}
|
|
2925
2937
|
var O = 0;
|
|
2926
2938
|
for (g = 0; g < c.length; g++)
|
|
@@ -2933,8 +2945,8 @@ var yt = {}, Xr = {
|
|
|
2933
2945
|
pe(!1, function() {
|
|
2934
2946
|
for (var P = 0, k = 0, F = 0; F < 8; F += 1) {
|
|
2935
2947
|
pe(!0, F);
|
|
2936
|
-
var
|
|
2937
|
-
(F == 0 || P >
|
|
2948
|
+
var H = _.getLostPoint(U);
|
|
2949
|
+
(F == 0 || P > H) && (P = H, k = F);
|
|
2938
2950
|
}
|
|
2939
2951
|
return k;
|
|
2940
2952
|
}());
|
|
@@ -2944,24 +2956,24 @@ var yt = {}, Xr = {
|
|
|
2944
2956
|
i += '<table style="', i += " border-width: 0px; border-style: none;", i += " border-collapse: collapse;", i += " padding: 0px; margin: " + (c = c === void 0 ? 4 * s : c) + "px;", i += '">', i += "<tbody>";
|
|
2945
2957
|
for (var g = 0; g < U.getModuleCount(); g += 1) {
|
|
2946
2958
|
i += "<tr>";
|
|
2947
|
-
for (var
|
|
2948
|
-
i += '<td style="', i += " border-width: 0px; border-style: none;", i += " border-collapse: collapse;", i += " padding: 0px; margin: 0px;", i += " width: " + s + "px;", i += " height: " + s + "px;", i += " background-color: ", i += U.isDark(g,
|
|
2959
|
+
for (var T = 0; T < U.getModuleCount(); T += 1)
|
|
2960
|
+
i += '<td style="', i += " border-width: 0px; border-style: none;", i += " border-collapse: collapse;", i += " padding: 0px; margin: 0px;", i += " width: " + s + "px;", i += " height: " + s + "px;", i += " background-color: ", i += U.isDark(g, T) ? "#000000" : "#ffffff", i += ";", i += '"/>';
|
|
2949
2961
|
i += "</tr>";
|
|
2950
2962
|
}
|
|
2951
2963
|
return (i += "</tbody>") + "</table>";
|
|
2952
2964
|
}, U.createSvgTag = function(s, c, i, g) {
|
|
2953
|
-
var
|
|
2954
|
-
typeof arguments[0] == "object" && (s = (
|
|
2955
|
-
var O, P, k, F,
|
|
2956
|
-
for (F = "l" + s + ",0 0," + s + " -" + s + ",0 0,-" + s + "z ", $ += '<svg version="1.1" xmlns="http://www.w3.org/2000/svg"', $ +=
|
|
2965
|
+
var T = {};
|
|
2966
|
+
typeof arguments[0] == "object" && (s = (T = arguments[0]).cellSize, c = T.margin, i = T.alt, g = T.title), s = s || 2, c = c === void 0 ? 4 * s : c, (i = typeof i == "string" ? { text: i } : i || {}).text = i.text || null, i.id = i.text ? i.id || "qrcode-description" : null, (g = typeof g == "string" ? { text: g } : g || {}).text = g.text || null, g.id = g.text ? g.id || "qrcode-title" : null;
|
|
2967
|
+
var O, P, k, F, H = U.getModuleCount() * s + 2 * c, $ = "";
|
|
2968
|
+
for (F = "l" + s + ",0 0," + s + " -" + s + ",0 0,-" + s + "z ", $ += '<svg version="1.1" xmlns="http://www.w3.org/2000/svg"', $ += T.scalable ? "" : ' width="' + H + 'px" height="' + H + 'px"', $ += ' viewBox="0 0 ' + H + " " + H + '" ', $ += ' preserveAspectRatio="xMinYMin meet"', $ += g.text || i.text ? ' role="img" aria-labelledby="' + N([g.id, i.id].join(" ").trim()) + '"' : "", $ += ">", $ += g.text ? '<title id="' + N(g.id) + '">' + N(g.text) + "</title>" : "", $ += i.text ? '<description id="' + N(i.id) + '">' + N(i.text) + "</description>" : "", $ += '<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>', $ += '<path d="', P = 0; P < U.getModuleCount(); P += 1)
|
|
2957
2969
|
for (k = P * s + c, O = 0; O < U.getModuleCount(); O += 1)
|
|
2958
2970
|
U.isDark(P, O) && ($ += "M" + (O * s + c) + "," + k + F);
|
|
2959
2971
|
return ($ += '" stroke="transparent" fill="black"/>') + "</svg>";
|
|
2960
2972
|
}, U.createDataURL = function(s, c) {
|
|
2961
2973
|
s = s || 2, c = c === void 0 ? 4 * s : c;
|
|
2962
|
-
var i = U.getModuleCount() * s + 2 * c, g = c,
|
|
2974
|
+
var i = U.getModuleCount() * s + 2 * c, g = c, T = i - c;
|
|
2963
2975
|
return Ye(i, i, function(O, P) {
|
|
2964
|
-
if (g <= O && O <
|
|
2976
|
+
if (g <= O && O < T && g <= P && P < T) {
|
|
2965
2977
|
var k = Math.floor((O - g) / s), F = Math.floor((P - g) / s);
|
|
2966
2978
|
return U.isDark(F, k) ? 0 : 1;
|
|
2967
2979
|
}
|
|
@@ -2969,8 +2981,8 @@ var yt = {}, Xr = {
|
|
|
2969
2981
|
});
|
|
2970
2982
|
}, U.createImgTag = function(s, c, i) {
|
|
2971
2983
|
s = s || 2, c = c === void 0 ? 4 * s : c;
|
|
2972
|
-
var g = U.getModuleCount() * s + 2 * c,
|
|
2973
|
-
return
|
|
2984
|
+
var g = U.getModuleCount() * s + 2 * c, T = "";
|
|
2985
|
+
return T += "<img", T += ' src="', T += U.createDataURL(s, c), T += '"', T += ' width="', T += g, T += '"', T += ' height="', T += g, T += '"', i && (T += ' alt="', T += N(i), T += '"'), T + "/>";
|
|
2974
2986
|
};
|
|
2975
2987
|
var N = function(s) {
|
|
2976
2988
|
for (var c = "", i = 0; i < s.length; i += 1) {
|
|
@@ -2998,30 +3010,30 @@ var yt = {}, Xr = {
|
|
|
2998
3010
|
if ((s = s || 1) < 2)
|
|
2999
3011
|
return function(ee) {
|
|
3000
3012
|
ee = ee === void 0 ? 2 : ee;
|
|
3001
|
-
var q, te, xe, de,
|
|
3013
|
+
var q, te, xe, de, oe, ue = 1 * U.getModuleCount() + 2 * ee, ce = ee, he = ue - ee, be = { "██": "█", "█ ": "▀", " █": "▄", " ": " " }, ye = { "██": "▀", "█ ": "▀", " █": " ", " ": " " }, Me = "";
|
|
3002
3014
|
for (q = 0; q < ue; q += 2) {
|
|
3003
3015
|
for (xe = Math.floor((q - ce) / 1), de = Math.floor((q + 1 - ce) / 1), te = 0; te < ue; te += 1)
|
|
3004
|
-
|
|
3005
|
-
|
|
3016
|
+
oe = "█", ce <= te && te < he && ce <= q && q < he && U.isDark(xe, Math.floor((te - ce) / 1)) && (oe = " "), ce <= te && te < he && ce <= q + 1 && q + 1 < he && U.isDark(de, Math.floor((te - ce) / 1)) ? oe += " " : oe += "█", Me += ee < 1 && q + 1 >= he ? ye[oe] : be[oe];
|
|
3017
|
+
Me += `
|
|
3006
3018
|
`;
|
|
3007
3019
|
}
|
|
3008
|
-
return ue % 2 && ee > 0 ?
|
|
3020
|
+
return ue % 2 && ee > 0 ? Me.substring(0, Me.length - ue - 1) + Array(ue + 1).join("▀") : Me.substring(0, Me.length - 1);
|
|
3009
3021
|
}(c);
|
|
3010
3022
|
s -= 1, c = c === void 0 ? 2 * s : c;
|
|
3011
|
-
var i, g,
|
|
3023
|
+
var i, g, T, O, P = U.getModuleCount() * s + 2 * c, k = c, F = P - c, H = Array(s + 1).join("██"), $ = Array(s + 1).join(" "), le = "", B = "";
|
|
3012
3024
|
for (i = 0; i < P; i += 1) {
|
|
3013
|
-
for (
|
|
3014
|
-
O = 1, k <= g && g < F && k <= i && i < F && U.isDark(
|
|
3015
|
-
for (
|
|
3016
|
-
le +=
|
|
3025
|
+
for (T = Math.floor((i - k) / s), B = "", g = 0; g < P; g += 1)
|
|
3026
|
+
O = 1, k <= g && g < F && k <= i && i < F && U.isDark(T, Math.floor((g - k) / s)) && (O = 0), B += O ? H : $;
|
|
3027
|
+
for (T = 0; T < s; T += 1)
|
|
3028
|
+
le += B + `
|
|
3017
3029
|
`;
|
|
3018
3030
|
}
|
|
3019
3031
|
return le.substring(0, le.length - 1);
|
|
3020
3032
|
}, U.renderTo2dContext = function(s, c) {
|
|
3021
3033
|
c = c || 2;
|
|
3022
3034
|
for (var i = U.getModuleCount(), g = 0; g < i; g++)
|
|
3023
|
-
for (var
|
|
3024
|
-
s.fillStyle = U.isDark(g,
|
|
3035
|
+
for (var T = 0; T < i; T++)
|
|
3036
|
+
s.fillStyle = U.isDark(g, T) ? "black" : "white", s.fillRect(g * c, T * c, c, c);
|
|
3025
3037
|
}, U;
|
|
3026
3038
|
};
|
|
3027
3039
|
x.stringToBytes = (x.stringToBytesFuncs = { default: function(Y) {
|
|
@@ -3061,21 +3073,21 @@ var yt = {}, Xr = {
|
|
|
3061
3073
|
return z;
|
|
3062
3074
|
};
|
|
3063
3075
|
};
|
|
3064
|
-
var G,
|
|
3076
|
+
var G, I, K, L, v, X = { L: 1, M: 0, Q: 3, H: 2 }, _ = (G = [[], [6, 18], [6, 22], [6, 26], [6, 30], [6, 34], [6, 22, 38], [6, 24, 42], [6, 26, 46], [6, 28, 50], [6, 30, 54], [6, 32, 58], [6, 34, 62], [6, 26, 46, 66], [6, 26, 48, 70], [6, 26, 50, 74], [6, 30, 54, 78], [6, 30, 56, 82], [6, 30, 58, 86], [6, 34, 62, 90], [6, 28, 50, 72, 94], [6, 26, 50, 74, 98], [6, 30, 54, 78, 102], [6, 28, 54, 80, 106], [6, 32, 58, 84, 110], [6, 30, 58, 86, 114], [6, 34, 62, 90, 118], [6, 26, 50, 74, 98, 122], [6, 30, 54, 78, 102, 126], [6, 26, 52, 78, 104, 130], [6, 30, 56, 82, 108, 134], [6, 34, 60, 86, 112, 138], [6, 30, 58, 86, 114, 142], [6, 34, 62, 90, 118, 146], [6, 30, 54, 78, 102, 126, 150], [6, 24, 50, 76, 102, 128, 154], [6, 28, 54, 80, 106, 132, 158], [6, 32, 58, 84, 110, 136, 162], [6, 26, 54, 82, 110, 138, 166], [6, 30, 58, 86, 114, 142, 170]], I = 1335, K = 7973, v = function(Y) {
|
|
3065
3077
|
for (var W = 0; Y != 0; )
|
|
3066
3078
|
W += 1, Y >>>= 1;
|
|
3067
3079
|
return W;
|
|
3068
|
-
}, (
|
|
3069
|
-
for (var W = Y << 10;
|
|
3070
|
-
W ^=
|
|
3080
|
+
}, (L = {}).getBCHTypeInfo = function(Y) {
|
|
3081
|
+
for (var W = Y << 10; v(W) - v(I) >= 0; )
|
|
3082
|
+
W ^= I << v(W) - v(I);
|
|
3071
3083
|
return 21522 ^ (Y << 10 | W);
|
|
3072
|
-
},
|
|
3073
|
-
for (var W = Y << 12;
|
|
3074
|
-
W ^= K <<
|
|
3084
|
+
}, L.getBCHTypeNumber = function(Y) {
|
|
3085
|
+
for (var W = Y << 12; v(W) - v(K) >= 0; )
|
|
3086
|
+
W ^= K << v(W) - v(K);
|
|
3075
3087
|
return Y << 12 | W;
|
|
3076
|
-
},
|
|
3088
|
+
}, L.getPatternPosition = function(Y) {
|
|
3077
3089
|
return G[Y - 1];
|
|
3078
|
-
},
|
|
3090
|
+
}, L.getMaskFunction = function(Y) {
|
|
3079
3091
|
switch (Y) {
|
|
3080
3092
|
case 0:
|
|
3081
3093
|
return function(W, C) {
|
|
@@ -3112,11 +3124,11 @@ var yt = {}, Xr = {
|
|
|
3112
3124
|
default:
|
|
3113
3125
|
throw "bad maskPattern:" + Y;
|
|
3114
3126
|
}
|
|
3115
|
-
},
|
|
3127
|
+
}, L.getErrorCorrectPolynomial = function(Y) {
|
|
3116
3128
|
for (var W = V([1], 0), C = 0; C < Y; C += 1)
|
|
3117
|
-
W = W.multiply(V([1,
|
|
3129
|
+
W = W.multiply(V([1, re.gexp(C)], 0));
|
|
3118
3130
|
return W;
|
|
3119
|
-
},
|
|
3131
|
+
}, L.getLengthInBits = function(Y, W) {
|
|
3120
3132
|
if (1 <= W && W < 10)
|
|
3121
3133
|
switch (Y) {
|
|
3122
3134
|
case 1:
|
|
@@ -3158,7 +3170,7 @@ var yt = {}, Xr = {
|
|
|
3158
3170
|
throw "mode:" + Y;
|
|
3159
3171
|
}
|
|
3160
3172
|
}
|
|
3161
|
-
},
|
|
3173
|
+
}, L.getLostPoint = function(Y) {
|
|
3162
3174
|
for (var W = Y.getModuleCount(), C = 0, D = 0; D < W; D += 1)
|
|
3163
3175
|
for (var M = 0; M < W; M += 1) {
|
|
3164
3176
|
for (var z = 0, Q = Y.isDark(D, M), j = -1; j <= 1; j += 1)
|
|
@@ -3183,7 +3195,7 @@ var yt = {}, Xr = {
|
|
|
3183
3195
|
for (D = 0; D < W; D += 1)
|
|
3184
3196
|
Y.isDark(D, M) && (Z += 1);
|
|
3185
3197
|
return C + Math.abs(100 * Z / W / W - 50) / 5 * 10;
|
|
3186
|
-
},
|
|
3198
|
+
}, L), re = function() {
|
|
3187
3199
|
for (var Y = new Array(256), W = new Array(256), C = 0; C < 8; C += 1)
|
|
3188
3200
|
Y[C] = 1 << C;
|
|
3189
3201
|
for (C = 8; C < 256; C += 1)
|
|
@@ -3218,15 +3230,15 @@ var yt = {}, Xr = {
|
|
|
3218
3230
|
}, multiply: function(M) {
|
|
3219
3231
|
for (var z = new Array(D.getLength() + M.getLength() - 1), Q = 0; Q < D.getLength(); Q += 1)
|
|
3220
3232
|
for (var j = 0; j < M.getLength(); j += 1)
|
|
3221
|
-
z[Q + j] ^=
|
|
3233
|
+
z[Q + j] ^= re.gexp(re.glog(D.getAt(Q)) + re.glog(M.getAt(j)));
|
|
3222
3234
|
return V(z, 0);
|
|
3223
3235
|
}, mod: function(M) {
|
|
3224
3236
|
if (D.getLength() - M.getLength() < 0)
|
|
3225
3237
|
return D;
|
|
3226
|
-
for (var z =
|
|
3238
|
+
for (var z = re.glog(D.getAt(0)) - re.glog(M.getAt(0)), Q = new Array(D.getLength()), j = 0; j < D.getLength(); j += 1)
|
|
3227
3239
|
Q[j] = D.getAt(j);
|
|
3228
3240
|
for (j = 0; j < M.getLength(); j += 1)
|
|
3229
|
-
Q[j] ^=
|
|
3241
|
+
Q[j] ^= re.gexp(re.glog(M.getAt(j)) + z);
|
|
3230
3242
|
return V(Q, 0).mod(M);
|
|
3231
3243
|
} };
|
|
3232
3244
|
return D;
|
|
@@ -3258,7 +3270,7 @@ var yt = {}, Xr = {
|
|
|
3258
3270
|
return j;
|
|
3259
3271
|
} };
|
|
3260
3272
|
return C;
|
|
3261
|
-
}(),
|
|
3273
|
+
}(), R = function() {
|
|
3262
3274
|
var Y = [], W = 0, C = { getBuffer: function() {
|
|
3263
3275
|
return Y;
|
|
3264
3276
|
}, getAt: function(D) {
|
|
@@ -3433,10 +3445,10 @@ var yt = {}, Xr = {
|
|
|
3433
3445
|
s.writeByte(255), s.writeBytes(c, i, 255), i += 255;
|
|
3434
3446
|
s.writeByte(c.length - i), s.writeBytes(c, i, c.length - i), s.writeByte(0), s.writeString(";");
|
|
3435
3447
|
} }, u = function(s) {
|
|
3436
|
-
for (var c = 1 << s, i = 1 + (1 << s), g = s + 1,
|
|
3437
|
-
|
|
3438
|
-
|
|
3439
|
-
var P, k, F,
|
|
3448
|
+
for (var c = 1 << s, i = 1 + (1 << s), g = s + 1, T = N(), O = 0; O < c; O += 1)
|
|
3449
|
+
T.add(String.fromCharCode(O));
|
|
3450
|
+
T.add(String.fromCharCode(c)), T.add(String.fromCharCode(i));
|
|
3451
|
+
var P, k, F, H = Le(), $ = (P = H, k = 0, F = 0, { write: function(q, te) {
|
|
3440
3452
|
if (q >>> te)
|
|
3441
3453
|
throw "length over";
|
|
3442
3454
|
for (; k + te >= 8; )
|
|
@@ -3446,12 +3458,12 @@ var yt = {}, Xr = {
|
|
|
3446
3458
|
k > 0 && P.writeByte(F);
|
|
3447
3459
|
} });
|
|
3448
3460
|
$.write(c, g);
|
|
3449
|
-
var le = 0,
|
|
3461
|
+
var le = 0, B = String.fromCharCode(l[le]);
|
|
3450
3462
|
for (le += 1; le < l.length; ) {
|
|
3451
3463
|
var ee = String.fromCharCode(l[le]);
|
|
3452
|
-
le += 1,
|
|
3464
|
+
le += 1, T.contains(B + ee) ? B += ee : ($.write(T.indexOf(B), g), T.size() < 4095 && (T.size() == 1 << g && (g += 1), T.add(B + ee)), B = ee);
|
|
3453
3465
|
}
|
|
3454
|
-
return $.write(
|
|
3466
|
+
return $.write(T.indexOf(B), g), $.write(i, g), $.flush(), H.toByteArray();
|
|
3455
3467
|
}, N = function() {
|
|
3456
3468
|
var s = {}, c = 0, i = { add: function(g) {
|
|
3457
3469
|
if (i.contains(g))
|
|
@@ -3508,11 +3520,11 @@ var yt = {}, Xr = {
|
|
|
3508
3520
|
}();
|
|
3509
3521
|
w.stringToBytesFuncs["UTF-8"] = function(x) {
|
|
3510
3522
|
return function(G) {
|
|
3511
|
-
for (var
|
|
3512
|
-
var
|
|
3513
|
-
|
|
3523
|
+
for (var I = [], K = 0; K < G.length; K++) {
|
|
3524
|
+
var L = G.charCodeAt(K);
|
|
3525
|
+
L < 128 ? I.push(L) : L < 2048 ? I.push(192 | L >> 6, 128 | 63 & L) : L < 55296 || L >= 57344 ? I.push(224 | L >> 12, 128 | L >> 6 & 63, 128 | 63 & L) : (K++, L = 65536 + ((1023 & L) << 10 | 1023 & G.charCodeAt(K)), I.push(240 | L >> 18, 128 | L >> 12 & 63, 128 | L >> 6 & 63, 128 | 63 & L));
|
|
3514
3526
|
}
|
|
3515
|
-
return
|
|
3527
|
+
return I;
|
|
3516
3528
|
}(x);
|
|
3517
3529
|
}, (b = typeof (a = function() {
|
|
3518
3530
|
return w;
|
|
@@ -3548,7 +3560,7 @@ var yt = {}, Xr = {
|
|
|
3548
3560
|
Array.isArray(m) && Array.isArray(u) ? Z[l] = u : x(m) && x(u) ? Z[l] = G(Object.assign({}, m), u) : Z[l] = u;
|
|
3549
3561
|
}), G.apply(void 0, w([Z], e))) : Z;
|
|
3550
3562
|
}
|
|
3551
|
-
function
|
|
3563
|
+
function I(Z, e) {
|
|
3552
3564
|
var o = document.createElement("a");
|
|
3553
3565
|
o.download = e, o.href = Z, document.body.appendChild(o), o.click(), document.body.removeChild(o);
|
|
3554
3566
|
}
|
|
@@ -3560,10 +3572,10 @@ var yt = {}, Xr = {
|
|
|
3560
3572
|
throw c[1];
|
|
3561
3573
|
return c[1];
|
|
3562
3574
|
}, trys: [], ops: [] };
|
|
3563
|
-
return i = { next:
|
|
3575
|
+
return i = { next: T(0), throw: T(1), return: T(2) }, typeof Symbol == "function" && (i[Symbol.iterator] = function() {
|
|
3564
3576
|
return this;
|
|
3565
3577
|
}), i;
|
|
3566
|
-
function
|
|
3578
|
+
function T(O) {
|
|
3567
3579
|
return function(P) {
|
|
3568
3580
|
return function(k) {
|
|
3569
3581
|
if (N)
|
|
@@ -3645,17 +3657,17 @@ var yt = {}, Xr = {
|
|
|
3645
3657
|
}
|
|
3646
3658
|
function c(i) {
|
|
3647
3659
|
var g;
|
|
3648
|
-
i.done ? m(i.value) : (g = i.value, g instanceof r ? g : new r(function(
|
|
3649
|
-
|
|
3660
|
+
i.done ? m(i.value) : (g = i.value, g instanceof r ? g : new r(function(T) {
|
|
3661
|
+
T(g);
|
|
3650
3662
|
})).then(N, s);
|
|
3651
3663
|
}
|
|
3652
3664
|
c((l = l.apply(e, o || [])).next());
|
|
3653
3665
|
});
|
|
3654
3666
|
var e, o, r, l;
|
|
3655
3667
|
}
|
|
3656
|
-
const
|
|
3657
|
-
var
|
|
3658
|
-
return (
|
|
3668
|
+
const L = { L: 0.07, M: 0.15, Q: 0.25, H: 0.3 };
|
|
3669
|
+
var v = function() {
|
|
3670
|
+
return (v = Object.assign || function(Z) {
|
|
3659
3671
|
for (var e, o = 1, r = arguments.length; o < r; o++)
|
|
3660
3672
|
for (var l in e = arguments[o])
|
|
3661
3673
|
Object.prototype.hasOwnProperty.call(e, l) && (Z[l] = e[l]);
|
|
@@ -3695,32 +3707,32 @@ var yt = {}, Xr = {
|
|
|
3695
3707
|
(0, e.draw)(), (o = this._element) === null || o === void 0 || o.setAttribute("transform", "rotate(" + 180 * N / Math.PI + "," + s + "," + c + ")");
|
|
3696
3708
|
}, Z.prototype._basicDot = function(e) {
|
|
3697
3709
|
var o = this, r = e.size, l = e.x, m = e.y;
|
|
3698
|
-
this._rotateFigure(
|
|
3710
|
+
this._rotateFigure(v(v({}, e), { draw: function() {
|
|
3699
3711
|
o._element = document.createElementNS("http://www.w3.org/2000/svg", "circle"), o._element.setAttribute("cx", String(l + r / 2)), o._element.setAttribute("cy", String(m + r / 2)), o._element.setAttribute("r", String(r / 2));
|
|
3700
3712
|
} }));
|
|
3701
3713
|
}, Z.prototype._basicSquare = function(e) {
|
|
3702
3714
|
var o = this, r = e.size, l = e.x, m = e.y;
|
|
3703
|
-
this._rotateFigure(
|
|
3715
|
+
this._rotateFigure(v(v({}, e), { draw: function() {
|
|
3704
3716
|
o._element = document.createElementNS("http://www.w3.org/2000/svg", "rect"), o._element.setAttribute("x", String(l)), o._element.setAttribute("y", String(m)), o._element.setAttribute("width", String(r)), o._element.setAttribute("height", String(r));
|
|
3705
3717
|
} }));
|
|
3706
3718
|
}, Z.prototype._basicSideRounded = function(e) {
|
|
3707
3719
|
var o = this, r = e.size, l = e.x, m = e.y;
|
|
3708
|
-
this._rotateFigure(
|
|
3720
|
+
this._rotateFigure(v(v({}, e), { draw: function() {
|
|
3709
3721
|
o._element = document.createElementNS("http://www.w3.org/2000/svg", "path"), o._element.setAttribute("d", "M " + l + " " + m + "v " + r + "h " + r / 2 + "a " + r / 2 + " " + r / 2 + ", 0, 0, 0, 0 " + -r);
|
|
3710
3722
|
} }));
|
|
3711
3723
|
}, Z.prototype._basicCornerRounded = function(e) {
|
|
3712
3724
|
var o = this, r = e.size, l = e.x, m = e.y;
|
|
3713
|
-
this._rotateFigure(
|
|
3725
|
+
this._rotateFigure(v(v({}, e), { draw: function() {
|
|
3714
3726
|
o._element = document.createElementNS("http://www.w3.org/2000/svg", "path"), o._element.setAttribute("d", "M " + l + " " + m + "v " + r + "h " + r + "v " + -r / 2 + "a " + r / 2 + " " + r / 2 + ", 0, 0, 0, " + -r / 2 + " " + -r / 2);
|
|
3715
3727
|
} }));
|
|
3716
3728
|
}, Z.prototype._basicCornerExtraRounded = function(e) {
|
|
3717
3729
|
var o = this, r = e.size, l = e.x, m = e.y;
|
|
3718
|
-
this._rotateFigure(
|
|
3730
|
+
this._rotateFigure(v(v({}, e), { draw: function() {
|
|
3719
3731
|
o._element = document.createElementNS("http://www.w3.org/2000/svg", "path"), o._element.setAttribute("d", "M " + l + " " + m + "v " + r + "h " + r + "a " + r + " " + r + ", 0, 0, 0, " + -r + " " + -r);
|
|
3720
3732
|
} }));
|
|
3721
3733
|
}, Z.prototype._basicCornersRounded = function(e) {
|
|
3722
3734
|
var o = this, r = e.size, l = e.x, m = e.y;
|
|
3723
|
-
this._rotateFigure(
|
|
3735
|
+
this._rotateFigure(v(v({}, e), { draw: function() {
|
|
3724
3736
|
o._element = document.createElementNS("http://www.w3.org/2000/svg", "path"), o._element.setAttribute("d", "M " + l + " " + m + "v " + r / 2 + "a " + r / 2 + " " + r / 2 + ", 0, 0, 0, " + r / 2 + " " + r / 2 + "h " + r / 2 + "v " + -r / 2 + "a " + r / 2 + " " + r / 2 + ", 0, 0, 0, " + -r / 2 + " " + -r / 2);
|
|
3725
3737
|
} }));
|
|
3726
3738
|
}, Z.prototype._drawDot = function(e) {
|
|
@@ -3767,15 +3779,15 @@ var yt = {}, Xr = {
|
|
|
3767
3779
|
u + N + s + c !== 0 ? u || s ? N || c ? this._basicSquare({ x: o, y: r, size: l, rotation: 0 }) : this._basicCornerExtraRounded({ x: o, y: r, size: l, rotation: Math.PI / 2 }) : this._basicCornerExtraRounded({ x: o, y: r, size: l, rotation: -Math.PI / 2 }) : this._basicCornersRounded({ x: o, y: r, size: l, rotation: Math.PI / 2 });
|
|
3768
3780
|
}, Z;
|
|
3769
3781
|
}();
|
|
3770
|
-
var
|
|
3771
|
-
return (
|
|
3782
|
+
var _ = function() {
|
|
3783
|
+
return (_ = Object.assign || function(Z) {
|
|
3772
3784
|
for (var e, o = 1, r = arguments.length; o < r; o++)
|
|
3773
3785
|
for (var l in e = arguments[o])
|
|
3774
3786
|
Object.prototype.hasOwnProperty.call(e, l) && (Z[l] = e[l]);
|
|
3775
3787
|
return Z;
|
|
3776
3788
|
}).apply(this, arguments);
|
|
3777
3789
|
};
|
|
3778
|
-
const
|
|
3790
|
+
const re = function() {
|
|
3779
3791
|
function Z(e) {
|
|
3780
3792
|
var o = e.svg, r = e.type;
|
|
3781
3793
|
this._svg = o, this._type = r;
|
|
@@ -3799,17 +3811,17 @@ var yt = {}, Xr = {
|
|
|
3799
3811
|
(0, e.draw)(), (o = this._element) === null || o === void 0 || o.setAttribute("transform", "rotate(" + 180 * N / Math.PI + "," + s + "," + c + ")");
|
|
3800
3812
|
}, Z.prototype._basicDot = function(e) {
|
|
3801
3813
|
var o = this, r = e.size, l = e.x, m = e.y, u = r / 7;
|
|
3802
|
-
this._rotateFigure(
|
|
3814
|
+
this._rotateFigure(_(_({}, e), { draw: function() {
|
|
3803
3815
|
o._element = document.createElementNS("http://www.w3.org/2000/svg", "path"), o._element.setAttribute("clip-rule", "evenodd"), o._element.setAttribute("d", "M " + (l + r / 2) + " " + m + "a " + r / 2 + " " + r / 2 + " 0 1 0 0.1 0zm 0 " + u + "a " + (r / 2 - u) + " " + (r / 2 - u) + " 0 1 1 -0.1 0Z");
|
|
3804
3816
|
} }));
|
|
3805
3817
|
}, Z.prototype._basicSquare = function(e) {
|
|
3806
3818
|
var o = this, r = e.size, l = e.x, m = e.y, u = r / 7;
|
|
3807
|
-
this._rotateFigure(
|
|
3819
|
+
this._rotateFigure(_(_({}, e), { draw: function() {
|
|
3808
3820
|
o._element = document.createElementNS("http://www.w3.org/2000/svg", "path"), o._element.setAttribute("clip-rule", "evenodd"), o._element.setAttribute("d", "M " + l + " " + m + "v " + r + "h " + r + "v " + -r + "zM " + (l + u) + " " + (m + u) + "h " + (r - 2 * u) + "v " + (r - 2 * u) + "h " + (2 * u - r) + "z");
|
|
3809
3821
|
} }));
|
|
3810
3822
|
}, Z.prototype._basicExtraRounded = function(e) {
|
|
3811
3823
|
var o = this, r = e.size, l = e.x, m = e.y, u = r / 7;
|
|
3812
|
-
this._rotateFigure(
|
|
3824
|
+
this._rotateFigure(_(_({}, e), { draw: function() {
|
|
3813
3825
|
o._element = document.createElementNS("http://www.w3.org/2000/svg", "path"), o._element.setAttribute("clip-rule", "evenodd"), o._element.setAttribute("d", "M " + l + " " + (m + 2.5 * u) + "v " + 2 * u + "a " + 2.5 * u + " " + 2.5 * u + ", 0, 0, 0, " + 2.5 * u + " " + 2.5 * u + "h " + 2 * u + "a " + 2.5 * u + " " + 2.5 * u + ", 0, 0, 0, " + 2.5 * u + " " + 2.5 * -u + "v " + -2 * u + "a " + 2.5 * u + " " + 2.5 * u + ", 0, 0, 0, " + 2.5 * -u + " " + 2.5 * -u + "h " + -2 * u + "a " + 2.5 * u + " " + 2.5 * u + ", 0, 0, 0, " + 2.5 * -u + " " + 2.5 * u + "M " + (l + 2.5 * u) + " " + (m + u) + "h " + 2 * u + "a " + 1.5 * u + " " + 1.5 * u + ", 0, 0, 1, " + 1.5 * u + " " + 1.5 * u + "v " + 2 * u + "a " + 1.5 * u + " " + 1.5 * u + ", 0, 0, 1, " + 1.5 * -u + " " + 1.5 * u + "h " + -2 * u + "a " + 1.5 * u + " " + 1.5 * u + ", 0, 0, 1, " + 1.5 * -u + " " + 1.5 * -u + "v " + -2 * u + "a " + 1.5 * u + " " + 1.5 * u + ", 0, 0, 1, " + 1.5 * u + " " + 1.5 * -u);
|
|
3814
3826
|
} }));
|
|
3815
3827
|
}, Z.prototype._drawDot = function(e) {
|
|
@@ -3867,7 +3879,7 @@ var yt = {}, Xr = {
|
|
|
3867
3879
|
var o = e.x, r = e.y, l = e.size, m = e.rotation;
|
|
3868
3880
|
this._basicSquare({ x: o, y: r, size: l, rotation: m });
|
|
3869
3881
|
}, Z;
|
|
3870
|
-
}(),
|
|
3882
|
+
}(), R = "circle";
|
|
3871
3883
|
var E = function(Z, e, o, r) {
|
|
3872
3884
|
return new (o || (o = Promise))(function(l, m) {
|
|
3873
3885
|
function u(c) {
|
|
@@ -3968,25 +3980,25 @@ var yt = {}, Xr = {
|
|
|
3968
3980
|
return this._element;
|
|
3969
3981
|
}, Z.prototype.drawQR = function(e) {
|
|
3970
3982
|
return E(this, void 0, void 0, function() {
|
|
3971
|
-
var o, r, l, m, u, N, s, c, i, g,
|
|
3983
|
+
var o, r, l, m, u, N, s, c, i, g, T = this;
|
|
3972
3984
|
return se(this, function(O) {
|
|
3973
3985
|
switch (O.label) {
|
|
3974
3986
|
case 0:
|
|
3975
|
-
return o = e.getModuleCount(), r = Math.min(this._options.width, this._options.height) - 2 * this._options.margin, l = this._options.shape ===
|
|
3987
|
+
return o = e.getModuleCount(), r = Math.min(this._options.width, this._options.height) - 2 * this._options.margin, l = this._options.shape === R ? r / Math.sqrt(2) : r, m = Math.floor(l / o), u = { hideXDots: 0, hideYDots: 0, width: 0, height: 0 }, this._qr = e, this._options.image ? [4, this.loadImage()] : [3, 2];
|
|
3976
3988
|
case 1:
|
|
3977
3989
|
if (O.sent(), !this._image)
|
|
3978
3990
|
return [2];
|
|
3979
|
-
N = this._options, s = N.imageOptions, c = N.qrOptions, i = s.imageSize *
|
|
3980
|
-
var k = P.originalHeight, F = P.originalWidth,
|
|
3981
|
-
if (k <= 0 || F <= 0 ||
|
|
3991
|
+
N = this._options, s = N.imageOptions, c = N.qrOptions, i = s.imageSize * L[c.errorCorrectionLevel], g = Math.floor(i * o * o), u = function(P) {
|
|
3992
|
+
var k = P.originalHeight, F = P.originalWidth, H = P.maxHiddenDots, $ = P.maxHiddenAxisDots, le = P.dotSize, B = { x: 0, y: 0 }, ee = { x: 0, y: 0 };
|
|
3993
|
+
if (k <= 0 || F <= 0 || H <= 0 || le <= 0)
|
|
3982
3994
|
return { height: 0, width: 0, hideYDots: 0, hideXDots: 0 };
|
|
3983
3995
|
var q = k / F;
|
|
3984
|
-
return
|
|
3996
|
+
return B.x = Math.floor(Math.sqrt(H / q)), B.x <= 0 && (B.x = 1), $ && $ < B.x && (B.x = $), B.x % 2 == 0 && B.x--, ee.x = B.x * le, B.y = 1 + 2 * Math.ceil((B.x * q - 1) / 2), ee.y = Math.round(ee.x * q), (B.y * B.x > H || $ && $ < B.y) && ($ && $ < B.y ? (B.y = $, B.y % 2 == 0 && B.x--) : B.y -= 2, ee.y = B.y * le, B.x = 1 + 2 * Math.ceil((B.y / q - 1) / 2), ee.x = Math.round(ee.y / q)), { height: ee.y, width: ee.x, hideYDots: B.y, hideXDots: B.x };
|
|
3985
3997
|
}({ originalWidth: this._image.width, originalHeight: this._image.height, maxHiddenDots: g, maxHiddenAxisDots: o - 14, dotSize: m }), O.label = 2;
|
|
3986
3998
|
case 2:
|
|
3987
3999
|
return this.drawBackground(), this.drawDots(function(P, k) {
|
|
3988
|
-
var F,
|
|
3989
|
-
return !(
|
|
4000
|
+
var F, H, $, le, B, ee;
|
|
4001
|
+
return !(T._options.imageOptions.hideBackgroundDots && P >= (o - u.hideXDots) / 2 && P < (o + u.hideXDots) / 2 && k >= (o - u.hideYDots) / 2 && k < (o + u.hideYDots) / 2 || !((F = me[P]) === null || F === void 0) && F[k] || !((H = me[P - o + 7]) === null || H === void 0) && H[k] || !(($ = me[P]) === null || $ === void 0) && $[k - o + 7] || !((le = ve[P]) === null || le === void 0) && le[k] || !((B = ve[P - o + 7]) === null || B === void 0) && B[k] || !((ee = ve[P]) === null || ee === void 0) && ee[k - o + 7]);
|
|
3990
4002
|
}), this.drawCorners(), this._options.image ? [4, this.drawImage({ width: u.width, height: u.height, count: o, dotSize: m })] : [3, 4];
|
|
3991
4003
|
case 3:
|
|
3992
4004
|
O.sent(), O.label = 4;
|
|
@@ -4011,36 +4023,36 @@ var yt = {}, Xr = {
|
|
|
4011
4023
|
var m = this._options, u = this._qr.getModuleCount();
|
|
4012
4024
|
if (u > m.width || u > m.height)
|
|
4013
4025
|
throw "The canvas is too small.";
|
|
4014
|
-
var N = Math.min(m.width, m.height) - 2 * m.margin, s = m.shape ===
|
|
4026
|
+
var N = Math.min(m.width, m.height) - 2 * m.margin, s = m.shape === R ? N / Math.sqrt(2) : N, c = Math.floor(s / u), i = Math.floor((m.width - u * c) / 2), g = Math.floor((m.height - u * c) / 2), T = new X({ svg: this._element, type: m.dotsOptions.type });
|
|
4015
4027
|
this._dotsClipPath = document.createElementNS("http://www.w3.org/2000/svg", "clipPath"), this._dotsClipPath.setAttribute("id", "clip-path-dot-color"), this._defs.appendChild(this._dotsClipPath), this._createColor({ options: (o = m.dotsOptions) === null || o === void 0 ? void 0 : o.gradient, color: m.dotsOptions.color, additionalRotation: 0, x: 0, y: 0, height: m.height, width: m.width, name: "dot-color" });
|
|
4016
4028
|
for (var O = function(de) {
|
|
4017
|
-
for (var
|
|
4018
|
-
return e && !e(de, ce) ? "continue" : !((r = P._qr) === null || r === void 0) && r.isDark(de, ce) ? (
|
|
4029
|
+
for (var oe = function(ce) {
|
|
4030
|
+
return e && !e(de, ce) ? "continue" : !((r = P._qr) === null || r === void 0) && r.isDark(de, ce) ? (T.draw(i + de * c, g + ce * c, c, function(he, be) {
|
|
4019
4031
|
return !(de + he < 0 || ce + be < 0 || de + he >= u || ce + be >= u) && !(e && !e(de + he, ce + be)) && !!l._qr && l._qr.isDark(de + he, ce + be);
|
|
4020
|
-
}), void (
|
|
4032
|
+
}), void (T._element && P._dotsClipPath && P._dotsClipPath.appendChild(T._element))) : "continue";
|
|
4021
4033
|
}, ue = 0; ue < u; ue++)
|
|
4022
|
-
|
|
4034
|
+
oe(ue);
|
|
4023
4035
|
}, P = this, k = 0; k < u; k++)
|
|
4024
4036
|
O(k);
|
|
4025
|
-
if (m.shape ===
|
|
4026
|
-
var F = Math.floor((N / c - u) / 2),
|
|
4027
|
-
for (k = 0; k <
|
|
4028
|
-
|
|
4029
|
-
for (var q = 0; q <
|
|
4030
|
-
k >= F - 1 && k <=
|
|
4037
|
+
if (m.shape === R) {
|
|
4038
|
+
var F = Math.floor((N / c - u) / 2), H = u + 2 * F, $ = i - F * c, le = g - F * c, B = [], ee = Math.floor(H / 2);
|
|
4039
|
+
for (k = 0; k < H; k++) {
|
|
4040
|
+
B[k] = [];
|
|
4041
|
+
for (var q = 0; q < H; q++)
|
|
4042
|
+
k >= F - 1 && k <= H - F && q >= F - 1 && q <= H - F || Math.sqrt((k - ee) * (k - ee) + (q - ee) * (q - ee)) > ee ? B[k][q] = 0 : B[k][q] = this._qr.isDark(q - 2 * F < 0 ? q : q >= u ? q - 2 * F : q - F, k - 2 * F < 0 ? k : k >= u ? k - 2 * F : k - F) ? 1 : 0;
|
|
4031
4043
|
}
|
|
4032
4044
|
var te = function(de) {
|
|
4033
|
-
for (var
|
|
4034
|
-
if (!
|
|
4045
|
+
for (var oe = function(ce) {
|
|
4046
|
+
if (!B[de][ce])
|
|
4035
4047
|
return "continue";
|
|
4036
|
-
|
|
4048
|
+
T.draw($ + de * c, le + ce * c, c, function(he, be) {
|
|
4037
4049
|
var ye;
|
|
4038
|
-
return !!(!((ye =
|
|
4039
|
-
}),
|
|
4040
|
-
}, ue = 0; ue <
|
|
4041
|
-
|
|
4050
|
+
return !!(!((ye = B[de + he]) === null || ye === void 0) && ye[ce + be]);
|
|
4051
|
+
}), T._element && xe._dotsClipPath && xe._dotsClipPath.appendChild(T._element);
|
|
4052
|
+
}, ue = 0; ue < H; ue++)
|
|
4053
|
+
oe(ue);
|
|
4042
4054
|
}, xe = this;
|
|
4043
|
-
for (k = 0; k <
|
|
4055
|
+
for (k = 0; k < H; k++)
|
|
4044
4056
|
te(k);
|
|
4045
4057
|
}
|
|
4046
4058
|
}, Z.prototype.drawCorners = function() {
|
|
@@ -4050,39 +4062,39 @@ var yt = {}, Xr = {
|
|
|
4050
4062
|
var o = this._element, r = this._options;
|
|
4051
4063
|
if (!o)
|
|
4052
4064
|
throw "Element code is not defined";
|
|
4053
|
-
var l = this._qr.getModuleCount(), m = Math.min(r.width, r.height) - 2 * r.margin, u = r.shape ===
|
|
4054
|
-
[[0, 0, 0], [1, 0, Math.PI / 2], [0, 1, -Math.PI / 2]].forEach(function(
|
|
4055
|
-
var O, P, k, F,
|
|
4056
|
-
if ((!((O = r.cornersSquareOptions) === null || O === void 0) && O.gradient || !((P = r.cornersSquareOptions) === null || P === void 0) && P.color) && ((be = document.createElementNS("http://www.w3.org/2000/svg", "clipPath")).setAttribute("id", "clip-path-corners-square-color-" + de + "-" +
|
|
4057
|
-
var
|
|
4058
|
-
|
|
4065
|
+
var l = this._qr.getModuleCount(), m = Math.min(r.width, r.height) - 2 * r.margin, u = r.shape === R ? m / Math.sqrt(2) : m, N = Math.floor(u / l), s = 7 * N, c = 3 * N, i = Math.floor((r.width - l * N) / 2), g = Math.floor((r.height - l * N) / 2);
|
|
4066
|
+
[[0, 0, 0], [1, 0, Math.PI / 2], [0, 1, -Math.PI / 2]].forEach(function(T) {
|
|
4067
|
+
var O, P, k, F, H, $, le, B, ee, q, te, xe, de = T[0], oe = T[1], ue = T[2], ce = i + de * N * (l - 7), he = g + oe * N * (l - 7), be = e._dotsClipPath, ye = e._dotsClipPath;
|
|
4068
|
+
if ((!((O = r.cornersSquareOptions) === null || O === void 0) && O.gradient || !((P = r.cornersSquareOptions) === null || P === void 0) && P.color) && ((be = document.createElementNS("http://www.w3.org/2000/svg", "clipPath")).setAttribute("id", "clip-path-corners-square-color-" + de + "-" + oe), e._defs.appendChild(be), e._cornersSquareClipPath = e._cornersDotClipPath = ye = be, e._createColor({ options: (k = r.cornersSquareOptions) === null || k === void 0 ? void 0 : k.gradient, color: (F = r.cornersSquareOptions) === null || F === void 0 ? void 0 : F.color, additionalRotation: ue, x: ce, y: he, height: s, width: s, name: "corners-square-color-" + de + "-" + oe })), (H = r.cornersSquareOptions) === null || H === void 0 ? void 0 : H.type) {
|
|
4069
|
+
var Me = new re({ svg: e._element, type: r.cornersSquareOptions.type });
|
|
4070
|
+
Me.draw(ce, he, s, ue), Me._element && be && be.appendChild(Me._element);
|
|
4059
4071
|
} else
|
|
4060
|
-
for (var Ge = new X({ svg: e._element, type: r.dotsOptions.type }), un = function(
|
|
4072
|
+
for (var Ge = new X({ svg: e._element, type: r.dotsOptions.type }), un = function(We) {
|
|
4061
4073
|
for (var rt = function(Ke) {
|
|
4062
|
-
if (!(!(($ = me[
|
|
4074
|
+
if (!(!(($ = me[We]) === null || $ === void 0) && $[Ke]))
|
|
4063
4075
|
return "continue";
|
|
4064
|
-
Ge.draw(ce +
|
|
4076
|
+
Ge.draw(ce + We * N, he + Ke * N, N, function(ot, it) {
|
|
4065
4077
|
var Xe;
|
|
4066
|
-
return !!(!((Xe = me[
|
|
4078
|
+
return !!(!((Xe = me[We + ot]) === null || Xe === void 0) && Xe[Ke + it]);
|
|
4067
4079
|
}), Ge._element && be && be.appendChild(Ge._element);
|
|
4068
|
-
}, ze = 0; ze < me[
|
|
4080
|
+
}, ze = 0; ze < me[We].length; ze++)
|
|
4069
4081
|
rt(ze);
|
|
4070
4082
|
}, Ee = 0; Ee < me.length; Ee++)
|
|
4071
4083
|
un(Ee);
|
|
4072
|
-
if ((!((le = r.cornersDotOptions) === null || le === void 0) && le.gradient || !((
|
|
4084
|
+
if ((!((le = r.cornersDotOptions) === null || le === void 0) && le.gradient || !((B = r.cornersDotOptions) === null || B === void 0) && B.color) && ((ye = document.createElementNS("http://www.w3.org/2000/svg", "clipPath")).setAttribute("id", "clip-path-corners-dot-color-" + de + "-" + oe), e._defs.appendChild(ye), e._cornersDotClipPath = ye, e._createColor({ options: (ee = r.cornersDotOptions) === null || ee === void 0 ? void 0 : ee.gradient, color: (q = r.cornersDotOptions) === null || q === void 0 ? void 0 : q.color, additionalRotation: ue, x: ce + 2 * N, y: he + 2 * N, height: c, width: c, name: "corners-dot-color-" + de + "-" + oe })), (te = r.cornersDotOptions) === null || te === void 0 ? void 0 : te.type) {
|
|
4073
4085
|
var nt = new J({ svg: e._element, type: r.cornersDotOptions.type });
|
|
4074
4086
|
nt.draw(ce + 2 * N, he + 2 * N, c, ue), nt._element && ye && ye.appendChild(nt._element);
|
|
4075
4087
|
} else {
|
|
4076
4088
|
Ge = new X({ svg: e._element, type: r.dotsOptions.type });
|
|
4077
|
-
var hn = function(
|
|
4089
|
+
var hn = function(We) {
|
|
4078
4090
|
for (var rt = function(Ke) {
|
|
4079
|
-
if (!(!((xe = ve[
|
|
4091
|
+
if (!(!((xe = ve[We]) === null || xe === void 0) && xe[Ke]))
|
|
4080
4092
|
return "continue";
|
|
4081
|
-
Ge.draw(ce +
|
|
4093
|
+
Ge.draw(ce + We * N, he + Ke * N, N, function(ot, it) {
|
|
4082
4094
|
var Xe;
|
|
4083
|
-
return !!(!((Xe = ve[
|
|
4095
|
+
return !!(!((Xe = ve[We + ot]) === null || Xe === void 0) && Xe[Ke + it]);
|
|
4084
4096
|
}), Ge._element && ye && ye.appendChild(Ge._element);
|
|
4085
|
-
}, ze = 0; ze < ve[
|
|
4097
|
+
}, ze = 0; ze < ve[We].length; ze++)
|
|
4086
4098
|
rt(ze);
|
|
4087
4099
|
};
|
|
4088
4100
|
for (Ee = 0; Ee < ve.length; Ee++)
|
|
@@ -4102,11 +4114,11 @@ var yt = {}, Xr = {
|
|
|
4102
4114
|
}, Z.prototype.drawImage = function(e) {
|
|
4103
4115
|
var o = e.width, r = e.height, l = e.count, m = e.dotSize;
|
|
4104
4116
|
return E(this, void 0, void 0, function() {
|
|
4105
|
-
var u, N, s, c, i, g,
|
|
4117
|
+
var u, N, s, c, i, g, T, O, P;
|
|
4106
4118
|
return se(this, function(k) {
|
|
4107
4119
|
switch (k.label) {
|
|
4108
4120
|
case 0:
|
|
4109
|
-
return u = this._options, N = Math.floor((u.width - l * m) / 2), s = Math.floor((u.height - l * m) / 2), c = N + u.imageOptions.margin + (l * m - o) / 2, i = s + u.imageOptions.margin + (l * m - r) / 2, g = o - 2 * u.imageOptions.margin,
|
|
4121
|
+
return u = this._options, N = Math.floor((u.width - l * m) / 2), s = Math.floor((u.height - l * m) / 2), c = N + u.imageOptions.margin + (l * m - o) / 2, i = s + u.imageOptions.margin + (l * m - r) / 2, g = o - 2 * u.imageOptions.margin, T = r - 2 * u.imageOptions.margin, (O = document.createElementNS("http://www.w3.org/2000/svg", "image")).setAttribute("x", String(c)), O.setAttribute("y", String(i)), O.setAttribute("width", g + "px"), O.setAttribute("height", T + "px"), [4, K(u.image || "")];
|
|
4110
4122
|
case 1:
|
|
4111
4123
|
return P = k.sent(), O.setAttribute("href", P || ""), this._element.appendChild(O), [2];
|
|
4112
4124
|
}
|
|
@@ -4115,17 +4127,17 @@ var yt = {}, Xr = {
|
|
|
4115
4127
|
}, Z.prototype._createColor = function(e) {
|
|
4116
4128
|
var o = e.options, r = e.color, l = e.additionalRotation, m = e.x, u = e.y, N = e.height, s = e.width, c = e.name, i = s > N ? s : N, g = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
|
4117
4129
|
if (g.setAttribute("x", String(m)), g.setAttribute("y", String(u)), g.setAttribute("height", String(N)), g.setAttribute("width", String(s)), g.setAttribute("clip-path", "url('#clip-path-" + c + "')"), o) {
|
|
4118
|
-
var
|
|
4130
|
+
var T;
|
|
4119
4131
|
if (o.type === "radial")
|
|
4120
|
-
(
|
|
4132
|
+
(T = document.createElementNS("http://www.w3.org/2000/svg", "radialGradient")).setAttribute("id", c), T.setAttribute("gradientUnits", "userSpaceOnUse"), T.setAttribute("fx", String(m + s / 2)), T.setAttribute("fy", String(u + N / 2)), T.setAttribute("cx", String(m + s / 2)), T.setAttribute("cy", String(u + N / 2)), T.setAttribute("r", String(i / 2));
|
|
4121
4133
|
else {
|
|
4122
|
-
var O = ((o.rotation || 0) + l) % (2 * Math.PI), P = (O + 2 * Math.PI) % (2 * Math.PI), k = m + s / 2, F = u + N / 2,
|
|
4123
|
-
P >= 0 && P <= 0.25 * Math.PI || P > 1.75 * Math.PI && P <= 2 * Math.PI ? (k -= s / 2, F -= N / 2 * Math.tan(O),
|
|
4134
|
+
var O = ((o.rotation || 0) + l) % (2 * Math.PI), P = (O + 2 * Math.PI) % (2 * Math.PI), k = m + s / 2, F = u + N / 2, H = m + s / 2, $ = u + N / 2;
|
|
4135
|
+
P >= 0 && P <= 0.25 * Math.PI || P > 1.75 * Math.PI && P <= 2 * Math.PI ? (k -= s / 2, F -= N / 2 * Math.tan(O), H += s / 2, $ += N / 2 * Math.tan(O)) : P > 0.25 * Math.PI && P <= 0.75 * Math.PI ? (F -= N / 2, k -= s / 2 / Math.tan(O), $ += N / 2, H += s / 2 / Math.tan(O)) : P > 0.75 * Math.PI && P <= 1.25 * Math.PI ? (k += s / 2, F += N / 2 * Math.tan(O), H -= s / 2, $ -= N / 2 * Math.tan(O)) : P > 1.25 * Math.PI && P <= 1.75 * Math.PI && (F += N / 2, k += s / 2 / Math.tan(O), $ -= N / 2, H -= s / 2 / Math.tan(O)), (T = document.createElementNS("http://www.w3.org/2000/svg", "linearGradient")).setAttribute("id", c), T.setAttribute("gradientUnits", "userSpaceOnUse"), T.setAttribute("x1", String(Math.round(k))), T.setAttribute("y1", String(Math.round(F))), T.setAttribute("x2", String(Math.round(H))), T.setAttribute("y2", String(Math.round($)));
|
|
4124
4136
|
}
|
|
4125
4137
|
o.colorStops.forEach(function(le) {
|
|
4126
|
-
var
|
|
4127
|
-
q.setAttribute("offset", 100 *
|
|
4128
|
-
}), g.setAttribute("fill", "url('#" + c + "')"), this._defs.appendChild(
|
|
4138
|
+
var B = le.offset, ee = le.color, q = document.createElementNS("http://www.w3.org/2000/svg", "stop");
|
|
4139
|
+
q.setAttribute("offset", 100 * B + "%"), q.setAttribute("stop-color", ee), T.appendChild(q);
|
|
4140
|
+
}), g.setAttribute("fill", "url('#" + c + "')"), this._defs.appendChild(T);
|
|
4129
4141
|
} else
|
|
4130
4142
|
r && g.setAttribute("fill", r);
|
|
4131
4143
|
this._element.appendChild(g);
|
|
@@ -4338,7 +4350,7 @@ var yt = {}, Xr = {
|
|
|
4338
4350
|
return o = "png", r = "qr", typeof e == "string" ? (o = e, console.warn("Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument")) : typeof e == "object" && e !== null && (e.name && (r = e.name), e.extension && (o = e.extension)), [4, this._getElement(o)];
|
|
4339
4351
|
case 1:
|
|
4340
4352
|
return (l = N.sent()) ? (o.toLowerCase() === "svg" ? (m = new XMLSerializer(), u = `<?xml version="1.0" standalone="no"?>\r
|
|
4341
|
-
` + (u = m.serializeToString(l)),
|
|
4353
|
+
` + (u = m.serializeToString(l)), I("data:image/svg+xml;charset=utf-8," + encodeURIComponent(u), r + ".svg")) : I(l.toDataURL("image/" + o), r + "." + o), [2]) : [2];
|
|
4342
4354
|
}
|
|
4343
4355
|
});
|
|
4344
4356
|
});
|
|
@@ -4361,17 +4373,17 @@ var yt = {}, Xr = {
|
|
|
4361
4373
|
})().default;
|
|
4362
4374
|
});
|
|
4363
4375
|
})(Xr);
|
|
4364
|
-
const Or = /* @__PURE__ */ Kr(yt), jr = ({ nodePath: t }) => /* @__PURE__ */
|
|
4376
|
+
const Or = /* @__PURE__ */ Kr(yt), jr = ({ nodePath: t }) => /* @__PURE__ */ S.createElement(vt, null, /* @__PURE__ */ S.createElement(
|
|
4365
4377
|
Tt,
|
|
4366
4378
|
{
|
|
4367
|
-
desktop: /* @__PURE__ */
|
|
4379
|
+
desktop: /* @__PURE__ */ S.createElement(
|
|
4368
4380
|
_t,
|
|
4369
4381
|
{
|
|
4370
4382
|
mode: fe.DESKTOP,
|
|
4371
4383
|
nodePath: t
|
|
4372
4384
|
}
|
|
4373
4385
|
),
|
|
4374
|
-
mobile: /* @__PURE__ */
|
|
4386
|
+
mobile: /* @__PURE__ */ S.createElement(
|
|
4375
4387
|
_t,
|
|
4376
4388
|
{
|
|
4377
4389
|
mode: fe.MOBILE,
|
|
@@ -4384,16 +4396,16 @@ function _t({
|
|
|
4384
4396
|
nodePath: t,
|
|
4385
4397
|
mode: n
|
|
4386
4398
|
}) {
|
|
4387
|
-
const d = en(), { onUpload: p } = Ct(), { setFieldValue: f, getFieldValue: y } = St(), { selectedNode: h, selectedNodePath: a } = Lt(), { setLock: b } = It(), { isChanged: w } = vn(), [x, G] = xt(!1),
|
|
4399
|
+
const d = en(), { onUpload: p } = Ct(), { setFieldValue: f, getFieldValue: y } = St(), { selectedNode: h, selectedNodePath: a } = Lt(), { setLock: b } = It(), { isChanged: w } = vn(), [x, G] = xt(!1), I = zt(null), K = 600, L = zt(new Or()), v = a && y(
|
|
4388
4400
|
a,
|
|
4389
4401
|
n === fe.DESKTOP ? "attributes.dot-color-type" : "mobileAttributes.dot-color-type"
|
|
4390
4402
|
) !== "single", X = a && y(
|
|
4391
4403
|
a,
|
|
4392
4404
|
n === fe.DESKTOP ? "attributes.corner-dot-color-type" : "mobileAttributes.corner-dot-color-type"
|
|
4393
|
-
) !== "single",
|
|
4405
|
+
) !== "single", _ = a && y(
|
|
4394
4406
|
a,
|
|
4395
4407
|
n === fe.DESKTOP ? "attributes.corner-square-color-type" : "mobileAttributes.corner-square-color-type"
|
|
4396
|
-
) !== "single",
|
|
4408
|
+
) !== "single", re = xn(() => {
|
|
4397
4409
|
const E = n === fe.DESKTOP ? h == null ? void 0 : h.attributes : Mn({}, h == null ? void 0 : h.attributes, h == null ? void 0 : h.mobileAttributes);
|
|
4398
4410
|
if (!E)
|
|
4399
4411
|
return {};
|
|
@@ -4468,7 +4480,7 @@ function _t({
|
|
|
4468
4480
|
color: E == null ? void 0 : E["background-color"]
|
|
4469
4481
|
}
|
|
4470
4482
|
};
|
|
4471
|
-
return _e(
|
|
4483
|
+
return _e(I.current, se) ? I.current : (I.current = se, se);
|
|
4472
4484
|
}, [
|
|
4473
4485
|
n,
|
|
4474
4486
|
h == null ? void 0 : h.attributes,
|
|
@@ -4479,9 +4491,9 @@ function _t({
|
|
|
4479
4491
|
qe(() => {
|
|
4480
4492
|
if (!w)
|
|
4481
4493
|
return;
|
|
4482
|
-
|
|
4483
|
-
const
|
|
4484
|
-
document.body.appendChild(
|
|
4494
|
+
L.current.update(re);
|
|
4495
|
+
const R = document.createElement("div");
|
|
4496
|
+
document.body.appendChild(R), R.style.position = "absolute", R.style.left = "-9999px", L.current.append(R), L.current.getRawData("png").then((E) => Ze(this, null, function* () {
|
|
4485
4497
|
if (E) {
|
|
4486
4498
|
const se = window.URL.createObjectURL(E);
|
|
4487
4499
|
yield $t(se), Zn.withoutSaving(d, () => {
|
|
@@ -4493,46 +4505,46 @@ function _t({
|
|
|
4493
4505
|
});
|
|
4494
4506
|
}
|
|
4495
4507
|
})).finally(() => {
|
|
4496
|
-
|
|
4508
|
+
R.remove();
|
|
4497
4509
|
});
|
|
4498
|
-
}, [d, w, n, t,
|
|
4499
|
-
const V =
|
|
4510
|
+
}, [d, w, n, t, re, f]);
|
|
4511
|
+
const V = S.useRef();
|
|
4500
4512
|
V.current || (V.current = Ve(h)), qe(() => {
|
|
4501
4513
|
_e(V.current, h) ? b(!1) : b(!0);
|
|
4502
4514
|
}, [h, b]);
|
|
4503
|
-
const J = () =>
|
|
4515
|
+
const J = () => Ze(this, null, function* () {
|
|
4504
4516
|
if (h)
|
|
4505
4517
|
try {
|
|
4506
4518
|
G(!0);
|
|
4507
|
-
const
|
|
4508
|
-
if (!
|
|
4519
|
+
const R = yield L.current.getRawData("png");
|
|
4520
|
+
if (!R)
|
|
4509
4521
|
return;
|
|
4510
|
-
const E = yield p == null ? void 0 : p(
|
|
4522
|
+
const E = yield p == null ? void 0 : p(R);
|
|
4511
4523
|
f(
|
|
4512
4524
|
t,
|
|
4513
4525
|
n === fe.DESKTOP ? "attributes.src" : "mobileAttributes.src",
|
|
4514
4526
|
E
|
|
4515
4527
|
);
|
|
4516
4528
|
const se = Ve(h);
|
|
4517
|
-
|
|
4529
|
+
Ne(
|
|
4518
4530
|
se,
|
|
4519
4531
|
n === fe.DESKTOP ? "attributes.src" : "mobileAttributes.src",
|
|
4520
4532
|
E
|
|
4521
4533
|
), V.current = se;
|
|
4522
|
-
} catch (
|
|
4523
|
-
console.error(
|
|
4534
|
+
} catch (R) {
|
|
4535
|
+
console.error(R), Wt.error(String(R));
|
|
4524
4536
|
} finally {
|
|
4525
4537
|
G(!1);
|
|
4526
4538
|
}
|
|
4527
4539
|
});
|
|
4528
|
-
return h ? /* @__PURE__ */
|
|
4540
|
+
return h ? /* @__PURE__ */ S.createElement(Zt, { defaultActiveKey: ["0", "1", "2", "3"] }, /* @__PURE__ */ S.createElement(
|
|
4529
4541
|
Te.Item,
|
|
4530
4542
|
{
|
|
4531
4543
|
name: "0",
|
|
4532
4544
|
header: A("Image"),
|
|
4533
|
-
extra: /* @__PURE__ */
|
|
4545
|
+
extra: /* @__PURE__ */ S.createElement(Dt, { loading: x, type: "primary", onClick: J }, A("Save as image"))
|
|
4534
4546
|
},
|
|
4535
|
-
/* @__PURE__ */
|
|
4547
|
+
/* @__PURE__ */ S.createElement(
|
|
4536
4548
|
ie,
|
|
4537
4549
|
{
|
|
4538
4550
|
component: ne.ImageUrl,
|
|
@@ -4542,14 +4554,14 @@ function _t({
|
|
|
4542
4554
|
hideInput: !0
|
|
4543
4555
|
}
|
|
4544
4556
|
)
|
|
4545
|
-
), /* @__PURE__ */
|
|
4557
|
+
), /* @__PURE__ */ S.createElement(Te.Item, { name: "3", header: A("Settings") }, /* @__PURE__ */ S.createElement(
|
|
4546
4558
|
ne.TextAreaField,
|
|
4547
4559
|
{
|
|
4548
4560
|
name: "data.text",
|
|
4549
4561
|
path: t,
|
|
4550
4562
|
label: A("Content")
|
|
4551
4563
|
}
|
|
4552
|
-
), /* @__PURE__ */
|
|
4564
|
+
), /* @__PURE__ */ S.createElement(
|
|
4553
4565
|
ne.ImageUploaderField,
|
|
4554
4566
|
{
|
|
4555
4567
|
path: t,
|
|
@@ -4558,7 +4570,7 @@ function _t({
|
|
|
4558
4570
|
hideInput: !0,
|
|
4559
4571
|
uploadHandler: p
|
|
4560
4572
|
}
|
|
4561
|
-
), /* @__PURE__ */
|
|
4573
|
+
), /* @__PURE__ */ S.createElement(
|
|
4562
4574
|
ie,
|
|
4563
4575
|
{
|
|
4564
4576
|
component: ne.SliderField,
|
|
@@ -4569,7 +4581,7 @@ function _t({
|
|
|
4569
4581
|
max: 50,
|
|
4570
4582
|
label: A("Margin")
|
|
4571
4583
|
}
|
|
4572
|
-
)), /* @__PURE__ */
|
|
4584
|
+
)), /* @__PURE__ */ S.createElement(Te.Item, { name: "1", header: A("Colors") }, /* @__PURE__ */ S.createElement(
|
|
4573
4585
|
ne.SyncChildrenField,
|
|
4574
4586
|
{
|
|
4575
4587
|
path: t,
|
|
@@ -4577,7 +4589,7 @@ function _t({
|
|
|
4577
4589
|
name: "color",
|
|
4578
4590
|
childrenFieldName: "color"
|
|
4579
4591
|
}
|
|
4580
|
-
), /* @__PURE__ */
|
|
4592
|
+
), /* @__PURE__ */ S.createElement(
|
|
4581
4593
|
ie,
|
|
4582
4594
|
{
|
|
4583
4595
|
component: ne.SelectField,
|
|
@@ -4611,7 +4623,7 @@ function _t({
|
|
|
4611
4623
|
}
|
|
4612
4624
|
]
|
|
4613
4625
|
}
|
|
4614
|
-
), /* @__PURE__ */
|
|
4626
|
+
), /* @__PURE__ */ S.createElement(
|
|
4615
4627
|
ie,
|
|
4616
4628
|
{
|
|
4617
4629
|
component: ne.ButtonGroupField,
|
|
@@ -4629,7 +4641,7 @@ function _t({
|
|
|
4629
4641
|
}
|
|
4630
4642
|
]
|
|
4631
4643
|
}
|
|
4632
|
-
), /* @__PURE__ */
|
|
4644
|
+
), /* @__PURE__ */ S.createElement(
|
|
4633
4645
|
ie,
|
|
4634
4646
|
{
|
|
4635
4647
|
component: ne.ColorPickerField,
|
|
@@ -4637,7 +4649,7 @@ function _t({
|
|
|
4637
4649
|
name: "dot-color",
|
|
4638
4650
|
label: A("Dot color")
|
|
4639
4651
|
}
|
|
4640
|
-
),
|
|
4652
|
+
), v && /* @__PURE__ */ S.createElement(
|
|
4641
4653
|
ie,
|
|
4642
4654
|
{
|
|
4643
4655
|
component: ne.ColorPickerField,
|
|
@@ -4645,7 +4657,7 @@ function _t({
|
|
|
4645
4657
|
name: "dot-color-2",
|
|
4646
4658
|
label: A("Dot color 2")
|
|
4647
4659
|
}
|
|
4648
|
-
),
|
|
4660
|
+
), v && /* @__PURE__ */ S.createElement(
|
|
4649
4661
|
ie,
|
|
4650
4662
|
{
|
|
4651
4663
|
showLimit: !0,
|
|
@@ -4656,7 +4668,7 @@ function _t({
|
|
|
4656
4668
|
max: 360,
|
|
4657
4669
|
label: A("Dot rotation")
|
|
4658
4670
|
}
|
|
4659
|
-
), /* @__PURE__ */
|
|
4671
|
+
), /* @__PURE__ */ S.createElement(ct, null), /* @__PURE__ */ S.createElement(
|
|
4660
4672
|
ie,
|
|
4661
4673
|
{
|
|
4662
4674
|
component: ne.SelectField,
|
|
@@ -4678,7 +4690,7 @@ function _t({
|
|
|
4678
4690
|
}
|
|
4679
4691
|
]
|
|
4680
4692
|
}
|
|
4681
|
-
), /* @__PURE__ */
|
|
4693
|
+
), /* @__PURE__ */ S.createElement(
|
|
4682
4694
|
ie,
|
|
4683
4695
|
{
|
|
4684
4696
|
component: ne.ButtonGroupField,
|
|
@@ -4696,7 +4708,7 @@ function _t({
|
|
|
4696
4708
|
}
|
|
4697
4709
|
]
|
|
4698
4710
|
}
|
|
4699
|
-
), /* @__PURE__ */
|
|
4711
|
+
), /* @__PURE__ */ S.createElement(
|
|
4700
4712
|
ie,
|
|
4701
4713
|
{
|
|
4702
4714
|
component: ne.ColorPickerField,
|
|
@@ -4704,7 +4716,7 @@ function _t({
|
|
|
4704
4716
|
name: "corner-dot-color",
|
|
4705
4717
|
label: A("Corner dot color")
|
|
4706
4718
|
}
|
|
4707
|
-
), X && /* @__PURE__ */
|
|
4719
|
+
), X && /* @__PURE__ */ S.createElement(
|
|
4708
4720
|
ie,
|
|
4709
4721
|
{
|
|
4710
4722
|
component: ne.ColorPickerField,
|
|
@@ -4712,7 +4724,7 @@ function _t({
|
|
|
4712
4724
|
name: "corner-dot-color-2",
|
|
4713
4725
|
label: A("Corner dot color 2")
|
|
4714
4726
|
}
|
|
4715
|
-
), X && /* @__PURE__ */
|
|
4727
|
+
), X && /* @__PURE__ */ S.createElement(
|
|
4716
4728
|
ie,
|
|
4717
4729
|
{
|
|
4718
4730
|
showLimit: !0,
|
|
@@ -4723,7 +4735,7 @@ function _t({
|
|
|
4723
4735
|
max: 360,
|
|
4724
4736
|
label: A("Corner dot rotation")
|
|
4725
4737
|
}
|
|
4726
|
-
), /* @__PURE__ */
|
|
4738
|
+
), /* @__PURE__ */ S.createElement(ct, null), /* @__PURE__ */ S.createElement(
|
|
4727
4739
|
ie,
|
|
4728
4740
|
{
|
|
4729
4741
|
component: ne.SelectField,
|
|
@@ -4745,7 +4757,7 @@ function _t({
|
|
|
4745
4757
|
}
|
|
4746
4758
|
]
|
|
4747
4759
|
}
|
|
4748
|
-
), /* @__PURE__ */
|
|
4760
|
+
), /* @__PURE__ */ S.createElement(
|
|
4749
4761
|
ie,
|
|
4750
4762
|
{
|
|
4751
4763
|
component: ne.ButtonGroupField,
|
|
@@ -4763,7 +4775,7 @@ function _t({
|
|
|
4763
4775
|
}
|
|
4764
4776
|
]
|
|
4765
4777
|
}
|
|
4766
|
-
), /* @__PURE__ */
|
|
4778
|
+
), /* @__PURE__ */ S.createElement(
|
|
4767
4779
|
ie,
|
|
4768
4780
|
{
|
|
4769
4781
|
component: ne.ColorPickerField,
|
|
@@ -4771,7 +4783,7 @@ function _t({
|
|
|
4771
4783
|
name: "corner-square-color",
|
|
4772
4784
|
label: A("Corner Square color")
|
|
4773
4785
|
}
|
|
4774
|
-
),
|
|
4786
|
+
), _ && /* @__PURE__ */ S.createElement(
|
|
4775
4787
|
ie,
|
|
4776
4788
|
{
|
|
4777
4789
|
component: ne.ColorPickerField,
|
|
@@ -4779,7 +4791,7 @@ function _t({
|
|
|
4779
4791
|
name: "corner-square-color-2",
|
|
4780
4792
|
label: A("Corner Square color 2")
|
|
4781
4793
|
}
|
|
4782
|
-
),
|
|
4794
|
+
), _ && /* @__PURE__ */ S.createElement(
|
|
4783
4795
|
ie,
|
|
4784
4796
|
{
|
|
4785
4797
|
showLimit: !0,
|
|
@@ -4790,7 +4802,7 @@ function _t({
|
|
|
4790
4802
|
max: 360,
|
|
4791
4803
|
label: A("Corner Square rotation")
|
|
4792
4804
|
}
|
|
4793
|
-
), /* @__PURE__ */
|
|
4805
|
+
), /* @__PURE__ */ S.createElement(ct, null), /* @__PURE__ */ S.createElement(
|
|
4794
4806
|
ie,
|
|
4795
4807
|
{
|
|
4796
4808
|
component: ne.ColorPickerField,
|
|
@@ -4798,14 +4810,14 @@ function _t({
|
|
|
4798
4810
|
name: "background-color",
|
|
4799
4811
|
label: A("Background color")
|
|
4800
4812
|
}
|
|
4801
|
-
)), /* @__PURE__ */
|
|
4813
|
+
)), /* @__PURE__ */ S.createElement(
|
|
4802
4814
|
Te.Item,
|
|
4803
4815
|
{
|
|
4804
4816
|
contentStyle: { padding: "28px 13px 8px 13px" },
|
|
4805
4817
|
name: "2",
|
|
4806
4818
|
header: A("Dimension")
|
|
4807
4819
|
},
|
|
4808
|
-
/* @__PURE__ */
|
|
4820
|
+
/* @__PURE__ */ S.createElement(
|
|
4809
4821
|
ie,
|
|
4810
4822
|
{
|
|
4811
4823
|
component: ne.Padding,
|
|
@@ -4817,17 +4829,17 @@ function _t({
|
|
|
4817
4829
|
}
|
|
4818
4830
|
class qr extends Mt {
|
|
4819
4831
|
generateElement() {
|
|
4820
|
-
et.registerBlocks([Vt]),
|
|
4832
|
+
et.registerBlocks([Vt]), Ne(Nt, Vt.type, Gr);
|
|
4821
4833
|
}
|
|
4822
4834
|
}
|
|
4823
4835
|
class $r extends Mt {
|
|
4824
4836
|
generateElement() {
|
|
4825
|
-
et.registerBlocks([Ot]),
|
|
4837
|
+
et.registerBlocks([Ot]), Ne(Nt, Ot.type, zr);
|
|
4826
4838
|
}
|
|
4827
4839
|
}
|
|
4828
4840
|
class eo extends Mt {
|
|
4829
4841
|
generateElement() {
|
|
4830
|
-
et.registerBlocks([Pt]),
|
|
4842
|
+
et.registerBlocks([Pt]), Ne(Nt, Pt.type, jr);
|
|
4831
4843
|
}
|
|
4832
4844
|
}
|
|
4833
4845
|
export {
|