textmode.js 0.2.1-beta.2 → 0.2.1-beta.4
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/dist/textmode.esm.js +1131 -1098
- package/dist/textmode.esm.min.js +1391 -1358
- package/dist/textmode.umd.js +7 -7
- package/dist/textmode.umd.min.js +7 -7
- package/dist/types/index.d.ts +2 -2
- package/dist/types/rendering/webgl/Framebuffer.d.ts +23 -12
- package/dist/types/rendering/webgl/Shader.d.ts +18 -2
- package/dist/types/textmode/mixins/AnimationMixin.d.ts +2 -4
- package/dist/types/textmode/mixins/KeyboardMixin.d.ts +74 -18
- package/dist/types/textmode/mixins/MouseMixin.d.ts +100 -7
- package/dist/types/textmode/mixins/RenderingMixin.d.ts +51 -44
- package/package.json +2 -2
package/dist/textmode.esm.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
var q = Object.defineProperty;
|
|
2
2
|
var AA = (E, A, t) => A in E ? q(E, A, { enumerable: !0, configurable: !0, writable: !0, value: t }) : E[A] = t;
|
|
3
|
-
var
|
|
4
|
-
class
|
|
3
|
+
var n = (E, A, t) => AA(E, typeof A != "symbol" ? A + "" : A, t);
|
|
4
|
+
class f extends Error {
|
|
5
5
|
constructor(A, t = {}) {
|
|
6
|
-
super(
|
|
6
|
+
super(f.A(A, t)), this.name = "TextmodeError";
|
|
7
7
|
}
|
|
8
8
|
static A(A, t) {
|
|
9
9
|
return `${A}${t && Object.keys(t).length > 0 ? `
|
|
10
10
|
|
|
11
11
|
📋 Context:` + Object.entries(t).map(([e, s]) => `
|
|
12
|
-
- ${e}: ${
|
|
12
|
+
- ${e}: ${f.C(s)}`).join("") : ""}
|
|
13
13
|
|
|
14
14
|
${"↓".repeat(24)}
|
|
15
15
|
`;
|
|
@@ -19,10 +19,10 @@ ${"↓".repeat(24)}
|
|
|
19
19
|
if (A === void 0) return "undefined";
|
|
20
20
|
if (typeof A == "string") return `"${A}"`;
|
|
21
21
|
if (typeof A == "number" || typeof A == "boolean") return A + "";
|
|
22
|
-
if (Array.isArray(A)) return A.length === 0 ? "[]" : A.length <= 5 ? `[${A.map((t) =>
|
|
22
|
+
if (Array.isArray(A)) return A.length === 0 ? "[]" : A.length <= 5 ? `[${A.map((t) => f.C(t)).join(", ")}]` : `[${A.slice(0, 3).map((t) => f.C(t)).join(", ")}, ... +${A.length - 3} more]`;
|
|
23
23
|
if (typeof A == "object") {
|
|
24
24
|
const t = Object.keys(A);
|
|
25
|
-
return t.length === 0 ? "{}" : t.length <= 3 ? `{ ${t.map((e) => `${e}: ${
|
|
25
|
+
return t.length === 0 ? "{}" : t.length <= 3 ? `{ ${t.map((e) => `${e}: ${f.C(A[e])}`).join(", ")} }` : `{ ${t.slice(0, 2).map((e) => `${e}: ${f.C(A[e])}`).join(", ")}, ... +${t.length - 2} more }`;
|
|
26
26
|
}
|
|
27
27
|
return A + "";
|
|
28
28
|
}
|
|
@@ -30,7 +30,7 @@ ${"↓".repeat(24)}
|
|
|
30
30
|
var tA = ((E) => (E[E.SILENT = 0] = "SILENT", E[E.WARNING = 1] = "WARNING", E[E.ERROR = 2] = "ERROR", E[E.THROW = 3] = "THROW", E))(tA || {});
|
|
31
31
|
const v = class v {
|
|
32
32
|
constructor() {
|
|
33
|
-
|
|
33
|
+
n(this, "P", { globalLevel: 3 });
|
|
34
34
|
}
|
|
35
35
|
static u() {
|
|
36
36
|
return v.D || (v.D = new v()), v.D;
|
|
@@ -41,11 +41,11 @@ const v = class v {
|
|
|
41
41
|
case 0:
|
|
42
42
|
return !1;
|
|
43
43
|
case 1:
|
|
44
|
-
return console.group(e, s), console.warn(
|
|
44
|
+
return console.group(e, s), console.warn(f.A(A, t)), console.groupEnd(), !1;
|
|
45
45
|
case 2:
|
|
46
|
-
return console.group(e, s), console.error(
|
|
46
|
+
return console.group(e, s), console.error(f.A(A, t)), console.groupEnd(), !1;
|
|
47
47
|
default:
|
|
48
|
-
throw new
|
|
48
|
+
throw new f(A, t);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
_(A, t, e) {
|
|
@@ -55,121 +55,121 @@ const v = class v {
|
|
|
55
55
|
this.P.globalLevel = A;
|
|
56
56
|
}
|
|
57
57
|
};
|
|
58
|
-
|
|
59
|
-
let
|
|
60
|
-
const M =
|
|
58
|
+
n(v, "D", null);
|
|
59
|
+
let Y = v;
|
|
60
|
+
const M = Y.u(), X = /* @__PURE__ */ new WeakMap();
|
|
61
61
|
function F(E, A) {
|
|
62
62
|
X.set(E, A);
|
|
63
63
|
}
|
|
64
64
|
function G(E) {
|
|
65
65
|
return X.get(E);
|
|
66
66
|
}
|
|
67
|
-
class
|
|
67
|
+
class J {
|
|
68
68
|
constructor() {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
69
|
+
n(this, "$", 1);
|
|
70
|
+
n(this, "G", 0);
|
|
71
|
+
n(this, "M", 0);
|
|
72
|
+
n(this, "Y", 0);
|
|
73
|
+
n(this, "F", [0, 0, 0]);
|
|
74
|
+
n(this, "R", [1, 1, 1, 1]);
|
|
75
|
+
n(this, "S", [0, 0, 0, 1]);
|
|
76
|
+
n(this, "L", !1);
|
|
77
|
+
n(this, "O", !1);
|
|
78
|
+
n(this, "U", !1);
|
|
79
|
+
n(this, "W", [0, 0]);
|
|
80
|
+
n(this, "H", [0, 0, 0, 1]);
|
|
81
|
+
n(this, "K", []);
|
|
82
82
|
}
|
|
83
83
|
J() {
|
|
84
|
-
this.K.push({ V: this
|
|
84
|
+
this.K.push({ V: this.$, Z: this.G, N: this.M, X: this.Y, W: [...this.W], L: this.L, O: this.O, U: this.U, AA: [...this.F], tA: [...this.R], eA: [...this.S] });
|
|
85
85
|
}
|
|
86
86
|
sA() {
|
|
87
87
|
const A = this.K.pop();
|
|
88
|
-
A ? (this
|
|
88
|
+
A ? (this.$ = A.V, this.G = A.Z, this.M = A.N, this.Y = A.X, this.W = A.W, this.L = A.L, this.O = A.O, this.U = A.U, this.F = A.AA, this.R = A.tA, this.S = A.eA) : console.warn("pop() called without matching push()");
|
|
89
89
|
}
|
|
90
90
|
iA() {
|
|
91
|
-
this.K = [], this.
|
|
91
|
+
this.K = [], this.G = 0, this.M = 0, this.Y = 0;
|
|
92
92
|
}
|
|
93
93
|
BA(A) {
|
|
94
|
-
A.lineWeight = this
|
|
94
|
+
A.lineWeight = this.$, A.rotationX = this.G, A.rotationY = this.M, A.rotationZ = this.Y, A.character[0] = this.F[0], A.character[1] = this.F[1], A.character[2] = this.F[2], A.charColor[0] = this.R[0], A.charColor[1] = this.R[1], A.charColor[2] = this.R[2], A.charColor[3] = this.R[3], A.bgColor[0] = this.S[0], A.bgColor[1] = this.S[1], A.bgColor[2] = this.S[2], A.bgColor[3] = this.S[3], A.flipHorizontally = this.L, A.flipVertically = this.O, A.invert = this.U, A.charRotation[0] = this.W[0], A.charRotation[1] = this.W[1];
|
|
95
95
|
}
|
|
96
96
|
get lineWeight() {
|
|
97
|
-
return this
|
|
97
|
+
return this.$;
|
|
98
98
|
}
|
|
99
99
|
get canvasBackgroundColor() {
|
|
100
|
-
return this.
|
|
100
|
+
return this.H;
|
|
101
101
|
}
|
|
102
102
|
QA(A) {
|
|
103
|
-
this
|
|
103
|
+
this.$ = Math.abs(A);
|
|
104
104
|
}
|
|
105
105
|
EA(A) {
|
|
106
|
-
this.
|
|
106
|
+
this.G = A;
|
|
107
107
|
}
|
|
108
108
|
rA(A) {
|
|
109
|
-
this
|
|
109
|
+
this.M = A;
|
|
110
110
|
}
|
|
111
111
|
nA(A) {
|
|
112
112
|
this.Y = A;
|
|
113
113
|
}
|
|
114
|
-
|
|
114
|
+
oA(A) {
|
|
115
115
|
this.F = A;
|
|
116
116
|
}
|
|
117
|
-
|
|
117
|
+
gA(A, t, e, s = 255) {
|
|
118
118
|
this.R = [A / 255, t / 255, e / 255, s / 255];
|
|
119
119
|
}
|
|
120
120
|
aA(A, t, e, s = 255) {
|
|
121
121
|
this.S = [A / 255, t / 255, e / 255, s / 255];
|
|
122
122
|
}
|
|
123
123
|
hA(A) {
|
|
124
|
-
this.
|
|
124
|
+
this.L = A;
|
|
125
125
|
}
|
|
126
126
|
cA(A) {
|
|
127
|
-
this.
|
|
127
|
+
this.O = A;
|
|
128
128
|
}
|
|
129
|
-
|
|
129
|
+
lA(A) {
|
|
130
130
|
this.U = A;
|
|
131
131
|
}
|
|
132
|
-
|
|
132
|
+
CA(A) {
|
|
133
133
|
const t = 255 * A / 360, e = Math.floor(t) / 255, s = Math.round(t - Math.floor(t));
|
|
134
|
-
this.
|
|
134
|
+
this.W = [e, s];
|
|
135
135
|
}
|
|
136
136
|
DA(A, t, e, s) {
|
|
137
|
-
this.
|
|
137
|
+
this.H = [A / 255, t / 255, e / 255, s / 255];
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
class U {
|
|
141
141
|
constructor(A, t, e = t, s = 1, i = {}, B = null, r = !1) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
this.PA = t, this.uA = e, this.P = { filter: "nearest", wrap: "clamp", format: "rgba", type: "unsigned_byte", ...i }, this.wA = A, this.
|
|
156
|
-
const
|
|
157
|
-
this.
|
|
158
|
-
}
|
|
159
|
-
|
|
142
|
+
n(this, "PA");
|
|
143
|
+
n(this, "uA");
|
|
144
|
+
n(this, "P");
|
|
145
|
+
n(this, "IA", null);
|
|
146
|
+
n(this, "wA");
|
|
147
|
+
n(this, "fA");
|
|
148
|
+
n(this, "dA", []);
|
|
149
|
+
n(this, "pA");
|
|
150
|
+
n(this, "_A", null);
|
|
151
|
+
n(this, "mA", []);
|
|
152
|
+
n(this, "vA", null);
|
|
153
|
+
n(this, "yA", !1);
|
|
154
|
+
n(this, "bA", null);
|
|
155
|
+
this.PA = t, this.uA = e, this.P = { filter: "nearest", wrap: "clamp", format: "rgba", type: "unsigned_byte", ...i }, this.wA = A, this.pA = Math.min(Math.max(1, s), 8), this.vA = B, this.yA = !!r, this.bA = this.yA ? new J() : null;
|
|
156
|
+
const Q = A.getParameter(A.MAX_DRAW_BUFFERS), o = A.getParameter(A.MAX_COLOR_ATTACHMENTS);
|
|
157
|
+
this.pA = Math.min(this.pA, Q, o), this.fA = A.createFramebuffer(), this.$A(), this.GA(), this.mA = Array(this.pA).fill(null);
|
|
158
|
+
}
|
|
159
|
+
$A() {
|
|
160
160
|
const A = this.wA, t = this.P.filter === "linear" ? A.LINEAR : A.NEAREST, e = this.P.wrap === "repeat" ? A.REPEAT : A.CLAMP_TO_EDGE, s = this.P.type === "float" ? A.FLOAT : A.UNSIGNED_BYTE;
|
|
161
|
-
for (let i = 0; i < this.
|
|
161
|
+
for (let i = 0; i < this.pA; i++) {
|
|
162
162
|
const B = A.createTexture();
|
|
163
163
|
A.bindTexture(A.TEXTURE_2D, B), A.texParameteri(A.TEXTURE_2D, A.TEXTURE_MIN_FILTER, t), A.texParameteri(A.TEXTURE_2D, A.TEXTURE_MAG_FILTER, t), A.texParameteri(A.TEXTURE_2D, A.TEXTURE_WRAP_S, e), A.texParameteri(A.TEXTURE_2D, A.TEXTURE_WRAP_T, e), A.texImage2D(A.TEXTURE_2D, 0, A.RGBA, this.PA, this.uA, 0, A.RGBA, s, null), this.dA.push(B);
|
|
164
164
|
}
|
|
165
165
|
A.bindTexture(A.TEXTURE_2D, null);
|
|
166
166
|
}
|
|
167
|
-
|
|
167
|
+
GA() {
|
|
168
168
|
const A = this.wA;
|
|
169
|
-
if (A.bindFramebuffer(A.FRAMEBUFFER, this.fA), this.
|
|
169
|
+
if (A.bindFramebuffer(A.FRAMEBUFFER, this.fA), this.pA === 1) A.framebufferTexture2D(A.FRAMEBUFFER, A.COLOR_ATTACHMENT0, A.TEXTURE_2D, this.dA[0], 0);
|
|
170
170
|
else {
|
|
171
171
|
const e = [];
|
|
172
|
-
for (let s = 0; s < this.
|
|
172
|
+
for (let s = 0; s < this.pA; s++) {
|
|
173
173
|
const i = A.COLOR_ATTACHMENT0 + s;
|
|
174
174
|
A.framebufferTexture2D(A.FRAMEBUFFER, i, A.TEXTURE_2D, this.dA[s], 0), e.push(i);
|
|
175
175
|
}
|
|
@@ -178,25 +178,25 @@ class U {
|
|
|
178
178
|
const t = A.checkFramebufferStatus(A.FRAMEBUFFER);
|
|
179
179
|
t !== A.FRAMEBUFFER_COMPLETE && console.error("GLFramebuffer is not complete:", t), A.bindFramebuffer(A.FRAMEBUFFER, null);
|
|
180
180
|
}
|
|
181
|
-
|
|
181
|
+
xA(A) {
|
|
182
182
|
const t = this.wA;
|
|
183
183
|
t.bindTexture(t.TEXTURE_2D, this.dA[0]), t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL, 1), t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, t.RGBA, t.UNSIGNED_BYTE, A), t.bindTexture(t.TEXTURE_2D, null);
|
|
184
184
|
}
|
|
185
185
|
resize(A, t) {
|
|
186
|
-
this.PA = A, this.uA = t, this.IA = null, this.mA = Array(this.
|
|
186
|
+
this.PA = A, this.uA = t, this.IA = null, this.mA = Array(this.pA).fill(null);
|
|
187
187
|
const e = this.wA, s = this.P.type === "float" ? e.FLOAT : e.UNSIGNED_BYTE;
|
|
188
188
|
for (const i of this.dA) e.bindTexture(e.TEXTURE_2D, i), e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, this.PA, this.uA, 0, e.RGBA, s, null);
|
|
189
189
|
e.bindTexture(e.TEXTURE_2D, null);
|
|
190
190
|
}
|
|
191
|
-
|
|
191
|
+
MA(A) {
|
|
192
192
|
const t = this.wA, e = this.mA[A];
|
|
193
193
|
if (e) return e;
|
|
194
194
|
const s = this.PA, i = this.uA, B = new Uint8Array(s * i * 4), r = t.getParameter(t.READ_FRAMEBUFFER_BINDING);
|
|
195
195
|
t.bindFramebuffer(t.READ_FRAMEBUFFER, this.fA), t.readBuffer(t.COLOR_ATTACHMENT0 + A), t.readPixels(0, 0, s, i, t.RGBA, t.UNSIGNED_BYTE, B), t.bindFramebuffer(t.READ_FRAMEBUFFER, r);
|
|
196
|
-
const
|
|
197
|
-
for (let
|
|
198
|
-
const
|
|
199
|
-
o.set(B.subarray(
|
|
196
|
+
const Q = 4 * s, o = new Uint8Array(B.length);
|
|
197
|
+
for (let g = 0; g < i; g++) {
|
|
198
|
+
const a = (i - 1 - g) * Q, h = g * Q;
|
|
199
|
+
o.set(B.subarray(a, a + Q), h);
|
|
200
200
|
}
|
|
201
201
|
return this.mA[A] = o, o;
|
|
202
202
|
}
|
|
@@ -207,21 +207,21 @@ class U {
|
|
|
207
207
|
const B = ((e = (t = this.vA).YA) == null ? void 0 : e.call(t)) ?? null;
|
|
208
208
|
B && this.vA.FA(B), this.yA && this.bA && ((i = (s = this.vA).RA) == null || i.call(s, this.bA));
|
|
209
209
|
}
|
|
210
|
-
this.
|
|
211
|
-
for (let B = 0; B < this.
|
|
210
|
+
this._A = { framebuffer: A.getParameter(A.FRAMEBUFFER_BINDING), viewport: A.getParameter(A.VIEWPORT) }, A.bindFramebuffer(A.FRAMEBUFFER, this.fA), this.mA = Array(this.pA).fill(null);
|
|
211
|
+
for (let B = 0; B < this.pA; B++) A.clearBufferfv(A.COLOR, B, new Float32Array([0, 0, 0, 0]));
|
|
212
212
|
A.viewport(0, 0, this.PA, this.uA), F(A, [0, 0, this.PA, this.uA]);
|
|
213
213
|
}
|
|
214
214
|
end() {
|
|
215
215
|
var t, e, s, i;
|
|
216
|
-
if (!this.
|
|
216
|
+
if (!this._A) return;
|
|
217
217
|
const A = this.wA;
|
|
218
218
|
if (this.vA) {
|
|
219
219
|
const B = ((e = (t = this.vA).YA) == null ? void 0 : e.call(t)) ?? null;
|
|
220
220
|
B && this.vA.FA(B);
|
|
221
221
|
}
|
|
222
|
-
A.bindFramebuffer(A.FRAMEBUFFER, this.
|
|
222
|
+
A.bindFramebuffer(A.FRAMEBUFFER, this._A.framebuffer), A.viewport(...this._A.viewport), F(A, this._A.viewport), this._A = null, this.vA && this.yA && this.bA && ((i = (s = this.vA).SA) == null || i.call(s));
|
|
223
223
|
}
|
|
224
|
-
|
|
224
|
+
kA() {
|
|
225
225
|
const A = this.wA;
|
|
226
226
|
A.deleteFramebuffer(this.fA);
|
|
227
227
|
for (const t of this.dA) A.deleteTexture(t);
|
|
@@ -232,43 +232,32 @@ class U {
|
|
|
232
232
|
get height() {
|
|
233
233
|
return this.uA;
|
|
234
234
|
}
|
|
235
|
-
get pixels() {
|
|
236
|
-
return this.IA;
|
|
237
|
-
}
|
|
238
|
-
get options() {
|
|
239
|
-
return { ...this.P };
|
|
240
|
-
}
|
|
241
|
-
get framebuffer() {
|
|
242
|
-
return this.fA;
|
|
243
|
-
}
|
|
244
|
-
get texture() {
|
|
245
|
-
return this.dA[0];
|
|
246
|
-
}
|
|
247
235
|
get textures() {
|
|
248
236
|
return [...this.dA];
|
|
249
237
|
}
|
|
250
|
-
get attachmentCount() {
|
|
251
|
-
return this._A;
|
|
252
|
-
}
|
|
253
238
|
}
|
|
254
239
|
function N(E) {
|
|
255
240
|
return typeof E == "string" ? E : E.sourceCode;
|
|
256
241
|
}
|
|
257
242
|
class T {
|
|
258
243
|
constructor(A, t, e) {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
this
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
244
|
+
n(this, "wA");
|
|
245
|
+
n(this, "zA");
|
|
246
|
+
n(this, "LA", /* @__PURE__ */ new Map());
|
|
247
|
+
n(this, "OA", /* @__PURE__ */ new Map());
|
|
248
|
+
n(this, "TA", 0);
|
|
249
|
+
this.wA = A, this.zA = this.UA(N(t), N(e)), this.WA();
|
|
250
|
+
}
|
|
251
|
+
WA() {
|
|
252
|
+
const A = this.wA.getProgramParameter(this.zA, this.wA.ACTIVE_UNIFORMS);
|
|
267
253
|
for (let t = 0; t < A; t++) {
|
|
268
|
-
const e = this.wA.getActiveUniform(this.
|
|
254
|
+
const e = this.wA.getActiveUniform(this.zA, t);
|
|
269
255
|
if (e) {
|
|
270
|
-
const s = this.wA.getUniformLocation(this.
|
|
271
|
-
s && this.
|
|
256
|
+
const s = this.wA.getUniformLocation(this.zA, e.name);
|
|
257
|
+
if (s && (this.LA.set(e.name, s), this.OA.set(e.name, { type: e.type, size: e.size }), e.size > 1)) {
|
|
258
|
+
const i = e.name.replace(/\[.*\]$/, "");
|
|
259
|
+
this.LA.has(i) || (this.LA.set(i, s), this.OA.set(i, { type: e.type, size: e.size }));
|
|
260
|
+
}
|
|
272
261
|
}
|
|
273
262
|
}
|
|
274
263
|
}
|
|
@@ -288,196 +277,237 @@ class T {
|
|
|
288
277
|
}
|
|
289
278
|
return e;
|
|
290
279
|
}
|
|
291
|
-
WA() {
|
|
292
|
-
this.wA.useProgram(this.kA), this.KA();
|
|
293
|
-
}
|
|
294
280
|
KA() {
|
|
295
|
-
this.
|
|
281
|
+
this.wA.useProgram(this.zA), this.JA();
|
|
296
282
|
}
|
|
297
|
-
JA(
|
|
298
|
-
|
|
283
|
+
JA() {
|
|
284
|
+
this.TA = 0;
|
|
299
285
|
}
|
|
300
|
-
|
|
301
|
-
|
|
286
|
+
VA(A) {
|
|
287
|
+
for (const [t, e] of Object.entries(A)) this.ZA(t, e);
|
|
302
288
|
}
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
289
|
+
NA(A) {
|
|
290
|
+
return this.LA.has(A);
|
|
291
|
+
}
|
|
292
|
+
XA(A) {
|
|
293
|
+
return this.OA.get(A) || null;
|
|
294
|
+
}
|
|
295
|
+
jA() {
|
|
296
|
+
const A = [];
|
|
297
|
+
for (const [t, e] of this.OA.entries()) A.push({ name: t, ...e });
|
|
298
|
+
return A;
|
|
299
|
+
}
|
|
300
|
+
ZA(A, t) {
|
|
301
|
+
var Q;
|
|
302
|
+
const e = this.LA.get(A);
|
|
303
|
+
if (!e) return;
|
|
304
|
+
const s = this.OA.get(A);
|
|
305
|
+
if (!s) return void console.warn(`No type information found for uniform '${A}'`);
|
|
306
|
+
const { type: i, size: B } = s, r = this.wA;
|
|
307
|
+
if (typeof t == "number") switch (i) {
|
|
308
|
+
case r.INT:
|
|
309
|
+
case r.BOOL:
|
|
310
|
+
r.uniform1i(e, t);
|
|
310
311
|
break;
|
|
311
|
-
case
|
|
312
|
-
|
|
312
|
+
case r.FLOAT:
|
|
313
|
+
r.uniform1f(e, t);
|
|
313
314
|
break;
|
|
314
|
-
|
|
315
|
-
|
|
315
|
+
default:
|
|
316
|
+
console.warn(`Unexpected uniform type for scalar '${A}': ${i}`), r.uniform1f(e, t);
|
|
317
|
+
}
|
|
318
|
+
else if (typeof t == "boolean") r.uniform1i(e, t ? 1 : 0);
|
|
319
|
+
else if (Array.isArray(t)) if (Array.isArray(t[0])) {
|
|
320
|
+
const o = t, g = ((Q = o[0]) == null ? void 0 : Q.length) || 0, a = o.flat();
|
|
321
|
+
switch (i) {
|
|
322
|
+
case r.FLOAT_VEC2:
|
|
323
|
+
g === 2 ? r.uniform2fv(e, a) : console.warn(`Vector length mismatch for '${A}': expected 2, got ${g}`);
|
|
324
|
+
break;
|
|
325
|
+
case r.FLOAT_VEC3:
|
|
326
|
+
g === 3 ? r.uniform3fv(e, a) : console.warn(`Vector length mismatch for '${A}': expected 3, got ${g}`);
|
|
327
|
+
break;
|
|
328
|
+
case r.FLOAT_VEC4:
|
|
329
|
+
g === 4 ? r.uniform4fv(e, a) : console.warn(`Vector length mismatch for '${A}': expected 4, got ${g}`);
|
|
330
|
+
break;
|
|
331
|
+
default:
|
|
332
|
+
console.warn(`Unsupported uniform type for vector array '${A}': ${i}`);
|
|
333
|
+
}
|
|
334
|
+
} else switch (i) {
|
|
335
|
+
case r.FLOAT_VEC2:
|
|
336
|
+
t.length === 2 ? r.uniform2f(e, t[0], t[1]) : console.warn(`Vector length mismatch for '${A}': expected 2, got ${t.length}`);
|
|
337
|
+
break;
|
|
338
|
+
case r.FLOAT_VEC3:
|
|
339
|
+
t.length === 3 ? r.uniform3f(e, t[0], t[1], t[2]) : console.warn(`Vector length mismatch for '${A}': expected 3, got ${t.length}`);
|
|
340
|
+
break;
|
|
341
|
+
case r.FLOAT_VEC4:
|
|
342
|
+
t.length === 4 ? r.uniform4f(e, t[0], t[1], t[2], t[3]) : console.warn(`Vector length mismatch for '${A}': expected 4, got ${t.length}`);
|
|
343
|
+
break;
|
|
344
|
+
case r.INT:
|
|
345
|
+
B > 1 ? r.uniform1iv(e, t) : console.warn(`Array provided for scalar uniform '${A}'`);
|
|
346
|
+
break;
|
|
347
|
+
case r.FLOAT:
|
|
348
|
+
B > 1 ? r.uniform1fv(e, t) : console.warn(`Array provided for scalar uniform '${A}'`);
|
|
316
349
|
break;
|
|
317
350
|
default:
|
|
318
|
-
|
|
351
|
+
console.warn(`Unsupported uniform type for array '${A}': ${i}`);
|
|
319
352
|
}
|
|
320
353
|
else if (t instanceof WebGLTexture) {
|
|
321
|
-
const
|
|
322
|
-
|
|
354
|
+
const o = this.qA();
|
|
355
|
+
r.uniform1i(e, o), r.activeTexture(r.TEXTURE0 + o), r.bindTexture(r.TEXTURE_2D, t);
|
|
323
356
|
} else if (t instanceof U) {
|
|
324
|
-
const
|
|
325
|
-
|
|
326
|
-
} else if (typeof t == "object" && "texture" in t) {
|
|
327
|
-
const s = this.NA();
|
|
328
|
-
this.wA.uniform1i(e, s), this.wA.activeTexture(this.wA.TEXTURE0 + s), this.wA.bindTexture(this.wA.TEXTURE_2D, t.texture);
|
|
357
|
+
const o = this.qA();
|
|
358
|
+
r.uniform1i(e, o), r.activeTexture(r.TEXTURE0 + o), r.bindTexture(r.TEXTURE_2D, t.textures[0]);
|
|
329
359
|
} else console.warn(`Unsupported uniform type for '${A}':`, typeof t);
|
|
330
360
|
}
|
|
331
|
-
|
|
332
|
-
return this.
|
|
361
|
+
qA() {
|
|
362
|
+
return this.TA++;
|
|
333
363
|
}
|
|
334
|
-
get
|
|
335
|
-
return this.
|
|
364
|
+
get At() {
|
|
365
|
+
return this.zA;
|
|
336
366
|
}
|
|
337
|
-
|
|
338
|
-
this.wA.deleteProgram(this.
|
|
367
|
+
kA() {
|
|
368
|
+
this.wA.deleteProgram(this.zA);
|
|
339
369
|
}
|
|
340
370
|
}
|
|
341
|
-
const
|
|
342
|
-
in vec2 a_position;in vec2 a_texCoord;in vec2 a_instancePosition;in vec2 a_instanceSize;in vec3 a_instanceCharacter;in vec4 a_instancePrimaryColor;in vec4 a_instanceSecondaryColor;in vec2 a_instanceRotation;in vec3 a_instanceTransform;in vec3 a_instanceGlobalRotation;in vec2 a_instanceRotationCenter;in vec2 a_instanceBezierCP1;in vec2 a_instanceBezierCP2;in vec2 a_instanceBezierStart;in vec2 a_instanceBezierEnd;in vec2 a_instanceArcAngles;uniform float k;uniform vec2
|
|
371
|
+
const L = `#version 300 es
|
|
372
|
+
in vec2 a_position;in vec2 a_texCoord;in vec2 a_instancePosition;in vec2 a_instanceSize;in vec3 a_instanceCharacter;in vec4 a_instancePrimaryColor;in vec4 a_instanceSecondaryColor;in vec2 a_instanceRotation;in vec3 a_instanceTransform;in vec3 a_instanceGlobalRotation;in vec2 a_instanceRotationCenter;in vec2 a_instanceBezierCP1;in vec2 a_instanceBezierCP2;in vec2 a_instanceBezierStart;in vec2 a_instanceBezierEnd;in vec2 a_instanceArcAngles;uniform float k;uniform vec2 t;out vec2 v_uv;out vec3 v_character;out vec4 v_primaryColor;out vec4 v_secondaryColor;out vec2 v_rotation;out vec3 v_transform;mat3 A(float B){float C=sin(B),D=cos(B);return mat3(1,0,0,0,D,-C,0,C,D);}mat3 E(float B){float C=sin(B),D=cos(B);return mat3(D,0,C,0,1,0,-C,0,D);}mat3 F(float B){float C=sin(B),D=cos(B);return mat3(D,-C,0,C,D,0,0,0,1);}vec2 G(float t,vec2 H,vec2 I,vec2 J,vec2 K){float L=1.-t,M=L*L,N=t*t;return M*L*H+3.*M*t*I+3.*L*N*J+N*t*K;}vec2 O(float t,vec2 H,vec2 I,vec2 J,vec2 K){float L=1.-t,M=L*L,N=t*t;return-3.*M*H+3.*M*I-6.*L*t*I+6.*L*t*J-3.*N*J+3.*N*K;}void main(){v_uv=a_texCoord;v_character=a_instanceCharacter;v_primaryColor=a_instancePrimaryColor;v_secondaryColor=a_instanceSecondaryColor;v_rotation=a_instanceRotation;v_transform=a_instanceTransform;vec2 P;bool Q=length(a_instanceBezierCP1)+length(a_instanceBezierCP2)+length(a_instanceBezierStart)+length(a_instanceBezierEnd)>0.;bool R=a_instanceArcAngles.x!=0.||a_instanceArcAngles.y!=0.;if(Q){float t=a_position.x;vec2 S=G(t,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);vec2 T=O(t,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);float U=length(T);T=U>0.?T/U:vec2(1,0);P=S+vec2(-T.y,T.x)*a_position.y*a_instanceSize.y;}else if(R){float C=a_instanceArcAngles.x,V=a_instanceArcAngles.y;C=mod(C,6.28318530718);if(C<0.)C+=6.28318530718;V=mod(V,6.28318530718);if(V<0.)V+=6.28318530718;float W=C-V;if(W<=0.)W+=6.28318530718;float X=C-a_position.x*W;vec2 Y=vec2(cos(X),sin(X))*a_position.y;P=Y*a_instanceSize*.5+a_instanceSize*.5+a_instancePosition;}else{P=a_position*a_instanceSize+a_instancePosition;}vec2 Z=(P/t)*2.-1.;Z.y=-Z.y;if(length(a_instanceGlobalRotation)>0.){vec3 a=vec3(Z-a_instanceRotationCenter,0);a.x*=k;if(a_instanceGlobalRotation.x!=0.)a=A(-a_instanceGlobalRotation.x)*a;if(a_instanceGlobalRotation.y!=0.)a=E(-a_instanceGlobalRotation.y)*a;if(a_instanceGlobalRotation.z!=0.)a=F(-a_instanceGlobalRotation.z)*a;a.x/=k;Z=a.xy+a_instanceRotationCenter;}gl_Position=vec4(Z,0,1);}`;
|
|
343
373
|
class eA {
|
|
344
374
|
constructor(A) {
|
|
345
|
-
|
|
346
|
-
|
|
375
|
+
n(this, "tt", /* @__PURE__ */ new Map());
|
|
376
|
+
n(this, "wA");
|
|
347
377
|
this.wA = A;
|
|
348
378
|
}
|
|
349
|
-
|
|
350
|
-
if (!this.
|
|
379
|
+
et(A, t) {
|
|
380
|
+
if (!this.tt.has(A)) {
|
|
351
381
|
const e = t();
|
|
352
|
-
this.
|
|
382
|
+
this.tt.set(A, e);
|
|
353
383
|
}
|
|
354
|
-
return this.
|
|
384
|
+
return this.tt.get(A);
|
|
355
385
|
}
|
|
356
|
-
|
|
357
|
-
return this.
|
|
386
|
+
st() {
|
|
387
|
+
return this.et("mrt-copy", () => new T(this.wA, L, `#version 300 es
|
|
358
388
|
precision highp float;in vec2 v_uv;uniform sampler2D l;uniform sampler2D m;uniform sampler2D n;uniform sampler2D o;uniform sampler2D p;uniform vec2 q;layout(location=0)out vec4 o_character;layout(location=1)out vec4 o_primaryColor;layout(location=2)out vec4 o_secondaryColor;layout(location=3)out vec4 o_rotation;layout(location=4)out vec4 o_transform;void main(){vec2 A=vec2(v_uv.x,1.-v_uv.y);vec2 B=A*q;vec2 C=(floor(B)+0.5f)/q;vec4 D=texture(l,C);vec4 E=texture(m,C);if(E.a==0.){discard;}vec4 F=texture(n,C);vec4 G=texture(o,C);vec4 H=texture(p,C);o_character=D;o_primaryColor=E;o_secondaryColor=F;o_rotation=G;o_transform=H;}`));
|
|
359
389
|
}
|
|
360
390
|
YA() {
|
|
361
|
-
return this.
|
|
391
|
+
return this.et("mrt-draw", () => new T(this.wA, L, `#version 300 es
|
|
362
392
|
precision highp float;in vec2 v_uv;in vec3 v_character;in vec4 v_primaryColor;in vec4 v_secondaryColor;in vec2 v_rotation;in vec3 v_transform;layout(location=0)out vec4 o_character;layout(location=1)out vec4 o_primaryColor;layout(location=2)out vec4 o_secondaryColor;layout(location=3)out vec4 o_rotation;layout(location=4)out vec4 o_transform;void main(){o_character=vec4(v_character,1.);o_primaryColor=v_primaryColor;o_secondaryColor=v_secondaryColor;o_rotation=vec4(v_rotation,0.,1.);o_transform=vec4(v_transform,1.);}`));
|
|
363
393
|
}
|
|
364
|
-
|
|
365
|
-
return this.
|
|
394
|
+
it() {
|
|
395
|
+
return this.et("ascii-conversion", () => new T(this.wA, "attribute vec2 a_position;attribute vec2 a_texCoord;varying vec2 v_uv;void main(){v_uv=a_texCoord;gl_Position=vec4(a_position,0.,1.);}", "precision mediump float;uniform sampler2D a;uniform vec2 b;uniform sampler2D d;uniform sampler2D e;uniform sampler2D f;uniform sampler2D c;uniform sampler2D g;uniform vec2 h;uniform vec2 i;uniform vec2 j;mat2 A(float B){float C=sin(B);float c=cos(B);return mat2(c,-C,C,c);}void main(){vec2 D=(gl_FragCoord.xy-j)/i;vec2 E=D*h;vec2 F=floor(E);vec2 G=(F+0.5)/h;vec4 H=texture2D(d,G);vec4 I=texture2D(e,G);vec4 J=texture2D(f,G);bool K=J.r>0.5;bool L=J.g>0.5;bool M=J.b>0.5;vec4 N=texture2D(c,G);int O=int(N.r*255.+0.5)+int(N.g*255.+0.5)*256;int P=int(mod(float(O),b.x));int Q=O/int(b.x);float R=(b.y-1.)-float(Q);vec2 S=vec2(float(P),R)/b;vec4 T=texture2D(g,G);float U=T.r*255.+T.g;float V=-(U*360./255.)*0.017453292;vec2 W=fract(E)-0.5;if(L)W.x=-W.x;if(M)W.y=-W.y;W=A(V)*W+0.5;vec2 X=1./b;vec2 Y=S+W*X;vec2 Z=S+X;if(any(lessThan(Y,S))||any(greaterThan(Y,Z))){gl_FragColor=K?H:I;return;}vec4 a=texture2D(a,Y);if(K)a.rgb=1.-a.rgb;gl_FragColor=mix(I,H,a);}"));
|
|
366
396
|
}
|
|
367
|
-
|
|
368
|
-
return new T(this.wA,
|
|
397
|
+
Bt(A) {
|
|
398
|
+
return new T(this.wA, L, A);
|
|
369
399
|
}
|
|
370
|
-
|
|
400
|
+
Qt(A, t) {
|
|
371
401
|
return new T(this.wA, A, t);
|
|
372
402
|
}
|
|
373
|
-
|
|
374
|
-
for (const A of this.
|
|
375
|
-
this.
|
|
403
|
+
kA() {
|
|
404
|
+
for (const A of this.tt.values()) A.kA();
|
|
405
|
+
this.tt.clear();
|
|
376
406
|
}
|
|
377
407
|
}
|
|
378
408
|
var D = ((E) => (E.RECTANGLE = "rectangle", E.LINE = "line", E.ELLIPSE = "ellipse", E.ARC = "arc", E.TRIANGLE = "triangle", E.BEZIER_CURVE = "bezier_curve", E.CUSTOM = "custom", E))(D || {});
|
|
379
409
|
class sA {
|
|
380
410
|
constructor(A) {
|
|
381
|
-
|
|
382
|
-
|
|
411
|
+
n(this, "wA");
|
|
412
|
+
n(this, "Et", /* @__PURE__ */ new Map());
|
|
383
413
|
this.wA = A;
|
|
384
414
|
}
|
|
385
|
-
|
|
415
|
+
rt(A, t, e, s) {
|
|
386
416
|
const i = this.wA;
|
|
387
|
-
let B = this.
|
|
388
|
-
B || (B = /* @__PURE__ */ new Map(), this.
|
|
417
|
+
let B = this.Et.get(A);
|
|
418
|
+
B || (B = /* @__PURE__ */ new Map(), this.Et.set(A, B));
|
|
389
419
|
let r = B.get(t) || null;
|
|
390
420
|
if (!r) {
|
|
391
421
|
r = i.createVertexArray(), B.set(t, r), i.bindVertexArray(r), i.bindBuffer(i.ARRAY_BUFFER, s);
|
|
392
|
-
const
|
|
393
|
-
|
|
422
|
+
const Q = i.getAttribLocation(A, "a_position");
|
|
423
|
+
Q !== -1 && (i.enableVertexAttribArray(Q), i.vertexAttribPointer(Q, e.ot.nt.size, i.FLOAT, !1, e.gt, e.ot.nt.offset), i.vertexAttribDivisor(Q, 0));
|
|
394
424
|
const o = i.getAttribLocation(A, "a_texCoord");
|
|
395
|
-
o !== -1 && (i.enableVertexAttribArray(o), i.vertexAttribPointer(o, e.
|
|
425
|
+
o !== -1 && (i.enableVertexAttribArray(o), i.vertexAttribPointer(o, e.ot.ht.size, i.FLOAT, !1, e.gt, e.ot.ht.offset), i.vertexAttribDivisor(o, 0));
|
|
396
426
|
}
|
|
397
427
|
i.bindVertexArray(r);
|
|
398
428
|
}
|
|
399
|
-
|
|
429
|
+
ct() {
|
|
400
430
|
this.wA.bindVertexArray(null);
|
|
401
431
|
}
|
|
402
|
-
|
|
432
|
+
kA() {
|
|
403
433
|
const A = this.wA;
|
|
404
|
-
for (const [, t] of this.
|
|
405
|
-
this.
|
|
434
|
+
for (const [, t] of this.Et) for (const [, e] of t) e && A.deleteVertexArray(e);
|
|
435
|
+
this.Et.clear();
|
|
406
436
|
}
|
|
407
437
|
}
|
|
408
438
|
class iA {
|
|
409
439
|
constructor(A, t) {
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
this.wA = A, this.
|
|
416
|
-
}
|
|
417
|
-
|
|
440
|
+
n(this, "lt");
|
|
441
|
+
n(this, "wA");
|
|
442
|
+
n(this, "vA");
|
|
443
|
+
n(this, "Ct", null);
|
|
444
|
+
n(this, "Dt", null);
|
|
445
|
+
this.wA = A, this.lt = new sA(A), this.vA = t;
|
|
446
|
+
}
|
|
447
|
+
Pt(A, t, e) {
|
|
418
448
|
const { shader: s } = A, i = G(this.wA) || this.wA.getParameter(this.wA.VIEWPORT);
|
|
419
|
-
s.
|
|
449
|
+
s.VA({ k: i[2] / i[3], t: [i[2], i[3]] });
|
|
420
450
|
const B = (o) => {
|
|
421
|
-
if (!o || !o.
|
|
422
|
-
const
|
|
451
|
+
if (!o || !o.ut()) return;
|
|
452
|
+
const g = o.unitGeometry, a = o.unitBuffer;
|
|
423
453
|
try {
|
|
424
|
-
this.
|
|
454
|
+
this.lt.rt(s.At, o.type + "", g, a), o.batch.It(s), o.batch.wt(g.ft, g.dt);
|
|
425
455
|
} finally {
|
|
426
|
-
o.batch.
|
|
456
|
+
o.batch._t(s), this.lt.ct(), o.vt();
|
|
427
457
|
}
|
|
428
458
|
};
|
|
429
|
-
let r = null,
|
|
459
|
+
let r = null, Q = null;
|
|
430
460
|
for (const o of t) {
|
|
431
461
|
if (o.type === D.CUSTOM) {
|
|
432
|
-
|
|
462
|
+
Q && (B(Q), r = null, Q = null), this.yt(A, o.params, o.state, e.get(D.RECTANGLE));
|
|
433
463
|
continue;
|
|
434
464
|
}
|
|
435
|
-
r !== null && o.type !== r && (B(
|
|
436
|
-
let
|
|
437
|
-
|
|
465
|
+
r !== null && o.type !== r && (B(Q), r = null, Q = null);
|
|
466
|
+
let g = Q;
|
|
467
|
+
g && o.type === r || (g = e.get(o.type) || null, Q = g, r = o.type), g && g.bt(o.params, o.state);
|
|
438
468
|
}
|
|
439
|
-
B(
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
const { x: i, y: B, width: r, height:
|
|
443
|
-
if (o === this
|
|
444
|
-
const
|
|
445
|
-
|
|
446
|
-
const h = this
|
|
447
|
-
this.
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
t.
|
|
469
|
+
B(Q);
|
|
470
|
+
}
|
|
471
|
+
yt(A, t, e, s) {
|
|
472
|
+
const { x: i, y: B, width: r, height: Q, shader: o, uniforms: g } = t;
|
|
473
|
+
if (o === this.$t()) return this.Gt(s, o, g, Math.floor(i), Math.floor(B), Math.max(1, Math.floor(r)), Math.max(1, Math.floor(Q)), e), void A.shader.KA();
|
|
474
|
+
const a = this.xt(Math.max(1, Math.floor(r)), Math.max(1, Math.floor(Q)));
|
|
475
|
+
a.begin(), this.Gt(s, o, g, 0, 0, a.width, a.height, {}), a.end();
|
|
476
|
+
const h = this.$t(), c = { l: a.textures[0], m: a.textures[1], n: a.textures[2], o: a.textures[3], p: a.textures[4], q: [a.width, a.height] };
|
|
477
|
+
this.Gt(s, h, c, Math.floor(i), Math.floor(B), Math.max(1, Math.floor(r)), Math.max(1, Math.floor(Q)), e), A.shader.KA();
|
|
478
|
+
}
|
|
479
|
+
Gt(A, t, e, s, i, B, r, Q) {
|
|
480
|
+
t.KA(), t.VA(e);
|
|
451
481
|
const o = this.wA.getParameter(this.wA.VIEWPORT);
|
|
452
|
-
if (t.
|
|
453
|
-
const
|
|
482
|
+
if (t.VA({ k: o[2] / o[3], t: [o[2], o[3]] }), A.vt(), A.bt({ x: s, y: i, width: B, height: r }, Q), A.ut()) {
|
|
483
|
+
const g = A.unitGeometry, a = A.unitBuffer;
|
|
454
484
|
try {
|
|
455
|
-
this.
|
|
485
|
+
this.lt.rt(t.At, A.type + "", g, a), A.batch.It(t), A.batch.wt(g.ft, g.dt);
|
|
456
486
|
} finally {
|
|
457
|
-
A.batch.
|
|
487
|
+
A.batch._t(t), this.lt.ct(), A.vt();
|
|
458
488
|
}
|
|
459
489
|
}
|
|
460
490
|
}
|
|
461
|
-
|
|
462
|
-
return this.vA.
|
|
491
|
+
$t() {
|
|
492
|
+
return this.vA.st();
|
|
463
493
|
}
|
|
464
|
-
|
|
465
|
-
return this.
|
|
494
|
+
xt(A, t) {
|
|
495
|
+
return this.Ct && this.Dt && this.Dt.w === A && this.Dt.h === t || (this.Ct && this.Ct.kA(), this.Ct = new U(this.wA, A, t, 5), this.Dt = { w: A, h: t }), this.Ct;
|
|
466
496
|
}
|
|
467
497
|
}
|
|
468
498
|
class BA {
|
|
469
499
|
constructor() {
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
if (this
|
|
476
|
-
const e = { id: this.
|
|
477
|
-
this.
|
|
500
|
+
n(this, "Mt", []);
|
|
501
|
+
n(this, "Yt", 1);
|
|
502
|
+
n(this, "Ft", 0);
|
|
503
|
+
}
|
|
504
|
+
Rt(A) {
|
|
505
|
+
if (this.Ft >= this.Mt.length) {
|
|
506
|
+
const e = { id: this.Yt++, type: A, params: {}, state: { V: 1, Z: 0, N: 0, X: 0, character: [0, 0, 0], charColor: [1, 1, 1, 1], bgColor: [0, 0, 0, 1], flipHorizontally: !1, flipVertically: !1, invert: !1, charRotation: [0, 0] } };
|
|
507
|
+
this.Mt.push(e);
|
|
478
508
|
}
|
|
479
|
-
const t = this.
|
|
480
|
-
switch (t.id = this.
|
|
509
|
+
const t = this.Mt[this.Ft];
|
|
510
|
+
switch (t.id = this.Yt++, t.type = A, A) {
|
|
481
511
|
case D.RECTANGLE:
|
|
482
512
|
case D.ELLIPSE:
|
|
483
513
|
t.params && "width" in t.params || (t.params = { x: 0, y: 0, width: 0, height: 0 });
|
|
@@ -500,403 +530,403 @@ class BA {
|
|
|
500
530
|
default:
|
|
501
531
|
t.params || (t.params = {});
|
|
502
532
|
}
|
|
503
|
-
return this
|
|
533
|
+
return this.Ft++, t;
|
|
504
534
|
}
|
|
505
|
-
|
|
506
|
-
const B = this.
|
|
535
|
+
St(A, t, e, s, i) {
|
|
536
|
+
const B = this.Rt(D.RECTANGLE);
|
|
507
537
|
return B.params.x = A, B.params.y = t, B.params.width = e, B.params.height = s, i.BA(B.state), B.id;
|
|
508
538
|
}
|
|
509
|
-
|
|
510
|
-
const
|
|
511
|
-
return
|
|
539
|
+
kt(A, t, e, s, i, B, r) {
|
|
540
|
+
const Q = this.Rt(D.CUSTOM);
|
|
541
|
+
return Q.params.x = A, Q.params.y = t, Q.params.width = e, Q.params.height = s, Q.params.shader = i, Q.params.uniforms = B, r.BA(Q.state), Q.id;
|
|
512
542
|
}
|
|
513
|
-
|
|
514
|
-
const r = this.
|
|
543
|
+
zt(A, t, e, s, i, B) {
|
|
544
|
+
const r = this.Rt(D.LINE);
|
|
515
545
|
return r.params.x1 = A, r.params.y1 = t, r.params.x2 = e, r.params.y2 = s, r.params.thickness = i, B.BA(r.state), r.id;
|
|
516
546
|
}
|
|
517
|
-
|
|
518
|
-
const B = this.
|
|
547
|
+
Lt(A, t, e, s, i) {
|
|
548
|
+
const B = this.Rt(D.ELLIPSE);
|
|
519
549
|
return B.params.x = A, B.params.y = t, B.params.width = e, B.params.height = s, i.BA(B.state), B.id;
|
|
520
550
|
}
|
|
521
|
-
|
|
522
|
-
const
|
|
523
|
-
return
|
|
551
|
+
Ot(A, t, e, s, i, B, r) {
|
|
552
|
+
const Q = this.Rt(D.ARC);
|
|
553
|
+
return Q.params.x = A, Q.params.y = t, Q.params.width = e, Q.params.height = s, Q.params.start = i, Q.params.stop = B, r.BA(Q.state), Q.id;
|
|
524
554
|
}
|
|
525
|
-
|
|
526
|
-
const
|
|
527
|
-
return
|
|
555
|
+
Tt(A, t, e, s, i, B, r) {
|
|
556
|
+
const Q = this.Rt(D.TRIANGLE);
|
|
557
|
+
return Q.params.x1 = A, Q.params.y1 = t, Q.params.x2 = e, Q.params.y2 = s, Q.params.x3 = i, Q.params.y3 = B, r.BA(Q.state), Q.id;
|
|
528
558
|
}
|
|
529
|
-
|
|
530
|
-
const
|
|
531
|
-
return
|
|
559
|
+
Ut(A, t, e, s, i, B, r, Q, o, g) {
|
|
560
|
+
const a = this.Rt(D.BEZIER_CURVE);
|
|
561
|
+
return a.params.x1 = A, a.params.y1 = t, a.params.cp1x = e, a.params.cp1y = s, a.params.cp2x = i, a.params.cp2y = B, a.params.x2 = r, a.params.y2 = Q, a.params.thickness = o, g.BA(a.state), a.id;
|
|
532
562
|
}
|
|
533
563
|
get length() {
|
|
534
|
-
return this
|
|
564
|
+
return this.Ft;
|
|
535
565
|
}
|
|
536
566
|
get isEmpty() {
|
|
537
|
-
return this
|
|
567
|
+
return this.Ft === 0;
|
|
538
568
|
}
|
|
539
|
-
|
|
540
|
-
this
|
|
569
|
+
Wt() {
|
|
570
|
+
this.Ft = 0;
|
|
541
571
|
}
|
|
542
572
|
[Symbol.iterator]() {
|
|
543
573
|
let A = 0;
|
|
544
|
-
const t = this
|
|
574
|
+
const t = this.Ft, e = this.Mt;
|
|
545
575
|
return { next: () => A < t ? { value: e[A++], done: !1 } : { value: void 0, done: !0 } };
|
|
546
576
|
}
|
|
547
577
|
}
|
|
548
578
|
const y = class y {
|
|
549
|
-
static
|
|
550
|
-
var B, r,
|
|
579
|
+
static Ht(A, t, e = 0) {
|
|
580
|
+
var B, r, Q, o, g, a, h, c, l, C;
|
|
551
581
|
const s = t || new Float32Array(y.FLOATS_PER_INSTANCE);
|
|
552
582
|
let i = e;
|
|
553
|
-
return s[i++] = A.position[0], s[i++] = A.position[1], s[i++] = A.size[0], s[i++] = A.size[1], s[i++] = A.AA[0], s[i++] = A.AA[1], s[i++] = A.AA[2], s[i++] = A.primaryColor[0], s[i++] = A.primaryColor[1], s[i++] = A.primaryColor[2], s[i++] = A.primaryColor[3], s[i++] = A.secondaryColor[0], s[i++] = A.secondaryColor[1], s[i++] = A.secondaryColor[2], s[i++] = A.secondaryColor[3], s[i++] = A.rotation[0], s[i++] = A.rotation[1], s[i++] = A.transform[0], s[i++] = A.transform[1], s[i++] = A.transform[2], s[i++] = A.globalRotationX, s[i++] = A.globalRotationY, s[i++] = A.globalRotationZ, s[i++] = A.rotationCenter[0], s[i++] = A.rotationCenter[1], s[i++] = ((B = A.arcAngles) == null ? void 0 : B[0]) || 0, s[i++] = ((r = A.arcAngles) == null ? void 0 : r[1]) || 0, s[i++] = ((
|
|
583
|
+
return s[i++] = A.position[0], s[i++] = A.position[1], s[i++] = A.size[0], s[i++] = A.size[1], s[i++] = A.AA[0], s[i++] = A.AA[1], s[i++] = A.AA[2], s[i++] = A.primaryColor[0], s[i++] = A.primaryColor[1], s[i++] = A.primaryColor[2], s[i++] = A.primaryColor[3], s[i++] = A.secondaryColor[0], s[i++] = A.secondaryColor[1], s[i++] = A.secondaryColor[2], s[i++] = A.secondaryColor[3], s[i++] = A.rotation[0], s[i++] = A.rotation[1], s[i++] = A.transform[0], s[i++] = A.transform[1], s[i++] = A.transform[2], s[i++] = A.globalRotationX, s[i++] = A.globalRotationY, s[i++] = A.globalRotationZ, s[i++] = A.rotationCenter[0], s[i++] = A.rotationCenter[1], s[i++] = ((B = A.arcAngles) == null ? void 0 : B[0]) || 0, s[i++] = ((r = A.arcAngles) == null ? void 0 : r[1]) || 0, s[i++] = ((Q = A.bezierControlPoint1) == null ? void 0 : Q[0]) || 0, s[i++] = ((o = A.bezierControlPoint1) == null ? void 0 : o[1]) || 0, s[i++] = ((g = A.bezierControlPoint2) == null ? void 0 : g[0]) || 0, s[i++] = ((a = A.bezierControlPoint2) == null ? void 0 : a[1]) || 0, s[i++] = ((h = A.bezierStartPoint) == null ? void 0 : h[0]) || 0, s[i++] = ((c = A.bezierStartPoint) == null ? void 0 : c[1]) || 0, s[i++] = ((l = A.bezierEndPoint) == null ? void 0 : l[0]) || 0, s[i++] = ((C = A.bezierEndPoint) == null ? void 0 : C[1]) || 0, s;
|
|
554
584
|
}
|
|
555
|
-
static
|
|
585
|
+
static Kt(A) {
|
|
556
586
|
const t = A.length * y.FLOATS_PER_INSTANCE, e = new Float32Array(t);
|
|
557
587
|
for (let s = 0; s < A.length; s++) {
|
|
558
588
|
const i = s * y.FLOATS_PER_INSTANCE;
|
|
559
|
-
y.
|
|
589
|
+
y.Ht(A[s], e, i);
|
|
560
590
|
}
|
|
561
591
|
return e;
|
|
562
592
|
}
|
|
563
593
|
};
|
|
564
|
-
|
|
565
|
-
let
|
|
594
|
+
n(y, "BYTES_PER_INSTANCE", 140), n(y, "FLOATS_PER_INSTANCE", 35);
|
|
595
|
+
let R = y;
|
|
566
596
|
const P = class P {
|
|
567
597
|
};
|
|
568
|
-
|
|
569
|
-
let
|
|
598
|
+
n(P, "STRIDE", R.BYTES_PER_INSTANCE), n(P, "ATTRIBUTES", { a_instancePosition: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 0, divisor: 1 }, a_instanceSize: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 8, divisor: 1 }, a_instanceCharacter: { location: -1, size: 3, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 16, divisor: 1 }, a_instancePrimaryColor: { location: -1, size: 4, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 28, divisor: 1 }, a_instanceSecondaryColor: { location: -1, size: 4, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 44, divisor: 1 }, a_instanceRotation: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 60, divisor: 1 }, a_instanceTransform: { location: -1, size: 3, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 68, divisor: 1 }, a_instanceGlobalRotation: { location: -1, size: 3, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 80, divisor: 1 }, a_instanceRotationCenter: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 92, divisor: 1 }, a_instanceArcAngles: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 100, divisor: 1 }, a_instanceBezierCP1: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 108, divisor: 1 }, a_instanceBezierCP2: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 116, divisor: 1 }, a_instanceBezierStart: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 124, divisor: 1 }, a_instanceBezierEnd: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 132, divisor: 1 } });
|
|
599
|
+
let S = P;
|
|
570
600
|
class rA {
|
|
571
601
|
constructor(A, t = 1e3, e = 1.5) {
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
this.wA = A, this.
|
|
582
|
-
}
|
|
583
|
-
|
|
584
|
-
const t = this.
|
|
585
|
-
return this.
|
|
602
|
+
n(this, "wA");
|
|
603
|
+
n(this, "Jt", []);
|
|
604
|
+
n(this, "Vt");
|
|
605
|
+
n(this, "Zt");
|
|
606
|
+
n(this, "Nt", null);
|
|
607
|
+
n(this, "Xt", !0);
|
|
608
|
+
n(this, "jt", 0);
|
|
609
|
+
n(this, "qt", /* @__PURE__ */ new Map());
|
|
610
|
+
n(this, "Ae", null);
|
|
611
|
+
this.wA = A, this.Vt = t, this.Zt = e, this.te();
|
|
612
|
+
}
|
|
613
|
+
bt(A) {
|
|
614
|
+
const t = this.Jt.length;
|
|
615
|
+
return this.Jt.push(A), this.Xt = !0, t;
|
|
586
616
|
}
|
|
587
617
|
get count() {
|
|
588
|
-
return this.
|
|
618
|
+
return this.Jt.length;
|
|
589
619
|
}
|
|
590
620
|
get isEmpty() {
|
|
591
|
-
return this.
|
|
621
|
+
return this.Jt.length === 0;
|
|
592
622
|
}
|
|
593
623
|
clear() {
|
|
594
|
-
this.
|
|
624
|
+
this.Jt.length = 0, this.Xt = !0;
|
|
595
625
|
}
|
|
596
|
-
|
|
597
|
-
if (A <= this.
|
|
598
|
-
const t = Math.ceil(A * this.
|
|
599
|
-
this.
|
|
626
|
+
ee(A) {
|
|
627
|
+
if (A <= this.Vt) return;
|
|
628
|
+
const t = Math.ceil(A * this.Zt);
|
|
629
|
+
this.Vt = t, this.te();
|
|
600
630
|
}
|
|
601
|
-
|
|
631
|
+
te() {
|
|
602
632
|
const A = this.wA;
|
|
603
|
-
this.
|
|
604
|
-
const t = this.
|
|
605
|
-
A.bindBuffer(A.ARRAY_BUFFER, this.
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
if (!this.
|
|
609
|
-
const A = this.wA, t = this.
|
|
610
|
-
this.
|
|
611
|
-
const e =
|
|
612
|
-
A.bindBuffer(A.ARRAY_BUFFER, this.
|
|
613
|
-
}
|
|
614
|
-
|
|
615
|
-
let t = this.
|
|
633
|
+
this.Nt && A.deleteBuffer(this.Nt), this.Nt = A.createBuffer();
|
|
634
|
+
const t = this.Vt * R.BYTES_PER_INSTANCE;
|
|
635
|
+
A.bindBuffer(A.ARRAY_BUFFER, this.Nt), A.bufferData(A.ARRAY_BUFFER, t, A.DYNAMIC_DRAW), A.bindBuffer(A.ARRAY_BUFFER, null), this.Xt = !0, this.jt = 0;
|
|
636
|
+
}
|
|
637
|
+
se() {
|
|
638
|
+
if (!this.Xt || this.Jt.length === 0) return;
|
|
639
|
+
const A = this.wA, t = this.Jt.length;
|
|
640
|
+
this.ee(t), (!this.Ae || this.Ae.length < t * R.FLOATS_PER_INSTANCE) && (this.Ae = new Float32Array(t * R.FLOATS_PER_INSTANCE));
|
|
641
|
+
const e = R.Kt(this.Jt);
|
|
642
|
+
A.bindBuffer(A.ARRAY_BUFFER, this.Nt), t <= this.jt ? A.bufferSubData(A.ARRAY_BUFFER, 0, e) : A.bufferData(A.ARRAY_BUFFER, e, A.DYNAMIC_DRAW), A.bindBuffer(A.ARRAY_BUFFER, null), this.Xt = !1, this.jt = t;
|
|
643
|
+
}
|
|
644
|
+
ie(A) {
|
|
645
|
+
let t = this.qt.get(A);
|
|
616
646
|
if (!t) {
|
|
617
647
|
t = /* @__PURE__ */ new Map();
|
|
618
648
|
const e = this.wA;
|
|
619
|
-
for (const s in
|
|
649
|
+
for (const s in S.ATTRIBUTES) {
|
|
620
650
|
const i = e.getAttribLocation(A, s);
|
|
621
651
|
i !== -1 && t.set(s, i);
|
|
622
652
|
}
|
|
623
|
-
this.
|
|
653
|
+
this.qt.set(A, t);
|
|
624
654
|
}
|
|
625
655
|
return t;
|
|
626
656
|
}
|
|
627
|
-
|
|
628
|
-
if (!this.
|
|
629
|
-
const t = this.wA, e = A.
|
|
630
|
-
this.
|
|
631
|
-
const s = this.
|
|
632
|
-
t.bindBuffer(t.ARRAY_BUFFER, this.
|
|
657
|
+
It(A) {
|
|
658
|
+
if (!this.Nt || this.Jt.length === 0) return;
|
|
659
|
+
const t = this.wA, e = A.At;
|
|
660
|
+
this.se();
|
|
661
|
+
const s = this.ie(e);
|
|
662
|
+
t.bindBuffer(t.ARRAY_BUFFER, this.Nt);
|
|
633
663
|
for (const [i, B] of s) {
|
|
634
|
-
const r =
|
|
664
|
+
const r = S.ATTRIBUTES[i];
|
|
635
665
|
r && (t.enableVertexAttribArray(B), t.vertexAttribPointer(B, r.size, r.type, r.normalized, r.stride, r.offset), t.vertexAttribDivisor(B, r.divisor));
|
|
636
666
|
}
|
|
637
667
|
}
|
|
638
|
-
|
|
639
|
-
const t = this.wA, e = this.
|
|
668
|
+
_t(A) {
|
|
669
|
+
const t = this.wA, e = this.ie(A.At);
|
|
640
670
|
for (const [, s] of e) t.disableVertexAttribArray(s), t.vertexAttribDivisor(s, 0);
|
|
641
671
|
}
|
|
642
|
-
|
|
643
|
-
this.
|
|
672
|
+
wt(A, t) {
|
|
673
|
+
this.Jt.length !== 0 && this.wA.drawArraysInstanced(A, 0, t, this.Jt.length);
|
|
644
674
|
}
|
|
645
|
-
|
|
675
|
+
kA() {
|
|
646
676
|
const A = this.wA;
|
|
647
|
-
this.
|
|
677
|
+
this.Nt && (A.deleteBuffer(this.Nt), this.Nt = null), this.Jt.length = 0, this.qt.clear(), this.Ae = null;
|
|
648
678
|
}
|
|
649
679
|
}
|
|
650
680
|
class b {
|
|
651
681
|
constructor(A, t, e, s) {
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
this.wA = A, this.
|
|
682
|
+
n(this, "wA");
|
|
683
|
+
n(this, "Be");
|
|
684
|
+
n(this, "Qe");
|
|
685
|
+
n(this, "Ee");
|
|
686
|
+
n(this, "re", null);
|
|
687
|
+
this.wA = A, this.Be = t, this.Qe = e, this.Ee = s;
|
|
658
688
|
const i = this.wA.createBuffer();
|
|
659
689
|
if (!i) throw Error("Failed to create unit geometry buffer");
|
|
660
|
-
this.wA.bindBuffer(this.wA.ARRAY_BUFFER, i), this.wA.bufferData(this.wA.ARRAY_BUFFER, this.
|
|
690
|
+
this.wA.bindBuffer(this.wA.ARRAY_BUFFER, i), this.wA.bufferData(this.wA.ARRAY_BUFFER, this.Ee.ne, this.wA.STATIC_DRAW), this.wA.bindBuffer(this.wA.ARRAY_BUFFER, null), this.re = i;
|
|
661
691
|
}
|
|
662
692
|
get type() {
|
|
663
|
-
return this.
|
|
693
|
+
return this.Qe;
|
|
664
694
|
}
|
|
665
695
|
get unitGeometry() {
|
|
666
|
-
return this.
|
|
696
|
+
return this.Ee;
|
|
667
697
|
}
|
|
668
698
|
get unitBuffer() {
|
|
669
|
-
return this.
|
|
699
|
+
return this.re;
|
|
670
700
|
}
|
|
671
701
|
get batch() {
|
|
672
|
-
return this.
|
|
702
|
+
return this.Be;
|
|
673
703
|
}
|
|
674
|
-
|
|
675
|
-
this.
|
|
704
|
+
vt() {
|
|
705
|
+
this.Be.clear();
|
|
676
706
|
}
|
|
677
|
-
|
|
678
|
-
return !this.
|
|
707
|
+
ut() {
|
|
708
|
+
return !this.Be.isEmpty;
|
|
679
709
|
}
|
|
680
|
-
|
|
681
|
-
this.
|
|
710
|
+
kA() {
|
|
711
|
+
this.Be.kA(), this.re && (this.wA.deleteBuffer(this.re), this.re = null);
|
|
682
712
|
}
|
|
683
|
-
|
|
684
|
-
const B = this.
|
|
713
|
+
oe(A, t, e, s, i) {
|
|
714
|
+
const B = this.ge(A, t, e, s, i.rotationX || 0, i.rotationY || 0, i.rotationZ || 0);
|
|
685
715
|
return { position: [A, t], size: [e, s], AA: i.character || [0, 0, 0], primaryColor: i.charColor || [1, 1, 1, 1], secondaryColor: i.bgColor || [0, 0, 0, 1], rotation: i.charRotation || [0, 0], transform: [i.invert ? 1 : 0, i.flipHorizontally ? 1 : 0, i.flipVertically ? 1 : 0], globalRotationX: B.radiansX, globalRotationY: B.radiansY, globalRotationZ: B.radiansZ, rotationCenter: [B.centerX, B.centerY] };
|
|
686
716
|
}
|
|
687
|
-
|
|
717
|
+
ae(A, t) {
|
|
688
718
|
const e = G(this.wA) || [0, 0, this.wA.canvas.width, this.wA.canvas.height];
|
|
689
719
|
return { nx: A / e[2] * 2 - 1, ny: 1 - t / e[3] * 2 };
|
|
690
720
|
}
|
|
691
|
-
|
|
692
|
-
const s = this.
|
|
721
|
+
he(A, t, e) {
|
|
722
|
+
const s = this.ae(t, e);
|
|
693
723
|
A.rotationCenter = [s.nx, s.ny];
|
|
694
724
|
}
|
|
695
|
-
|
|
696
|
-
const
|
|
697
|
-
return { centerX: (A + e / 2) / o * 2 - 1, centerY: 1 - (t + s / 2) /
|
|
725
|
+
ge(A, t, e, s, i, B, r) {
|
|
726
|
+
const Q = G(this.wA) || [0, 0, this.wA.canvas.width, this.wA.canvas.height], o = Q[2], g = Q[3];
|
|
727
|
+
return { centerX: (A + e / 2) / o * 2 - 1, centerY: 1 - (t + s / 2) / g * 2, radiansX: -i * Math.PI / 180, radiansY: -B * Math.PI / 180, radiansZ: -r * Math.PI / 180, aspectRatio: o / g };
|
|
698
728
|
}
|
|
699
729
|
}
|
|
700
|
-
const EA = {
|
|
730
|
+
const EA = { ne: new Float32Array([0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1]), dt: 6, ft: WebGL2RenderingContext.TRIANGLES, gt: 16, ot: { nt: { size: 2, offset: 0 }, ht: { size: 2, offset: 8 } } };
|
|
701
731
|
class QA extends b {
|
|
702
732
|
constructor(A, t) {
|
|
703
733
|
super(A, t, D.RECTANGLE, EA);
|
|
704
734
|
}
|
|
705
|
-
|
|
706
|
-
const e = this.
|
|
707
|
-
return this.
|
|
735
|
+
bt(A, t) {
|
|
736
|
+
const e = this.oe(A.x, A.y, A.width, A.height, t);
|
|
737
|
+
return this.Be.bt(e);
|
|
708
738
|
}
|
|
709
739
|
}
|
|
710
|
-
const nA = {
|
|
740
|
+
const nA = { ne: new Float32Array([0, -0.5, 0, 0, 1, -0.5, 1, 0, 0, 0.5, 0, 1, 0, 0.5, 0, 1, 1, -0.5, 1, 0, 1, 0.5, 1, 1]), dt: 6, ft: WebGL2RenderingContext.TRIANGLES, gt: 16, ot: { nt: { size: 2, offset: 0 }, ht: { size: 2, offset: 8 } } };
|
|
711
741
|
class oA extends b {
|
|
712
742
|
constructor(A, t) {
|
|
713
743
|
super(A, t, D.LINE, nA);
|
|
714
744
|
}
|
|
715
|
-
|
|
716
|
-
const e = A.x2 - A.x1, s = A.y2 - A.y1, i = Math.hypot(e, s), B = Math.atan2(s, e), r = A.thickness || t.lineWeight || 1,
|
|
717
|
-
return this.
|
|
745
|
+
bt(A, t) {
|
|
746
|
+
const e = A.x2 - A.x1, s = A.y2 - A.y1, i = Math.hypot(e, s), B = Math.atan2(s, e), r = A.thickness || t.lineWeight || 1, Q = A.x1 + e / 2, o = A.y1 + s / 2, g = Q - i / 2, a = o, h = { character: t.character, charColor: t.charColor, bgColor: t.bgColor, charRotation: t.charRotation, flipHorizontally: t.flipHorizontally, flipVertically: t.flipVertically, invert: t.invert, rotationX: t.rotationX || 0, rotationY: t.rotationY || 0, rotationZ: (t.rotationZ || 0) + 180 * B / Math.PI, lineWeight: r }, c = this.oe(g, a, i, r, h);
|
|
747
|
+
return this.he(c, Q, o), this.Be.bt(c);
|
|
718
748
|
}
|
|
719
749
|
}
|
|
720
|
-
const gA = {
|
|
750
|
+
const gA = { ne: function(E = 32) {
|
|
721
751
|
const A = [], t = 2 * Math.PI / E;
|
|
722
752
|
for (let e = 0; e < E; e++) {
|
|
723
|
-
const s = e * t, i = (e + 1) % E * t, B = Math.cos(s), r = Math.sin(s),
|
|
724
|
-
A.push(0, 0, 0.5, 0.5, B, r,
|
|
753
|
+
const s = e * t, i = (e + 1) % E * t, B = Math.cos(s), r = Math.sin(s), Q = 0.5 * (B + 1), o = 0.5 * (r + 1), g = Math.cos(i), a = Math.sin(i), h = 0.5 * (g + 1), c = 0.5 * (a + 1);
|
|
754
|
+
A.push(0, 0, 0.5, 0.5, B, r, Q, o, g, a, h, c);
|
|
725
755
|
}
|
|
726
756
|
return new Float32Array(A);
|
|
727
|
-
}(32),
|
|
757
|
+
}(32), dt: 96, ft: WebGL2RenderingContext.TRIANGLES, gt: 16, ot: { nt: { size: 2, offset: 0 }, ht: { size: 2, offset: 8 } } };
|
|
728
758
|
class aA extends b {
|
|
729
759
|
constructor(A, t) {
|
|
730
760
|
super(A, t, D.ELLIPSE, gA);
|
|
731
761
|
}
|
|
732
|
-
|
|
733
|
-
const e = this.
|
|
734
|
-
return this.
|
|
762
|
+
bt(A, t) {
|
|
763
|
+
const e = this.oe(A.x, A.y, A.width, A.height, t);
|
|
764
|
+
return this.he(e, A.x, A.y), this.Be.bt(e);
|
|
735
765
|
}
|
|
736
766
|
}
|
|
737
|
-
let hA = {
|
|
767
|
+
let hA = { ne: function(E) {
|
|
738
768
|
const A = [];
|
|
739
769
|
for (let t = 0; t < E; t++) {
|
|
740
770
|
const e = t / E, s = (t + 1) / E;
|
|
741
771
|
A.push(e, 0, e, 0, e, 1, e, 1, s, 1, s, 1);
|
|
742
772
|
}
|
|
743
773
|
return new Float32Array(A);
|
|
744
|
-
}(32),
|
|
774
|
+
}(32), dt: 96, ft: WebGL2RenderingContext.TRIANGLES, gt: 16, ot: { nt: { size: 2, offset: 0 }, ht: { size: 2, offset: 8 } } };
|
|
745
775
|
class cA extends b {
|
|
746
776
|
constructor(A, t) {
|
|
747
777
|
super(A, t, D.ARC, hA);
|
|
748
778
|
}
|
|
749
|
-
|
|
750
|
-
const e = A.x - A.width / 2, s = A.y - A.height / 2, i = A.start * Math.PI / 180, B = A.stop * Math.PI / 180, r = this.
|
|
751
|
-
return this.
|
|
779
|
+
bt(A, t) {
|
|
780
|
+
const e = A.x - A.width / 2, s = A.y - A.height / 2, i = A.start * Math.PI / 180, B = A.stop * Math.PI / 180, r = this.oe(e, s, A.width, A.height, t);
|
|
781
|
+
return this.he(r, A.x, A.y), r.arcAngles = [i, B], this.Be.bt(r);
|
|
752
782
|
}
|
|
753
783
|
}
|
|
754
|
-
const lA = {
|
|
784
|
+
const lA = { ne: new Float32Array([0, 0, 0, 0, 1, 0, 1, 0, 0.5, 1, 0.5, 1]), dt: 3, ft: WebGL2RenderingContext.TRIANGLES, gt: 16, ot: { nt: { size: 2, offset: 0 }, ht: { size: 2, offset: 8 } } };
|
|
755
785
|
class CA extends b {
|
|
756
786
|
constructor(A, t) {
|
|
757
787
|
super(A, t, D.TRIANGLE, lA);
|
|
758
788
|
}
|
|
759
|
-
|
|
760
|
-
const e = Math.min(A.x1, A.x2, A.x3), s = Math.max(A.x1, A.x2, A.x3), i = Math.min(A.y1, A.y2, A.y3), B = s - e, r = Math.max(A.y1, A.y2, A.y3) - i,
|
|
761
|
-
return this.
|
|
789
|
+
bt(A, t) {
|
|
790
|
+
const e = Math.min(A.x1, A.x2, A.x3), s = Math.max(A.x1, A.x2, A.x3), i = Math.min(A.y1, A.y2, A.y3), B = s - e, r = Math.max(A.y1, A.y2, A.y3) - i, Q = this.oe(e, i, B, r, t), o = e + 0.5 * B, g = i + r * (1 / 3);
|
|
791
|
+
return this.he(Q, o, g), this.Be.bt(Q);
|
|
762
792
|
}
|
|
763
793
|
}
|
|
764
|
-
function
|
|
794
|
+
function W(E, A, t, e, s) {
|
|
765
795
|
const i = 1 - E, B = i * i, r = E * E;
|
|
766
796
|
return B * i * A + 3 * B * E * t + 3 * i * r * e + r * E * s;
|
|
767
797
|
}
|
|
768
|
-
const DA = {
|
|
798
|
+
const DA = { ne: function(E = 16) {
|
|
769
799
|
const A = [];
|
|
770
800
|
for (let t = 0; t < E; t++) {
|
|
771
801
|
const e = t / E, s = (t + 1) / E;
|
|
772
802
|
A.push(e, -0.5, e, 0), A.push(s, -0.5, s, 0), A.push(e, 0.5, e, 1), A.push(e, 0.5, e, 1), A.push(s, -0.5, s, 0), A.push(s, 0.5, s, 1);
|
|
773
803
|
}
|
|
774
804
|
return new Float32Array(A);
|
|
775
|
-
}(16),
|
|
805
|
+
}(16), dt: 96, ft: WebGL2RenderingContext.TRIANGLES, gt: 16, ot: { nt: { size: 2, offset: 0 }, ht: { size: 2, offset: 8 } } };
|
|
776
806
|
class PA extends b {
|
|
777
807
|
constructor(A, t) {
|
|
778
808
|
super(A, t, D.BEZIER_CURVE, DA);
|
|
779
809
|
}
|
|
780
|
-
|
|
781
|
-
const e = t.lineWeight || 1, s =
|
|
782
|
-
return this.
|
|
810
|
+
bt(A, t) {
|
|
811
|
+
const e = t.lineWeight || 1, s = W(0.5, A.x1, A.cp1x, A.cp2x, A.x2), i = W(0.5, A.y1, A.cp1y, A.cp2y, A.y2), B = { character: t.character, charColor: t.charColor, bgColor: t.bgColor, charRotation: t.charRotation, flipHorizontally: t.flipHorizontally, flipVertically: t.flipVertically, invert: t.invert, rotationX: t.rotationX || 0, rotationY: t.rotationY || 0, rotationZ: t.rotationZ || 0, lineWeight: e }, r = this.oe(0, 0, 1, e, B);
|
|
812
|
+
return this.he(r, s, i), r.bezierStartPoint = [A.x1, A.y1], r.bezierControlPoint1 = [A.cp1x, A.cp1y], r.bezierControlPoint2 = [A.cp2x, A.cp2y], r.bezierEndPoint = [A.x2, A.y2], this.Be.bt(r);
|
|
783
813
|
}
|
|
784
814
|
}
|
|
785
815
|
class uA {
|
|
786
816
|
constructor(A) {
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
this.wA = A, this.
|
|
799
|
-
}
|
|
800
|
-
|
|
801
|
-
let t = this.
|
|
817
|
+
n(this, "wA");
|
|
818
|
+
n(this, "ce", null);
|
|
819
|
+
n(this, "le");
|
|
820
|
+
n(this, "Ce", null);
|
|
821
|
+
n(this, "De", {});
|
|
822
|
+
n(this, "Pe", null);
|
|
823
|
+
n(this, "ue", /* @__PURE__ */ new Map());
|
|
824
|
+
n(this, "Ie");
|
|
825
|
+
n(this, "we");
|
|
826
|
+
n(this, "fe");
|
|
827
|
+
n(this, "K", []);
|
|
828
|
+
this.wA = A, this.le = new eA(A), this.fe = new J(), this.Ie = new iA(A, this), this.we = new BA(), this.Pe = A.createBuffer(), F(this.wA, [0, 0, this.wA.canvas.width, this.wA.canvas.height]);
|
|
829
|
+
}
|
|
830
|
+
de(A) {
|
|
831
|
+
let t = this.ue.get(A);
|
|
802
832
|
if (t) return t;
|
|
803
833
|
const e = new rA(this.wA);
|
|
804
|
-
return t = (0, { [D.RECTANGLE]: () => new QA(this.wA, e), [D.LINE]: () => new oA(this.wA, e), [D.ELLIPSE]: () => new aA(this.wA, e), [D.ARC]: () => new cA(this.wA, e), [D.TRIANGLE]: () => new CA(this.wA, e), [D.BEZIER_CURVE]: () => new PA(this.wA, e) }[A])(), this.
|
|
834
|
+
return t = (0, { [D.RECTANGLE]: () => new QA(this.wA, e), [D.LINE]: () => new oA(this.wA, e), [D.ELLIPSE]: () => new aA(this.wA, e), [D.ARC]: () => new cA(this.wA, e), [D.TRIANGLE]: () => new CA(this.wA, e), [D.BEZIER_CURVE]: () => new PA(this.wA, e) }[A])(), this.ue.set(A, t), t;
|
|
805
835
|
}
|
|
806
|
-
|
|
807
|
-
this.
|
|
836
|
+
pe(A) {
|
|
837
|
+
this.ce !== A && (this.ce = A, A.KA());
|
|
808
838
|
}
|
|
809
|
-
|
|
810
|
-
return this.
|
|
839
|
+
_e(A, t) {
|
|
840
|
+
return this.le.Qt(A, t);
|
|
811
841
|
}
|
|
812
|
-
|
|
813
|
-
return this.
|
|
842
|
+
st() {
|
|
843
|
+
return this.le.st();
|
|
814
844
|
}
|
|
815
845
|
YA() {
|
|
816
|
-
return this.
|
|
846
|
+
return this.le.YA();
|
|
817
847
|
}
|
|
818
|
-
|
|
819
|
-
return this.
|
|
848
|
+
it() {
|
|
849
|
+
return this.le.it();
|
|
820
850
|
}
|
|
821
|
-
|
|
822
|
-
this.
|
|
851
|
+
me(A) {
|
|
852
|
+
this.Ce = A, A && (this.De = {});
|
|
823
853
|
}
|
|
824
|
-
|
|
825
|
-
this.
|
|
854
|
+
ZA(A, t) {
|
|
855
|
+
this.De[A] = t;
|
|
826
856
|
}
|
|
827
|
-
|
|
828
|
-
Object.assign(this.
|
|
857
|
+
ve(A) {
|
|
858
|
+
Object.assign(this.De, A);
|
|
829
859
|
}
|
|
830
|
-
|
|
831
|
-
return this.
|
|
860
|
+
Bt(A) {
|
|
861
|
+
return this.le.Bt(A);
|
|
832
862
|
}
|
|
833
|
-
|
|
834
|
-
const B = this.
|
|
835
|
-
this.
|
|
863
|
+
ye(A, t, e, s, i) {
|
|
864
|
+
const B = this.st(), r = { l: A.textures[0], m: A.textures[1], n: A.textures[2], o: A.textures[3], p: A.textures[4], q: [A.width, A.height] };
|
|
865
|
+
this.we.kt(t, e, s, i, B, r, this.fe);
|
|
836
866
|
}
|
|
837
|
-
|
|
867
|
+
be(A, t, e, s) {
|
|
838
868
|
var C;
|
|
839
|
-
const i = this.wA, B = i.canvas.width, r = i.canvas.height,
|
|
840
|
-
i.bindBuffer(i.ARRAY_BUFFER, this.
|
|
841
|
-
const c = ((C = this.
|
|
869
|
+
const i = this.wA, B = i.canvas.width, r = i.canvas.height, Q = A / B * 2 - 1, o = (A + e) / B * 2 - 1, g = 1 - t / r * 2, a = 1 - (t + s) / r * 2, h = new Float32Array([Q, a, o, a, Q, g, o, a, o, g, Q, g]);
|
|
870
|
+
i.bindBuffer(i.ARRAY_BUFFER, this.Pe), i.bufferData(i.ARRAY_BUFFER, h, i.DYNAMIC_DRAW);
|
|
871
|
+
const c = ((C = this.ce) == null ? void 0 : C.At) || i.getParameter(i.CURRENT_PROGRAM), l = c ? i.getAttribLocation(c, "a_position") : -1;
|
|
842
872
|
l !== -1 && (i.enableVertexAttribArray(l), i.vertexAttribPointer(l, 2, i.FLOAT, !1, 8, 0)), i.drawArrays(i.TRIANGLES, 0, 6), l !== -1 && i.disableVertexAttribArray(l);
|
|
843
873
|
}
|
|
844
|
-
|
|
845
|
-
this.
|
|
874
|
+
$e(A, t, e, s) {
|
|
875
|
+
this.Ce ? (this.we.kt(A, t, e, s, this.Ce, { ...this.De }, this.fe), this.Ce = null, this.De = {}) : this.we.St(A, t, e, s, this.fe);
|
|
846
876
|
}
|
|
847
|
-
|
|
848
|
-
this.
|
|
877
|
+
Ge(A, t, e, s) {
|
|
878
|
+
this.we.zt(A, t, e, s, this.fe.lineWeight, this.fe);
|
|
849
879
|
}
|
|
850
|
-
|
|
851
|
-
this.
|
|
880
|
+
xe(A, t, e, s) {
|
|
881
|
+
this.we.Lt(A, t, e, s, this.fe);
|
|
852
882
|
}
|
|
853
|
-
|
|
854
|
-
this.
|
|
883
|
+
Me(A, t, e, s, i, B) {
|
|
884
|
+
this.we.Tt(A, t, e, s, i, B, this.fe);
|
|
855
885
|
}
|
|
856
|
-
|
|
857
|
-
const o = this.
|
|
858
|
-
this.
|
|
886
|
+
Ye(A, t, e, s, i, B, r, Q) {
|
|
887
|
+
const o = this.fe.lineWeight;
|
|
888
|
+
this.we.Ut(A, t, e, s, i, B, r, Q, o, this.fe);
|
|
859
889
|
}
|
|
860
|
-
|
|
890
|
+
Fe(A, t, e = 1, s = {}) {
|
|
861
891
|
return new U(this.wA, A, t, e, s, this, !0);
|
|
862
892
|
}
|
|
863
|
-
|
|
864
|
-
this.
|
|
893
|
+
Re(A, t, e, s, i, B) {
|
|
894
|
+
this.we.Ot(A, t, e, s, i, B, this.fe);
|
|
865
895
|
}
|
|
866
|
-
|
|
867
|
-
this.state.DA(A, t, e, s), this.
|
|
896
|
+
Se(A, t = A, e = A, s = 255) {
|
|
897
|
+
this.state.DA(A, t, e, s), this.Wt(A / 255, t / 255, e / 255, s / 255);
|
|
868
898
|
}
|
|
869
|
-
|
|
899
|
+
Wt(A = 0, t = 0, e = 0, s = 0) {
|
|
870
900
|
this.wA.clearColor(A, t, e, s), this.wA.clear(this.wA.COLOR_BUFFER_BIT);
|
|
871
901
|
}
|
|
872
|
-
|
|
902
|
+
ke() {
|
|
873
903
|
this.wA.viewport(0, 0, this.wA.canvas.width, this.wA.canvas.height), F(this.wA, [0, 0, this.wA.canvas.width, this.wA.canvas.height]);
|
|
874
904
|
}
|
|
875
905
|
get context() {
|
|
876
906
|
return this.wA;
|
|
877
907
|
}
|
|
878
908
|
get state() {
|
|
879
|
-
return this.
|
|
909
|
+
return this.fe;
|
|
880
910
|
}
|
|
881
911
|
RA(A) {
|
|
882
|
-
this.K.push(this.
|
|
912
|
+
this.K.push(this.fe), this.fe = A;
|
|
883
913
|
}
|
|
884
914
|
SA() {
|
|
885
915
|
const A = this.K.pop();
|
|
886
|
-
A && (this.
|
|
916
|
+
A && (this.fe = A);
|
|
887
917
|
}
|
|
888
918
|
FA(A) {
|
|
889
919
|
const t = A, e = G(this.wA) ?? this.wA.getParameter(this.wA.VIEWPORT), s = { shader: t, gl: this.wA, viewport: e };
|
|
890
|
-
this.
|
|
920
|
+
this.pe(t);
|
|
891
921
|
const i = /* @__PURE__ */ new Set();
|
|
892
|
-
for (const B of this.
|
|
893
|
-
for (const B of i) B !== D.CUSTOM && this.
|
|
894
|
-
this.
|
|
922
|
+
for (const B of this.we) B.type === D.CUSTOM ? i.add(D.RECTANGLE) : i.add(B.type);
|
|
923
|
+
for (const B of i) B !== D.CUSTOM && this.de(B);
|
|
924
|
+
this.Ie.Pt(s, this.we, this.ue), this.we.Wt();
|
|
895
925
|
}
|
|
896
|
-
|
|
897
|
-
this.wA.deleteBuffer(this.
|
|
898
|
-
for (const A of this.
|
|
899
|
-
this.
|
|
926
|
+
kA() {
|
|
927
|
+
this.wA.deleteBuffer(this.Pe), this.we.Wt();
|
|
928
|
+
for (const A of this.ue.values()) A.kA();
|
|
929
|
+
this.le.kA();
|
|
900
930
|
}
|
|
901
931
|
}
|
|
902
932
|
const u = { readShort: (E, A) => (u.t.uint16[0] = E[A] << 8 | E[A + 1], u.t.int16[0]), readUshort: (E, A) => E[A] << 8 | E[A + 1], readUshorts(E, A, t) {
|
|
@@ -919,18 +949,18 @@ const u = { readShort: (E, A) => (u.t.uint16[0] = E[A] << 8 | E[A + 1], u.t.int1
|
|
|
919
949
|
const s = u, i = s.readUshort, B = i(E, A += 2);
|
|
920
950
|
A += 2;
|
|
921
951
|
const r = [];
|
|
922
|
-
for (let
|
|
923
|
-
const o = i(E, A),
|
|
952
|
+
for (let Q = 0; Q < B; Q++) {
|
|
953
|
+
const o = i(E, A), g = i(E, A += 2);
|
|
924
954
|
A += 2;
|
|
925
|
-
const
|
|
955
|
+
const a = s.readUint(E, A);
|
|
926
956
|
A += 4;
|
|
927
|
-
const h = `p${o}e${
|
|
928
|
-
let c = r.indexOf(
|
|
957
|
+
const h = `p${o}e${g}`;
|
|
958
|
+
let c = r.indexOf(a);
|
|
929
959
|
if (c === -1) {
|
|
930
960
|
let l;
|
|
931
|
-
c = e.tables.length, r.push(
|
|
932
|
-
const C = i(E,
|
|
933
|
-
l = C === 4 ? this.parse4(E,
|
|
961
|
+
c = e.tables.length, r.push(a);
|
|
962
|
+
const C = i(E, a);
|
|
963
|
+
l = C === 4 ? this.parse4(E, a) : C === 12 ? this.parse12(E, a) : { format: C }, e.tables.push(l);
|
|
934
964
|
}
|
|
935
965
|
e.ids[h] = c;
|
|
936
966
|
}
|
|
@@ -938,10 +968,10 @@ const u = { readShort: (E, A) => (u.t.uint16[0] = E[A] << 8 | E[A + 1], u.t.int1
|
|
|
938
968
|
}, parse4(E, A) {
|
|
939
969
|
const t = u, e = t.readUshort, s = t.readUshorts, i = A, B = e(E, A += 2);
|
|
940
970
|
A += 2;
|
|
941
|
-
const r = e(E, A += 2) >>> 1,
|
|
942
|
-
A += 2,
|
|
943
|
-
for (let o = 0; o < r; o++)
|
|
944
|
-
return
|
|
971
|
+
const r = e(E, A += 2) >>> 1, Q = { format: 4, searchRange: e(E, A += 2), entrySelector: 0, rangeShift: 0, endCount: [], startCount: [], idDelta: [], idRangeOffset: [], glyphIdArray: [] };
|
|
972
|
+
A += 2, Q.entrySelector = e(E, A), A += 2, Q.rangeShift = e(E, A), A += 2, Q.endCount = s(E, A, r), A += 2 * r, A += 2, Q.startCount = s(E, A, r), A += 2 * r;
|
|
973
|
+
for (let o = 0; o < r; o++) Q.idDelta.push(t.readShort(E, A)), A += 2;
|
|
974
|
+
return Q.idRangeOffset = s(E, A, r), A += 2 * r, Q.glyphIdArray = s(E, A, i + B - A >> 1), Q;
|
|
945
975
|
}, parse12(E, A) {
|
|
946
976
|
const t = u.readUint;
|
|
947
977
|
t(E, A += 4), t(E, A += 4);
|
|
@@ -950,7 +980,7 @@ const u = { readShort: (E, A) => (u.t.uint16[0] = E[A] << 8 | E[A + 1], u.t.int1
|
|
|
950
980
|
const s = new Uint32Array(3 * e);
|
|
951
981
|
for (let i = 0; i < 3 * e; i += 3) s[i] = t(E, A + (i << 2)), s[i + 1] = t(E, A + (i << 2) + 4), s[i + 2] = t(E, A + (i << 2) + 8);
|
|
952
982
|
return { format: 12, groups: s };
|
|
953
|
-
} },
|
|
983
|
+
} }, fA = { parseTab(E, A, t) {
|
|
954
984
|
const e = u;
|
|
955
985
|
A += 18;
|
|
956
986
|
const s = e.readUshort(E, A);
|
|
@@ -961,39 +991,39 @@ const u = { readShort: (E, A) => (u.t.uint16[0] = E[A] << 8 | E[A + 1], u.t.int1
|
|
|
961
991
|
A += 2;
|
|
962
992
|
const r = e.readShort(E, A);
|
|
963
993
|
A += 2;
|
|
964
|
-
const
|
|
965
|
-
return A += 2, A += 6, { unitsPerEm: s, xMin: i, yMin: B, xMax: r, yMax:
|
|
966
|
-
} },
|
|
994
|
+
const Q = e.readShort(E, A);
|
|
995
|
+
return A += 2, A += 6, { unitsPerEm: s, xMin: i, yMin: B, xMax: r, yMax: Q, indexToLocFormat: e.readShort(E, A) };
|
|
996
|
+
} }, IA = { parseTab(E, A, t) {
|
|
967
997
|
const e = u;
|
|
968
998
|
A += 4;
|
|
969
999
|
const s = ["ascender", "descender", "lineGap", "advanceWidthMax", "minLeftSideBearing", "minRightSideBearing", "xMaxExtent", "caretSlopeRise", "caretSlopeRun", "caretOffset", "res0", "res1", "res2", "res3", "metricDataFormat", "numberOfHMetrics"], i = {};
|
|
970
1000
|
for (let B = 0; B < s.length; B++) {
|
|
971
|
-
const r = s[B],
|
|
972
|
-
i[r] =
|
|
1001
|
+
const r = s[B], Q = r === "advanceWidthMax" || r === "numberOfHMetrics" ? e.readUshort : e.readShort;
|
|
1002
|
+
i[r] = Q(E, A + 2 * B);
|
|
973
1003
|
}
|
|
974
1004
|
return i;
|
|
975
1005
|
} }, dA = { parseTab(E, A, t, e) {
|
|
976
|
-
const s = u, i = [], B = [], r = e.maxp.numGlyphs,
|
|
977
|
-
let o = 0,
|
|
978
|
-
for (;
|
|
979
|
-
for (;
|
|
1006
|
+
const s = u, i = [], B = [], r = e.maxp.numGlyphs, Q = e.hhea.numberOfHMetrics;
|
|
1007
|
+
let o = 0, g = 0, a = 0;
|
|
1008
|
+
for (; a < Q; ) o = s.readUshort(E, A + (a << 2)), g = s.readShort(E, A + (a << 2) + 2), i.push(o), B.push(g), a++;
|
|
1009
|
+
for (; a < r; ) i.push(o), B.push(g), a++;
|
|
980
1010
|
return { aWidth: i, lsBearing: B };
|
|
981
|
-
} },
|
|
1011
|
+
} }, V = { cmap: wA, head: fA, hhea: IA, maxp: { parseTab(E, A, t) {
|
|
982
1012
|
const e = u;
|
|
983
1013
|
return e.readUint(E, A), A += 4, { numGlyphs: e.readUshort(E, A) };
|
|
984
1014
|
} }, hmtx: dA, loca: { parseTab(E, A, t, e) {
|
|
985
1015
|
const s = u, i = [], B = e.head.indexToLocFormat, r = e.maxp.numGlyphs + 1;
|
|
986
|
-
if (B === 0) for (let
|
|
987
|
-
else if (B === 1) for (let
|
|
1016
|
+
if (B === 0) for (let Q = 0; Q < r; Q++) i.push(s.readUshort(E, A + (Q << 1)) << 1);
|
|
1017
|
+
else if (B === 1) for (let Q = 0; Q < r; Q++) i.push(s.readUint(E, A + (Q << 2)));
|
|
988
1018
|
return i;
|
|
989
1019
|
} }, glyf: { parseTab(E, A, t, e) {
|
|
990
1020
|
const s = [], i = e.maxp.numGlyphs;
|
|
991
1021
|
for (let B = 0; B < i; B++) s.push(null);
|
|
992
1022
|
return s;
|
|
993
|
-
},
|
|
994
|
-
const t = u, e = E.
|
|
1023
|
+
}, ze(E, A) {
|
|
1024
|
+
const t = u, e = E.Le, s = E.loca;
|
|
995
1025
|
if (s[A] === s[A + 1]) return null;
|
|
996
|
-
const i = m.findTable(e, "glyf", E.
|
|
1026
|
+
const i = m.findTable(e, "glyf", E.Oe);
|
|
997
1027
|
if (!i) return null;
|
|
998
1028
|
let B = i[0] + s[A];
|
|
999
1029
|
const r = {};
|
|
@@ -1001,9 +1031,9 @@ const u = { readShort: (E, A) => (u.t.uint16[0] = E[A] << 8 | E[A + 1], u.t.int1
|
|
|
1001
1031
|
if (r.noc > 0) {
|
|
1002
1032
|
r.endPts = [];
|
|
1003
1033
|
for (let h = 0; h < r.noc; h++) r.endPts.push(t.readUshort(e, B)), B += 2;
|
|
1004
|
-
const
|
|
1005
|
-
if (B += 2, e.length - B <
|
|
1006
|
-
B +=
|
|
1034
|
+
const Q = t.readUshort(e, B);
|
|
1035
|
+
if (B += 2, e.length - B < Q) return null;
|
|
1036
|
+
B += Q;
|
|
1007
1037
|
const o = r.endPts[r.noc - 1] + 1;
|
|
1008
1038
|
r.flags = [];
|
|
1009
1039
|
for (let h = 0; h < o; h++) {
|
|
@@ -1024,18 +1054,18 @@ const u = { readShort: (E, A) => (u.t.uint16[0] = E[A] << 8 | E[A + 1], u.t.int1
|
|
|
1024
1054
|
const c = r.flags[h], l = !!(32 & c);
|
|
1025
1055
|
4 & c ? (r.ys.push(l ? e[B] : -e[B]), B++) : l ? r.ys.push(0) : (r.ys.push(t.readShort(e, B)), B += 2);
|
|
1026
1056
|
}
|
|
1027
|
-
let
|
|
1028
|
-
for (let h = 0; h < o; h++)
|
|
1057
|
+
let g = 0, a = 0;
|
|
1058
|
+
for (let h = 0; h < o; h++) g += r.xs[h], a += r.ys[h], r.xs[h] = g, r.ys[h] = a;
|
|
1029
1059
|
} else r.parts = [], r.endPts = [], r.flags = [], r.xs = [], r.ys = [];
|
|
1030
1060
|
return r;
|
|
1031
1061
|
} } }, m = { parse: (E) => [((A, t, e, s) => {
|
|
1032
|
-
const i =
|
|
1062
|
+
const i = V, B = { Le: A, Te: t, Oe: e };
|
|
1033
1063
|
for (const r in i) {
|
|
1034
|
-
const
|
|
1064
|
+
const Q = r, o = m.findTable(A, Q, e);
|
|
1035
1065
|
if (o) {
|
|
1036
|
-
const [
|
|
1037
|
-
let h = s[
|
|
1038
|
-
h == null && (h = i[
|
|
1066
|
+
const [g, a] = o;
|
|
1067
|
+
let h = s[g];
|
|
1068
|
+
h == null && (h = i[Q].parseTab(A, g, a, B), s[g] = h), B[Q] = h;
|
|
1039
1069
|
}
|
|
1040
1070
|
}
|
|
1041
1071
|
return B;
|
|
@@ -1045,45 +1075,45 @@ const u = { readShort: (E, A) => (u.t.uint16[0] = E[A] << 8 | E[A + 1], u.t.int1
|
|
|
1045
1075
|
for (let B = 0; B < s; B++) {
|
|
1046
1076
|
const r = e.readASCII(E, i, 4);
|
|
1047
1077
|
e.readUint(E, i + 4);
|
|
1048
|
-
const
|
|
1049
|
-
if (r === A) return [
|
|
1078
|
+
const Q = e.readUint(E, i + 8), o = e.readUint(E, i + 12);
|
|
1079
|
+
if (r === A) return [Q, o];
|
|
1050
1080
|
i += 16;
|
|
1051
1081
|
}
|
|
1052
1082
|
return null;
|
|
1053
|
-
}, T:
|
|
1083
|
+
}, T: V, B: u };
|
|
1054
1084
|
class _ {
|
|
1055
1085
|
constructor() {
|
|
1056
|
-
|
|
1057
|
-
|
|
1086
|
+
n(this, "Ue", /* @__PURE__ */ new Map());
|
|
1087
|
+
n(this, "We", /* @__PURE__ */ new Map());
|
|
1058
1088
|
}
|
|
1059
|
-
|
|
1060
|
-
const e = `${this.
|
|
1061
|
-
if (this.
|
|
1089
|
+
He(A, t) {
|
|
1090
|
+
const e = `${this.Ke(A)}_${t}`;
|
|
1091
|
+
if (this.Ue.has(e)) return this.Ue.get(e);
|
|
1062
1092
|
const s = A.cmap;
|
|
1063
|
-
if (!s || !s.tables) return this.
|
|
1093
|
+
if (!s || !s.tables) return this.Ue.set(e, 0), 0;
|
|
1064
1094
|
let i = 0;
|
|
1065
|
-
for (const B of s.tables) if (B.format === 4 ? i = this.
|
|
1066
|
-
return this.
|
|
1095
|
+
for (const B of s.tables) if (B.format === 4 ? i = this.Je(t, B) : B.format === 12 && (i = this.Ve(t, B)), i > 0) break;
|
|
1096
|
+
return this.Ue.set(e, i), i;
|
|
1067
1097
|
}
|
|
1068
|
-
|
|
1098
|
+
Ze(A, t) {
|
|
1069
1099
|
const e = t.codePointAt(0);
|
|
1070
|
-
return e === void 0 ? 0 : this.
|
|
1100
|
+
return e === void 0 ? 0 : this.He(A, e);
|
|
1071
1101
|
}
|
|
1072
|
-
|
|
1102
|
+
Ne(A, t) {
|
|
1073
1103
|
const e = A.hmtx;
|
|
1074
1104
|
return e && e.aWidth && e.aWidth.length !== 0 ? t < e.aWidth.length ? e.aWidth[t] : e.aWidth[e.aWidth.length - 1] : 0;
|
|
1075
1105
|
}
|
|
1076
|
-
|
|
1106
|
+
Xe(A, t) {
|
|
1077
1107
|
const e = t / A.head.unitsPerEm, s = A.hhea.ascender * e, i = A.hhea.descender * e, B = A.hhea.lineGap * e;
|
|
1078
1108
|
return { ascender: s, descender: i, lineGap: B, lineHeight: s - i + B, unitsPerEm: A.head.unitsPerEm, scale: e };
|
|
1079
1109
|
}
|
|
1080
|
-
|
|
1081
|
-
this.
|
|
1110
|
+
je() {
|
|
1111
|
+
this.Ue.clear(), this.We.clear();
|
|
1082
1112
|
}
|
|
1083
|
-
|
|
1084
|
-
return `${A.
|
|
1113
|
+
Ke(A) {
|
|
1114
|
+
return `${A.Oe}_${A.Le.length}`;
|
|
1085
1115
|
}
|
|
1086
|
-
|
|
1116
|
+
Je(A, t) {
|
|
1087
1117
|
const e = t.endCount.length;
|
|
1088
1118
|
let s = -1;
|
|
1089
1119
|
for (let i = 0; i < e; i++) if (A <= t.endCount[i]) {
|
|
@@ -1101,7 +1131,7 @@ class _ {
|
|
|
1101
1131
|
}
|
|
1102
1132
|
return 0;
|
|
1103
1133
|
}
|
|
1104
|
-
|
|
1134
|
+
Ve(A, t) {
|
|
1105
1135
|
const e = t.groups.length / 3;
|
|
1106
1136
|
for (let s = 0; s < e; s++) {
|
|
1107
1137
|
const i = t.groups[3 * s], B = t.groups[3 * s + 1], r = t.groups[3 * s + 2];
|
|
@@ -1112,43 +1142,43 @@ class _ {
|
|
|
1112
1142
|
}
|
|
1113
1143
|
class pA {
|
|
1114
1144
|
constructor(A) {
|
|
1115
|
-
|
|
1116
|
-
this.
|
|
1145
|
+
n(this, "qe");
|
|
1146
|
+
this.qe = A;
|
|
1117
1147
|
}
|
|
1118
|
-
|
|
1148
|
+
As(A) {
|
|
1119
1149
|
var e;
|
|
1120
1150
|
const t = [];
|
|
1121
1151
|
return (e = A.cmap) != null && e.tables ? (A.cmap.tables.forEach((s) => {
|
|
1122
1152
|
if (s.format === 4) {
|
|
1123
|
-
const i = this.
|
|
1153
|
+
const i = this.ts(s);
|
|
1124
1154
|
t.push(...i);
|
|
1125
1155
|
} else if (s.format === 12) {
|
|
1126
|
-
const i = this.
|
|
1156
|
+
const i = this.es(s);
|
|
1127
1157
|
t.push(...i);
|
|
1128
1158
|
}
|
|
1129
1159
|
}), [...new Set(t)]) : [];
|
|
1130
1160
|
}
|
|
1131
|
-
|
|
1132
|
-
return this.
|
|
1161
|
+
ss(A, t) {
|
|
1162
|
+
return this.qe.Ze(A, t) > 0;
|
|
1133
1163
|
}
|
|
1134
|
-
|
|
1135
|
-
for (const e of t) if (!this.
|
|
1164
|
+
Bs(A, t) {
|
|
1165
|
+
for (const e of t) if (!this.ss(A, e)) return !1;
|
|
1136
1166
|
return !0;
|
|
1137
1167
|
}
|
|
1138
|
-
|
|
1139
|
-
return t.filter((e) => this.
|
|
1168
|
+
Qs(A, t) {
|
|
1169
|
+
return t.filter((e) => this.ss(A, e));
|
|
1140
1170
|
}
|
|
1141
|
-
|
|
1142
|
-
return A.filter((t) => this.
|
|
1171
|
+
Es(A) {
|
|
1172
|
+
return A.filter((t) => this.rs(t));
|
|
1143
1173
|
}
|
|
1144
|
-
|
|
1174
|
+
ts(A) {
|
|
1145
1175
|
const t = [];
|
|
1146
1176
|
if (!(A.startCount && A.endCount && A.idRangeOffset && A.idDelta)) return t;
|
|
1147
1177
|
for (let e = 0; e < A.startCount.length; e++) {
|
|
1148
1178
|
const s = A.startCount[e], i = A.endCount[e];
|
|
1149
1179
|
if (s !== 65535 || i !== 65535) {
|
|
1150
1180
|
for (let B = s; B <= i; B++)
|
|
1151
|
-
if (this.
|
|
1181
|
+
if (this.ns(A, B, e) > 0) try {
|
|
1152
1182
|
const r = String.fromCodePoint(B);
|
|
1153
1183
|
t.push(r);
|
|
1154
1184
|
} catch {
|
|
@@ -1157,21 +1187,21 @@ class pA {
|
|
|
1157
1187
|
}
|
|
1158
1188
|
return t;
|
|
1159
1189
|
}
|
|
1160
|
-
|
|
1190
|
+
es(A) {
|
|
1161
1191
|
const t = [];
|
|
1162
1192
|
if (!A.groups) return t;
|
|
1163
1193
|
for (let e = 0; e < A.groups.length; e += 3) {
|
|
1164
1194
|
const s = A.groups[e], i = A.groups[e + 1], B = A.groups[e + 2];
|
|
1165
1195
|
for (let r = s; r <= i; r++)
|
|
1166
1196
|
if (B + (r - s) > 0) try {
|
|
1167
|
-
const
|
|
1168
|
-
t.push(
|
|
1197
|
+
const Q = String.fromCodePoint(r);
|
|
1198
|
+
t.push(Q);
|
|
1169
1199
|
} catch {
|
|
1170
1200
|
}
|
|
1171
1201
|
}
|
|
1172
1202
|
return t;
|
|
1173
1203
|
}
|
|
1174
|
-
|
|
1204
|
+
ns(A, t, e) {
|
|
1175
1205
|
if (A.idRangeOffset[e] === 0) return t + A.idDelta[e] & 65535;
|
|
1176
1206
|
{
|
|
1177
1207
|
const s = A.idRangeOffset[e] / 2 + (t - A.startCount[e]) - (A.startCount.length - e);
|
|
@@ -1182,278 +1212,278 @@ class pA {
|
|
|
1182
1212
|
}
|
|
1183
1213
|
return 0;
|
|
1184
1214
|
}
|
|
1185
|
-
|
|
1215
|
+
rs(A) {
|
|
1186
1216
|
const t = A.codePointAt(0) || 0;
|
|
1187
1217
|
return !(t >= 0 && t <= 31 && t !== 9 && t !== 10 && t !== 13 || t >= 127 && t <= 159);
|
|
1188
1218
|
}
|
|
1189
1219
|
}
|
|
1190
1220
|
class mA {
|
|
1191
1221
|
constructor() {
|
|
1192
|
-
|
|
1222
|
+
n(this, "gs");
|
|
1193
1223
|
const A = new _();
|
|
1194
|
-
this.
|
|
1224
|
+
this.gs = new pA(A);
|
|
1195
1225
|
}
|
|
1196
1226
|
extractCharacters(A) {
|
|
1197
|
-
return this.
|
|
1227
|
+
return this.gs.As(A);
|
|
1198
1228
|
}
|
|
1199
1229
|
filterProblematicCharacters(A) {
|
|
1200
|
-
return this.Es
|
|
1230
|
+
return this.gs.Es(A);
|
|
1201
1231
|
}
|
|
1202
1232
|
characterExists(A, t) {
|
|
1203
|
-
return this.
|
|
1233
|
+
return this.gs.ss(A, t);
|
|
1204
1234
|
}
|
|
1205
1235
|
allCharactersExist(A, t) {
|
|
1206
|
-
return this.
|
|
1236
|
+
return this.gs.Bs(A, t);
|
|
1207
1237
|
}
|
|
1208
1238
|
}
|
|
1209
1239
|
class yA {
|
|
1210
1240
|
constructor(A) {
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
this.vA = A, this.
|
|
1241
|
+
n(this, "hs");
|
|
1242
|
+
n(this, "cs");
|
|
1243
|
+
n(this, "vA");
|
|
1244
|
+
n(this, "ls");
|
|
1245
|
+
this.vA = A, this.ls = new _(), this.hs = document.createElement("canvas"), this.cs = this.hs.getContext("2d", { willReadFrequently: !0, alpha: !1 });
|
|
1216
1246
|
}
|
|
1217
1247
|
createTextureAtlas(A, t, e, s) {
|
|
1218
|
-
const i = A.length, B = Math.ceil(Math.sqrt(i)), r = Math.ceil(i / B),
|
|
1219
|
-
this.
|
|
1220
|
-
const
|
|
1221
|
-
return
|
|
1248
|
+
const i = A.length, B = Math.ceil(Math.sqrt(i)), r = Math.ceil(i / B), Q = t.width * B, o = t.height * r, g = typeof s == "object" ? s : null;
|
|
1249
|
+
this.Cs(Q, o), this.Ds(A, t, B, e, g);
|
|
1250
|
+
const a = this.vA.Fe(Q, o, 1, { filter: "nearest" });
|
|
1251
|
+
return a.xA(this.hs), { framebuffer: a, columns: B, rows: r };
|
|
1222
1252
|
}
|
|
1223
|
-
|
|
1224
|
-
this.
|
|
1253
|
+
Cs(A, t) {
|
|
1254
|
+
this.hs.width = A, this.hs.height = t, this.hs.style.width = A + "px", this.hs.style.height = A + "px", this.cs.imageSmoothingEnabled = !1, this.hs.style.imageRendering = "pixelated", this.cs.fillStyle = "black", this.cs.fillRect(0, 0, A, t), this.cs.textBaseline = "top", this.cs.textAlign = "left", this.cs.fillStyle = "white";
|
|
1225
1255
|
}
|
|
1226
|
-
|
|
1256
|
+
Ds(A, t, e, s, i) {
|
|
1227
1257
|
const B = s / i.head.unitsPerEm;
|
|
1228
1258
|
for (let r = 0; r < A.length; r++) {
|
|
1229
|
-
const
|
|
1230
|
-
if (!
|
|
1231
|
-
const h =
|
|
1232
|
-
this.
|
|
1259
|
+
const Q = r % e, o = Math.floor(r / e), g = A[r].character, a = this.Ps(i, g);
|
|
1260
|
+
if (!a) continue;
|
|
1261
|
+
const h = g.codePointAt(0) || 0, c = this.ls.He(i, h), l = this.us(i, c) * B, C = Q * t.width, I = o * t.height, w = C + 0.5 * t.width, d = I + 0.5 * t.height, p = Math.round(w - 0.5 * t.width), x = Math.round(d - 0.5 * s), Z = p + 0.5 * (t.width - l), j = x + i.hhea.ascender * B;
|
|
1262
|
+
this.Is(a, Z, j, B);
|
|
1233
1263
|
}
|
|
1234
1264
|
}
|
|
1235
|
-
|
|
1236
|
-
const e = t.codePointAt(0) || 0, s = this.
|
|
1265
|
+
Ps(A, t) {
|
|
1266
|
+
const e = t.codePointAt(0) || 0, s = this.ls.He(A, e);
|
|
1237
1267
|
if (s === 0) return null;
|
|
1238
1268
|
if (A.glyf && A.glyf[s] !== null) return A.glyf[s];
|
|
1239
1269
|
if (m && m.T && m.T.glyf) {
|
|
1240
|
-
const i = m.T.glyf.
|
|
1270
|
+
const i = m.T.glyf.ze(A, s);
|
|
1241
1271
|
return A.glyf && i && (A.glyf[s] = i), i;
|
|
1242
1272
|
}
|
|
1243
1273
|
return null;
|
|
1244
1274
|
}
|
|
1245
|
-
|
|
1275
|
+
us(A, t) {
|
|
1246
1276
|
const e = A.hmtx;
|
|
1247
1277
|
return e && e.aWidth ? t < e.aWidth.length ? e.aWidth[t] : e.aWidth[e.aWidth.length - 1] : 0;
|
|
1248
1278
|
}
|
|
1249
|
-
|
|
1279
|
+
Is(A, t, e, s) {
|
|
1250
1280
|
if (!A || !A.xs || A.noc === 0) return;
|
|
1251
|
-
const { xs: i, ys: B, endPts: r, flags:
|
|
1252
|
-
if (!(i && B && r &&
|
|
1253
|
-
this.
|
|
1281
|
+
const { xs: i, ys: B, endPts: r, flags: Q } = A;
|
|
1282
|
+
if (!(i && B && r && Q)) return;
|
|
1283
|
+
this.cs.beginPath();
|
|
1254
1284
|
let o = 0;
|
|
1255
|
-
for (let
|
|
1256
|
-
const
|
|
1257
|
-
if (!(
|
|
1258
|
-
if (
|
|
1285
|
+
for (let g = 0; g < r.length; g++) {
|
|
1286
|
+
const a = r[g];
|
|
1287
|
+
if (!(a < o)) {
|
|
1288
|
+
if (a >= o) {
|
|
1259
1289
|
const h = t + i[o] * s, c = e - B[o] * s;
|
|
1260
|
-
this.
|
|
1290
|
+
this.cs.moveTo(h, c);
|
|
1261
1291
|
let l = o + 1;
|
|
1262
|
-
for (; l <=
|
|
1263
|
-
if (1 &
|
|
1264
|
-
const C = t + i[l] * s,
|
|
1265
|
-
this.
|
|
1292
|
+
for (; l <= a; )
|
|
1293
|
+
if (1 & Q[l]) {
|
|
1294
|
+
const C = t + i[l] * s, I = e - B[l] * s;
|
|
1295
|
+
this.cs.lineTo(C, I), l++;
|
|
1266
1296
|
} else {
|
|
1267
|
-
const C = t + i[l] * s,
|
|
1268
|
-
let w = l + 1 >
|
|
1269
|
-
if (1 &
|
|
1297
|
+
const C = t + i[l] * s, I = e - B[l] * s;
|
|
1298
|
+
let w = l + 1 > a ? o : l + 1;
|
|
1299
|
+
if (1 & Q[w]) {
|
|
1270
1300
|
const d = t + i[w] * s, p = e - B[w] * s;
|
|
1271
|
-
this.
|
|
1301
|
+
this.cs.quadraticCurveTo(C, I, d, p), l = w + 1;
|
|
1272
1302
|
} else {
|
|
1273
|
-
const d = (C + (t + i[w] * s)) / 2, p = (
|
|
1274
|
-
this.
|
|
1303
|
+
const d = (C + (t + i[w] * s)) / 2, p = (I + (e - B[w] * s)) / 2;
|
|
1304
|
+
this.cs.quadraticCurveTo(C, I, d, p), l = w;
|
|
1275
1305
|
}
|
|
1276
1306
|
}
|
|
1277
|
-
this.
|
|
1307
|
+
this.cs.closePath();
|
|
1278
1308
|
}
|
|
1279
|
-
o =
|
|
1309
|
+
o = a + 1;
|
|
1280
1310
|
}
|
|
1281
1311
|
}
|
|
1282
|
-
this.
|
|
1312
|
+
this.cs.fill();
|
|
1283
1313
|
}
|
|
1284
1314
|
}
|
|
1285
1315
|
class vA {
|
|
1286
1316
|
constructor() {
|
|
1287
|
-
|
|
1288
|
-
this.
|
|
1317
|
+
n(this, "qe");
|
|
1318
|
+
this.qe = new _();
|
|
1289
1319
|
}
|
|
1290
1320
|
calculateMaxGlyphDimensions(A, t, e) {
|
|
1291
1321
|
let s = 0;
|
|
1292
|
-
const i = this.
|
|
1322
|
+
const i = this.qe.Xe(e, t), B = i.lineHeight;
|
|
1293
1323
|
for (const r of A) {
|
|
1294
|
-
const
|
|
1295
|
-
if (
|
|
1296
|
-
const o = this.Ne
|
|
1324
|
+
const Q = this.qe.Ze(e, r);
|
|
1325
|
+
if (Q === 0) continue;
|
|
1326
|
+
const o = this.qe.Ne(e, Q) * i.scale;
|
|
1297
1327
|
s = Math.max(s, o);
|
|
1298
1328
|
}
|
|
1299
1329
|
return { width: Math.ceil(s), height: Math.ceil(B) };
|
|
1300
1330
|
}
|
|
1301
1331
|
getCharacterAdvanceWidth(A, t, e) {
|
|
1302
|
-
const s = this.
|
|
1303
|
-
return this.Ne
|
|
1332
|
+
const s = this.qe.Xe(e, t), i = this.qe.Ze(e, A);
|
|
1333
|
+
return this.qe.Ne(e, i) * s.scale;
|
|
1304
1334
|
}
|
|
1305
1335
|
getFontMetrics(A, t) {
|
|
1306
|
-
return this.
|
|
1336
|
+
return this.qe.Xe(t, A);
|
|
1307
1337
|
}
|
|
1308
|
-
|
|
1309
|
-
this.
|
|
1338
|
+
je() {
|
|
1339
|
+
this.qe.je();
|
|
1310
1340
|
}
|
|
1311
1341
|
}
|
|
1312
|
-
class
|
|
1342
|
+
class RA {
|
|
1313
1343
|
constructor() {
|
|
1314
|
-
|
|
1315
|
-
this.
|
|
1344
|
+
n(this, "ls");
|
|
1345
|
+
this.ls = new _();
|
|
1316
1346
|
}
|
|
1317
1347
|
createCharacterObjects(A, t) {
|
|
1318
1348
|
return A.map((e, s) => {
|
|
1319
|
-
const i = e.codePointAt(0) || 0, B = this.
|
|
1349
|
+
const i = e.codePointAt(0) || 0, B = this.ws(s);
|
|
1320
1350
|
let r = 0;
|
|
1321
1351
|
if (t.hmtx && t.hmtx.aWidth) {
|
|
1322
|
-
const
|
|
1323
|
-
|
|
1352
|
+
const Q = this.ls.He(t, i);
|
|
1353
|
+
Q > 0 && t.hmtx.aWidth[Q] !== void 0 && (r = t.hmtx.aWidth[Q]);
|
|
1324
1354
|
}
|
|
1325
1355
|
return { character: e, unicode: i, color: B, advanceWidth: r };
|
|
1326
1356
|
});
|
|
1327
1357
|
}
|
|
1328
|
-
|
|
1358
|
+
ws(A) {
|
|
1329
1359
|
return [A % 256 / 255, Math.floor(A / 256) % 256 / 255, Math.floor(A / 65536) % 256 / 255];
|
|
1330
1360
|
}
|
|
1331
|
-
|
|
1361
|
+
fs(A, t) {
|
|
1332
1362
|
if (!M._(typeof A == "string", "Character must be a string.", { method: "getCharacterColor", providedValue: A })) return [0, 0, 0];
|
|
1333
1363
|
const e = t.find((s) => s.character === A);
|
|
1334
1364
|
return e ? e.color : [0, 0, 0];
|
|
1335
1365
|
}
|
|
1336
|
-
|
|
1337
|
-
return M._(typeof A == "string" && A.length > 0, "Characters must be a string with at least one character.", { method: "getCharacterColors", providedValue: A }) ? Array.from(A).map((e) => this.
|
|
1366
|
+
ds(A, t) {
|
|
1367
|
+
return M._(typeof A == "string" && A.length > 0, "Characters must be a string with at least one character.", { method: "getCharacterColors", providedValue: A }) ? Array.from(A).map((e) => this.fs(e, t) || [0, 0, 0]) : [[0, 0, 0]];
|
|
1338
1368
|
}
|
|
1339
1369
|
}
|
|
1340
1370
|
class bA {
|
|
1341
1371
|
constructor(A, t = 16) {
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
this.
|
|
1355
|
-
}
|
|
1356
|
-
async
|
|
1372
|
+
n(this, "ps");
|
|
1373
|
+
n(this, "_s", []);
|
|
1374
|
+
n(this, "vs");
|
|
1375
|
+
n(this, "bs", 16);
|
|
1376
|
+
n(this, "$s", 0);
|
|
1377
|
+
n(this, "Gs", 0);
|
|
1378
|
+
n(this, "Ms", { width: 0, height: 0 });
|
|
1379
|
+
n(this, "Ys");
|
|
1380
|
+
n(this, "Fs");
|
|
1381
|
+
n(this, "Rs");
|
|
1382
|
+
n(this, "Ss");
|
|
1383
|
+
n(this, "ks");
|
|
1384
|
+
this.bs = t, this.Fs = new mA(), this.Rs = new yA(A), this.Ss = new vA(), this.ks = new RA();
|
|
1385
|
+
}
|
|
1386
|
+
async zs(A) {
|
|
1357
1387
|
let t;
|
|
1358
1388
|
if (A) {
|
|
1359
1389
|
const e = await fetch(A);
|
|
1360
|
-
if (!e.ok) throw new
|
|
1390
|
+
if (!e.ok) throw new f(`Failed to load font file: ${e.status} ${e.statusText}`);
|
|
1361
1391
|
t = await e.arrayBuffer();
|
|
1362
1392
|
} else
|
|
1363
1393
|
t = await (await fetch(`data:font/truetype;charset=utf-8;base64,AAEAAAAKAIAAAwAgT1MvMs+QEyQAAAEoAAAAYGNtYXAg7yVJAAAFjAAACSBnbHlmuHLTdAAAErQAAGi0aGVhZFvXdUwAAACsAAAANmhoZWELAQUCAAAA5AAAACRobXR4BACDgAAAAYgAAAQEbG9jYQAy54AAAA6sAAAECG1heHABIgCCAAABCAAAACBuYW1lVs/OSgAAe2gAAAOicG9zdABpADQAAH8MAAAAIAABAAAAAQAAzOWHqV8PPPUAAAQAAAAAAHxiGCcAAAAAfGIYJwAAAAAEAAQAAAAACAACAAEAAAAAAAEAAAQAAAAAAAQAAAAAAAcAAAEAAAAAAAAAAAAAAAAAAAEBAAEAAAEBAIAAIAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAZAABQAEAgACAAAAAAACAAIAAAACAAAzAMwAAAAABAAAAAAAAACAAACLAABw4wAAAAAAAAAAWUFMLgBAACAmawQAAAAAAAQAAAAAAAFRAAAAAAMABAAAAAAgAAAEAAAABAAAAAQAAAAEAAGABAABAAQAAIAEAACABAAAgAQAAIAEAAGABAABAAQAAQAEAACABAABAAQAAIAEAACABAABAAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAAGABAAAgAQAAIAEAAGABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABgAQAAQAEAACABAAAAAQAAgAEAACABAAAgAQAAIAEAACABAACAAQAAAAEAAIABAABgAQAAgAEAACABAAAgAQAAAAEAACABAAAAAQAAAAEAAAABAAAAAQAAAAEAAIABAADAAQAAAAEAAAABAAAgAQAAYAEAAAABAAAAAQAAIAEAAAABAAAgAQAAIAEAACABAAAAAQAAIAEAAAABAAAAAQAAIAEAAGABAAAAAQAAAAEAAAABAAAAAQAAIAEAACABAAAAAQAAIAEAACABAAAAAQAAIAEAACABAAAgAQAAAAEAACABAAAAAQAAAAEAAEABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAACAAQAAIAEAAAABAAAAAQAAAAEAACABAABAAQAAQAEAAEABAABAAQAAIAEAACABAAAAAQAAAAEAAAABAABAAQAAAAEAACABAAAAAQAAAAEAAIABAAAgAQAAAAEAAAABAAAAAQAAAAEAAAABAABgAQAAAAEAAAABAABgAQAAAAEAAGABAABgAQAAYAEAAAABAAAAAQAAAAEAAAABAABgAQAAYAEAAAABAAAAAQAAAAEAAAABAABgAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAABgAQAAAAEAAGABAABgAQAAAAEAAAABAABgAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAYAEAAAABAAAAAQAAQAEAACABAAAAAQAAAAEAAAABAAAgAQAAIAEAACABAAAgAQAAIAEAAAABAABAAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAAAAAIAAAADAAAAFAADAAEAAASaAAQEhgAAAJ4AgAAGAB4AfgCjAKUApwCsALIAtwC9AL8AxwDJANEA1gDcAOIA7wD0APcA/AD/AZIDkwOYA6MDpgOpA7EDtQPAA8QDxiAiIDwgfyCnIZUhqCIaIh8iKSJIImEiZSMCIxAjISUAJQIlDCUQJRQlGCUcJSQlLCU0JTwlbCWAJYQliCWMJZMloSWsJbIluiW8JcQlyyXZJjwmQCZCJmAmYyZmJmv//wAAACAAoQClAKcAqgCwALUAugC/AMQAyQDRANYA3ADfAOQA8QD2APkA/wGSA5MDmAOjA6YDqQOxA7QDwAPDA8YgIiA8IH8gpyGQIagiGSIeIikiSCJhImQjAiMQIyAlACUCJQwlECUUJRglHCUkJSwlNCU8JVAlgCWEJYgljCWQJaAlrCWyJbolvCXEJcsl2CY6JkAmQiZgJmMmZSZq////4v/A/7//vv+8/7n/t/+1/7T/sP+v/6j/pP+f/53/nP+b/5r/mf+X/wX9Bf0B/Pf89fzz/Oz86vzg/N783eCC4GngJ+AA3xjfBt6W3pPeit5s3lTeUt223andmtu827vbstuv26zbqdum25/bmNuR24rbd9tk22HbXttb21jbTNtC2z3bNts12y7bKNsc2rzaudq42pvamdqY2pUAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEhgAAAJ4AgAAGAB4AfgCjAKUApwCsALIAtwC9AL8AxwDJANEA1gDcAOIA7wD0APcA/AD/AZIDkwOYA6MDpgOpA7EDtQPAA8QDxiAiIDwgfyCnIZUhqCIaIh8iKSJIImEiZSMCIxAjISUAJQIlDCUQJRQlGCUcJSQlLCU0JTwlbCWAJYQliCWMJZMloSWsJbIluiW8JcQlyyXZJjwmQCZCJmAmYyZmJmv//wAAACAAoQClAKcAqgCwALUAugC/AMQAyQDRANYA3ADfAOQA8QD2APkA/wGSA5MDmAOjA6YDqQOxA7QDwAPDA8YgIiA8IH8gpyGQIagiGSIeIikiSCJhImQjAiMQIyAlACUCJQwlECUUJRglHCUkJSwlNCU8JVAlgCWEJYgljCWQJaAlrCWyJbolvCXEJcsl2CY6JkAmQiZgJmMmZSZq////4v/A/7//vv+8/7n/t/+1/7T/sP+v/6j/pP+f/53/nP+b/5r/mf+X/wX9Bf0B/Pf89fzz/Oz86vzg/N783eCC4GngJ+AA3xjfBt6W3pPeit5s3lTeUt223andmtu827vbstuv26zbqdum25/bmNuR24rbd9tk22HbXttb21jbTNtC2z3bNts12y7bKNsc2rzaudq42pvamdqY2pUAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAABwAAABIAAAAegAAALwAAADuAAAA9wAAARQAAAExAAABWgAAAW0AAAF7AAABhAAAAY0AAAGvAAAB0gAAAecAAAIOAAACNQAAAk8AAAJsAAACjgAAAqYAAALOAAAC5gAAAvQAAAMHAAADLgAAAzwAAANjAAADhQAAA6UAAAPCAAAD4AAAA/0AAAQaAAAEPAAABEwAAARrAAAEfgAABJEAAASpAAAE0AAABNsAAAT4AAAFFQAABS0AAAVDAAAFZQAABYcAAAWuAAAFvAAABc8AAAXnAAAGBAAABisAAAZDAAAGZQAABnMAAAaVAAAGowAABsUAAAbOAAAG3gAABvYAAAcMAAAHKQAABz8AAAdaAAAHbQAAB4oAAAedAAAHqwAAB8MAAAfgAAAH7gAACAsAAAgjAAAIOwAACFEAAAhsAAAIfAAACJkAAAi2AAAIzgAACOYAAAkDAAAJKgAACUIAAAlfAAAJfAAACYUAAAmiAAAJugAACdcAAAngAAAKBwAACi4AAApgAAAKeQAACokAAAq4AAAKwQAACs8AAArYAAAK8QAACw4AAAshAAALSAAAC1gAAAt1AAALjQAAC5sAAAu0AAALzQAAC9YAAAvhAAAL6gAAC/4AAAwRAAAMJAAADDQAAAxHAAAMUgAADGoAAAyCAAAMlwAADKUAAAy/AAAM0gAADN0AAAz8AAANDwAADSkAAA0yAAANTAAADVUAAA1jAAANfAAADYcAAA2VAAANqQAADcIAAA3mAAAN7wAADg4AAA4XAAAOQQAADloAAA5qAAAOcwAADoYAAA6PAAAOogAADrIAAA7FAAAPCwAADxsAAA8uAAAPRwAAD1AAAA+HAAAPoAAAD6kAAA/CAAAP3wAAD/wAABAZAAAQNgAAEE4AABBfAAAQlQAAEJ4AABCxAAAQugAAEOEAABEnAAARUwAAEWYAABF+AAARlgAAEbgAABJrAAASfgAAEpEAABKpAAASwQAAEswAABLcAAATCAAAExMAABMrAAATQwAAE1sAABNzAAATmgAAE8YAABPeAAAT5wAAE/AAABQSAAAUKgAAFEIAABRaAAAUYwAAFGwAABSOAAAUngAAFLsAABTYAAAU/wAAFSEAABVNAAAVZQAAFX0AABWVAAAVngAAFacAABXTAAAWBAAAFg0AABYvAAAWOgAAFkUAABZxAAAWhAAAFpIAABagAAAWrgAAFrwAABbVAAAW7QAAFxkAABd0AAAXzwAAF/wAABgUAAAYJQAAGC4AABhBAAAYXgAAGHEAABiYAAAYvAAAGOAAABkYAAAZPwAAGWYAABmNAAAZtAAAGdYAABn9AAAaEAAAGi0AAIBgACAAoAEAAADAAcAAAEBAQEBAQEBAYABAAAA/wAAAAEAAAD/AAQAAAD+AAAA/4AAAP8AAAAAAgEAAoADgAQAAAMABwAAAQEBAQEBAQEBAAEAAAD/AAGAAQAAAP8ABAAAAP6AAAABgAAA/oAAAAACAIAAgAQAA4AAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQAAAACAAAABAAAAAIAAAP+AAAAAgAAA/4AAAP8AAAD/gAAA/wAAAP+AAAAAgAAA/4AAAACAAQAAAACAAAADgAAA/4AAAACAAAD/gAAA/4AAAP8AAAD/gAAA/4AAAACAAAD/gAAAAIAAAACAAAABAAAAAIAAAP+A/wAAAAEAAAMAgACABAAEAAAbAB8AIwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAQAAAP8AAAABAAAAAIAAAP+AAAD/AAAA/4AAAP8AAAABAAAA/wAAAP+AAAAAgAAAAQD/gAAAAIAAAACAAAAAgAAABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/gP+AAAAAgP8A/4AAAACAAAAABQCAAIAEAAOAAAUAHQAjACkALwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAA/4AAAP+AAgABAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACA/YAAgAAAAIAAAP8AAoABAAAA/4AAAP+A/4AAgAAAAIAAAP8AA4AAAP8AAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAP+AAAD/gAAAAAAAAP8AAAAAgAAAAAAAAP+AAAD/gAAAAAAAAwCAAIAEAAQAABcAHQAjAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAACAAAAAgAAA/4AAAACAAAD9AAAA/4AAAACAAAD/gAAAAIAAgAAAAIAAAACAAAD/AAAAAQAAAP+AAAAEAAAA/4AAAP8AAAD/gAAAAIAAAP8AAAD/gAAA/4AAAACAAAABAAAAAIAAAAEAAAAAAP+AAAD/gAAAAQD+gP8AAAAAgAAAAIAAAAABAYACgAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAP6AAAAAAAABAQAAgAMABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQECAAEAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAAAIAAAACABAAAAP+AAAD/gAAA/oAAAP+AAAD/gAAAAIAAAACAAAABgAAAAIAAAAAAAAEBAACAAwAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQAAAACAAAAAgAAA/4AAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AEAAAA/4AAAP+AAAD+gAAA/4AAAP+AAAAAgAAAAIAAAAGAAAAAgAAAAAAABQCAAYADgAQAAAMABwATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAIAAAP+AAYAAgAAA/4D/AAEAAAABAAAA/wAAAP8AAAD/AAAAAQD/gACAAAD/gAGAAIAAAP+ABAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAAAIAAAP+AAAAAAAABAQAAgAOAAwAACwAAAQEBAQEBAQEBAQEBAgAAgAAAAQAAAP8AAAD/gAAA/wAAAAEAAwAAAP8AAAD/gAAA/wAAAAEAAAAAgAAAAAAAAQCAAAACAAGAAAcAAAEBAQEBAQEBAQABAAAA/4AAAP8AAAAAgAGAAAD/AAAA/4AAAACAAAAAAAABAIABgAOAAgAAAwAAAQEBAQCAAwAAAP0AAgAAAP+AAAAAAAABAQAAgAIAAYAAAwAAAQEBAQEAAQAAAP8AAYAAAP8AAAAAAAABAIAAgAQAA4AAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAA4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAwCAAIADgAQAAAsAEQAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP4AAAD/gAAAAIAAgAAAAIAAAACAAAD/gAAA/4AAAAEAAAAEAAAA/4AAAP2AAAD/gAAAAIAAAAKAAAAAAP8AAAAAgAAAAID/AP+AAAD/AAAAAYAAAAABAIAAgAOABAAADQAAAQEBAQEBAQEBAQEBAQEBgAEAAAABAAAA/QAAAAEAAAD/AAAAAIAAAACABAAAAP0AAAD/gAAAAIAAAAGAAAAAgAAAAIAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/4AAAP+AAAABgAAA/QAAAACAAAAAgAAAAIAAAACAAAD/AAAA/wAAAACABAAAAP+AAAD/AAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAABAAAA/wAAAAEAAAAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/wAAAAEAAAD/AAAA/wAAAACABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAD/gAAAAQAAAACAAAABAAAA/4AAAACAAAAAAAABAIAAgAOABAAAEQAAAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAA/4AAAP+AAAABAAAAAQAAAP8AAAD+AAAAAIAAAACABAAAAP+AAAD/gAAA/wAAAAEAAAD9gAAAAQAAAAGAAAAAgAAAAAEAgACAA4AEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAwAAAP4AAAABgAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/gAEAAAA/4AAAP8AAAD/gAAA/wAAAP+AAAAAgAAAAIAAAP+AAAABAAAAAAAAAgCAAIADgAQAABMAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD/AAAAAYAAAACAAAD/gAAA/gAAAP+AAAAAgACAAAABAAAABAAAAP+AAAD/gAAAAIAAAP8AAAD/gAAA/wAAAP+AAAAAgAAAAoAAAP6A/wAAAAEAAAEAgACAA4AEAAAPAAABAQEBAQEBAQEBAQEBAQEBAIADAAAA/4AAAP+AAAD/AAAAAIAAAACAAAD+gAAA/4AEAAAA/oAAAP+AAAD+gAAAAYAAAACAAAABAAAA/4AAAAAAAAMAgACAA4AEAAATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAAAIAAAP+AAAD+AAAA/4AAAACAAAD/gAAAAIAAgAAAAQAAAP8AAAABAAAABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAQAAAAAA/wAAAAEA/oD/AAAAAQAAAAACAIAAgAOABAAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD+gAAA/4AAAACAAIAAAAEAAAAEAAAA/4AAAP0AAAABAAAAAIAAAAGAAAAAAP6AAAABgAACAQABAAIAA4AAAwAHAAABAQEBAQEBAQEAAQAAAP8AAAABAAAA/wADgAAA/wAAAP+AAAD/AAAAAAIAgACAAgADgAADAAsAAAEBAQEBAQEBAQEBAQEAAQAAAP8AAAABAAAA/4AAAP8AAAAAgAOAAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAABAQAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQKAAQAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAACAIABgAOAAwAAAwAHAAABAQEBAQEBAQCAAwAAAP0AAAADAAAA/QADAAAA/4AAAP+AAAD/gAAAAAEAgACAAwAEAAAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAA/4AAAP+AAAD/gAAA/wAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAIAgACAA4AEAAATABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP8AAAD/AAAAAIAAgAEAAAD/AAQAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAA/4AAAACAAAD+AAAA/wAAAAACAIAAgAOABAAAEQAVAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP6AAAAAgAAA/wAAAAGAAAD+AAAA/4AAAACAAgAAgAAA/4AEAAAA/4AAAP6AAAABAAAAAIAAAP2AAAD/gAAAAIAAAAKAAAD+AAAA/4AAAAAAAAIAgACAA4AEAAAPABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAAAIAAAACAAAD/AAAA/wAAAP8AAAAAgAAAAIAAAAAAAQAAAAQAAAD/gAAA/4AAAP2AAAABAAAA/wAAAAKAAAAAgAAA/4D/AAAAAQAAAwCAAIADgAQAAAsADwATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAoAAAACAAAD/gAAAAIAAAP+AAAD9gAEAAAABAAAA/wAAAAEAAAAEAAAA/4AAAP8AAAD/gAAA/wAAAP+AAAADAP8AAAABAP6A/wAAAAEAAAAAAQCAAIADgAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD/AAAAAQAAAAEAAAD/gAAA/gAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD9gAAAAIAAAP+AAAD/gAAAAIAAAAKAAAAAAAACAIAAgAOABAAACwATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAEAAAAAgAAAAIAAAP+AAAAEAAAA/4AAAP+AAAD+gAAA/4AAAP+AAAADAP2AAAAAgAAAAYAAAACAAAEAgACAA4AEAAAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAA/wAAAAEAAAABAAAA/4AAAP4AAAD/gAAAAIAEAAAA/4AAAP+AAAAAgAAA/wAAAP+AAAD/AAAAAIAAAP+AAAD/gAAAAIAAAAKAAAAAAAABAIAAgAOABAAACQAAAQEBAQEBAQEBAQCAAwAAAP4AAAABAAAA/wAAAP8ABAAAAP+AAAD/AAAA/4AAAP6AAAAAAQCAAIADgAQAABUAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAA/4AAAAGAAAD/gAAA/gAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD9gAAAAQAAAACAAAD+gAAA/4AAAACAAAACgAAAAAEAgACAA4AEAAALAAABAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP8AAAD/AAAA/wAEAAAA/gAAAAIAAAD8gAAAAQAAAP8AAAAAAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIADAAAA/wAAAAEAAAD9AAAAAQAAAP8ABAAAAP+AAAD9gAAA/4AAAACAAAACgAAAAAAAAQCAAIAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBAAMAAAD/gAAA/4AAAP4AAAD/gAAAAQAAAAEAAAD+gAQAAAD/gAAA/YAAAP+AAAAAgAAAAQAAAP8AAAACgAAAAAAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAAEAAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/AAQAAAD/AAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAD/AAAAAAAAAQCAAIADgAQAAAUAAAEBAQEBAQCAAQAAAAIAAAD9AAQAAAD9AAAA/4AAAAABAIAAgAQABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAACAAAABAAAA/wAAAP+AAAD/gAAA/4AAAP8ABAAAAP+AAAD/gAAAAIAAAACAAAD8gAAAAgAAAP+AAAAAgAAA/gAAAAAAAAEAgACABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAAAgAAAAIAAAAEAAAD/AAAA/4AAAP+AAAD/gAAA/wAEAAAA/4AAAP+AAAD/gAAAAYAAAPyAAAABAAAAAIAAAACAAAD+AAAAAAAAAgCAAIADgAQAAAsADwAAAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/gAAAP+AAAAAgACAAAABAAAABAAAAP+AAAD9gAAA/4AAAACAAAACgAAAAAD9gAAAAoAAAgCAAIADgAQAAAkADQAAAQEBAQEBAQEBAQEBAQEAgAKAAAAAgAAA/4AAAP6AAAD/AAEAAAABAAAABAAAAP+AAAD+gAAA/4AAAP8AAAADAP6AAAABgAAAAAIAgACABAAEAAAPABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAD/gAAAAIAAAAQAAAD/gAAA/gAAAP8AAAAAgAAA/4AAAACAAAACgAAAAAD9gAAAAIAAAACAAAABgAACAIAAgAOABAAAEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAKAAAAAgAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP8AAQAAAAEAAAAEAAAA/4AAAP8AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAD/AAAAAwD/AAAAAQAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABgAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/oAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAD/gAAAAQAAAACAAAABAAAAAAAAAQCAAIADgAQAAAcAAAEBAQEBAQEBAIADAAAA/wAAAP8AAAD/AAQAAAD/gAAA/QAAAAMAAAAAAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/gAAAP+ABAAAAP0AAAADAAAA/QAAAP+AAAAAgAAAAAAAAQCAAIADgAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP+AAAD/gAAA/wAAAP+AAAD/gAQAAAD+AAAAAgAAAP4AAAD/AAAA/4AAAACAAAABAAAAAAAAAQCAAIAEAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAAAQAAAP8AAAD/gAAA/4AAAP+AAAD/AAQAAAD+AAAAAIAAAP+AAAACAAAA/IAAAACAAAAAgAAA/4AAAP+AAAAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/AAAA/wAAAACAAAAAgAAA/4AAAP+ABAAAAP8AAAABAAAA/wAAAP+AAAD/gAAA/4AAAP8AAAABAAAA/wAAAAEAAAAAgAAAAIAAAACAAAAAAAABAIAAgAOABAAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAD/AAAA/4AAAP+ABAAAAP6AAAABgAAA/oAAAP+AAAD+gAAAAYAAAACAAAAAAAABAIAAgAOABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIADAAAA/4AAAP+AAAD/gAAA/4AAAAIAAAD9AAAAAIAAAACAAAAAgAAAAIAAAP4ABAAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAAEAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADAAQAAAcAAAEBAQEBAQEBAQACAAAA/wAAAAEAAAD+AAQAAAD/gAAA/YAAAP+AAAAAAAABAIAAgAQAA4AAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AA4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADAAQAAAcAAAEBAQEBAQEBAQACAAAA/gAAAAEAAAD/AAQAAAD8gAAAAIAAAAKAAAAAAAABAIACAAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAQCAAIADgAEAAAMAAAEBAQEAgAMAAAD9AAEAAAD/gAAAAAAAAQEAAoACgAQAAAkAAAEBAQEBAQEBAQEBAAEAAAAAgAAA/4AAAP+AAAD/gAQAAAD/gAAA/wAAAACAAAAAgAAAAAEAgACAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAQACgAAA/4AAAP+AAAD/AAAAAQAAAP6AAAD/gAAAAIADAAAA/YAAAACAAAABgAAA/oAAAP+AAAAAgAAAAYAAAAAAAAIAgACAA4AEAAAJAA0AAAEBAQEBAQEBAQEBAQEBAIABAAAAAYAAAACAAAD/gAAA/YABAAAAAQAAAAQAAAD/AAAA/4AAAP6AAAD/gAAAAgD+gAAAAYAAAAABAIAAgAOAAwAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAAAQAAAP+AAAD+AAAA/4AAAACAAwAAAP+AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP+AAAAAgAAAAYAAAAAAAAIAgACAA4AEAAAJAA0AAAEBAQEBAQEBAQEBAQEBAoABAAAA/YAAAP+AAAAAgAAAAYD/AAAAAQAAAAQAAAD8gAAAAIAAAAGAAAAAgAAA/4D+gAAAAYAAAAACAIAAgAOAAwAADQARAAABAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/gAAAAGAAAD+AAAA/4AAAACAAIAAAAEAAAADAAAA/4AAAP8AAAD/gAAA/4AAAACAAAABgAAAAAD/gAAAAIAAAAABAQAAgAOAA4AACwAAAQEBAQEBAQEBAQEBAYACAAAA/oAAAAEAAAD/AAAA/wAAAACAA4AAAP+AAAD/AAAA/4AAAP8AAAACgAAAAAAAAgCAAIADgAOAAA8AEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP4AAAABgAAA/oAAAP+AAAAAgACAAAABAAAAA4AAAP+AAAD+AAAA/4AAAACAAAAAgAAAAIAAAAEAAAAAAP8AAAABAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIABAAAAAYAAAACAAAD/AAAA/wAAAP8ABAAAAP8AAAD/gAAA/gAAAAIAAAD+AAAAAAAAAgGAAIACgAQAAAMABwAAAQEBAQEBAQEBgAEAAAD/AAAAAQAAAP8ABAAAAP+AAAD/gAAA/YAAAAACAIAAgAOABAAAAwAPAAABAQEBAQEBAQEBAQEBAQEBAoABAAAA/wAAAAEAAAD/gAAA/gAAAP+AAAABAAAAAQAEAAAA/4AAAP+AAAD+AAAA/4AAAACAAAABAAAA/wAAAAABAIAAgAOAA4AAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAQAAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP8AA4AAAP8AAAAAgAAA/4AAAP8AAAD/gAAA/4AAAACAAAAAgAAA/wAAAAAAAAEBgACAAwAEAAAHAAABAQEBAQEBAQGAAQAAAACAAAD/AAAA/4AEAAAA/QAAAP+AAAAAgAAAAAAAAQCAAIAEAAMAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAIAAAAEAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP8AAAAAgAMAAAD/gAAAAIAAAP+AAAD+AAAAAYAAAP+AAAAAgAAA/oAAAAIAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAABAAAAAIAAAP8AAAD/gAAA/4AAAP8AAwAAAP+AAAAAgAAA/4AAAP4AAAABgAAA/4AAAP8AAAAAAAACAIAAgAOAAwAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAADAAAA/4AAAP6AAAD/gAAAAIAAAAGAAAAAAP6AAAABgAACAIAAgAOAAwAACQANAAABAQEBAQEBAQEBAQEBAQCAAoAAAACAAAD/gAAA/oAAAP8AAQAAAAEAAAADAAAA/4AAAP+AAAD/gAAA/wAAAAIA/4AAAACAAAAAAgCAAIAEAAMAAA0AEQAAAQEBAQEBAQEBAQEBAQEBAQEBAQACgAAAAIAAAP+AAAD/AAAA/oAAAP+AAAAAgACAAAABAAAAAwAAAP6AAAD/gAAA/4AAAAEAAAAAgAAAAIAAAAAA/4AAAACAAAAAAQEAAIADgAMAAAkAAAEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP+AAAD/AAMAAAD/gAAA/wAAAAEAAAD+AAAAAAEAgACABAADAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEAAoAAAP6AAAABgAAAAIAAAP+AAAD9AAAAAgAAAP6AAAD/gAAAAIADAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAQAAAP8AAAAAgAAAAQAAAP+AAAD+gAAA/4AAAP+AAAAAgAOAAAD/gAAA/4AAAP6AAAAAgAAA/4AAAP+AAAAAgAAAAYAAAACAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAAAgAAAAQAAAP+AAAD/gAAA/oAAAP+AAwAAAP4AAAAAgAAAAYAAAP2AAAAAgAAA/4AAAACAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAD/AAAA/4AAAP+AAwAAAP6AAAABgAAA/oAAAP+AAAD/gAAAAIAAAACAAAAAAAABAIAAgAQAAwAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAACAAAABAAAA/4AAAP8AAAD/gAAA/wAAAP+AAwAAAP6AAAAAgAAA/4AAAAGAAAD+AAAA/4AAAACAAAD/gAAAAIAAAAAAAAEAgACAA4ADAAAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP8AAAD/AAAAAIAAAACAAAD/gAAA/4ADAAAA/4AAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAD/gAAAAIAAAACAAAAAgAAAAIAAAAAAAAEAgACAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/gAAAAGAAAD+gAAA/4ADAAAA/wAAAAEAAAD+AAAA/4AAAACAAAAAgAAAAIAAAAAAAAEAgACAA4ADAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAwAAAP+AAAD/gAAA/4AAAAGAAAD9AAAAAIAAAACAAAAAgAAA/oADAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIADAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAA/wAAAP+AAAAAgAAAAQAAAP6AAAD/gAAA/4AAAACAAAAAgAQAAAD/gAAA/wAAAP+AAAD/AAAA/4AAAACAAAABAAAAAIAAAAEAAAAAAAABAYAAgAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAPyAAAAAAAABAQAAgAOABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAGAAAAAgAAAAIAAAP+AAAD/gAAA/oAAAAEAAAAAgAAA/4AAAP8ABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAQAAAAAAAAEAgAGAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAQABAAAAAQAAAACAAAD/gAAA/wAAAP8AAAD/gAAAAIADAAAA/4AAAACAAAD/AAAA/4AAAACAAAD/gAAAAQAAAAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQAAAYAAAAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/AAAA/wAEAAAA/4AAAP+AAAD/gAAA/wAAAP6AAAABAAAAAQAAAACAAAAAgAAAAAAAAQIAAAAEAAQAAAMAAAEBAQECAAIAAAD+AAQAAAD8AAAAAAAAAgCAAIADgAQAABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAYAAAP8AAAABAAAA/4AAAP+AAAABgAAA/QAAAACAAAAAgAAA/wAAAACAAAAAgAGAAIAAAP+ABAAAAP+AAAD/AAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAABAAAAAAAAAP+AAAAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP+AAAAAgAAA/wAAAAEAAAD/AAAA/wAAAP8AAAABAAAA/wAAAACAAAD/gAQAAAD+gAAAAYAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAABACAAIAEAAQAABcAGwAfACMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAoAAAP4AAAABgAAAAIAAAACAAAD/gAAA/YAAAAIAAAD+gAAA/4AAAP+AAAAAgAEAAAAAgAAAAQAAgAAA/4D9AACAAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/wAAAP+AAAAAgAAAAIAAAACAAAAAgAAAAQAAAP8A/4AAAACAAQAAAP+AAAD+gAAA/4AAAAAEAIAAgAQAA4AAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+AA4AAAP0AAAADAAAA/QAAAAMAAAD9AAAAAwAAAP0AAAAAAQIAAAAEAAQAAAkAAAEBAQEBAQEBAQEDgACAAAD+AAAAAIAAAACAAAAAgAQAAAD8AAAAAQAAAAEAAAABAAAAAAgAAAAABAAEAAADAAcACwAPABMAFwAbAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAA/wACAAEAAAD/AP8AAQAAAP8AAgABAAAA/wD9AAEAAAD/AAIAAQAAAP8A/wABAAAA/wACAAEAAAD/AAQAAAD/AAAAAQAAAP8AAAAAAAAA/wAAAAEAAAD/AAAAAAAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAAAQIAAAADAAQAAAMAAAEBAQECAAEAAAD/AAQAAAD8AAAAAAAAAgGAAIACgAQAAAMABwAAAQEBAQEBAQEBgAEAAAD/AAAAAQAAAP8ABAAAAP6AAAD/gAAA/oAAAAABAgAAAAQAAgAAAwAAAQEBAQIAAgAAAP4AAgAAAP4AAAAAAAAEAIAAAAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+ABAAAAPwAAAAEAAAA/AAAAAQAAAD8AAAABAAAAPwAAAAAAQCAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAoABAAAA/oAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAEAAAD/gAOAAAD+AAAA/wAAAACAAAAAgAAAAIAAAACAAAAAgAAA/wAAAAEAAAAAAAABAAAAAAQABAAACwAAAQEBAQEBAQEBAQEBAAAEAAAA/gAAAP+AAAD/gAAA/4AAAP+ABAAAAPwAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIAEAAOAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAOAAAD/gAAAAIAAAP8AAAABAAAA/oAAAAGAAAD9AAAAAIAAAP+AAAABAAAA/wAAAAGAAAD+gAAAAAAAAQAAAAACAAQAAAkAAAEBAQEBAQEBAQEAAACAAAAAgAAAAIAAAACAAAD+AAQAAAD/AAAA/wAAAP8AAAD/AAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQKAAYAAAP8AAAD/AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAQAEAAAA/wAAAP+AAAD/gAAA/wAAAP8AAAABgAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAIAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD8AAAAAIAAAACAAAAAgAIAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAgAAAAAEAAQAAAMABwAAAQEBAQEBAQEAAAIAAAD+AAIAAgAAAP4ABAAAAP4AAAAAAAAA/gAAAAAEAAACAAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAgABAAAA/wD/AAEAAAD/AAIAAQAAAP8ABAAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAABAIAAAAEAAQAAAMABwALAA8AAAEBAQEBAQEBAQEBAQEBAQECAAEAAAD/AAEAAQAAAP8A/wABAAAA/wABAAEAAAD/AAQAAAD/AAAAAAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAEDAAAABAAEAAADAAABAQEBAwABAAAA/wAEAAAA/AAAAAAAAAEAAAAABAAEAAAFAAABAQEBAQEAAAQAAAD9AAAA/wAEAAAA/wAAAP0AAAAAAQAAAAABAAQAAAMAAAEBAQEAAAEAAAD/AAQAAAD8AAAAAAAAAwCAAIADAAOAAAMABwALAAABAQEBAQEBAQEBAQEAgACAAAD/gAEAAIAAAP+AAQAAgAAA/4ADgAAA/QAAAAMAAAD9AAAAAwAAAP0AAAAAAAABAYABgAQABAAACwAAAQEBAQEBAQEBAQEBAYABAAAAAIAAAAEAAAD+gAAA/4AAAP+ABAAAAP8AAAD/gAAA/wAAAACAAAAAgAAAAAAAAQAAAYACgAQAAAsAAAEBAQEBAQEBAQEBAQGAAQAAAP+AAAD/gAAA/oAAAAEAAAAAgAQAAAD+gAAA/4AAAP+AAAABAAAAAIAAAAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAwABAAAA/AAAAAEAAAABAAAAAQAEAAAA/AAAAAKAAAAAgAAAAIAAAAABAIAAgAMABAAACwAAAQEBAQEBAQEBAQEBAgABAAAA/4AAAP6AAAD/gAAAAIAAAAEABAAAAP0AAAD/gAAAAIAAAAEAAAAAgAAAAAAAAQAAAAAEAAQAAAUAAAEBAQEBAQAAAQAAAAMAAAD8AAQAAAD9AAAA/wAAAAACAIAAgAMAAoAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQABgAAAAIAAAP+AAAD+gAAAAQAAAP8A/4AAgAAA/4ACgAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAAAAA/wAAAAACAIAAgAMABAAACwAPAAABAQEBAQEBAQEBAQEBAQEBAgABAAAA/4AAAP6AAAABAAAA/wAAAAEA/oAAgAAA/4AEAAAA/QAAAP+AAAAAgAAAAQAAAACAAAD/gAAA/wAAAAABAIAAgAQABAAADQAAAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAA/4AAAP6AAAD/gAAAAIAAAAEABAAAAP+AAAD9gAAA/4AAAACAAAABAAAAAIAAAAACAAAAAAQABAAAAwAHAAABAQEBAQEBAQAABAAAAPwAAQAAAAIAAAAEAAAA/AAAAAMA/gAAAAIAAAEAgACABAAEAAARAAABAQEBAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAAAQAAAP8AAAD/gAAA/oAAAP+AAAAAgAAAAQAEAAAA/4AAAP+AAAD/gAAA/oAAAP+AAAAAgAAAAQAAAACAAAAAAQAAAAACgAKAAAsAAAEBAQEBAQEBAQEBAQAAAYAAAACAAAAAgAAA/wAAAP+AAAD/AAKAAAD/gAAA/4AAAP6AAAABAAAAAIAAAAAAAAEAAAAABAAEAAAFAAABAQEBAQEAAAQAAAD/AAAA/QAEAAAA/AAAAAMAAAAAAQCAAIAEAAQAABUAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAAAQAAAP8AAAABAAAA/wAAAP+AAAD+gAAA/4AAAACAAAABAAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAAEAAAAAgAAAAAEBgAAABAACgAALAAABAQEBAQEBAQEBAQECgAGAAAD/AAAA/4AAAP8AAAAAgAAAAIACgAAA/wAAAP+AAAD/AAAAAYAAAACAAAAAAAABAAAAAAQABAAAEQAAAQEBAQEBAQEBAQEBAQEBAQEBAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAPwABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAAEAAAAABAABAAADAAABAQEBAAAEAAAA/AABAAAA/wAAAAAAAAEAAAAABAAEAAARAAABAQEBAQEBAQEBAQEBAQEBAQEDgACAAAD8AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAEAAAA/AAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAQAAAgAEAAQAAAMAAAEBAQEAAAQAAAD8AAQAAAD+AAAAAAAAAgCAAIACAAOAAAMABwAAAQEBAQEBAQEAgACAAAD/gAEAAIAAAP+AA4AAAP0AAAADAAAA/QAAAAAEAIAAgAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAA4AAAPyAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAABAAAAPyAAAADAP+AAAAAgP8A/4AAAACA/wD/gAAAAIAAAQAAAAAEAAQAAAUAAAEBAQEBAQMAAQAAAPwAAAADAAQAAAD8AAAAAQAAAAACAIAAgAQABAAAAwAHAAABAQEBAQEBAQCAA4AAAPyAAYAAAACAAAAEAAAA/IAAAAIA/4AAAACAAAMAgACABAAEAAADAAcACwAAAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgP4A/4AAAACAAAAABAAAAIAEAAQAAAMABwALAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAQAAAD8AAAABAAAAPwAAAAEAAAA/AAAAAQAAAD8AAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAAYAgACABAAEAAADAAcACwAPABMAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAA/oAAAACAAAD+gAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgAAA/4AAAACA/wD/gAAAAID/AP+AAAAAgAAA/4AAAACAAAEAgACAAQADgAADAAABAQEBAIAAgAAA/4ADgAAA/QAAAAAAAAUAgACABAAEAAADAAcACwAPABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAA/YAAAACAAAABgAAAAIAAAAQAAAD8gAAAAwD/gAAAAIAAAP+AAAAAgP4A/4AAAACAAAD/gAAAAIAAAAABAAADAAQABAAAAwAAAQEBAQAABAAAAPwABAAAAP8AAAAAAAAHAIAAgAQABAAAAwAHAAsADwATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAA4AAAPyAAIAAAACAAAABgAAAAIAAAP2AAAAAgAAAAYAAAACAAAD9gAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgAAA/4AAAACA/wD/gAAAAIAAAP+AAAAAgP8A/4AAAACAAAD/gAAAAIAAAAAEAAAAAAQAAgAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAgABAAAA/wD/AAEAAAD/AAIAAQAAAP8AAgAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAAAQAAAAAEAAQAAAkAAAEBAQEBAQEBAQEAAAEAAAABAAAAAQAAAAEAAAD8AAQAAAD/gAAA/4AAAP+AAAD9gAAAAAEBAAAAAgAEAAADAAABAQEBAQABAAAA/wAEAAAA/AAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQECgAGAAAD8AAAAAIAAAACAAAAAgAAAAQAEAAAA/AAAAAGAAAABAAAAAIAAAACAAAAAAAABAAABAAQAAgAAAwAAAQEBAQAABAAAAPwAAgAAAP8AAAAAAAABAAAAAAQABAAACwAAAQEBAQEBAQEBAQEBAgACAAAA/AAAAACAAAAAgAAAAIAAAACABAAAAPwAAAACAAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAIAAAkAAAEBAQEBAQEBAQEDAAEAAAD8AAAAAQAAAAEAAAABAAIAAAD+AAAAAIAAAACAAAAAgAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAIAAAAAgAAAAIAAAACAAAAAgAAA/AAEAAAA/4AAAP+AAAD/gAAA/4AAAP4AAAAAAAADAAAAAAQABAAAGwAnADMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAIAAYAAAACAAAD/gAAA/4AAAP+AAAD/gP4AAIAAAACAAAAAgAAAAIAAAP6AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAQAAAP+AAAD+gAAAAIAAAACAAAAAgAAA/oAAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAAAAAQAAAAAEAAIAAAkAAAEBAQEBAQEBAQEAAAEAAAABAAAAAQAAAAEAAAD8AAIAAAD/gAAA/4AAAP+AAAD/gAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAGAAAABAAAAAIAAAACAAAAAgAAA/AAEAAAA/4AAAP+AAAD/gAAA/wAAAP6AAAAAAAAEAAAAgAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAYAAAP6AAgABgAAA/oD9gAGAAAD+gAIAAYAAAP6ABAAAAP6AAAABgAAA/oAAAP+AAAD+gAAAAYAAAP6AAAAAAQIAAgAEAAQAAAMAAAEBAQECAAIAAAD+AAQAAAD+AAAAAAAABACAAIAEAAQAAAMABwAjACcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAD/AAGAAQAAAP8A/gAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4ABgACAAAD/gAQAAAD/gAAAAIAAAP+AAAAAAAAA/wAAAP+AAAD/gAAAAIAAAACAAAABAAAA/oAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAGAAAD/gAAAAAQAAAAABAAEAAADAAcACwAPAAABAQEBAQEBAQEBAQEBAQEBAAAAgAAA/4ADgACAAAD/gPyAAIAAAP+AA4AAgAAA/4AEAAAA/4AAAACAAAD/gAAA/QAAAP+AAAAAgAAA/4AAAAABAAAAAAIAAgAAAwAAAQEBAQAAAgAAAP4AAgAAAP4AAAAAAAAEAAAAAAIABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAQABAAAA/wD/AAEAAAD/AAEAAQAAAP8ABAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAQCAAQADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAA/4AAAAGAAAD+gAAAAIAAAP8AAAD/gAAA/4AAAACAAAAAgAOAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAAAABAQABAAOABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACABAAAAP+AAAD/gAAA/wAAAACAAAD+gAAAAYAAAP+AAAABAAAAAIAAAAAAAAEBAAEABAADgAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQIAAQAAAACAAAAAgAAA/4AAAP+AAAD/AAAAAIAAAP6AAAABgAAA/4ADgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAOAAAD+gAAAAIAAAP8AAAD/gAAA/4AAAACAAAAAgAAAAQAAAP+AAAAAAAABAQAAgAOABAAADwAAAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAA/4AAAP6AAAD/gAAAAIAAAACABAAAAP8AAAD/AAAA/wAAAP+AAAAAgAAAAQAAAAEAAAAAAAACAIAAgAOAA4AAAwAJAAABAQEBAQEBAQEBAIADAAAA/QAAgAAAAgAAAP8AAAADgAAA/QAAAAKA/gAAAAEAAAABAAAAAAIAgACABAAEAAAbACcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAD/gAAAAIAAAACAAAAAgAAA/4AAAAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAA/4D/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAEAAAIABAADAAADAAABAQEBAAAEAAAA/AADAAAA/wAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/gAAA/gAEAAAA/gAAAP+AAAD/gAAA/4AAAP+AAAAAAAABAAACAAIABAAAAwAAAQEBAQAAAgAAAP4ABAAAAP4AAAAAAAACAQAAgAOAA4AAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAAAIAAAP8AAAAAgAAAAIAAAP8AAAD/gAAA/wAAAACAAAAAgAAA/wAAAACAAIAAAACAAAADgAAA/wAAAP+AAAD/gAAA/4AAAP+AAAAAgAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgP+AAAAAgAADAAAAAAQABAAACwAnADMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAGAAAD/gAAA/4AAAP+AAAD/gAAAAIACgAEAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgACAAIAAAP+AAAD+gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAAAYAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAA/oAAAP6AAAD/gAAAAIAAAACAAAAAgAAAAAAAAgCAAIADgAQAAA8AHwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAABAAAAAIAAAP+AAAD/AAAA/wAAAP+AAAAAgAAAAQAAAAEAAAAAgAAA/4AAAP8AAAD/AAAA/4AAAACABAAAAP+AAAAAgAAA/wAAAP+AAAAAgAAA/4AAAAEAAAD+gAAA/4AAAACAAAD/AAAA/4AAAACAAAD/gAAAAQAAAAABAAAAAAQAA4AACwAAAQEBAQEBAQEBAQEBAQACAAAAAIAAAACAAAD8AAAAAIAAAACAA4AAAP+AAAD/gAAA/YAAAAKAAAAAgAAAAAAAAQAAAAACAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAAAAAAAAQIAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDgACAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAQAAAD8AAAAAIAAAACAAAAAgAAAAQAAAACAAAAAgAAAAAAAAQCAAIAEAAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAAAIAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/oAAAAEAAAD/AAAAAYAAAACAAAAAgAAAAIAAAAAAACAAAAAABAAEAAADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AEMARwBLAE8AUwBXAFsAXwBjAGcAawBvAHMAdwB7AH8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D9gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gPyAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+A/YAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D8gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gP2AAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+A/IAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D9gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAQAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAQAAAAAEAAQAAAsAAAEBAQEBAQEBAQEBAQAABAAAAP6AAAD/AAAA/4AAAP+AAAD/gAQAAAD8AAAAAIAAAACAAAAAgAAAAQAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/AAAA/oAEAAAA/oAAAP8AAAD/gAAA/4AAAP+AAAAAAAABAAABgAKABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAAAAAABAAAAAAKABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP2AAAACAAAAAIAAAACAAAAAAAABAYAAAAQAAoAABQAAAQEBAQEBAYACgAAA/oAAAP8AAoAAAP8AAAD+gAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAAACgAAAAIAAAACAAAAAgAAA/AAEAAAA/wAAAP8AAAD/AAAA/wAAAAACAAAAAAQABAAAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAQAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAAAEAAAAEAAAA/4AAAP+AAAD/gAAA/wAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAEAAAAAgAAAAIAAAP8A/wAAAAEAAAEBgAGABAAEAAAFAAABAQEBAQEBgAEAAAABgAAA/YAEAAAA/oAAAP8AAAAAAQAAAAACgAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD+AAAAAoAAAACAAAAAgAAAAAAAAQGAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQGAAYAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAQAAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAAAIAAAAEAAAAAgAAAAQAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP+AAAD/gAQAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAAEAAAAAgAAAAQAAAACAAAAAAAABAAABgAQABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAgAAAP2AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAAAAAABAAABgAQAAoAAAwAAAQEBAQAABAAAAPwAAoAAAP8AAAAAAAABAYAAAAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAPwAAAAAAAABAYAAAAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACABAAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAKAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD+AAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQAAAYAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD9gAAAAgAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQAAAgAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAQAAAYACgAKAAAMAAAEBAQEAAAKAAAD9gAKAAAD/AAAAAAAAAQGAAAACgAKAAAMAAAEBAQEBgAEAAAD/AAKAAAD9gAAAAAAAAQAAAYAEAAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAABAAAAAIAAAAEAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAYACgAAA/AAAAACAAAAAgAAAAIAEAAAA/AAAAAEAAAABAAAAAQAAAAABAAAAAAQABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAA/oAAAAEAAAABAAAAAIAAAACABAAAAP6AAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAQAAAAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAQAAAAEAAAD+gAAA/wAAAP+AAAD/gAAA/4AEAAAA/wAAAP8AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAABAAAAAAAAAQAAAAAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQAAAAACgAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAABAAAAAIAAAAAAAAEAAAAABAAEAAAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAAEAAAAAgAAAAAAAAQAAAAACgAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD9gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAQAAAD+AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAKAAAD+AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAYACgAQAAAMAAAEBAQEBgAEAAAD/AAQAAAD9gAAAAAAAAQGAAYAEAAKAAAMAAAEBAQEBgAKAAAD9gAKAAAD/AAAAAAAAAQAAAAAEAAQAAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAABAAAAAAQABAAAIwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAAAIAAAAEAAAAAgAAAAQAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+ABAAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAAEAAAAAgAAAAAAAAQGAAYACgAKAAAMAAAEBAQEBgAEAAAD/AAKAAAD/AAAAAAAAAQAAAAAEAAKAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AAAAEAAAAAgAAAAIAAAAAAAAEAAAGAAoAEAAAFAAABAQEBAQEBgAEAAAD9gAAAAYAEAAAA/YAAAAEAAAAAAQAAAAACgAKAAAUAAAEBAQEBAQAAAoAAAP8AAAD+gAKAAAD9gAAAAYAAAAABAAAAAAQABAAAHwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAQAAAACAAAABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEBgAEAAAABgAAA/oAAAP8AAAD+gAAAAYAEAAAA/oAAAP8AAAD+gAAAAYAAAAEAAAAAAAABAAAAAAQAAoAABwAAAQEBAQEBAQEAAAQAAAD+gAAA/wAAAP6AAoAAAP8AAAD+gAAAAYAAAAAAAAEBgAAABAAEAAAHAAABAQEBAQEBAQGAAQAAAAGAAAD+gAAA/wAEAAAA/oAAAP8AAAD+gAAAAAAAAQAAAAACgAQAAAcAAAEBAQEBAQEBAYABAAAA/wAAAP6AAAABgAQAAAD8AAAAAYAAAAEAAAAAAAABAAABgAQABAAABwAAAQEBAQEBAQEBgAEAAAABgAAA/AAAAAGABAAAAP6AAAD/AAAAAQAAAAAAAAQBAAEAAwADAAADAAcACwAPAAABAQEBAQEBAQEBAQEBAQEBAYABAAAA/wD/gACAAAD/gAGAAIAAAP+A/wABAAAA/wADAAAA/4AAAAAAAAD/AAAAAQAAAP8AAAAAAAAA/4AAAAACAIAAgAOAA4AACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAADgAAA/4AAAP4AAAD/gAAAAIAAAAIAAAD/gP8AAAABAAACAAAAAAQABAAAEwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAAA/4AAAP+AAAAAgAAAAIAAgAAA/4AAAACAAAABAAAAAIAAAP+AAAAEAAAA/4AAAP+AAAD+AAAA/4AAAP+AAAAAgAAAAIAAAAIAAAAAgAAA/4D/gAAA/wAAAP+AAAAAgAAAAQAAAACAABAAAAAABAAEAAADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYAAgAAA/4ACAACAAAD/gP2AAIAAAP+AAgAAgAAA/4D9gACAAAD/gAIAAIAAAP+A/YAAgAAA/4ACAACAAAD/gP+AAIAAAP+AAgAAgAAA/4D9gACAAAD/gAIAAIAAAP+A/YAAgAAA/4ACAACAAAD/gP2AAIAAAP+AAgAAgAAA/4AEAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAQAAAAAAQABAAAAwAHAAsADwATABcAGwAfACMAJwArAC8AMwA3ADsAPwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAIAAAP+AAgAAgAAA/4D+gACAAAD/gAIAAIAAAP+A/oAAgAAA/4ACAACAAAD/gP6AAIAAAP+AAgAAgAAA/4D8gACAAAD/gAIAAIAAAP+A/oAAgAAA/4ACAACAAAD/gP6AAIAAAP+AAgAAgAAA/4D+gACAAAD/gAIAAIAAAP+ABAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAwCAAIADgAQAABcAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAAEAAAD/AAAAAIAAAP+AAAABAAAA/wAAAP+AAAD/AAAA/4AAAACAAAABAP+AAAAAgAAA/4AAAACAAAAEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAYAAAACAAAD/gP+AAAAAgP8A/4AAAACAAAAAAQCAAIADgAOAAA8AAAEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP+AAAD/AAAA/4AAAP+AAAAAgAOAAAD/gAAA/wAAAP+AAAD/AAAAAQAAAACAAAABAAAAAAAAAgCAAIADgAOAAAMACQAAAQEBAQEBAQEBAQCAAwAAAP0AAYAAAP8AAAACAAAAA4AAAP0AAAACgP8AAAD/AAAAAgAAAAABAIAAgAOAA4AAAwAAAQEBAQCAAwAAAP0AA4AAAP0AAAAAAAACAIAAgAOAA4AAAwALAAABAQEBAQEBAQEBAQEAgAMAAAD9AACAAAACAAAA/4AAAP8AAAADgAAA/QAAAAKA/gAAAAIAAAD/AAAAAQAAAQAAAAAEAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAACAAAD/gAAA/4AAAP4AAAD/gAAA/4AAAACAAAAAgAQAAAD/gAAA/4AAAP4AAAD/gAAA/4AAAACAAAAAgAAAAgAAAACAAAAAAAABAQABAAMAAwAACwAAAQEBAQEBAQEBAQEBAYABAAAAAIAAAP+AAAD/AAAA/4AAAACAAwAAAP+AAAD/AAAA/4AAAACAAAABAAAAAAAAAQCAAQAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAQAAAP+AAAD/gAAAAIAAAP8AAAD/gAAA/wAAAACAAAD/gAAA/4AAAAEAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAABgCAAIAEAAQAAAMABwALAA8AEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAOAAAD8gAEAAAAAgAAAAIAAAACAAAD+AAAAAIAAAAGAAAAAgAAA/gAAAAGAAAAEAAAA/IAAAAMA/wAAAAEAAAD/AAAAAQD+gP+AAAAAgAAA/4AAAACA/4D/gAAAAIAABgCAAIAEAAQAAAMABwALAA8AEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAOAAAD8gAEAAAAAgAAAAIAAAACAAAD+gAAAAYAAAP4AAAAAgAAAAYAAAACAAAAEAAAA/IAAAAMA/wAAAAEAAAD/AAAAAQD+gP+AAAAAgP+A/4AAAACAAAD/gAAAAIAABgCAAIAEAAQAABMAFwAbAB8AIwAnAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAAEAAAD/AAAA/4AAAP+AAAD/gAAA/wAAAAEAAAAAgAAAAAAAgAAA/oAAgAAA/4ACAACAAAD/gP4AAIAAAP+AAgAAgAAA/4AEAAAA/wAAAP+AAAD/gAAA/4AAAP8AAAABAAAAAIAAAACAAAAAgAAA/4D/gAAAAIABAAAA/4AAAACAAAD/gAAA/oAAAP+AAAAAgAAA/4AAAAACAQAAgAOABAAAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAAAIAAAP+AAAD/gAAAAIAAAP+AAAD/gAAA/4AAAACAAAD/gAAAAQAAAP8A/4AAgAAA/4AEAAAA/4AAAP8AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAAEAAAAAAAAA/wAAAAACAIAAgAQABAAAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYACgAAA/4AAAP+AAAD/gAAAAIAAAP+AAAD+gAAAAQAAAP8AAAABAAAAAIAAAP8A/wAAgAAA/4AEAAAA/gAAAAEAAAD/gAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAIAAAACAAAD+gAAA/wAAAAABAIAAgAQABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAAAIAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP8AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAA/wAAAP+AAAAAgAAAAQAAAP+AAAABAAAAAIAAAACAAAAAAAABAIAAgAQABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAYAAAP+AAAAAgAAAAQAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP8AAAABAAAAAIAAAP+ABAAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/wAAAP+AAAAAgAAAAQAAAP+AAAABgAAA/4AAAACAAAAAAAABAIAAgAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAIAAAAEAAAAAgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACABAAAAP+AAAAAgAAA/4AAAP6AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAABgAAAAAAAAQCAAIAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADgAQAAAsAAAEBAQEBAQEBAQEBAQIAAYAAAP8AAAD/gAAA/wAAAACAAAAAgAQAAAD/AAAA/gAAAP+AAAABAAAAAIAAAAAAAAEAgACABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQGAAoAAAP+AAAD/AAAAAIAAAACAAAD+gAAA/4AAAP8AAAAAgAAAAIAEAAAA/QAAAP+AAAABAAAAAIAAAAEAAAD+AAAA/4AAAAEAAAAAgAAAAAAAAAAYASYAAQAAAAAAAAAIAAAAAQAAAAAAAQAIAAgAAQAAAAAAAgAHABAAAQAAAAAAAwAIABcAAQAAAAAABAAQAB8AAQAAAAAABQALAC8AAQAAAAAABgAIADoAAQAAAAAACQAJAEIAAQAAAAAACgA6AEsAAQAAAAAADQARAIUAAQAAAAAADgAyAJYAAQAAAAAAEwAMAMgAAwABBAkAAAAQANQAAwABBAkAAQAQAOQAAwABBAkAAgAOAPQAAwABBAkAAwAQAQIAAwABBAkABAAgARIAAwABBAkABQAWATIAAwABBAkABgAQAUgAAwABBAkACQASAVgAAwABBAkACgB0AWoAAwABBAkADQAiAd4AAwABBAkADgBkAgAAAwABBAkAEwAYAmQoYykgMjAyMlVyc2FGb250UmVndWxhclVyc2FGb250VXJzYUZvbnQgUmVndWxhclZlcnNpb24gMS4wVXJzYUZvbnRVcnNhRnJhbmtBbiBvcGVuIGxpY2VuY2UgZ2VuZXJhbCBwdXJwb3NlIHRleHRtb2RlIGZvbnQgYnkgVXJzYUZyYW5rQ0MwIDEuMCBVbml2ZXJzYWxodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wL0hlbGxvIFdvcmxkIQAoAGMAKQAgADIAMAAyADIAVQByAHMAYQBGAG8AbgB0AFIAZQBnAHUAbABhAHIAVQByAHMAYQBGAG8AbgB0AFUAcgBzAGEARgBvAG4AdAAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwAFUAcgBzAGEARgBvAG4AdABVAHIAcwBhAEYAcgBhAG4AawBBAG4AIABvAHAAZQBuACAAbABpAGMAZQBuAGMAZQAgAGcAZQBuAGUAcgBhAGwAIABwAHUAcgBwAG8AcwBlACAAdABlAHgAdABtAG8AZABlACAAZgBvAG4AdAAgAGIAeQAgAFUAcgBzAGEARgByAGEAbgBrAEMAQwAwACAAMQAuADAAIABVAG4AaQB2AGUAcgBzAGEAbABoAHQAdABwAHMAOgAvAC8AYwByAGUAYQB0AGkAdgBlAGMAbwBtAG0AbwBuAHMALgBvAHIAZwAvAHAAdQBiAGwAaQBjAGQAbwBtAGEAaQBuAC8AegBlAHIAbwAvADEALgAwAC8ASABlAGwAbABvACAAVwBvAHIAbABkACEAAAADAAAAAAAAAGYAMwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\r
|
|
1364
1394
|
`)).arrayBuffer();
|
|
1365
|
-
await this.
|
|
1395
|
+
await this.Ls(t), this.ps = m.parse(t)[0], await this.Os();
|
|
1366
1396
|
}
|
|
1367
|
-
|
|
1368
|
-
if (A === void 0) return this.
|
|
1369
|
-
this.
|
|
1370
|
-
const t = this
|
|
1371
|
-
this.
|
|
1397
|
+
Ts(A) {
|
|
1398
|
+
if (A === void 0) return this.bs;
|
|
1399
|
+
this.bs = A, this.Ms = this.Ss.calculateMaxGlyphDimensions(this._s.map((e) => e.character), this.bs, this.ps);
|
|
1400
|
+
const t = this.Rs.createTextureAtlas(this._s, this.Ms, this.bs, this.ps);
|
|
1401
|
+
this.vs = t.framebuffer, this.$s = t.columns, this.Gs = t.rows;
|
|
1372
1402
|
}
|
|
1373
|
-
async
|
|
1403
|
+
async Us(A) {
|
|
1374
1404
|
try {
|
|
1375
1405
|
const t = await fetch(A);
|
|
1376
|
-
if (!t.ok) throw new
|
|
1406
|
+
if (!t.ok) throw new f(`Failed to load font file: ${t.status} ${t.statusText}`);
|
|
1377
1407
|
const e = await t.arrayBuffer();
|
|
1378
|
-
await this.
|
|
1408
|
+
await this.Ls(e);
|
|
1379
1409
|
const s = m.parse(e);
|
|
1380
1410
|
if (!s || s.length === 0) throw Error("Failed to parse font file");
|
|
1381
|
-
this.
|
|
1411
|
+
this.ps = s[0], await this.Os();
|
|
1382
1412
|
} catch (t) {
|
|
1383
|
-
throw new
|
|
1413
|
+
throw new f("Failed to load font: " + (t instanceof Error ? t.message : "Unknown error"), t);
|
|
1384
1414
|
}
|
|
1385
1415
|
}
|
|
1386
|
-
async
|
|
1416
|
+
async Ls(A) {
|
|
1387
1417
|
const t = Date.now();
|
|
1388
|
-
this.
|
|
1418
|
+
this.Ys = new FontFace("CustomFont_" + t, A), await this.Ys.load(), document.fonts.add(this.Ys);
|
|
1389
1419
|
}
|
|
1390
|
-
async
|
|
1391
|
-
const A = this.
|
|
1392
|
-
this.
|
|
1393
|
-
const e = this
|
|
1394
|
-
this.
|
|
1420
|
+
async Os() {
|
|
1421
|
+
const A = this.Fs.extractCharacters(this.ps), t = this.Fs.filterProblematicCharacters(A);
|
|
1422
|
+
this._s = this.ks.createCharacterObjects(t, this.ps), this.Ms = this.Ss.calculateMaxGlyphDimensions(t, this.bs, this.ps);
|
|
1423
|
+
const e = this.Rs.createTextureAtlas(this._s, this.Ms, this.bs, this.ps);
|
|
1424
|
+
this.vs = e.framebuffer, this.$s = e.columns, this.Gs = e.rows;
|
|
1395
1425
|
}
|
|
1396
|
-
|
|
1397
|
-
return this.
|
|
1426
|
+
fs(A) {
|
|
1427
|
+
return this.ks.fs(A, this._s);
|
|
1398
1428
|
}
|
|
1399
|
-
|
|
1400
|
-
return this.
|
|
1429
|
+
ds(A) {
|
|
1430
|
+
return this.ks.ds(A, this._s);
|
|
1401
1431
|
}
|
|
1402
|
-
|
|
1403
|
-
this.
|
|
1432
|
+
kA() {
|
|
1433
|
+
this.vs.kA(), document.fonts.delete(this.Ys);
|
|
1404
1434
|
}
|
|
1405
1435
|
get fontFramebuffer() {
|
|
1406
|
-
return this.
|
|
1436
|
+
return this.vs;
|
|
1407
1437
|
}
|
|
1408
1438
|
get characters() {
|
|
1409
|
-
return this.
|
|
1439
|
+
return this._s;
|
|
1410
1440
|
}
|
|
1411
1441
|
get textureColumns() {
|
|
1412
|
-
return this
|
|
1442
|
+
return this.$s;
|
|
1413
1443
|
}
|
|
1414
1444
|
get textureRows() {
|
|
1415
|
-
return this.
|
|
1445
|
+
return this.Gs;
|
|
1416
1446
|
}
|
|
1417
1447
|
get maxGlyphDimensions() {
|
|
1418
|
-
return this.
|
|
1448
|
+
return this.Ms;
|
|
1419
1449
|
}
|
|
1420
1450
|
get fontSize() {
|
|
1421
|
-
return this.
|
|
1451
|
+
return this.bs;
|
|
1422
1452
|
}
|
|
1423
1453
|
get font() {
|
|
1424
|
-
return this.
|
|
1454
|
+
return this.ps;
|
|
1425
1455
|
}
|
|
1426
1456
|
}
|
|
1427
|
-
class
|
|
1457
|
+
class xA {
|
|
1428
1458
|
constructor(A, t, e) {
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
this.
|
|
1459
|
+
n(this, "Ws");
|
|
1460
|
+
n(this, "Hs");
|
|
1461
|
+
n(this, "PA");
|
|
1462
|
+
n(this, "uA");
|
|
1463
|
+
n(this, "Ks");
|
|
1464
|
+
n(this, "Js");
|
|
1465
|
+
n(this, "Vs");
|
|
1466
|
+
n(this, "Zs");
|
|
1467
|
+
n(this, "Ns");
|
|
1468
|
+
this.Vs = A, this.Zs = t, this.Ns = e, this.iA();
|
|
1439
1469
|
}
|
|
1440
1470
|
iA() {
|
|
1441
|
-
this.
|
|
1471
|
+
this.Ws = Math.floor(this.Vs.width / this.Zs), this.Hs = Math.floor(this.Vs.height / this.Ns), this.PA = this.Ws * this.Zs, this.uA = this.Hs * this.Ns, this.Ks = Math.floor((this.Vs.width - this.PA) / 2), this.Js = Math.floor((this.Vs.height - this.uA) / 2);
|
|
1442
1472
|
}
|
|
1443
|
-
|
|
1444
|
-
this.
|
|
1473
|
+
Xs(A, t) {
|
|
1474
|
+
this.Zs = A, this.Ns = t, this.iA();
|
|
1445
1475
|
}
|
|
1446
1476
|
get cellWidth() {
|
|
1447
|
-
return this.
|
|
1477
|
+
return this.Zs;
|
|
1448
1478
|
}
|
|
1449
1479
|
get cellHeight() {
|
|
1450
|
-
return this.
|
|
1480
|
+
return this.Ns;
|
|
1451
1481
|
}
|
|
1452
1482
|
get cols() {
|
|
1453
|
-
return this.
|
|
1483
|
+
return this.Ws;
|
|
1454
1484
|
}
|
|
1455
1485
|
get rows() {
|
|
1456
|
-
return this.
|
|
1486
|
+
return this.Hs;
|
|
1457
1487
|
}
|
|
1458
1488
|
get width() {
|
|
1459
1489
|
return this.PA;
|
|
@@ -1462,302 +1492,302 @@ class RA {
|
|
|
1462
1492
|
return this.uA;
|
|
1463
1493
|
}
|
|
1464
1494
|
get offsetX() {
|
|
1465
|
-
return this.
|
|
1495
|
+
return this.Ks;
|
|
1466
1496
|
}
|
|
1467
1497
|
get offsetY() {
|
|
1468
|
-
return this.
|
|
1498
|
+
return this.Js;
|
|
1469
1499
|
}
|
|
1470
1500
|
}
|
|
1471
1501
|
class TA {
|
|
1472
1502
|
constructor(A = {}) {
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
A.canvas ? (this.
|
|
1503
|
+
n(this, "Vs");
|
|
1504
|
+
n(this, "js");
|
|
1505
|
+
n(this, "qs");
|
|
1506
|
+
A.canvas ? (this.Vs = A.canvas, this.qs = !1) : (this.Vs = this.Ai(A.width, A.height), this.qs = !0), this.Vs.style.imageRendering = "pixelated";
|
|
1477
1507
|
}
|
|
1478
|
-
|
|
1508
|
+
Ai(A, t) {
|
|
1479
1509
|
const e = document.createElement("canvas");
|
|
1480
1510
|
return e.className = "textmodeCanvas", e.style.imageRendering = "pixelated", e.width = A || 800, e.height = t || 600, document.body.appendChild(e), e;
|
|
1481
1511
|
}
|
|
1482
|
-
|
|
1483
|
-
this.
|
|
1512
|
+
ti(A, t) {
|
|
1513
|
+
this.Vs.width = A ?? this.Vs.width, this.Vs.height = t ?? this.Vs.height;
|
|
1484
1514
|
}
|
|
1485
|
-
|
|
1486
|
-
const A = this.
|
|
1487
|
-
if (!A) throw new
|
|
1515
|
+
ei() {
|
|
1516
|
+
const A = this.Vs.getContext("webgl2", { alpha: !0, premultipliedAlpha: !1, preserveDrawingBuffer: !0, antialias: !1, depth: !1, stencil: !1, powerPreference: "high-performance" });
|
|
1517
|
+
if (!A) throw new f("`textmode.js` requires WebGL2 support.");
|
|
1488
1518
|
return A;
|
|
1489
1519
|
}
|
|
1490
|
-
|
|
1491
|
-
this.
|
|
1492
|
-
const A = this.
|
|
1520
|
+
kA() {
|
|
1521
|
+
this.js && this.js.disconnect();
|
|
1522
|
+
const A = this.Vs.getContext("webgl") || this.Vs.getContext("webgl2");
|
|
1493
1523
|
if (A) {
|
|
1494
1524
|
const t = A.getExtension("WEBGL_lose_context");
|
|
1495
1525
|
t && t.loseContext();
|
|
1496
1526
|
}
|
|
1497
|
-
this.
|
|
1527
|
+
this.qs && this.Vs.parentNode && this.Vs.parentNode.removeChild(this.Vs);
|
|
1498
1528
|
}
|
|
1499
1529
|
get canvas() {
|
|
1500
|
-
return this.
|
|
1530
|
+
return this.Vs;
|
|
1501
1531
|
}
|
|
1502
1532
|
get width() {
|
|
1503
|
-
return this.
|
|
1533
|
+
return this.Vs.width;
|
|
1504
1534
|
}
|
|
1505
1535
|
get height() {
|
|
1506
|
-
return this.
|
|
1536
|
+
return this.Vs.height;
|
|
1507
1537
|
}
|
|
1508
1538
|
}
|
|
1509
1539
|
class MA {
|
|
1510
1540
|
constructor(A = 60) {
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
this.
|
|
1541
|
+
n(this, "si");
|
|
1542
|
+
n(this, "ii");
|
|
1543
|
+
n(this, "Bi", null);
|
|
1544
|
+
n(this, "Qi", 0);
|
|
1545
|
+
n(this, "Ei", !0);
|
|
1546
|
+
n(this, "ri", 0);
|
|
1547
|
+
n(this, "ni", 0);
|
|
1548
|
+
n(this, "oi", []);
|
|
1549
|
+
n(this, "gi", 10);
|
|
1550
|
+
n(this, "ai", 0);
|
|
1551
|
+
this.si = A, this.ii = 1e3 / A;
|
|
1522
1552
|
}
|
|
1523
1553
|
start(A) {
|
|
1524
|
-
if (!this.
|
|
1525
|
-
this.
|
|
1554
|
+
if (!this.Ei) return;
|
|
1555
|
+
this.Qi = performance.now();
|
|
1526
1556
|
const t = (e) => {
|
|
1527
|
-
if (!this.
|
|
1528
|
-
const s = e - this.
|
|
1529
|
-
s >= this.
|
|
1557
|
+
if (!this.Ei) return void (this.Bi = null);
|
|
1558
|
+
const s = e - this.Qi;
|
|
1559
|
+
s >= this.ii && (A(), this.Qi = e - s % this.ii), this.Ei && (this.Bi = requestAnimationFrame(t));
|
|
1530
1560
|
};
|
|
1531
|
-
this.
|
|
1561
|
+
this.Bi = requestAnimationFrame(t);
|
|
1532
1562
|
}
|
|
1533
1563
|
stop() {
|
|
1534
|
-
this.
|
|
1564
|
+
this.Bi && (cancelAnimationFrame(this.Bi), this.Bi = null);
|
|
1535
1565
|
}
|
|
1536
1566
|
pause() {
|
|
1537
|
-
this.
|
|
1567
|
+
this.Ei && (this.Ei = !1, this.stop());
|
|
1538
1568
|
}
|
|
1539
1569
|
resume(A) {
|
|
1540
|
-
this.
|
|
1570
|
+
this.Ei || (this.Ei = !0, this.start(A));
|
|
1541
1571
|
}
|
|
1542
1572
|
frameRate(A, t) {
|
|
1543
|
-
if (A === void 0) return this.
|
|
1544
|
-
this.
|
|
1573
|
+
if (A === void 0) return this.ri;
|
|
1574
|
+
this.si = A, this.ii = 1e3 / A, this.Ei && t && (this.stop(), this.start(t));
|
|
1545
1575
|
}
|
|
1546
1576
|
measureFrameRate() {
|
|
1547
1577
|
const A = performance.now();
|
|
1548
|
-
if (this.
|
|
1549
|
-
const t = A - this.
|
|
1550
|
-
this.
|
|
1551
|
-
const e = this.
|
|
1552
|
-
this.
|
|
1578
|
+
if (this.ni > 0) {
|
|
1579
|
+
const t = A - this.ni;
|
|
1580
|
+
this.oi.push(t), this.oi.length > this.gi && this.oi.shift();
|
|
1581
|
+
const e = this.oi.reduce((s, i) => s + i, 0) / this.oi.length;
|
|
1582
|
+
this.ri = 1e3 / e;
|
|
1553
1583
|
}
|
|
1554
|
-
this.
|
|
1584
|
+
this.ni = A;
|
|
1555
1585
|
}
|
|
1556
1586
|
get isLooping() {
|
|
1557
|
-
return this.
|
|
1587
|
+
return this.Ei;
|
|
1558
1588
|
}
|
|
1559
1589
|
get frameRateLimit() {
|
|
1560
|
-
return this.
|
|
1590
|
+
return this.si;
|
|
1561
1591
|
}
|
|
1562
1592
|
get currentFrameRate() {
|
|
1563
|
-
return this.
|
|
1593
|
+
return this.ri;
|
|
1564
1594
|
}
|
|
1565
1595
|
get frameCount() {
|
|
1566
|
-
return this.
|
|
1596
|
+
return this.ai;
|
|
1567
1597
|
}
|
|
1568
1598
|
set frameCount(A) {
|
|
1569
|
-
this.
|
|
1599
|
+
this.ai = A;
|
|
1570
1600
|
}
|
|
1571
1601
|
incrementFrame() {
|
|
1572
|
-
this.
|
|
1602
|
+
this.ai++;
|
|
1573
1603
|
}
|
|
1574
1604
|
resetFrameCount() {
|
|
1575
|
-
this.
|
|
1605
|
+
this.ai = 0;
|
|
1576
1606
|
}
|
|
1577
1607
|
}
|
|
1578
1608
|
class FA {
|
|
1579
1609
|
constructor() {
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
}
|
|
1590
|
-
ui() {
|
|
1591
|
-
this.Ci || (this.hi = (A) => {
|
|
1592
|
-
this.Ii(A);
|
|
1593
|
-
}, this.ci = (A) => {
|
|
1594
|
-
this.wi(A);
|
|
1595
|
-
}, window.addEventListener("keydown", this.hi, { passive: !1 }), window.addEventListener("keyup", this.ci, { passive: !1 }), this.Ci = !0);
|
|
1610
|
+
n(this, "hi", /* @__PURE__ */ new Map());
|
|
1611
|
+
n(this, "ci", null);
|
|
1612
|
+
n(this, "li", null);
|
|
1613
|
+
n(this, "Ci");
|
|
1614
|
+
n(this, "Di");
|
|
1615
|
+
n(this, "Pi", !1);
|
|
1616
|
+
n(this, "ui");
|
|
1617
|
+
n(this, "Ii");
|
|
1618
|
+
n(this, "wi", { ArrowUp: "UP_ARROW", ArrowDown: "DOWN_ARROW", ArrowLeft: "LEFT_ARROW", ArrowRight: "RIGHT_ARROW", F1: "F1", F2: "F2", F3: "F3", F4: "F4", F5: "F5", F6: "F6", F7: "F7", F8: "F8", F9: "F9", F10: "F10", F11: "F11", F12: "F12", Enter: "ENTER", Return: "RETURN", Tab: "TAB", Escape: "ESCAPE", Backspace: "BACKSPACE", Delete: "DELETE", Insert: "INSERT", Home: "HOME", End: "END", PageUp: "PAGE_UP", PageDown: "PAGE_DOWN", Shift: "SHIFT", Control: "CONTROL", Alt: "ALT", Meta: "META", " ": "SPACE" });
|
|
1596
1619
|
}
|
|
1597
1620
|
fi() {
|
|
1598
|
-
this.
|
|
1621
|
+
this.Pi || (this.Ci = (A) => {
|
|
1622
|
+
this.di(A);
|
|
1623
|
+
}, this.Di = (A) => {
|
|
1624
|
+
this.pi(A);
|
|
1625
|
+
}, window.addEventListener("keydown", this.Ci, { passive: !1 }), window.addEventListener("keyup", this.Di, { passive: !1 }), this.Pi = !0);
|
|
1599
1626
|
}
|
|
1600
|
-
|
|
1601
|
-
this.li =
|
|
1627
|
+
_i() {
|
|
1628
|
+
this.Pi && (window.removeEventListener("keydown", this.Ci), window.removeEventListener("keyup", this.Di), this.Pi = !1, this.hi.clear(), this.ci = null, this.li = null);
|
|
1602
1629
|
}
|
|
1603
|
-
|
|
1604
|
-
this.
|
|
1630
|
+
mi(A) {
|
|
1631
|
+
this.ui = A;
|
|
1605
1632
|
}
|
|
1606
|
-
|
|
1607
|
-
|
|
1633
|
+
yi(A) {
|
|
1634
|
+
this.Ii = A;
|
|
1635
|
+
}
|
|
1636
|
+
bi(A) {
|
|
1637
|
+
const t = this.$i(A), e = this.hi.get(A) || this.hi.get(t);
|
|
1608
1638
|
return (e == null ? void 0 : e.isPressed) || !1;
|
|
1609
1639
|
}
|
|
1610
|
-
|
|
1611
|
-
return this.
|
|
1640
|
+
Gi() {
|
|
1641
|
+
return this.ci;
|
|
1612
1642
|
}
|
|
1613
|
-
|
|
1614
|
-
return this.
|
|
1643
|
+
xi() {
|
|
1644
|
+
return this.li;
|
|
1615
1645
|
}
|
|
1616
|
-
|
|
1646
|
+
Mi() {
|
|
1617
1647
|
const A = [];
|
|
1618
|
-
for (const [t, e] of this.
|
|
1648
|
+
for (const [t, e] of this.hi) e.isPressed && A.push(t);
|
|
1619
1649
|
return A;
|
|
1620
1650
|
}
|
|
1621
|
-
|
|
1622
|
-
return { ctrl: this.
|
|
1651
|
+
Yi() {
|
|
1652
|
+
return { ctrl: this.bi("Control"), shift: this.bi("Shift"), alt: this.bi("Alt"), meta: this.bi("Meta") };
|
|
1623
1653
|
}
|
|
1624
|
-
|
|
1625
|
-
this.
|
|
1654
|
+
Fi() {
|
|
1655
|
+
this.hi.clear(), this.ci = null, this.li = null;
|
|
1626
1656
|
}
|
|
1627
|
-
|
|
1657
|
+
di(A) {
|
|
1628
1658
|
const t = A.key, e = Date.now();
|
|
1629
|
-
this.
|
|
1630
|
-
const s = this.
|
|
1631
|
-
if (!s.isPressed && (s.isPressed = !0, s.lastPressTime = e, this.
|
|
1659
|
+
this.hi.has(t) || this.hi.set(t, { isPressed: !1, lastPressTime: 0, lastReleaseTime: 0 });
|
|
1660
|
+
const s = this.hi.get(t);
|
|
1661
|
+
if (!s.isPressed && (s.isPressed = !0, s.lastPressTime = e, this.ci = t, this.ui)) {
|
|
1632
1662
|
const i = { key: t, keyCode: A.keyCode, ctrlKey: A.ctrlKey, shiftKey: A.shiftKey, altKey: A.altKey, metaKey: A.metaKey, isPressed: !0, originalEvent: A };
|
|
1633
|
-
this.
|
|
1663
|
+
this.ui(i);
|
|
1634
1664
|
}
|
|
1635
1665
|
}
|
|
1636
|
-
|
|
1666
|
+
pi(A) {
|
|
1637
1667
|
const t = A.key, e = Date.now();
|
|
1638
|
-
this.
|
|
1639
|
-
const s = this.
|
|
1640
|
-
if (s.isPressed = !1, s.lastReleaseTime = e, this.
|
|
1668
|
+
this.hi.has(t) || this.hi.set(t, { isPressed: !1, lastPressTime: 0, lastReleaseTime: 0 });
|
|
1669
|
+
const s = this.hi.get(t);
|
|
1670
|
+
if (s.isPressed = !1, s.lastReleaseTime = e, this.li = t, this.Ii) {
|
|
1641
1671
|
const i = { key: t, keyCode: A.keyCode, ctrlKey: A.ctrlKey, shiftKey: A.shiftKey, altKey: A.altKey, metaKey: A.metaKey, isPressed: !1, originalEvent: A };
|
|
1642
|
-
this.
|
|
1672
|
+
this.Ii(i);
|
|
1643
1673
|
}
|
|
1644
1674
|
}
|
|
1645
|
-
|
|
1646
|
-
return this.
|
|
1675
|
+
$i(A) {
|
|
1676
|
+
return this.wi[A] || A.toLowerCase();
|
|
1647
1677
|
}
|
|
1648
1678
|
}
|
|
1649
1679
|
class GA {
|
|
1650
1680
|
constructor(A) {
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
this.
|
|
1669
|
-
}
|
|
1670
|
-
|
|
1671
|
-
this.
|
|
1672
|
-
}
|
|
1673
|
-
ui() {
|
|
1674
|
-
if (this.Ci) return;
|
|
1675
|
-
const A = this.Ws.canvas;
|
|
1676
|
-
this.Si = (t) => {
|
|
1677
|
-
this.Zi(t), this.Ni(t);
|
|
1678
|
-
}, this.zi = () => {
|
|
1679
|
-
this.Fi = { ...this.Yi }, this.Yi.x = -1, this.Yi.y = -1, this.Ri = null;
|
|
1680
|
-
}, this.ki = (t) => {
|
|
1681
|
-
this.Zi(t), this.Xi(t);
|
|
1682
|
-
}, this.Oi = (t) => {
|
|
1683
|
-
this.Zi(t), this.ji(t);
|
|
1684
|
-
}, this.Li = (t) => {
|
|
1685
|
-
this.Zi(t), this.qi(t);
|
|
1686
|
-
}, this.Ui = (t) => {
|
|
1687
|
-
this.Zi(t), this.AB(t);
|
|
1688
|
-
}, A.addEventListener("mousemove", this.Si, { passive: !0 }), A.addEventListener("mouseleave", this.zi, { passive: !0 }), A.addEventListener("mousedown", this.ki, { passive: !0 }), A.addEventListener("mouseup", this.Oi, { passive: !0 }), A.addEventListener("click", this.Li, { passive: !0 }), A.addEventListener("wheel", this.Ui, { passive: !1 }), this.Ci = !0;
|
|
1681
|
+
n(this, "Vs");
|
|
1682
|
+
n(this, "Ri");
|
|
1683
|
+
n(this, "Si", { x: -1, y: -1 });
|
|
1684
|
+
n(this, "ki", { x: -1, y: -1 });
|
|
1685
|
+
n(this, "zi", null);
|
|
1686
|
+
n(this, "Li");
|
|
1687
|
+
n(this, "Oi");
|
|
1688
|
+
n(this, "Ti");
|
|
1689
|
+
n(this, "Ui");
|
|
1690
|
+
n(this, "Wi");
|
|
1691
|
+
n(this, "Hi");
|
|
1692
|
+
n(this, "Pi", !1);
|
|
1693
|
+
n(this, "Ki");
|
|
1694
|
+
n(this, "Ji");
|
|
1695
|
+
n(this, "Vi");
|
|
1696
|
+
n(this, "Zi");
|
|
1697
|
+
n(this, "Ni");
|
|
1698
|
+
this.Vs = A;
|
|
1699
|
+
}
|
|
1700
|
+
zs(A) {
|
|
1701
|
+
this.Ri = A, this.Xi();
|
|
1689
1702
|
}
|
|
1690
1703
|
fi() {
|
|
1691
|
-
if (
|
|
1692
|
-
const A = this.
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1704
|
+
if (this.Pi) return;
|
|
1705
|
+
const A = this.Vs.canvas;
|
|
1706
|
+
this.Li = (t) => {
|
|
1707
|
+
this.ji(t), this.qi(t);
|
|
1708
|
+
}, this.Oi = () => {
|
|
1709
|
+
this.ki = { ...this.Si }, this.Si.x = -1, this.Si.y = -1, this.zi = null;
|
|
1710
|
+
}, this.Ti = (t) => {
|
|
1711
|
+
this.ji(t), this.AB(t);
|
|
1712
|
+
}, this.Ui = (t) => {
|
|
1713
|
+
this.ji(t), this.tB(t);
|
|
1714
|
+
}, this.Wi = (t) => {
|
|
1715
|
+
this.ji(t), this.eB(t);
|
|
1716
|
+
}, this.Hi = (t) => {
|
|
1717
|
+
this.ji(t), this.sB(t);
|
|
1718
|
+
}, A.addEventListener("mousemove", this.Li, { passive: !0 }), A.addEventListener("mouseleave", this.Oi, { passive: !0 }), A.addEventListener("mousedown", this.Ti, { passive: !0 }), A.addEventListener("mouseup", this.Ui, { passive: !0 }), A.addEventListener("click", this.Wi, { passive: !0 }), A.addEventListener("wheel", this.Hi, { passive: !1 }), this.Pi = !0;
|
|
1719
|
+
}
|
|
1720
|
+
_i() {
|
|
1721
|
+
if (!this.Pi) return;
|
|
1722
|
+
const A = this.Vs.canvas;
|
|
1723
|
+
A.removeEventListener("mousemove", this.Li), A.removeEventListener("mouseleave", this.Oi), A.removeEventListener("mousedown", this.Ti), A.removeEventListener("mouseup", this.Ui), A.removeEventListener("click", this.Wi), A.removeEventListener("wheel", this.Hi), this.Pi = !1;
|
|
1724
|
+
}
|
|
1725
|
+
Xi() {
|
|
1726
|
+
if (this.Pi) try {
|
|
1727
|
+
if (this.zi) {
|
|
1728
|
+
const A = new MouseEvent("mousemove", { clientX: this.zi.x, clientY: this.zi.y, bubbles: !1, cancelable: !1 });
|
|
1729
|
+
this.ji(A);
|
|
1730
|
+
} else this.Si.x !== -1 && this.Si.y !== -1 && (this.Si.x >= this.Ri.cols || this.Si.y >= this.Ri.rows) && (this.Si.x = -1, this.Si.y = -1);
|
|
1701
1731
|
} catch {
|
|
1702
|
-
this.
|
|
1732
|
+
this.Si.x = -1, this.Si.y = -1;
|
|
1703
1733
|
}
|
|
1704
1734
|
}
|
|
1705
|
-
|
|
1706
|
-
this.Ti = A;
|
|
1707
|
-
}
|
|
1708
|
-
di(A) {
|
|
1709
|
-
this.Hi = A;
|
|
1710
|
-
}
|
|
1711
|
-
_i(A) {
|
|
1712
|
-
this.Wi = A;
|
|
1713
|
-
}
|
|
1714
|
-
eB(A) {
|
|
1735
|
+
iB(A) {
|
|
1715
1736
|
this.Ki = A;
|
|
1716
1737
|
}
|
|
1717
|
-
|
|
1738
|
+
mi(A) {
|
|
1718
1739
|
this.Ji = A;
|
|
1719
1740
|
}
|
|
1720
|
-
|
|
1721
|
-
|
|
1741
|
+
yi(A) {
|
|
1742
|
+
this.Vi = A;
|
|
1722
1743
|
}
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
const t = { position: { ...this.Yi }, previousPosition: { ...this.Fi }, originalEvent: A };
|
|
1726
|
-
this.Ki(t);
|
|
1727
|
-
}
|
|
1744
|
+
BB(A) {
|
|
1745
|
+
this.Zi = A;
|
|
1728
1746
|
}
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
const t = { position: { ...this.Yi }, previousPosition: { ...this.Fi }, button: A.button, originalEvent: A };
|
|
1732
|
-
this.Hi(t);
|
|
1733
|
-
}
|
|
1747
|
+
QB(A) {
|
|
1748
|
+
this.Ni = A;
|
|
1734
1749
|
}
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
const t = { position: { ...this.Yi }, previousPosition: { ...this.Fi }, button: A.button, originalEvent: A };
|
|
1738
|
-
this.Wi(t);
|
|
1739
|
-
}
|
|
1750
|
+
EB() {
|
|
1751
|
+
return { x: this.Si.x, y: this.Si.y };
|
|
1740
1752
|
}
|
|
1741
1753
|
qi(A) {
|
|
1742
|
-
if (this.
|
|
1743
|
-
const t = { position: { ...this.
|
|
1744
|
-
this.
|
|
1754
|
+
if (this.Zi) {
|
|
1755
|
+
const t = { position: { ...this.Si }, previousPosition: { ...this.ki }, originalEvent: A };
|
|
1756
|
+
this.Zi(t);
|
|
1745
1757
|
}
|
|
1746
1758
|
}
|
|
1747
1759
|
AB(A) {
|
|
1748
1760
|
if (this.Ji) {
|
|
1749
|
-
const t = { position: { ...this.
|
|
1761
|
+
const t = { position: { ...this.Si }, previousPosition: { ...this.ki }, button: A.button, originalEvent: A };
|
|
1750
1762
|
this.Ji(t);
|
|
1751
1763
|
}
|
|
1752
1764
|
}
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1765
|
+
tB(A) {
|
|
1766
|
+
if (this.Vi) {
|
|
1767
|
+
const t = { position: { ...this.Si }, previousPosition: { ...this.ki }, button: A.button, originalEvent: A };
|
|
1768
|
+
this.Vi(t);
|
|
1769
|
+
}
|
|
1770
|
+
}
|
|
1771
|
+
eB(A) {
|
|
1772
|
+
if (this.Ki) {
|
|
1773
|
+
const t = { position: { ...this.Si }, previousPosition: { ...this.ki }, button: A.button, originalEvent: A };
|
|
1774
|
+
this.Ki(t);
|
|
1775
|
+
}
|
|
1776
|
+
}
|
|
1777
|
+
sB(A) {
|
|
1778
|
+
if (this.Ni) {
|
|
1779
|
+
const t = { position: { ...this.Si }, previousPosition: { ...this.ki }, delta: { x: A.deltaX, y: A.deltaY }, originalEvent: A };
|
|
1780
|
+
this.Ni(t);
|
|
1781
|
+
}
|
|
1782
|
+
}
|
|
1783
|
+
ji(A) {
|
|
1784
|
+
const t = this.Vs.canvas;
|
|
1785
|
+
this.ki = { ...this.Si }, this.zi = { x: A.clientX, y: A.clientY };
|
|
1786
|
+
const e = t.getBoundingClientRect(), s = A.clientX - e.left, i = A.clientY - e.top, B = t.width / e.width, r = i * (t.height / e.height), Q = s * B - this.Ri.offsetX, o = r - this.Ri.offsetY, g = Math.floor(Q / this.Ri.cellWidth), a = Math.floor(o / this.Ri.cellHeight);
|
|
1787
|
+
g >= 0 && g < this.Ri.cols && a >= 0 && a < this.Ri.rows ? (this.Si.x = g, this.Si.y = a) : (this.Si.x = -1, this.Si.y = -1);
|
|
1758
1788
|
}
|
|
1759
1789
|
}
|
|
1760
|
-
const
|
|
1790
|
+
const SA = (E) => class extends E {
|
|
1761
1791
|
rotate(A = 0, t = 0, e = 0) {
|
|
1762
1792
|
this.vA.state.EA(A), this.vA.state.rA(t), this.vA.state.nA(e);
|
|
1763
1793
|
}
|
|
@@ -1777,25 +1807,25 @@ const YA = (E) => class extends E {
|
|
|
1777
1807
|
this.vA.state.sA();
|
|
1778
1808
|
}
|
|
1779
1809
|
rect(A, t, e = 1, s = 1) {
|
|
1780
|
-
this.vA
|
|
1810
|
+
this.vA.$e(A, t, e, s);
|
|
1781
1811
|
}
|
|
1782
1812
|
point(A, t) {
|
|
1783
|
-
this.vA
|
|
1813
|
+
this.vA.$e(A, t, 1, 1);
|
|
1784
1814
|
}
|
|
1785
1815
|
line(A, t, e, s) {
|
|
1786
|
-
this.vA.
|
|
1816
|
+
this.vA.Ge(A, t, e, s);
|
|
1787
1817
|
}
|
|
1788
1818
|
lineWeight(A) {
|
|
1789
1819
|
this.vA.state.QA(A);
|
|
1790
1820
|
}
|
|
1791
1821
|
background(A, t = A, e = A, s = 255) {
|
|
1792
|
-
this.vA.
|
|
1822
|
+
this.vA.Se(A, t, e, s);
|
|
1793
1823
|
}
|
|
1794
1824
|
char(A) {
|
|
1795
|
-
this.vA.state.
|
|
1825
|
+
this.vA.state.oA(this.ps.fs(A));
|
|
1796
1826
|
}
|
|
1797
1827
|
charColor(A, t, e) {
|
|
1798
|
-
this.vA.state.
|
|
1828
|
+
this.vA.state.gA(A, t, e);
|
|
1799
1829
|
}
|
|
1800
1830
|
cellColor(A, t, e) {
|
|
1801
1831
|
this.vA.state.aA(A, t, e);
|
|
@@ -1807,110 +1837,110 @@ const YA = (E) => class extends E {
|
|
|
1807
1837
|
this.vA.state.cA(A);
|
|
1808
1838
|
}
|
|
1809
1839
|
charRotation(A) {
|
|
1810
|
-
this.vA.state.
|
|
1840
|
+
this.vA.state.CA(A);
|
|
1811
1841
|
}
|
|
1812
1842
|
invert(A) {
|
|
1813
|
-
this.vA.state.
|
|
1843
|
+
this.vA.state.lA(A);
|
|
1814
1844
|
}
|
|
1815
1845
|
clear() {
|
|
1816
|
-
this.vA.
|
|
1846
|
+
this.vA.Se(0, 0, 0, 0);
|
|
1817
1847
|
}
|
|
1818
1848
|
ellipse(A, t, e, s) {
|
|
1819
|
-
this.vA.
|
|
1849
|
+
this.vA.xe(A, t, e / 2, s / 2);
|
|
1820
1850
|
}
|
|
1821
1851
|
triangle(A, t, e, s, i, B) {
|
|
1822
|
-
this.vA.
|
|
1852
|
+
this.vA.Me(A, t, e, s, i, B);
|
|
1823
1853
|
}
|
|
1824
|
-
bezierCurve(A, t, e, s, i, B, r,
|
|
1825
|
-
this.vA.
|
|
1854
|
+
bezierCurve(A, t, e, s, i, B, r, Q) {
|
|
1855
|
+
this.vA.Ye(A, t, e, s, i, B, r, Q);
|
|
1826
1856
|
}
|
|
1827
1857
|
arc(A, t, e, s, i, B) {
|
|
1828
|
-
this.vA.
|
|
1858
|
+
this.vA.Re(A, t, e, s, i, B);
|
|
1829
1859
|
}
|
|
1830
1860
|
shader(A) {
|
|
1831
|
-
this.vA.
|
|
1861
|
+
this.vA.me(A);
|
|
1832
1862
|
}
|
|
1833
1863
|
setUniform(A, t) {
|
|
1834
|
-
this.vA.
|
|
1864
|
+
this.vA.ZA(A, t);
|
|
1835
1865
|
}
|
|
1836
1866
|
setUniforms(A) {
|
|
1837
|
-
this.vA.
|
|
1867
|
+
this.vA.ve(A);
|
|
1838
1868
|
}
|
|
1839
1869
|
createFilterShader(A) {
|
|
1840
|
-
return this.vA.
|
|
1870
|
+
return this.vA.Bt(A);
|
|
1841
1871
|
}
|
|
1842
1872
|
createFramebuffer(A) {
|
|
1843
|
-
return this.vA
|
|
1873
|
+
return this.vA.Fe(A.width, A.height, 5, { filter: "nearest", wrap: "clamp", format: "rgba", type: "unsigned_byte" });
|
|
1844
1874
|
}
|
|
1845
1875
|
image(A, t, e, s, i) {
|
|
1846
|
-
this.vA.
|
|
1876
|
+
this.vA.ye(A, t, e, s ?? A.width, i ?? A.height);
|
|
1847
1877
|
}
|
|
1848
1878
|
};
|
|
1849
1879
|
class O {
|
|
1850
|
-
|
|
1851
|
-
const t = A.
|
|
1852
|
-
return { characterPixels: t, primaryColorPixels: e, secondaryColorPixels: s, transformPixels: A.
|
|
1880
|
+
rB(A) {
|
|
1881
|
+
const t = A.MA(0), e = A.MA(1), s = A.MA(2), i = A.MA(3);
|
|
1882
|
+
return { characterPixels: t, primaryColorPixels: e, secondaryColorPixels: s, transformPixels: A.MA(4), rotationPixels: i };
|
|
1853
1883
|
}
|
|
1854
|
-
|
|
1884
|
+
nB(A, t) {
|
|
1855
1885
|
return A[t] + (A[t + 1] << 8);
|
|
1856
1886
|
}
|
|
1857
|
-
|
|
1887
|
+
oB(A, t) {
|
|
1858
1888
|
return { r: A[t], g: A[t + 1], b: A[t + 2], a: A[t + 3] };
|
|
1859
1889
|
}
|
|
1860
1890
|
}
|
|
1861
|
-
class
|
|
1862
|
-
|
|
1891
|
+
class z {
|
|
1892
|
+
gB(A, t) {
|
|
1863
1893
|
return new Blob([A], { type: t });
|
|
1864
1894
|
}
|
|
1865
|
-
|
|
1895
|
+
aB(A, t, e) {
|
|
1866
1896
|
try {
|
|
1867
|
-
const s = this.
|
|
1897
|
+
const s = this.gB(A, e), i = URL.createObjectURL(s), B = document.createElement("a");
|
|
1868
1898
|
B.href = i, B.download = t, B.style.display = "none", B.rel = "noopener", document.body.appendChild(B), B.click(), document.body.removeChild(B), URL.revokeObjectURL(i);
|
|
1869
1899
|
} catch (s) {
|
|
1870
1900
|
throw console.error("Failed to download file:", s), Error("File download failed: " + (s instanceof Error ? s.message : "Unknown error"));
|
|
1871
1901
|
}
|
|
1872
1902
|
}
|
|
1873
|
-
|
|
1903
|
+
hB() {
|
|
1874
1904
|
return (/* @__PURE__ */ new Date()).toISOString().slice(0, 19).replace(/:/g, "-");
|
|
1875
1905
|
}
|
|
1876
|
-
|
|
1906
|
+
cB() {
|
|
1877
1907
|
const A = /* @__PURE__ */ new Date();
|
|
1878
1908
|
return { date: A.toISOString().split("T")[0], time: A.toTimeString().split(" ")[0].replace(/:/g, "-") };
|
|
1879
1909
|
}
|
|
1880
|
-
|
|
1910
|
+
lB(A) {
|
|
1881
1911
|
return A.replace(/[<>:"/\\|?*]/g, "_").replace(/\s+/g, "_").replace(/_{2,}/g, "_").replace(/^_+|_+$/g, "").substring(0, 255);
|
|
1882
1912
|
}
|
|
1883
|
-
|
|
1884
|
-
return "textmode-export-" + this.
|
|
1913
|
+
CB() {
|
|
1914
|
+
return "textmode-export-" + this.hB();
|
|
1885
1915
|
}
|
|
1886
1916
|
}
|
|
1887
1917
|
class _A extends O {
|
|
1888
|
-
|
|
1889
|
-
const s = A[e] === 255, i = A[e + 1] === 255, B = A[e + 2] === 255, r = t[e],
|
|
1890
|
-
return { isInverted: s, flipHorizontal: i, flipVertical: B, rotation: Math.round(360 * (r +
|
|
1918
|
+
DB(A, t, e) {
|
|
1919
|
+
const s = A[e] === 255, i = A[e + 1] === 255, B = A[e + 2] === 255, r = t[e], Q = t[e + 1];
|
|
1920
|
+
return { isInverted: s, flipHorizontal: i, flipVertical: B, rotation: Math.round(360 * (r + Q / 255) / 255 * 100) / 100 };
|
|
1891
1921
|
}
|
|
1892
|
-
|
|
1922
|
+
PB(A, t, e) {
|
|
1893
1923
|
return { x: A, y: t, cellX: A * e.cellWidth, cellY: t * e.cellHeight };
|
|
1894
1924
|
}
|
|
1895
|
-
|
|
1925
|
+
uB(A, t) {
|
|
1896
1926
|
const e = [];
|
|
1897
1927
|
let s = 0;
|
|
1898
1928
|
for (let i = 0; i < t.rows; i++) for (let B = 0; B < t.cols; B++) {
|
|
1899
|
-
const r = 4 * s,
|
|
1900
|
-
let o = this.
|
|
1901
|
-
const
|
|
1902
|
-
if (
|
|
1929
|
+
const r = 4 * s, Q = this.nB(A.characterPixels, r);
|
|
1930
|
+
let o = this.oB(A.primaryColorPixels, r), g = this.oB(A.secondaryColorPixels, r);
|
|
1931
|
+
const a = this.DB(A.transformPixels, A.rotationPixels, r);
|
|
1932
|
+
if (a.isInverted) {
|
|
1903
1933
|
const c = o;
|
|
1904
|
-
o =
|
|
1934
|
+
o = g, g = c;
|
|
1905
1935
|
}
|
|
1906
|
-
const h = this.
|
|
1907
|
-
e.push({ charIndex:
|
|
1936
|
+
const h = this.PB(B, i, t);
|
|
1937
|
+
e.push({ charIndex: Q, primaryColor: o, secondaryColor: g, transform: a, position: h }), s++;
|
|
1908
1938
|
}
|
|
1909
1939
|
return e;
|
|
1910
1940
|
}
|
|
1911
1941
|
}
|
|
1912
|
-
class
|
|
1913
|
-
|
|
1942
|
+
class LA {
|
|
1943
|
+
IB(A, t) {
|
|
1914
1944
|
const e = A.cmap;
|
|
1915
1945
|
for (const s of e.tables) if (s.format === 4) {
|
|
1916
1946
|
const i = s;
|
|
@@ -1919,165 +1949,165 @@ class SA {
|
|
|
1919
1949
|
{
|
|
1920
1950
|
const r = i.idRangeOffset[B] / 2 + (t - i.startCount[B]) - (i.startCount.length - B);
|
|
1921
1951
|
if (r >= 0 && r < i.glyphIdArray.length) {
|
|
1922
|
-
const
|
|
1923
|
-
if (
|
|
1952
|
+
const Q = i.glyphIdArray[r];
|
|
1953
|
+
if (Q !== 0) return Q + i.idDelta[B] & 65535;
|
|
1924
1954
|
}
|
|
1925
1955
|
}
|
|
1926
1956
|
}
|
|
1927
1957
|
} else if (s.format === 12) {
|
|
1928
1958
|
const i = s;
|
|
1929
1959
|
for (let B = 0; B < i.groups.length; B += 3) {
|
|
1930
|
-
const r = i.groups[B],
|
|
1931
|
-
if (t >= r && t <=
|
|
1960
|
+
const r = i.groups[B], Q = i.groups[B + 1], o = i.groups[B + 2];
|
|
1961
|
+
if (t >= r && t <= Q) return o + (t - r);
|
|
1932
1962
|
}
|
|
1933
1963
|
}
|
|
1934
1964
|
return 0;
|
|
1935
1965
|
}
|
|
1936
|
-
|
|
1966
|
+
wB(A, t, e, s, i) {
|
|
1937
1967
|
const B = i / A.head.unitsPerEm;
|
|
1938
|
-
return { getBoundingBox: () => ({ x1: e + t.xMin * B, y1: s + -t.yMax * B, x2: e + t.xMax * B, y2: s + -t.yMin * B }), toSVG: () => this.
|
|
1968
|
+
return { getBoundingBox: () => ({ x1: e + t.xMin * B, y1: s + -t.yMax * B, x2: e + t.xMax * B, y2: s + -t.yMin * B }), toSVG: () => this.fB(t, e, s, B) };
|
|
1939
1969
|
}
|
|
1940
|
-
|
|
1970
|
+
fB(A, t, e, s) {
|
|
1941
1971
|
if (!A || !A.xs) return "";
|
|
1942
|
-
const { xs: i, ys: B, endPts: r, flags:
|
|
1943
|
-
if (!(i && B && r &&
|
|
1944
|
-
let o = "",
|
|
1945
|
-
for (let
|
|
1946
|
-
const h = r[
|
|
1947
|
-
if (!(h <
|
|
1948
|
-
if (h >=
|
|
1949
|
-
const c = t + i[
|
|
1972
|
+
const { xs: i, ys: B, endPts: r, flags: Q } = A;
|
|
1973
|
+
if (!(i && B && r && Q)) return "";
|
|
1974
|
+
let o = "", g = 0;
|
|
1975
|
+
for (let a = 0; a < r.length; a++) {
|
|
1976
|
+
const h = r[a];
|
|
1977
|
+
if (!(h < g)) {
|
|
1978
|
+
if (h >= g) {
|
|
1979
|
+
const c = t + i[g] * s, l = e - B[g] * s;
|
|
1950
1980
|
o += `M${c.toFixed(2)},${l.toFixed(2)}`;
|
|
1951
|
-
let C =
|
|
1981
|
+
let C = g + 1;
|
|
1952
1982
|
for (; C <= h; )
|
|
1953
|
-
if (1 &
|
|
1954
|
-
const
|
|
1955
|
-
o += `L${
|
|
1983
|
+
if (1 & Q[C]) {
|
|
1984
|
+
const I = t + i[C] * s, w = e - B[C] * s;
|
|
1985
|
+
o += `L${I.toFixed(2)},${w.toFixed(2)}`, C++;
|
|
1956
1986
|
} else {
|
|
1957
|
-
const
|
|
1958
|
-
let d = C + 1 > h ?
|
|
1959
|
-
if (1 &
|
|
1960
|
-
const p = t + i[d] * s,
|
|
1961
|
-
o += `Q${
|
|
1987
|
+
const I = t + i[C] * s, w = e - B[C] * s;
|
|
1988
|
+
let d = C + 1 > h ? g : C + 1;
|
|
1989
|
+
if (1 & Q[d]) {
|
|
1990
|
+
const p = t + i[d] * s, x = e - B[d] * s;
|
|
1991
|
+
o += `Q${I.toFixed(2)},${w.toFixed(2)} ${p.toFixed(2)},${x.toFixed(2)}`, C = d + 1;
|
|
1962
1992
|
} else {
|
|
1963
|
-
const p = (
|
|
1964
|
-
o += `Q${
|
|
1993
|
+
const p = (I + (t + i[d] * s)) / 2, x = (w + (e - B[d] * s)) / 2;
|
|
1994
|
+
o += `Q${I.toFixed(2)},${w.toFixed(2)} ${p.toFixed(2)},${x.toFixed(2)}`, C = d;
|
|
1965
1995
|
}
|
|
1966
1996
|
}
|
|
1967
1997
|
o += "Z";
|
|
1968
1998
|
}
|
|
1969
|
-
|
|
1999
|
+
g = h + 1;
|
|
1970
2000
|
}
|
|
1971
2001
|
}
|
|
1972
2002
|
return o;
|
|
1973
2003
|
}
|
|
1974
|
-
|
|
1975
|
-
const B = A.codePointAt(0) || 0, r = this.
|
|
1976
|
-
let
|
|
1977
|
-
return t.glyf && t.glyf[r] !== null ?
|
|
2004
|
+
dB(A, t, e, s, i) {
|
|
2005
|
+
const B = A.codePointAt(0) || 0, r = this.IB(t, B);
|
|
2006
|
+
let Q = null;
|
|
2007
|
+
return t.glyf && t.glyf[r] !== null ? Q = t.glyf[r] : (Q = m.T.glyf.ze(t, r), t.glyf[r] = Q), this.wB(t, Q, e, s, i);
|
|
1978
2008
|
}
|
|
1979
|
-
|
|
1980
|
-
const o = e + (i -
|
|
1981
|
-
return this.
|
|
2009
|
+
pB(A, t, e, s, i, B, r, Q) {
|
|
2010
|
+
const o = e + (i - Q * (r / t.head.unitsPerEm)) / 2, g = s + (B + 0.7 * r) / 2;
|
|
2011
|
+
return this.dB(A, t, o, g, r).toSVG() || null;
|
|
1982
2012
|
}
|
|
1983
2013
|
}
|
|
1984
|
-
class
|
|
2014
|
+
class YA {
|
|
1985
2015
|
constructor() {
|
|
1986
|
-
|
|
1987
|
-
this.
|
|
2016
|
+
n(this, "_B");
|
|
2017
|
+
this._B = new LA();
|
|
1988
2018
|
}
|
|
1989
|
-
|
|
2019
|
+
mB(A) {
|
|
1990
2020
|
const { width: t, height: e } = A;
|
|
1991
2021
|
return `<?xml version="1.0" encoding="UTF-8"?><svg width="${t}" height="${e}" viewBox="0 0 ${t} ${e}" xmlns="http://www.w3.org/2000/svg"><title>textmode.js sketch</title>`;
|
|
1992
2022
|
}
|
|
1993
|
-
|
|
2023
|
+
vB() {
|
|
1994
2024
|
return "</g></svg>";
|
|
1995
2025
|
}
|
|
1996
|
-
|
|
2026
|
+
yB(A, t) {
|
|
1997
2027
|
if (!t.includeBackgroundRectangles) return "";
|
|
1998
2028
|
const [e, s, i, B] = t.backgroundColor;
|
|
1999
2029
|
return `<rect width="${A.width}" height="${A.height}" fill="rgba(${e},${s},${i},${B / 255})"/>`;
|
|
2000
2030
|
}
|
|
2001
|
-
|
|
2031
|
+
bB(A, t) {
|
|
2002
2032
|
const { transform: e, position: s } = A;
|
|
2003
2033
|
if (!e.flipHorizontal && !e.flipVertical && !e.rotation) return "";
|
|
2004
2034
|
const i = s.cellX + t.cellWidth / 2, B = s.cellY + t.cellHeight / 2, r = [];
|
|
2005
2035
|
if (e.flipHorizontal || e.flipVertical) {
|
|
2006
|
-
const
|
|
2007
|
-
r.push(`translate(${i} ${B})scale(${
|
|
2036
|
+
const Q = e.flipHorizontal ? -1 : 1, o = e.flipVertical ? -1 : 1;
|
|
2037
|
+
r.push(`translate(${i} ${B})scale(${Q} ${o})translate(${-i} ${-B})`);
|
|
2008
2038
|
}
|
|
2009
2039
|
return e.rotation && r.push(`rotate(${e.rotation} ${i} ${B})`), ` transform="${r.join(" ")}"`;
|
|
2010
2040
|
}
|
|
2011
|
-
|
|
2041
|
+
$B(A, t, e) {
|
|
2012
2042
|
if (!e.includeBackgroundRectangles || A.secondaryColor.a === 0) return "";
|
|
2013
|
-
const { position: s } = A, { r: i, g: B, b: r, a:
|
|
2043
|
+
const { position: s } = A, { r: i, g: B, b: r, a: Q } = A.secondaryColor, o = `rgba(${i},${B},${r},${Q / 255})`;
|
|
2014
2044
|
return e.drawMode === "stroke" ? `<rect x="${s.cellX}" y="${s.cellY}" width="${t.cellWidth}" height="${t.cellHeight}" stroke="${o}" fill="none" stroke-width="${e.strokeWidth}"/>` : `<rect x="${s.cellX}" y="${s.cellY}" width="${t.cellWidth}" height="${t.cellHeight}" fill="${o}"/>`;
|
|
2015
2045
|
}
|
|
2016
|
-
|
|
2046
|
+
dB(A, t, e, s) {
|
|
2017
2047
|
const i = e.characters[A.charIndex];
|
|
2018
2048
|
if (!i) return "";
|
|
2019
|
-
const B = this.
|
|
2049
|
+
const B = this._B.pB(i.character, e.font, A.position.cellX, A.position.cellY, t.cellWidth, t.cellHeight, e.fontSize, i.advanceWidth);
|
|
2020
2050
|
if (!B) return "";
|
|
2021
|
-
const { r, g:
|
|
2022
|
-
return s.drawMode === "stroke" ? `<path d="${B}" stroke="${
|
|
2051
|
+
const { r, g: Q, b: o, a: g } = A.primaryColor, a = `rgba(${r},${Q},${o},${g / 255})`;
|
|
2052
|
+
return s.drawMode === "stroke" ? `<path d="${B}" stroke="${a}" stroke-width="${s.strokeWidth}" fill="none"/>` : `<path d="${B}" fill="${a}"/>`;
|
|
2023
2053
|
}
|
|
2024
|
-
|
|
2025
|
-
const i = [], B = this
|
|
2054
|
+
GB(A, t, e, s) {
|
|
2055
|
+
const i = [], B = this.$B(A, t, s);
|
|
2026
2056
|
B && i.push(B);
|
|
2027
|
-
const r = this.
|
|
2057
|
+
const r = this.dB(A, t, e, s);
|
|
2028
2058
|
if (r) {
|
|
2029
|
-
const
|
|
2030
|
-
i.push(
|
|
2059
|
+
const Q = this.bB(A, t);
|
|
2060
|
+
i.push(Q ? `<g${Q}>${r}</g>` : r);
|
|
2031
2061
|
}
|
|
2032
2062
|
return i.join("");
|
|
2033
2063
|
}
|
|
2034
|
-
|
|
2035
|
-
const i = [this.
|
|
2036
|
-
for (const B of A) i.push(this.
|
|
2037
|
-
return i.push(this.
|
|
2064
|
+
xB(A, t, e, s) {
|
|
2065
|
+
const i = [this.mB(t), this.yB(t, s), '<g id="ascii-cells">'];
|
|
2066
|
+
for (const B of A) i.push(this.GB(B, t, e, s));
|
|
2067
|
+
return i.push(this.vB()), i.join("");
|
|
2038
2068
|
}
|
|
2039
|
-
|
|
2069
|
+
MB(A) {
|
|
2040
2070
|
return A.replace(/<path[^>]*d=""[^>]*\/>/g, "").replace(/\s+/g, " ").replace(/> </g, "><");
|
|
2041
2071
|
}
|
|
2042
2072
|
}
|
|
2043
|
-
class UA extends
|
|
2044
|
-
|
|
2045
|
-
return this.
|
|
2073
|
+
class UA extends z {
|
|
2074
|
+
YB(A) {
|
|
2075
|
+
return this.gB(A, "image/svg+xml;charset=utf-8");
|
|
2046
2076
|
}
|
|
2047
|
-
|
|
2048
|
-
this.
|
|
2077
|
+
FB(A, t) {
|
|
2078
|
+
this.aB(A, this.lB(t) + ".svg", "image/svg+xml;charset=utf-8");
|
|
2049
2079
|
}
|
|
2050
|
-
|
|
2051
|
-
this
|
|
2080
|
+
RB(A, t) {
|
|
2081
|
+
this.FB(A, t || this.CB());
|
|
2052
2082
|
}
|
|
2053
2083
|
}
|
|
2054
|
-
class
|
|
2084
|
+
class $ {
|
|
2055
2085
|
constructor() {
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
this.
|
|
2086
|
+
n(this, "SB");
|
|
2087
|
+
n(this, "kB");
|
|
2088
|
+
n(this, "zB");
|
|
2089
|
+
this.SB = new _A(), this.kB = new YA(), this.zB = new UA();
|
|
2060
2090
|
}
|
|
2061
|
-
|
|
2062
|
-
return { includeBackgroundRectangles: A.includeBackgroundRectangles ?? !0, drawMode: A.drawMode ?? "fill", strokeWidth: A.strokeWidth ?? 1, backgroundColor: A.backgroundColor ?? [0, 0, 0, 0], filename: A.filename || this.
|
|
2091
|
+
LB(A) {
|
|
2092
|
+
return { includeBackgroundRectangles: A.includeBackgroundRectangles ?? !0, drawMode: A.drawMode ?? "fill", strokeWidth: A.strokeWidth ?? 1, backgroundColor: A.backgroundColor ?? [0, 0, 0, 0], filename: A.filename || this.zB.CB() };
|
|
2063
2093
|
}
|
|
2064
|
-
|
|
2065
|
-
const e = this.
|
|
2066
|
-
return this.
|
|
2094
|
+
OB(A, t = {}) {
|
|
2095
|
+
const e = this.SB.uB(this.SB.rB(A.pipeline), A.grid), s = this.kB.xB(e, A.grid, A.font, this.LB(t));
|
|
2096
|
+
return this.kB.MB(s);
|
|
2067
2097
|
}
|
|
2068
|
-
|
|
2069
|
-
this.RB
|
|
2098
|
+
RB(A, t = {}) {
|
|
2099
|
+
this.zB.RB(this.OB(A, t), t.filename);
|
|
2070
2100
|
}
|
|
2071
2101
|
}
|
|
2072
2102
|
class OA extends O {
|
|
2073
|
-
|
|
2103
|
+
TB(A, t, e, s = " ") {
|
|
2074
2104
|
var r;
|
|
2075
2105
|
const i = [];
|
|
2076
2106
|
let B = 0;
|
|
2077
|
-
for (let
|
|
2107
|
+
for (let Q = 0; Q < t.rows; Q++) {
|
|
2078
2108
|
const o = [];
|
|
2079
|
-
for (let
|
|
2080
|
-
const
|
|
2109
|
+
for (let g = 0; g < t.cols; g++) {
|
|
2110
|
+
const a = 4 * B, h = this.nB(A.characterPixels, a), c = ((r = e.characters[h]) == null ? void 0 : r.character) || s;
|
|
2081
2111
|
o.push(c), B++;
|
|
2082
2112
|
}
|
|
2083
2113
|
i.push(o);
|
|
@@ -2085,8 +2115,8 @@ class OA extends O {
|
|
|
2085
2115
|
return i;
|
|
2086
2116
|
}
|
|
2087
2117
|
}
|
|
2088
|
-
class
|
|
2089
|
-
|
|
2118
|
+
class zA {
|
|
2119
|
+
UB(A, t) {
|
|
2090
2120
|
const e = [];
|
|
2091
2121
|
for (const i of A) {
|
|
2092
2122
|
let B = i.join("");
|
|
@@ -2098,56 +2128,56 @@ class WA {
|
|
|
2098
2128
|
return e.join(s);
|
|
2099
2129
|
}
|
|
2100
2130
|
}
|
|
2101
|
-
class
|
|
2102
|
-
|
|
2103
|
-
const e = this.
|
|
2104
|
-
this.
|
|
2131
|
+
class kA extends z {
|
|
2132
|
+
WB(A, t) {
|
|
2133
|
+
const e = this.HB(t);
|
|
2134
|
+
this.aB(A, e, "text/plain;charset=utf-8");
|
|
2105
2135
|
}
|
|
2106
|
-
|
|
2107
|
-
let t = this.
|
|
2108
|
-
return t === ".txt" || t.length <= 4 ? this.
|
|
2136
|
+
HB(A) {
|
|
2137
|
+
let t = this.lB(A);
|
|
2138
|
+
return t === ".txt" || t.length <= 4 ? this.CB() : t;
|
|
2109
2139
|
}
|
|
2110
2140
|
}
|
|
2111
|
-
class
|
|
2141
|
+
class H {
|
|
2112
2142
|
constructor() {
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
this.
|
|
2143
|
+
n(this, "SB");
|
|
2144
|
+
n(this, "kB");
|
|
2145
|
+
n(this, "zB");
|
|
2146
|
+
this.SB = new OA(), this.kB = new zA(), this.zB = new kA();
|
|
2117
2147
|
}
|
|
2118
|
-
|
|
2119
|
-
return { preserveTrailingSpaces: A.preserveTrailingSpaces ?? !1, lineEnding: A.lineEnding ?? "lf", emptyCharacter: A.emptyCharacter ?? " ", filename: A.filename || this.
|
|
2148
|
+
LB(A) {
|
|
2149
|
+
return { preserveTrailingSpaces: A.preserveTrailingSpaces ?? !1, lineEnding: A.lineEnding ?? "lf", emptyCharacter: A.emptyCharacter ?? " ", filename: A.filename || this.zB.CB() };
|
|
2120
2150
|
}
|
|
2121
|
-
|
|
2122
|
-
const e = this.
|
|
2123
|
-
return this.
|
|
2151
|
+
KB(A, t = {}) {
|
|
2152
|
+
const e = this.LB(t), s = this.SB.TB(this.SB.rB(A.pipeline), A.grid, A.font, e.emptyCharacter);
|
|
2153
|
+
return this.kB.UB(s, e);
|
|
2124
2154
|
}
|
|
2125
|
-
|
|
2126
|
-
this.
|
|
2155
|
+
WB(A, t = {}) {
|
|
2156
|
+
this.zB.WB(this.KB(A, t), t.filename);
|
|
2127
2157
|
}
|
|
2128
2158
|
}
|
|
2129
2159
|
class NA extends O {
|
|
2130
|
-
|
|
2160
|
+
JB(A, t = 1, e = "transparent") {
|
|
2131
2161
|
const s = A.canvas;
|
|
2132
2162
|
if (t === 1 && e === "transparent") return s;
|
|
2133
|
-
const i = document.createElement("canvas"), B = i.getContext("2d"), r = Math.round(s.width * t),
|
|
2134
|
-
return i.width = r, i.height =
|
|
2163
|
+
const i = document.createElement("canvas"), B = i.getContext("2d"), r = Math.round(s.width * t), Q = Math.round(s.height * t);
|
|
2164
|
+
return i.width = r, i.height = Q, e !== "transparent" && (B.fillStyle = e, B.fillRect(0, 0, r, Q)), B.imageSmoothingEnabled = !1, B.drawImage(s, 0, 0, s.width, s.height, 0, 0, r, Q), i;
|
|
2135
2165
|
}
|
|
2136
2166
|
}
|
|
2137
|
-
class
|
|
2138
|
-
|
|
2139
|
-
const e = this.
|
|
2167
|
+
class WA {
|
|
2168
|
+
VB(A, t) {
|
|
2169
|
+
const e = this.ZB(t.format);
|
|
2140
2170
|
return t.format === "png" ? A.toDataURL(e) : A.toDataURL(e, t.quality);
|
|
2141
2171
|
}
|
|
2142
|
-
async
|
|
2172
|
+
async NB(A, t) {
|
|
2143
2173
|
return new Promise((e, s) => {
|
|
2144
|
-
const i = this.
|
|
2174
|
+
const i = this.ZB(t.format), B = (r) => {
|
|
2145
2175
|
r ? e(r) : s(Error(`Failed to generate ${t.format.toUpperCase()} blob`));
|
|
2146
2176
|
};
|
|
2147
2177
|
t.format === "png" ? A.toBlob(B, i) : A.toBlob(B, i, t.quality);
|
|
2148
2178
|
});
|
|
2149
2179
|
}
|
|
2150
|
-
|
|
2180
|
+
ZB(A) {
|
|
2151
2181
|
switch (A) {
|
|
2152
2182
|
case "png":
|
|
2153
2183
|
return "image/png";
|
|
@@ -2160,12 +2190,12 @@ class HA {
|
|
|
2160
2190
|
}
|
|
2161
2191
|
}
|
|
2162
2192
|
}
|
|
2163
|
-
const
|
|
2164
|
-
class
|
|
2165
|
-
|
|
2166
|
-
this.
|
|
2193
|
+
const VA = { png: "image/png", jpg: "image/jpeg", webp: "image/webp" }, K = { png: ".png", jpg: ".jpg", webp: ".webp" };
|
|
2194
|
+
class $A extends z {
|
|
2195
|
+
XB(A, t, e) {
|
|
2196
|
+
this.jB(A, this.lB(t) + K[e]);
|
|
2167
2197
|
}
|
|
2168
|
-
|
|
2198
|
+
jB(A, t) {
|
|
2169
2199
|
const e = URL.createObjectURL(A);
|
|
2170
2200
|
try {
|
|
2171
2201
|
const s = document.createElement("a");
|
|
@@ -2174,230 +2204,233 @@ class JA extends W {
|
|
|
2174
2204
|
URL.revokeObjectURL(e);
|
|
2175
2205
|
}
|
|
2176
2206
|
}
|
|
2177
|
-
|
|
2178
|
-
return A in
|
|
2207
|
+
qB(A) {
|
|
2208
|
+
return A in VA && A in K;
|
|
2179
2209
|
}
|
|
2180
2210
|
}
|
|
2181
|
-
class
|
|
2211
|
+
class HA {
|
|
2182
2212
|
constructor() {
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
this.
|
|
2213
|
+
n(this, "SB");
|
|
2214
|
+
n(this, "kB");
|
|
2215
|
+
n(this, "zB");
|
|
2216
|
+
this.SB = new NA(), this.kB = new WA(), this.zB = new $A();
|
|
2187
2217
|
}
|
|
2188
|
-
|
|
2189
|
-
return { format: A.format ?? "png", quality: A.quality ?? 1, scale: A.scale ?? 1, backgroundColor: A.backgroundColor ?? "transparent", filename: A.filename || this.
|
|
2218
|
+
LB(A) {
|
|
2219
|
+
return { format: A.format ?? "png", quality: A.quality ?? 1, scale: A.scale ?? 1, backgroundColor: A.backgroundColor ?? "transparent", filename: A.filename || this.zB.CB() };
|
|
2190
2220
|
}
|
|
2191
|
-
|
|
2192
|
-
if (!this.
|
|
2221
|
+
AQ(A) {
|
|
2222
|
+
if (!this.zB.qB(A.format)) throw Error(`Saving '${A.format}' files is not supported`);
|
|
2193
2223
|
if (A.quality < 0 || A.quality > 1) throw Error("Image quality must be between 0.0 and 1.0");
|
|
2194
2224
|
if (A.scale <= 0) throw Error("Scale factor must be greater than 0");
|
|
2195
2225
|
A.format === "jpg" && A.backgroundColor === "transparent" && (A.backgroundColor = "black");
|
|
2196
2226
|
}
|
|
2197
|
-
async
|
|
2198
|
-
if (t.scale === 1 && t.backgroundColor === "transparent") return await this.
|
|
2199
|
-
const e = this.
|
|
2200
|
-
return await this.
|
|
2227
|
+
async NB(A, t) {
|
|
2228
|
+
if (t.scale === 1 && t.backgroundColor === "transparent") return await this.kB.NB(A.canvas, t);
|
|
2229
|
+
const e = this.SB.JB(A, t.scale, t.backgroundColor);
|
|
2230
|
+
return await this.kB.NB(e, t);
|
|
2201
2231
|
}
|
|
2202
|
-
async
|
|
2203
|
-
const e = this.
|
|
2204
|
-
this.
|
|
2205
|
-
const s = await this.
|
|
2206
|
-
this.
|
|
2232
|
+
async XB(A, t = {}) {
|
|
2233
|
+
const e = this.LB(t);
|
|
2234
|
+
this.AQ(e);
|
|
2235
|
+
const s = await this.NB(A, e);
|
|
2236
|
+
this.zB.XB(s, e.filename, e.format);
|
|
2207
2237
|
}
|
|
2208
2238
|
}
|
|
2209
|
-
const
|
|
2210
|
-
|
|
2211
|
-
this.vA.FA(this.
|
|
2239
|
+
const KA = (E) => class extends E {
|
|
2240
|
+
tQ() {
|
|
2241
|
+
this.vA.FA(this.eQ);
|
|
2212
2242
|
}
|
|
2213
2243
|
toString(A = {}) {
|
|
2214
|
-
return this.
|
|
2244
|
+
return this.tQ(), new H().KB({ pipeline: this.sQ, grid: this.Ri, font: this.ps }, A);
|
|
2215
2245
|
}
|
|
2216
2246
|
saveStrings(A = {}) {
|
|
2217
|
-
this.
|
|
2247
|
+
this.tQ(), new H().WB({ pipeline: this.sQ, grid: this.Ri, font: this.ps }, A);
|
|
2218
2248
|
}
|
|
2219
2249
|
toSVG(A = {}) {
|
|
2220
|
-
return this.
|
|
2250
|
+
return this.tQ(), new $().OB({ pipeline: this.sQ, grid: this.Ri, font: this.ps }, A);
|
|
2221
2251
|
}
|
|
2222
2252
|
saveSVG(A = {}) {
|
|
2223
|
-
this.
|
|
2253
|
+
this.tQ(), new $().RB({ pipeline: this.sQ, grid: this.Ri, font: this.ps }, A);
|
|
2224
2254
|
}
|
|
2225
2255
|
async saveCanvas(A = {}) {
|
|
2226
|
-
await new
|
|
2256
|
+
await new HA().XB(this.Vs, A);
|
|
2227
2257
|
}
|
|
2228
2258
|
}, XA = (E) => class extends E {
|
|
2229
2259
|
async loadFont(A) {
|
|
2230
|
-
return this.
|
|
2231
|
-
const t = this.
|
|
2232
|
-
this.
|
|
2260
|
+
return this.ps.Us(A).then(() => {
|
|
2261
|
+
const t = this.ps.maxGlyphDimensions;
|
|
2262
|
+
this.Ri.Xs(t.width, t.height), this.sQ.resize(this.Ri.cols, this.Ri.rows), this.vA.ke(), this.iQ.Xi();
|
|
2233
2263
|
});
|
|
2234
2264
|
}
|
|
2235
2265
|
fontSize(A) {
|
|
2236
|
-
if (!M._(typeof A == "number" && A > 0, "Font size must be a positive number greater than 0.", { method: "fontSize", providedValue: A }) || this.
|
|
2237
|
-
this.
|
|
2238
|
-
const t = this.
|
|
2239
|
-
this.
|
|
2266
|
+
if (!M._(typeof A == "number" && A > 0, "Font size must be a positive number greater than 0.", { method: "fontSize", providedValue: A }) || this.ps.fontSize === A) return;
|
|
2267
|
+
this.ps.Ts(A);
|
|
2268
|
+
const t = this.ps.maxGlyphDimensions;
|
|
2269
|
+
this.Ri.Xs(t.width, t.height), this.sQ.resize(this.Ri.cols, this.Ri.rows), this.vA.ke(), this.iQ.Xi();
|
|
2240
2270
|
}
|
|
2241
|
-
|
|
2271
|
+
glyphColor(A) {
|
|
2272
|
+
return this.ps.fs(A);
|
|
2273
|
+
}
|
|
2274
|
+
glyphColors(A) {
|
|
2275
|
+
return this.ps.ds(A);
|
|
2276
|
+
}
|
|
2277
|
+
}, JA = (E) => class extends E {
|
|
2242
2278
|
get frameCount() {
|
|
2243
|
-
return this.
|
|
2279
|
+
return this.BQ.frameCount;
|
|
2244
2280
|
}
|
|
2245
2281
|
set frameCount(A) {
|
|
2246
|
-
this.
|
|
2282
|
+
this.BQ.frameCount = A;
|
|
2247
2283
|
}
|
|
2248
2284
|
frameRate(A) {
|
|
2249
|
-
return A === void 0 ? this.
|
|
2285
|
+
return A === void 0 ? this.BQ.currentFrameRate : this.BQ.frameRate(A, () => this.QQ());
|
|
2250
2286
|
}
|
|
2251
2287
|
noLoop() {
|
|
2252
|
-
this.
|
|
2288
|
+
this.BQ.pause();
|
|
2253
2289
|
}
|
|
2254
2290
|
loop() {
|
|
2255
|
-
this.
|
|
2291
|
+
this.BQ.resume(() => this.QQ());
|
|
2256
2292
|
}
|
|
2257
2293
|
redraw(A = 1) {
|
|
2258
|
-
if (M._(typeof A == "number" && A > 0 && Number.isInteger(A), "Redraw count must be a positive integer.", { method: "redraw", providedValue: A })) for (let t = 0; t < A; t++) this.
|
|
2294
|
+
if (M._(typeof A == "number" && A > 0 && Number.isInteger(A), "Redraw count must be a positive integer.", { method: "redraw", providedValue: A })) for (let t = 0; t < A; t++) this.QQ();
|
|
2259
2295
|
}
|
|
2260
2296
|
isLooping() {
|
|
2261
|
-
return this.
|
|
2297
|
+
return this.BQ.isLooping;
|
|
2262
2298
|
}
|
|
2263
2299
|
}, ZA = (E) => class extends E {
|
|
2264
2300
|
constructor(...A) {
|
|
2265
2301
|
super(...A);
|
|
2266
2302
|
}
|
|
2267
2303
|
mouseClicked(A) {
|
|
2268
|
-
this.
|
|
2304
|
+
this.iQ.iB(A);
|
|
2269
2305
|
}
|
|
2270
2306
|
mousePressed(A) {
|
|
2271
|
-
this.
|
|
2307
|
+
this.iQ.mi(A);
|
|
2272
2308
|
}
|
|
2273
2309
|
mouseReleased(A) {
|
|
2274
|
-
this.
|
|
2310
|
+
this.iQ.yi(A);
|
|
2275
2311
|
}
|
|
2276
2312
|
mouseMoved(A) {
|
|
2277
|
-
this.
|
|
2313
|
+
this.iQ.BB(A);
|
|
2278
2314
|
}
|
|
2279
2315
|
mouseScrolled(A) {
|
|
2280
|
-
this.
|
|
2316
|
+
this.iQ.QB(A);
|
|
2281
2317
|
}
|
|
2282
2318
|
get mouse() {
|
|
2283
|
-
return this.
|
|
2319
|
+
return this.iQ.EB();
|
|
2284
2320
|
}
|
|
2285
2321
|
}, jA = (E) => class extends E {
|
|
2286
2322
|
constructor(...A) {
|
|
2287
2323
|
super(...A);
|
|
2288
2324
|
}
|
|
2289
2325
|
keyPressed(A) {
|
|
2290
|
-
this.
|
|
2326
|
+
this.EQ.mi(A);
|
|
2291
2327
|
}
|
|
2292
2328
|
keyReleased(A) {
|
|
2293
|
-
this.
|
|
2329
|
+
this.EQ.yi(A);
|
|
2294
2330
|
}
|
|
2295
2331
|
isKeyPressed(A) {
|
|
2296
|
-
return this.
|
|
2297
|
-
}
|
|
2298
|
-
clearKeyStates() {
|
|
2299
|
-
this.iQ.$i();
|
|
2332
|
+
return this.EQ.bi(A);
|
|
2300
2333
|
}
|
|
2301
2334
|
get lastKeyPressed() {
|
|
2302
|
-
return this.
|
|
2335
|
+
return this.EQ.Gi();
|
|
2303
2336
|
}
|
|
2304
2337
|
get lastKeyReleased() {
|
|
2305
|
-
return this.
|
|
2338
|
+
return this.EQ.xi();
|
|
2306
2339
|
}
|
|
2307
2340
|
get pressedKeys() {
|
|
2308
|
-
return this.
|
|
2341
|
+
return this.EQ.Mi();
|
|
2309
2342
|
}
|
|
2310
2343
|
get modifierState() {
|
|
2311
|
-
return this.
|
|
2344
|
+
return this.EQ.Yi();
|
|
2312
2345
|
}
|
|
2313
2346
|
};
|
|
2314
2347
|
class qA {
|
|
2315
2348
|
constructor() {
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
}
|
|
2327
|
-
|
|
2349
|
+
n(this, "vA");
|
|
2350
|
+
n(this, "ps");
|
|
2351
|
+
n(this, "Vs");
|
|
2352
|
+
n(this, "Ri");
|
|
2353
|
+
n(this, "BQ");
|
|
2354
|
+
n(this, "iQ");
|
|
2355
|
+
n(this, "EQ");
|
|
2356
|
+
n(this, "eQ");
|
|
2357
|
+
n(this, "sQ");
|
|
2358
|
+
n(this, "rQ");
|
|
2359
|
+
}
|
|
2360
|
+
QQ() {
|
|
2328
2361
|
}
|
|
2329
2362
|
}
|
|
2330
2363
|
class At extends function(t, ...e) {
|
|
2331
2364
|
return e.reduce((s, i) => i(s), t);
|
|
2332
|
-
}(qA,
|
|
2365
|
+
}(qA, SA, KA, XA, JA, ZA, jA) {
|
|
2333
2366
|
constructor(t = {}) {
|
|
2334
2367
|
super();
|
|
2335
|
-
|
|
2336
|
-
|
|
2368
|
+
n(this, "nQ", !1);
|
|
2369
|
+
n(this, "oQ", () => {
|
|
2337
2370
|
});
|
|
2338
|
-
|
|
2371
|
+
n(this, "gQ", () => {
|
|
2339
2372
|
});
|
|
2340
|
-
|
|
2373
|
+
n(this, "aQ", () => {
|
|
2341
2374
|
});
|
|
2342
|
-
|
|
2343
|
-
this.
|
|
2344
|
-
}
|
|
2345
|
-
async
|
|
2346
|
-
await this.
|
|
2347
|
-
const e = this.
|
|
2348
|
-
this.
|
|
2349
|
-
}
|
|
2350
|
-
|
|
2351
|
-
this.
|
|
2352
|
-
this.
|
|
2353
|
-
}, window.addEventListener("resize", this.
|
|
2354
|
-
this.
|
|
2375
|
+
n(this, "hQ");
|
|
2376
|
+
this.Vs = new TA(t), this.vA = new uA(this.Vs.ei()), this.ps = new bA(this.vA, t.fontSize ?? 16), this.BQ = new MA(t.frameRate ?? 60), this.iQ = new GA(this.Vs), this.EQ = new FA(), this.eQ = this.vA.YA(), this.rQ = this.vA.it(), this.cQ(t);
|
|
2377
|
+
}
|
|
2378
|
+
async cQ(t) {
|
|
2379
|
+
await this.ps.zs(t.fontSource);
|
|
2380
|
+
const e = this.ps.maxGlyphDimensions;
|
|
2381
|
+
this.Ri = new xA(this.Vs.canvas, e.width, e.height), this.iQ.zs(this.Ri), this.sQ = this.vA.Fe(this.Ri.cols, this.Ri.rows, 5), this.lQ(), this.oQ(), this.BQ.start(() => this.QQ());
|
|
2382
|
+
}
|
|
2383
|
+
lQ() {
|
|
2384
|
+
this.hQ = () => {
|
|
2385
|
+
this.aQ();
|
|
2386
|
+
}, window.addEventListener("resize", this.hQ), this.iQ.fi(), this.EQ.fi(), window.addEventListener("blur", () => {
|
|
2387
|
+
this.EQ.Fi();
|
|
2355
2388
|
});
|
|
2356
2389
|
}
|
|
2357
|
-
|
|
2358
|
-
if (this.
|
|
2359
|
-
this.
|
|
2390
|
+
QQ() {
|
|
2391
|
+
if (this.BQ.measureFrameRate(), this.BQ.incrementFrame(), this.nQ) return;
|
|
2392
|
+
this.sQ.begin(), this.vA.pe(this.eQ), this.gQ(), this.vA.FA(this.eQ), this.sQ.end();
|
|
2360
2393
|
const t = this.vA.state.canvasBackgroundColor;
|
|
2361
|
-
this.vA.
|
|
2394
|
+
this.vA.Wt(t[0], t[1], t[2], t[3]), this.vA.pe(this.rQ), this.rQ.VA({ a: this.ps.fontFramebuffer, b: [this.ps.textureColumns, this.ps.textureRows], c: this.sQ.textures[0], d: this.sQ.textures[1], e: this.sQ.textures[2], f: this.sQ.textures[4], g: this.sQ.textures[3], h: [this.Ri.cols, this.Ri.rows], i: [this.Ri.width, this.Ri.height], j: [this.Ri.offsetX, this.Ri.offsetY], k: this.Ri.width / this.Ri.height }), this.vA.be(this.Ri.offsetX, this.Ri.offsetY, this.Ri.width, this.Ri.height);
|
|
2362
2395
|
}
|
|
2363
2396
|
setup(t) {
|
|
2364
|
-
this.
|
|
2397
|
+
this.oQ = t;
|
|
2365
2398
|
}
|
|
2366
2399
|
draw(t) {
|
|
2367
|
-
this.
|
|
2400
|
+
this.gQ = t;
|
|
2368
2401
|
}
|
|
2369
2402
|
windowResized(t) {
|
|
2370
|
-
this.
|
|
2403
|
+
this.aQ = t;
|
|
2371
2404
|
}
|
|
2372
2405
|
resizeCanvas(t, e) {
|
|
2373
|
-
this.
|
|
2406
|
+
this.Vs.ti(t, e), this.Ri.iA(), this.sQ.resize(this.Ri.cols, this.Ri.rows), this.vA.ke(), this.iQ.Xi(), this.QQ();
|
|
2374
2407
|
}
|
|
2375
2408
|
destroy() {
|
|
2376
|
-
this.
|
|
2409
|
+
this.nQ || (this.BQ.stop(), window.removeEventListener("resize", this.hQ), this.iQ._i(), this.EQ._i(), this.ps.kA(), this.vA.kA(), this.nQ = !0);
|
|
2377
2410
|
}
|
|
2378
2411
|
get grid() {
|
|
2379
|
-
return this.
|
|
2412
|
+
return this.Ri;
|
|
2380
2413
|
}
|
|
2381
2414
|
get font() {
|
|
2382
|
-
return this.
|
|
2415
|
+
return this.ps;
|
|
2383
2416
|
}
|
|
2384
2417
|
get width() {
|
|
2385
|
-
return this.
|
|
2418
|
+
return this.Vs.width;
|
|
2386
2419
|
}
|
|
2387
2420
|
get height() {
|
|
2388
|
-
return this.
|
|
2421
|
+
return this.Vs.height;
|
|
2389
2422
|
}
|
|
2390
2423
|
get canvas() {
|
|
2391
|
-
return this.
|
|
2424
|
+
return this.Vs.canvas;
|
|
2392
2425
|
}
|
|
2393
2426
|
get isDisposed() {
|
|
2394
|
-
return this.
|
|
2427
|
+
return this.nQ;
|
|
2395
2428
|
}
|
|
2396
2429
|
get drawFramebuffer() {
|
|
2397
|
-
return this.
|
|
2430
|
+
return this.sQ;
|
|
2398
2431
|
}
|
|
2399
2432
|
}
|
|
2400
|
-
class
|
|
2433
|
+
class k {
|
|
2401
2434
|
constructor() {
|
|
2402
2435
|
}
|
|
2403
2436
|
static create(A = {}) {
|
|
@@ -2407,20 +2440,20 @@ class z {
|
|
|
2407
2440
|
M.v(A);
|
|
2408
2441
|
}
|
|
2409
2442
|
static get version() {
|
|
2410
|
-
return "0.2.1-beta.
|
|
2443
|
+
return "0.2.1-beta.4";
|
|
2411
2444
|
}
|
|
2412
2445
|
}
|
|
2413
|
-
const et = Object.freeze(Object.defineProperty({ __proto__: null }, Symbol.toStringTag, { value: "Module" })), st =
|
|
2446
|
+
const et = Object.freeze(Object.defineProperty({ __proto__: null }, Symbol.toStringTag, { value: "Module" })), st = k.create, it = k.setErrorLevel, Bt = k.version;
|
|
2414
2447
|
export {
|
|
2415
|
-
U as GLFramebuffer,
|
|
2416
2448
|
TA as TextmodeCanvas,
|
|
2417
2449
|
tA as TextmodeErrorLevel,
|
|
2418
2450
|
bA as TextmodeFont,
|
|
2419
|
-
|
|
2451
|
+
U as TextmodeFramebuffer,
|
|
2452
|
+
xA as TextmodeGrid,
|
|
2420
2453
|
At as Textmodifier,
|
|
2421
2454
|
st as create,
|
|
2422
2455
|
et as export,
|
|
2423
2456
|
it as setErrorLevel,
|
|
2424
|
-
|
|
2457
|
+
k as textmode,
|
|
2425
2458
|
Bt as version
|
|
2426
2459
|
};
|