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.
@@ -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 Q = (E, A, t) => AA(E, typeof A != "symbol" ? A + "" : A, t);
4
- class I extends Error {
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(I.A(A, t)), this.name = "TextmodeError";
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}: ${I.C(s)}`).join("") : ""}
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) => I.C(t)).join(", ")}]` : `[${A.slice(0, 3).map((t) => I.C(t)).join(", ")}, ... +${A.length - 3} more]`;
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}: ${I.C(A[e])}`).join(", ")} }` : `{ ${t.slice(0, 2).map((e) => `${e}: ${I.C(A[e])}`).join(", ")}, ... +${t.length - 2} more }`;
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
- Q(this, "P", { globalLevel: 3 });
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(I.A(A, t)), console.groupEnd(), !1;
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(I.A(A, t)), console.groupEnd(), !1;
46
+ return console.group(e, s), console.error(f.A(A, t)), console.groupEnd(), !1;
47
47
  default:
48
- throw new I(A, t);
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
- Q(v, "D", null);
59
- let L = v;
60
- const M = L.u(), X = /* @__PURE__ */ new WeakMap();
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 V {
67
+ class J {
68
68
  constructor() {
69
- Q(this, "G", 1);
70
- Q(this, "M", 0);
71
- Q(this, "$", 0);
72
- Q(this, "Y", 0);
73
- Q(this, "F", [0, 0, 0]);
74
- Q(this, "R", [1, 1, 1, 1]);
75
- Q(this, "S", [0, 0, 0, 1]);
76
- Q(this, "O", !1);
77
- Q(this, "L", !1);
78
- Q(this, "U", !1);
79
- Q(this, "H", [0, 0]);
80
- Q(this, "W", [0, 0, 0, 1]);
81
- Q(this, "K", []);
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.G, Z: this.M, N: this.$, X: this.Y, H: [...this.H], O: this.O, L: this.L, U: this.U, AA: [...this.F], tA: [...this.R], eA: [...this.S] });
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.G = A.V, this.M = A.Z, this.$ = A.N, this.Y = A.X, this.H = A.H, this.O = A.O, this.L = A.L, this.U = A.U, this.F = A.AA, this.R = A.tA, this.S = A.eA) : console.warn("pop() called without matching push()");
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.M = 0, this.$ = 0, this.Y = 0;
91
+ this.K = [], this.G = 0, this.M = 0, this.Y = 0;
92
92
  }
93
93
  BA(A) {
94
- A.lineWeight = this.G, A.rotationX = this.M, A.rotationY = this.$, 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.O, A.flipVertically = this.L, A.invert = this.U, A.charRotation[0] = this.H[0], A.charRotation[1] = this.H[1];
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.G;
97
+ return this.$;
98
98
  }
99
99
  get canvasBackgroundColor() {
100
- return this.W;
100
+ return this.H;
101
101
  }
102
102
  QA(A) {
103
- this.G = Math.abs(A);
103
+ this.$ = Math.abs(A);
104
104
  }
105
105
  EA(A) {
106
- this.M = A;
106
+ this.G = A;
107
107
  }
108
108
  rA(A) {
109
- this.$ = A;
109
+ this.M = A;
110
110
  }
111
111
  nA(A) {
112
112
  this.Y = A;
113
113
  }
114
- gA(A) {
114
+ oA(A) {
115
115
  this.F = A;
116
116
  }
117
- oA(A, t, e, s = 255) {
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.O = A;
124
+ this.L = A;
125
125
  }
126
126
  cA(A) {
127
- this.L = A;
127
+ this.O = A;
128
128
  }
129
- CA(A) {
129
+ lA(A) {
130
130
  this.U = A;
131
131
  }
132
- lA(A) {
132
+ CA(A) {
133
133
  const t = 255 * A / 360, e = Math.floor(t) / 255, s = Math.round(t - Math.floor(t));
134
- this.H = [e, s];
134
+ this.W = [e, s];
135
135
  }
136
136
  DA(A, t, e, s) {
137
- this.W = [A / 255, t / 255, e / 255, s / 255];
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
- Q(this, "PA");
143
- Q(this, "uA");
144
- Q(this, "P");
145
- Q(this, "IA", null);
146
- Q(this, "wA");
147
- Q(this, "fA");
148
- Q(this, "dA", []);
149
- Q(this, "_A");
150
- Q(this, "pA", null);
151
- Q(this, "mA", []);
152
- Q(this, "vA", null);
153
- Q(this, "yA", !1);
154
- Q(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._A = Math.min(Math.max(1, s), 8), this.vA = B, this.yA = !!r, this.bA = this.yA ? new V() : null;
156
- const n = A.getParameter(A.MAX_DRAW_BUFFERS), o = A.getParameter(A.MAX_COLOR_ATTACHMENTS);
157
- this._A = Math.min(this._A, n, o), this.fA = A.createFramebuffer(), this.GA(), this.MA(), this.mA = Array(this._A).fill(null);
158
- }
159
- GA() {
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._A; i++) {
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
- MA() {
167
+ GA() {
168
168
  const A = this.wA;
169
- if (A.bindFramebuffer(A.FRAMEBUFFER, this.fA), this._A === 1) A.framebufferTexture2D(A.FRAMEBUFFER, A.COLOR_ATTACHMENT0, A.TEXTURE_2D, this.dA[0], 0);
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._A; s++) {
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
- $A(A) {
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._A).fill(null);
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
- xA(A) {
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 n = 4 * s, o = new Uint8Array(B.length);
197
- for (let a = 0; a < i; a++) {
198
- const g = (i - 1 - a) * n, h = a * n;
199
- o.set(B.subarray(g, g + n), h);
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.pA = { framebuffer: A.getParameter(A.FRAMEBUFFER_BINDING), viewport: A.getParameter(A.VIEWPORT) }, A.bindFramebuffer(A.FRAMEBUFFER, this.fA), this.mA = Array(this._A).fill(null);
211
- for (let B = 0; B < this._A; B++) A.clearBufferfv(A.COLOR, B, new Float32Array([0, 0, 0, 0]));
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.pA) return;
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.pA.framebuffer), A.viewport(...this.pA.viewport), F(A, this.pA.viewport), this.pA = null, this.vA && this.yA && this.bA && ((i = (s = this.vA).SA) == null || i.call(s));
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
- zA() {
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
- Q(this, "wA");
260
- Q(this, "kA");
261
- Q(this, "OA", /* @__PURE__ */ new Map());
262
- Q(this, "LA", 0);
263
- this.wA = A, this.kA = this.UA(N(t), N(e)), this.TA();
264
- }
265
- TA() {
266
- const A = this.wA.getProgramParameter(this.kA, this.wA.ACTIVE_UNIFORMS);
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.kA, t);
254
+ const e = this.wA.getActiveUniform(this.zA, t);
269
255
  if (e) {
270
- const s = this.wA.getUniformLocation(this.kA, e.name);
271
- s && this.OA.set(e.name, s);
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.LA = 0;
281
+ this.wA.useProgram(this.zA), this.JA();
296
282
  }
297
- JA(A) {
298
- for (const [t, e] of Object.entries(A)) this.VA(t, e);
283
+ JA() {
284
+ this.TA = 0;
299
285
  }
300
- ZA(A) {
301
- return this.OA.has(A);
286
+ VA(A) {
287
+ for (const [t, e] of Object.entries(A)) this.ZA(t, e);
302
288
  }
303
- VA(A, t) {
304
- const e = this.OA.get(A);
305
- if (e) if (typeof t == "number") this.wA.uniform1f(e, t);
306
- else if (typeof t == "boolean") this.wA.uniform1i(e, t ? 1 : 0);
307
- else if (Array.isArray(t)) switch (t.length) {
308
- case 2:
309
- this.wA.uniform2f(e, t[0], t[1]);
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 3:
312
- this.wA.uniform3f(e, t[0], t[1], t[2]);
312
+ case r.FLOAT:
313
+ r.uniform1f(e, t);
313
314
  break;
314
- case 4:
315
- this.wA.uniform4f(e, t[0], t[1], t[2], t[3]);
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
- return;
351
+ console.warn(`Unsupported uniform type for array '${A}': ${i}`);
319
352
  }
320
353
  else if (t instanceof WebGLTexture) {
321
- const s = this.NA();
322
- this.wA.uniform1i(e, s), this.wA.activeTexture(this.wA.TEXTURE0 + s), this.wA.bindTexture(this.wA.TEXTURE_2D, t);
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 s = this.NA();
325
- this.wA.uniform1i(e, s), this.wA.activeTexture(this.wA.TEXTURE0 + s), this.wA.bindTexture(this.wA.TEXTURE_2D, t.texture);
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
- NA() {
332
- return this.LA++;
361
+ qA() {
362
+ return this.TA++;
333
363
  }
334
- get XA() {
335
- return this.kA;
364
+ get At() {
365
+ return this.zA;
336
366
  }
337
- zA() {
338
- this.wA.deleteProgram(this.kA);
367
+ kA() {
368
+ this.wA.deleteProgram(this.zA);
339
369
  }
340
370
  }
341
- const S = `#version 300 es
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 r;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 H,vec2 I,vec2 J,vec2 K,vec2 L){float M=1.-H,N=M*M,O=H*H;return N*M*I+3.*N*H*J+3.*M*O*K+O*H*L;}vec2 P(float H,vec2 I,vec2 J,vec2 K,vec2 L){float M=1.-H,N=M*M,O=H*H;return-3.*N*I+3.*N*J-6.*M*H*J+6.*M*H*K-3.*O*K+3.*O*L;}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 Q;bool R=length(a_instanceBezierCP1)+length(a_instanceBezierCP2)+length(a_instanceBezierStart)+length(a_instanceBezierEnd)>0.;bool S=a_instanceArcAngles.x!=0.||a_instanceArcAngles.y!=0.;if(R){float H=a_position.x;vec2 T=G(H,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);vec2 U=P(H,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);float V=length(U);U=V>0.?U/V:vec2(1,0);Q=T+vec2(-U.y,U.x)*a_position.y*a_instanceSize.y;}else if(S){float C=a_instanceArcAngles.x,W=a_instanceArcAngles.y;C=mod(C,6.28318530718);if(C<0.)C+=6.28318530718;W=mod(W,6.28318530718);if(W<0.)W+=6.28318530718;float X=C-W;if(X<=0.)X+=6.28318530718;float Y=C-a_position.x*X;vec2 Z=vec2(cos(Y),sin(Y))*a_position.y;Q=Z*a_instanceSize*.5+a_instanceSize*.5+a_instancePosition;}else{Q=a_position*a_instanceSize+a_instancePosition;}vec2 a=(Q/r)*2.-1.;a.y=-a.y;if(length(a_instanceGlobalRotation)>0.){vec3 b=vec3(a-a_instanceRotationCenter,0);b.x*=k;if(a_instanceGlobalRotation.x!=0.)b=A(-a_instanceGlobalRotation.x)*b;if(a_instanceGlobalRotation.y!=0.)b=E(-a_instanceGlobalRotation.y)*b;if(a_instanceGlobalRotation.z!=0.)b=F(-a_instanceGlobalRotation.z)*b;b.x/=k;a=b.xy+a_instanceRotationCenter;}gl_Position=vec4(a,0,1);}`;
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
- Q(this, "jA", /* @__PURE__ */ new Map());
346
- Q(this, "wA");
375
+ n(this, "tt", /* @__PURE__ */ new Map());
376
+ n(this, "wA");
347
377
  this.wA = A;
348
378
  }
349
- qA(A, t) {
350
- if (!this.jA.has(A)) {
379
+ et(A, t) {
380
+ if (!this.tt.has(A)) {
351
381
  const e = t();
352
- this.jA.set(A, e);
382
+ this.tt.set(A, e);
353
383
  }
354
- return this.jA.get(A);
384
+ return this.tt.get(A);
355
385
  }
356
- At() {
357
- return this.qA("mrt-copy", () => new T(this.wA, S, `#version 300 es
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.qA("mrt-draw", () => new T(this.wA, S, `#version 300 es
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
- tt() {
365
- return this.qA("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);}"));
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
- et(A) {
368
- return new T(this.wA, S, A);
397
+ Bt(A) {
398
+ return new T(this.wA, L, A);
369
399
  }
370
- st(A, t) {
400
+ Qt(A, t) {
371
401
  return new T(this.wA, A, t);
372
402
  }
373
- zA() {
374
- for (const A of this.jA.values()) A.zA();
375
- this.jA.clear();
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
- Q(this, "wA");
382
- Q(this, "it", /* @__PURE__ */ new Map());
411
+ n(this, "wA");
412
+ n(this, "Et", /* @__PURE__ */ new Map());
383
413
  this.wA = A;
384
414
  }
385
- Bt(A, t, e, s) {
415
+ rt(A, t, e, s) {
386
416
  const i = this.wA;
387
- let B = this.it.get(A);
388
- B || (B = /* @__PURE__ */ new Map(), this.it.set(A, B));
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 n = i.getAttribLocation(A, "a_position");
393
- n !== -1 && (i.enableVertexAttribArray(n), i.vertexAttribPointer(n, e.Et.Qt.size, i.FLOAT, !1, e.rt, e.Et.Qt.offset), i.vertexAttribDivisor(n, 0));
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.Et.nt.size, i.FLOAT, !1, e.rt, e.Et.nt.offset), i.vertexAttribDivisor(o, 0));
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
- gt() {
429
+ ct() {
400
430
  this.wA.bindVertexArray(null);
401
431
  }
402
- zA() {
432
+ kA() {
403
433
  const A = this.wA;
404
- for (const [, t] of this.it) for (const [, e] of t) e && A.deleteVertexArray(e);
405
- this.it.clear();
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
- Q(this, "ot");
411
- Q(this, "wA");
412
- Q(this, "vA");
413
- Q(this, "ht", null);
414
- Q(this, "ct", null);
415
- this.wA = A, this.ot = new sA(A), this.vA = t;
416
- }
417
- Ct(A, t, e) {
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.JA({ k: i[2] / i[3], r: [i[2], i[3]] });
449
+ s.VA({ k: i[2] / i[3], t: [i[2], i[3]] });
420
450
  const B = (o) => {
421
- if (!o || !o.lt()) return;
422
- const a = o.unitGeometry, g = o.unitBuffer;
451
+ if (!o || !o.ut()) return;
452
+ const g = o.unitGeometry, a = o.unitBuffer;
423
453
  try {
424
- this.ot.Bt(s.XA, o.type + "", a, g), o.batch.Dt(s), o.batch.Pt(a.ut, a.It);
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.wt(s), this.ot.gt(), o.ft();
456
+ o.batch._t(s), this.lt.ct(), o.vt();
427
457
  }
428
458
  };
429
- let r = null, n = null;
459
+ let r = null, Q = null;
430
460
  for (const o of t) {
431
461
  if (o.type === D.CUSTOM) {
432
- n && (B(n), r = null, n = null), this.dt(A, o.params, o.state, e.get(D.RECTANGLE));
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(n), r = null, n = null);
436
- let a = n;
437
- a && o.type === r || (a = e.get(o.type) || null, n = a, r = o.type), a && a._t(o.params, o.state);
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(n);
440
- }
441
- dt(A, t, e, s) {
442
- const { x: i, y: B, width: r, height: n, shader: o, uniforms: a } = t;
443
- if (o === this.vt()) return this.yt(s, o, a, Math.floor(i), Math.floor(B), Math.max(1, Math.floor(r)), Math.max(1, Math.floor(n)), e), void A.shader.WA();
444
- const g = this.bt(Math.max(1, Math.floor(r)), Math.max(1, Math.floor(n)));
445
- g.begin(), this.yt(s, o, a, 0, 0, g.width, g.height, {}), g.end();
446
- const h = this.vt(), c = { l: g.textures[0], m: g.textures[1], n: g.textures[2], o: g.textures[3], p: g.textures[4], q: [g.width, g.height] };
447
- this.yt(s, h, c, Math.floor(i), Math.floor(B), Math.max(1, Math.floor(r)), Math.max(1, Math.floor(n)), e), A.shader.WA();
448
- }
449
- yt(A, t, e, s, i, B, r, n) {
450
- t.WA(), t.JA(e);
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.JA({ k: o[2] / o[3], r: [o[2], o[3]] }), A.ft(), A._t({ x: s, y: i, width: B, height: r }, n), A.lt()) {
453
- const a = A.unitGeometry, g = A.unitBuffer;
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.ot.Bt(t.XA, A.type + "", a, g), A.batch.Dt(t), A.batch.Pt(a.ut, a.It);
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.wt(t), this.ot.gt(), A.ft();
487
+ A.batch._t(t), this.lt.ct(), A.vt();
458
488
  }
459
489
  }
460
490
  }
461
- vt() {
462
- return this.vA.At();
491
+ $t() {
492
+ return this.vA.st();
463
493
  }
464
- bt(A, t) {
465
- return this.ht && this.ct && this.ct.w === A && this.ct.h === t || (this.ht && this.ht.zA(), this.ht = new U(this.wA, A, t, 5), this.ct = { w: A, h: t }), this.ht;
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
- Q(this, "Gt", []);
471
- Q(this, "Mt", 1);
472
- Q(this, "$t", 0);
473
- }
474
- xt(A) {
475
- if (this.$t >= this.Gt.length) {
476
- const e = { id: this.Mt++, 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] } };
477
- this.Gt.push(e);
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.Gt[this.$t];
480
- switch (t.id = this.Mt++, t.type = A, A) {
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.$t++, t;
533
+ return this.Ft++, t;
504
534
  }
505
- Yt(A, t, e, s, i) {
506
- const B = this.xt(D.RECTANGLE);
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
- Ft(A, t, e, s, i, B, r) {
510
- const n = this.xt(D.CUSTOM);
511
- return n.params.x = A, n.params.y = t, n.params.width = e, n.params.height = s, n.params.shader = i, n.params.uniforms = B, r.BA(n.state), n.id;
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
- Rt(A, t, e, s, i, B) {
514
- const r = this.xt(D.LINE);
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
- St(A, t, e, s, i) {
518
- const B = this.xt(D.ELLIPSE);
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
- zt(A, t, e, s, i, B, r) {
522
- const n = this.xt(D.ARC);
523
- return n.params.x = A, n.params.y = t, n.params.width = e, n.params.height = s, n.params.start = i, n.params.stop = B, r.BA(n.state), n.id;
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
- kt(A, t, e, s, i, B, r) {
526
- const n = this.xt(D.TRIANGLE);
527
- return n.params.x1 = A, n.params.y1 = t, n.params.x2 = e, n.params.y2 = s, n.params.x3 = i, n.params.y3 = B, r.BA(n.state), n.id;
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
- Ot(A, t, e, s, i, B, r, n, o, a) {
530
- const g = this.xt(D.BEZIER_CURVE);
531
- return g.params.x1 = A, g.params.y1 = t, g.params.cp1x = e, g.params.cp1y = s, g.params.cp2x = i, g.params.cp2y = B, g.params.x2 = r, g.params.y2 = n, g.params.thickness = o, a.BA(g.state), g.id;
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.$t;
564
+ return this.Ft;
535
565
  }
536
566
  get isEmpty() {
537
- return this.$t === 0;
567
+ return this.Ft === 0;
538
568
  }
539
- Lt() {
540
- this.$t = 0;
569
+ Wt() {
570
+ this.Ft = 0;
541
571
  }
542
572
  [Symbol.iterator]() {
543
573
  let A = 0;
544
- const t = this.$t, e = this.Gt;
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 Ut(A, t, e = 0) {
550
- var B, r, n, o, a, g, h, c, l, C;
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++] = ((n = A.bezierControlPoint1) == null ? void 0 : n[0]) || 0, s[i++] = ((o = A.bezierControlPoint1) == null ? void 0 : o[1]) || 0, s[i++] = ((a = A.bezierControlPoint2) == null ? void 0 : a[0]) || 0, s[i++] = ((g = A.bezierControlPoint2) == null ? void 0 : g[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;
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 Tt(A) {
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.Ut(A[s], e, i);
589
+ y.Ht(A[s], e, i);
560
590
  }
561
591
  return e;
562
592
  }
563
593
  };
564
- Q(y, "BYTES_PER_INSTANCE", 140), Q(y, "FLOATS_PER_INSTANCE", 35);
565
- let x = y;
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
- Q(P, "STRIDE", x.BYTES_PER_INSTANCE), Q(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 } });
569
- let Y = P;
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
- Q(this, "wA");
573
- Q(this, "Ht", []);
574
- Q(this, "Wt");
575
- Q(this, "Kt");
576
- Q(this, "Jt", null);
577
- Q(this, "Vt", !0);
578
- Q(this, "Zt", 0);
579
- Q(this, "Nt", /* @__PURE__ */ new Map());
580
- Q(this, "Xt", null);
581
- this.wA = A, this.Wt = t, this.Kt = e, this.jt();
582
- }
583
- _t(A) {
584
- const t = this.Ht.length;
585
- return this.Ht.push(A), this.Vt = !0, t;
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.Ht.length;
618
+ return this.Jt.length;
589
619
  }
590
620
  get isEmpty() {
591
- return this.Ht.length === 0;
621
+ return this.Jt.length === 0;
592
622
  }
593
623
  clear() {
594
- this.Ht.length = 0, this.Vt = !0;
624
+ this.Jt.length = 0, this.Xt = !0;
595
625
  }
596
- qt(A) {
597
- if (A <= this.Wt) return;
598
- const t = Math.ceil(A * this.Kt);
599
- this.Wt = t, this.jt();
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
- jt() {
631
+ te() {
602
632
  const A = this.wA;
603
- this.Jt && A.deleteBuffer(this.Jt), this.Jt = A.createBuffer();
604
- const t = this.Wt * x.BYTES_PER_INSTANCE;
605
- A.bindBuffer(A.ARRAY_BUFFER, this.Jt), A.bufferData(A.ARRAY_BUFFER, t, A.DYNAMIC_DRAW), A.bindBuffer(A.ARRAY_BUFFER, null), this.Vt = !0, this.Zt = 0;
606
- }
607
- Ae() {
608
- if (!this.Vt || this.Ht.length === 0) return;
609
- const A = this.wA, t = this.Ht.length;
610
- this.qt(t), (!this.Xt || this.Xt.length < t * x.FLOATS_PER_INSTANCE) && (this.Xt = new Float32Array(t * x.FLOATS_PER_INSTANCE));
611
- const e = x.Tt(this.Ht);
612
- A.bindBuffer(A.ARRAY_BUFFER, this.Jt), t <= this.Zt ? A.bufferSubData(A.ARRAY_BUFFER, 0, e) : A.bufferData(A.ARRAY_BUFFER, e, A.DYNAMIC_DRAW), A.bindBuffer(A.ARRAY_BUFFER, null), this.Vt = !1, this.Zt = t;
613
- }
614
- te(A) {
615
- let t = this.Nt.get(A);
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 Y.ATTRIBUTES) {
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.Nt.set(A, t);
653
+ this.qt.set(A, t);
624
654
  }
625
655
  return t;
626
656
  }
627
- Dt(A) {
628
- if (!this.Jt || this.Ht.length === 0) return;
629
- const t = this.wA, e = A.XA;
630
- this.Ae();
631
- const s = this.te(e);
632
- t.bindBuffer(t.ARRAY_BUFFER, this.Jt);
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 = Y.ATTRIBUTES[i];
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
- wt(A) {
639
- const t = this.wA, e = this.te(A.XA);
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
- Pt(A, t) {
643
- this.Ht.length !== 0 && this.wA.drawArraysInstanced(A, 0, t, this.Ht.length);
672
+ wt(A, t) {
673
+ this.Jt.length !== 0 && this.wA.drawArraysInstanced(A, 0, t, this.Jt.length);
644
674
  }
645
- zA() {
675
+ kA() {
646
676
  const A = this.wA;
647
- this.Jt && (A.deleteBuffer(this.Jt), this.Jt = null), this.Ht.length = 0, this.Nt.clear(), this.Xt = null;
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
- Q(this, "wA");
653
- Q(this, "ee");
654
- Q(this, "se");
655
- Q(this, "ie");
656
- Q(this, "Be", null);
657
- this.wA = A, this.ee = t, this.se = e, this.ie = s;
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.ie.Qe, this.wA.STATIC_DRAW), this.wA.bindBuffer(this.wA.ARRAY_BUFFER, null), this.Be = i;
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.se;
693
+ return this.Qe;
664
694
  }
665
695
  get unitGeometry() {
666
- return this.ie;
696
+ return this.Ee;
667
697
  }
668
698
  get unitBuffer() {
669
- return this.Be;
699
+ return this.re;
670
700
  }
671
701
  get batch() {
672
- return this.ee;
702
+ return this.Be;
673
703
  }
674
- ft() {
675
- this.ee.clear();
704
+ vt() {
705
+ this.Be.clear();
676
706
  }
677
- lt() {
678
- return !this.ee.isEmpty;
707
+ ut() {
708
+ return !this.Be.isEmpty;
679
709
  }
680
- zA() {
681
- this.ee.zA(), this.Be && (this.wA.deleteBuffer(this.Be), this.Be = null);
710
+ kA() {
711
+ this.Be.kA(), this.re && (this.wA.deleteBuffer(this.re), this.re = null);
682
712
  }
683
- Ee(A, t, e, s, i) {
684
- const B = this.re(A, t, e, s, i.rotationX || 0, i.rotationY || 0, i.rotationZ || 0);
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
- ne(A, t) {
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
- ge(A, t, e) {
692
- const s = this.ne(t, e);
721
+ he(A, t, e) {
722
+ const s = this.ae(t, e);
693
723
  A.rotationCenter = [s.nx, s.ny];
694
724
  }
695
- re(A, t, e, s, i, B, r) {
696
- const n = G(this.wA) || [0, 0, this.wA.canvas.width, this.wA.canvas.height], o = n[2], a = n[3];
697
- return { centerX: (A + e / 2) / o * 2 - 1, centerY: 1 - (t + s / 2) / a * 2, radiansX: -i * Math.PI / 180, radiansY: -B * Math.PI / 180, radiansZ: -r * Math.PI / 180, aspectRatio: o / a };
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 = { Qe: 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]), It: 6, ut: WebGL2RenderingContext.TRIANGLES, rt: 16, Et: { Qt: { size: 2, offset: 0 }, nt: { size: 2, offset: 8 } } };
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
- _t(A, t) {
706
- const e = this.Ee(A.x, A.y, A.width, A.height, t);
707
- return this.ee._t(e);
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 = { Qe: 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]), It: 6, ut: WebGL2RenderingContext.TRIANGLES, rt: 16, Et: { Qt: { size: 2, offset: 0 }, nt: { size: 2, offset: 8 } } };
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
- _t(A, t) {
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, n = A.x1 + e / 2, o = A.y1 + s / 2, a = n - i / 2, g = 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.Ee(a, g, i, r, h);
717
- return this.ge(c, n, o), this.ee._t(c);
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 = { Qe: function(E = 32) {
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), n = 0.5 * (B + 1), o = 0.5 * (r + 1), a = Math.cos(i), g = Math.sin(i), h = 0.5 * (a + 1), c = 0.5 * (g + 1);
724
- A.push(0, 0, 0.5, 0.5, B, r, n, o, a, g, h, c);
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), It: 96, ut: WebGL2RenderingContext.TRIANGLES, rt: 16, Et: { Qt: { size: 2, offset: 0 }, nt: { size: 2, offset: 8 } } };
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
- _t(A, t) {
733
- const e = this.Ee(A.x, A.y, A.width, A.height, t);
734
- return this.ge(e, A.x, A.y), this.ee._t(e);
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 = { Qe: function(E) {
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), It: 96, ut: WebGL2RenderingContext.TRIANGLES, rt: 16, Et: { Qt: { size: 2, offset: 0 }, nt: { size: 2, offset: 8 } } };
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
- _t(A, t) {
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.Ee(e, s, A.width, A.height, t);
751
- return this.ge(r, A.x, A.y), r.arcAngles = [i, B], this.ee._t(r);
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 = { Qe: new Float32Array([0, 0, 0, 0, 1, 0, 1, 0, 0.5, 1, 0.5, 1]), It: 3, ut: WebGL2RenderingContext.TRIANGLES, rt: 16, Et: { Qt: { size: 2, offset: 0 }, nt: { size: 2, offset: 8 } } };
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
- _t(A, t) {
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, n = this.Ee(e, i, B, r, t), o = e + 0.5 * B, a = i + r * (1 / 3);
761
- return this.ge(n, o, a), this.ee._t(n);
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 H(E, A, t, e, s) {
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 = { Qe: function(E = 16) {
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), It: 96, ut: WebGL2RenderingContext.TRIANGLES, rt: 16, Et: { Qt: { size: 2, offset: 0 }, nt: { size: 2, offset: 8 } } };
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
- _t(A, t) {
781
- const e = t.lineWeight || 1, s = H(0.5, A.x1, A.cp1x, A.cp2x, A.x2), i = H(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.Ee(0, 0, 1, e, B);
782
- return this.ge(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.ee._t(r);
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
- Q(this, "wA");
788
- Q(this, "oe", null);
789
- Q(this, "ae");
790
- Q(this, "he", null);
791
- Q(this, "ce", {});
792
- Q(this, "Ce", null);
793
- Q(this, "le", /* @__PURE__ */ new Map());
794
- Q(this, "De");
795
- Q(this, "Pe");
796
- Q(this, "ue");
797
- Q(this, "K", []);
798
- this.wA = A, this.ae = new eA(A), this.ue = new V(), this.De = new iA(A, this), this.Pe = new BA(), this.Ce = A.createBuffer(), F(this.wA, [0, 0, this.wA.canvas.width, this.wA.canvas.height]);
799
- }
800
- Ie(A) {
801
- let t = this.le.get(A);
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.le.set(A, t), t;
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
- we(A) {
807
- this.oe !== A && (this.oe = A, A.WA());
836
+ pe(A) {
837
+ this.ce !== A && (this.ce = A, A.KA());
808
838
  }
809
- fe(A, t) {
810
- return this.ae.st(A, t);
839
+ _e(A, t) {
840
+ return this.le.Qt(A, t);
811
841
  }
812
- At() {
813
- return this.ae.At();
842
+ st() {
843
+ return this.le.st();
814
844
  }
815
845
  YA() {
816
- return this.ae.YA();
846
+ return this.le.YA();
817
847
  }
818
- tt() {
819
- return this.ae.tt();
848
+ it() {
849
+ return this.le.it();
820
850
  }
821
- de(A) {
822
- this.he = A, A && (this.ce = {});
851
+ me(A) {
852
+ this.Ce = A, A && (this.De = {});
823
853
  }
824
- VA(A, t) {
825
- this.ce[A] = t;
854
+ ZA(A, t) {
855
+ this.De[A] = t;
826
856
  }
827
- _e(A) {
828
- Object.assign(this.ce, A);
857
+ ve(A) {
858
+ Object.assign(this.De, A);
829
859
  }
830
- et(A) {
831
- return this.ae.et(A);
860
+ Bt(A) {
861
+ return this.le.Bt(A);
832
862
  }
833
- pe(A, t, e, s, i) {
834
- const B = this.At(), 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] };
835
- this.Pe.Ft(t, e, s, i, B, r, this.ue);
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
- me(A, t, e, s) {
867
+ be(A, t, e, s) {
838
868
  var C;
839
- const i = this.wA, B = i.canvas.width, r = i.canvas.height, n = A / B * 2 - 1, o = (A + e) / B * 2 - 1, a = 1 - t / r * 2, g = 1 - (t + s) / r * 2, h = new Float32Array([n, g, o, g, n, a, o, g, o, a, n, a]);
840
- i.bindBuffer(i.ARRAY_BUFFER, this.Ce), i.bufferData(i.ARRAY_BUFFER, h, i.DYNAMIC_DRAW);
841
- const c = ((C = this.oe) == null ? void 0 : C.XA) || i.getParameter(i.CURRENT_PROGRAM), l = c ? i.getAttribLocation(c, "a_position") : -1;
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
- ve(A, t, e, s) {
845
- this.he ? (this.Pe.Ft(A, t, e, s, this.he, { ...this.ce }, this.ue), this.he = null, this.ce = {}) : this.Pe.Yt(A, t, e, s, this.ue);
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
- ye(A, t, e, s) {
848
- this.Pe.Rt(A, t, e, s, this.ue.lineWeight, this.ue);
877
+ Ge(A, t, e, s) {
878
+ this.we.zt(A, t, e, s, this.fe.lineWeight, this.fe);
849
879
  }
850
- be(A, t, e, s) {
851
- this.Pe.St(A, t, e, s, this.ue);
880
+ xe(A, t, e, s) {
881
+ this.we.Lt(A, t, e, s, this.fe);
852
882
  }
853
- Ge(A, t, e, s, i, B) {
854
- this.Pe.kt(A, t, e, s, i, B, this.ue);
883
+ Me(A, t, e, s, i, B) {
884
+ this.we.Tt(A, t, e, s, i, B, this.fe);
855
885
  }
856
- Me(A, t, e, s, i, B, r, n) {
857
- const o = this.ue.lineWeight;
858
- this.Pe.Ot(A, t, e, s, i, B, r, n, o, this.ue);
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
- $e(A, t, e = 1, s = {}) {
890
+ Fe(A, t, e = 1, s = {}) {
861
891
  return new U(this.wA, A, t, e, s, this, !0);
862
892
  }
863
- xe(A, t, e, s, i, B) {
864
- this.Pe.zt(A, t, e, s, i, B, this.ue);
893
+ Re(A, t, e, s, i, B) {
894
+ this.we.Ot(A, t, e, s, i, B, this.fe);
865
895
  }
866
- Ye(A, t = A, e = A, s = 255) {
867
- this.state.DA(A, t, e, s), this.Lt(A / 255, t / 255, e / 255, s / 255);
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
- Lt(A = 0, t = 0, e = 0, s = 0) {
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
- Fe() {
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.ue;
909
+ return this.fe;
880
910
  }
881
911
  RA(A) {
882
- this.K.push(this.ue), this.ue = A;
912
+ this.K.push(this.fe), this.fe = A;
883
913
  }
884
914
  SA() {
885
915
  const A = this.K.pop();
886
- A && (this.ue = A);
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.we(t);
920
+ this.pe(t);
891
921
  const i = /* @__PURE__ */ new Set();
892
- for (const B of this.Pe) B.type === D.CUSTOM ? i.add(D.RECTANGLE) : i.add(B.type);
893
- for (const B of i) B !== D.CUSTOM && this.Ie(B);
894
- this.De.Ct(s, this.Pe, this.le), this.Pe.Lt();
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
- zA() {
897
- this.wA.deleteBuffer(this.Ce), this.Pe.Lt();
898
- for (const A of this.le.values()) A.zA();
899
- this.ae.zA();
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 n = 0; n < B; n++) {
923
- const o = i(E, A), a = i(E, A += 2);
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 g = s.readUint(E, A);
955
+ const a = s.readUint(E, A);
926
956
  A += 4;
927
- const h = `p${o}e${a}`;
928
- let c = r.indexOf(g);
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(g);
932
- const C = i(E, g);
933
- l = C === 4 ? this.parse4(E, g) : C === 12 ? this.parse12(E, g) : { format: C }, e.tables.push(l);
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, n = { format: 4, searchRange: e(E, A += 2), entrySelector: 0, rangeShift: 0, endCount: [], startCount: [], idDelta: [], idRangeOffset: [], glyphIdArray: [] };
942
- A += 2, n.entrySelector = e(E, A), A += 2, n.rangeShift = e(E, A), A += 2, n.endCount = s(E, A, r), A += 2 * r, A += 2, n.startCount = s(E, A, r), A += 2 * r;
943
- for (let o = 0; o < r; o++) n.idDelta.push(t.readShort(E, A)), A += 2;
944
- return n.idRangeOffset = s(E, A, r), A += 2 * r, n.glyphIdArray = s(E, A, i + B - A >> 1), n;
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
- } }, IA = { parseTab(E, A, t) {
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 n = e.readShort(E, A);
965
- return A += 2, A += 6, { unitsPerEm: s, xMin: i, yMin: B, xMax: r, yMax: n, indexToLocFormat: e.readShort(E, A) };
966
- } }, fA = { parseTab(E, A, t) {
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], n = r === "advanceWidthMax" || r === "numberOfHMetrics" ? e.readUshort : e.readShort;
972
- i[r] = n(E, A + 2 * B);
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, n = e.hhea.numberOfHMetrics;
977
- let o = 0, a = 0, g = 0;
978
- for (; g < n; ) o = s.readUshort(E, A + (g << 2)), a = s.readShort(E, A + (g << 2) + 2), i.push(o), B.push(a), g++;
979
- for (; g < r; ) i.push(o), B.push(a), g++;
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
- } }, k = { cmap: wA, head: IA, hhea: fA, maxp: { parseTab(E, A, t) {
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 n = 0; n < r; n++) i.push(s.readUshort(E, A + (n << 1)) << 1);
987
- else if (B === 1) for (let n = 0; n < r; n++) i.push(s.readUint(E, A + (n << 2)));
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
- }, Re(E, A) {
994
- const t = u, e = E.Se, s = E.loca;
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.ze);
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 n = t.readUshort(e, B);
1005
- if (B += 2, e.length - B < n) return null;
1006
- B += n;
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 a = 0, g = 0;
1028
- for (let h = 0; h < o; h++) a += r.xs[h], g += r.ys[h], r.xs[h] = a, r.ys[h] = g;
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 = k, B = { Se: A, ke: t, ze: e };
1062
+ const i = V, B = { Le: A, Te: t, Oe: e };
1033
1063
  for (const r in i) {
1034
- const n = r, o = m.findTable(A, n, e);
1064
+ const Q = r, o = m.findTable(A, Q, e);
1035
1065
  if (o) {
1036
- const [a, g] = o;
1037
- let h = s[a];
1038
- h == null && (h = i[n].parseTab(A, a, g, B), s[a] = h), B[n] = h;
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 n = e.readUint(E, i + 8), o = e.readUint(E, i + 12);
1049
- if (r === A) return [n, o];
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: k, B: u };
1083
+ }, T: V, B: u };
1054
1084
  class _ {
1055
1085
  constructor() {
1056
- Q(this, "Oe", /* @__PURE__ */ new Map());
1057
- Q(this, "Le", /* @__PURE__ */ new Map());
1086
+ n(this, "Ue", /* @__PURE__ */ new Map());
1087
+ n(this, "We", /* @__PURE__ */ new Map());
1058
1088
  }
1059
- Ue(A, t) {
1060
- const e = `${this.Te(A)}_${t}`;
1061
- if (this.Oe.has(e)) return this.Oe.get(e);
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.Oe.set(e, 0), 0;
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.He(t, B) : B.format === 12 && (i = this.We(t, B)), i > 0) break;
1066
- return this.Oe.set(e, i), i;
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
- Ke(A, t) {
1098
+ Ze(A, t) {
1069
1099
  const e = t.codePointAt(0);
1070
- return e === void 0 ? 0 : this.Ue(A, e);
1100
+ return e === void 0 ? 0 : this.He(A, e);
1071
1101
  }
1072
- Je(A, t) {
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
- Ve(A, t) {
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
- Ze() {
1081
- this.Oe.clear(), this.Le.clear();
1110
+ je() {
1111
+ this.Ue.clear(), this.We.clear();
1082
1112
  }
1083
- Te(A) {
1084
- return `${A.ze}_${A.Se.length}`;
1113
+ Ke(A) {
1114
+ return `${A.Oe}_${A.Le.length}`;
1085
1115
  }
1086
- He(A, t) {
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
- We(A, t) {
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
- Q(this, "Ne");
1116
- this.Ne = A;
1145
+ n(this, "qe");
1146
+ this.qe = A;
1117
1147
  }
1118
- Xe(A) {
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.je(s);
1153
+ const i = this.ts(s);
1124
1154
  t.push(...i);
1125
1155
  } else if (s.format === 12) {
1126
- const i = this.qe(s);
1156
+ const i = this.es(s);
1127
1157
  t.push(...i);
1128
1158
  }
1129
1159
  }), [...new Set(t)]) : [];
1130
1160
  }
1131
- As(A, t) {
1132
- return this.Ne.Ke(A, t) > 0;
1161
+ ss(A, t) {
1162
+ return this.qe.Ze(A, t) > 0;
1133
1163
  }
1134
- ts(A, t) {
1135
- for (const e of t) if (!this.As(A, e)) return !1;
1164
+ Bs(A, t) {
1165
+ for (const e of t) if (!this.ss(A, e)) return !1;
1136
1166
  return !0;
1137
1167
  }
1138
- es(A, t) {
1139
- return t.filter((e) => this.As(A, e));
1168
+ Qs(A, t) {
1169
+ return t.filter((e) => this.ss(A, e));
1140
1170
  }
1141
- ss(A) {
1142
- return A.filter((t) => this.Bs(t));
1171
+ Es(A) {
1172
+ return A.filter((t) => this.rs(t));
1143
1173
  }
1144
- je(A) {
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.Qs(A, B, e) > 0) try {
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
- qe(A) {
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 n = String.fromCodePoint(r);
1168
- t.push(n);
1197
+ const Q = String.fromCodePoint(r);
1198
+ t.push(Q);
1169
1199
  } catch {
1170
1200
  }
1171
1201
  }
1172
1202
  return t;
1173
1203
  }
1174
- Qs(A, t, e) {
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
- Bs(A) {
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
- Q(this, "Es");
1222
+ n(this, "gs");
1193
1223
  const A = new _();
1194
- this.Es = new pA(A);
1224
+ this.gs = new pA(A);
1195
1225
  }
1196
1226
  extractCharacters(A) {
1197
- return this.Es.Xe(A);
1227
+ return this.gs.As(A);
1198
1228
  }
1199
1229
  filterProblematicCharacters(A) {
1200
- return this.Es.ss(A);
1230
+ return this.gs.Es(A);
1201
1231
  }
1202
1232
  characterExists(A, t) {
1203
- return this.Es.As(A, t);
1233
+ return this.gs.ss(A, t);
1204
1234
  }
1205
1235
  allCharactersExist(A, t) {
1206
- return this.Es.ts(A, t);
1236
+ return this.gs.Bs(A, t);
1207
1237
  }
1208
1238
  }
1209
1239
  class yA {
1210
1240
  constructor(A) {
1211
- Q(this, "rs");
1212
- Q(this, "ns");
1213
- Q(this, "vA");
1214
- Q(this, "gs");
1215
- this.vA = A, this.gs = new _(), this.rs = document.createElement("canvas"), this.ns = this.rs.getContext("2d", { willReadFrequently: !0, alpha: !1 });
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), n = t.width * B, o = t.height * r, a = typeof s == "object" ? s : null;
1219
- this.hs(n, o), this.cs(A, t, B, e, a);
1220
- const g = this.vA.$e(n, o, 1, { filter: "nearest" });
1221
- return g.$A(this.rs), { framebuffer: g, columns: B, rows: r };
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
- hs(A, t) {
1224
- this.rs.width = A, this.rs.height = t, this.rs.style.width = A + "px", this.rs.style.height = A + "px", this.ns.imageSmoothingEnabled = !1, this.rs.style.imageRendering = "pixelated", this.ns.fillStyle = "black", this.ns.fillRect(0, 0, A, t), this.ns.textBaseline = "top", this.ns.textAlign = "left", this.ns.fillStyle = "white";
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
- cs(A, t, e, s, i) {
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 n = r % e, o = Math.floor(r / e), a = A[r].character, g = this.Cs(i, a);
1230
- if (!g) continue;
1231
- const h = a.codePointAt(0) || 0, c = this.gs.Ue(i, h), l = this.ls(i, c) * B, C = n * t.width, f = o * t.height, w = C + 0.5 * t.width, d = f + 0.5 * t.height, p = Math.round(w - 0.5 * t.width), R = Math.round(d - 0.5 * s), Z = p + 0.5 * (t.width - l), j = R + i.hhea.ascender * B;
1232
- this.Ds(g, Z, j, B);
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
- Cs(A, t) {
1236
- const e = t.codePointAt(0) || 0, s = this.gs.Ue(A, e);
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.Re(A, s);
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
- ls(A, t) {
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
- Ds(A, t, e, s) {
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: n } = A;
1252
- if (!(i && B && r && n)) return;
1253
- this.ns.beginPath();
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 a = 0; a < r.length; a++) {
1256
- const g = r[a];
1257
- if (!(g < o)) {
1258
- if (g >= o) {
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.ns.moveTo(h, c);
1290
+ this.cs.moveTo(h, c);
1261
1291
  let l = o + 1;
1262
- for (; l <= g; )
1263
- if (1 & n[l]) {
1264
- const C = t + i[l] * s, f = e - B[l] * s;
1265
- this.ns.lineTo(C, f), l++;
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, f = e - B[l] * s;
1268
- let w = l + 1 > g ? o : l + 1;
1269
- if (1 & n[w]) {
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.ns.quadraticCurveTo(C, f, d, p), l = w + 1;
1301
+ this.cs.quadraticCurveTo(C, I, d, p), l = w + 1;
1272
1302
  } else {
1273
- const d = (C + (t + i[w] * s)) / 2, p = (f + (e - B[w] * s)) / 2;
1274
- this.ns.quadraticCurveTo(C, f, d, p), l = w;
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.ns.closePath();
1307
+ this.cs.closePath();
1278
1308
  }
1279
- o = g + 1;
1309
+ o = a + 1;
1280
1310
  }
1281
1311
  }
1282
- this.ns.fill();
1312
+ this.cs.fill();
1283
1313
  }
1284
1314
  }
1285
1315
  class vA {
1286
1316
  constructor() {
1287
- Q(this, "Ne");
1288
- this.Ne = new _();
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.Ne.Ve(e, t), B = i.lineHeight;
1322
+ const i = this.qe.Xe(e, t), B = i.lineHeight;
1293
1323
  for (const r of A) {
1294
- const n = this.Ne.Ke(e, r);
1295
- if (n === 0) continue;
1296
- const o = this.Ne.Je(e, n) * i.scale;
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.Ne.Ve(e, t), i = this.Ne.Ke(e, A);
1303
- return this.Ne.Je(e, i) * s.scale;
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.Ne.Ve(t, A);
1336
+ return this.qe.Xe(t, A);
1307
1337
  }
1308
- Ze() {
1309
- this.Ne.Ze();
1338
+ je() {
1339
+ this.qe.je();
1310
1340
  }
1311
1341
  }
1312
- class xA {
1342
+ class RA {
1313
1343
  constructor() {
1314
- Q(this, "gs");
1315
- this.gs = new _();
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.Ps(s);
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 n = this.gs.Ue(t, i);
1323
- n > 0 && t.hmtx.aWidth[n] !== void 0 && (r = t.hmtx.aWidth[n]);
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
- Ps(A) {
1358
+ ws(A) {
1329
1359
  return [A % 256 / 255, Math.floor(A / 256) % 256 / 255, Math.floor(A / 65536) % 256 / 255];
1330
1360
  }
1331
- us(A, t) {
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
- Is(A, t) {
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.us(e, t) || [0, 0, 0]) : [[0, 0, 0]];
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
- Q(this, "ws");
1343
- Q(this, "fs", []);
1344
- Q(this, "ds");
1345
- Q(this, "_s", 16);
1346
- Q(this, "ps", 0);
1347
- Q(this, "vs", 0);
1348
- Q(this, "bs", { width: 0, height: 0 });
1349
- Q(this, "Gs");
1350
- Q(this, "Ms");
1351
- Q(this, "$s");
1352
- Q(this, "Ys");
1353
- Q(this, "Fs");
1354
- this._s = t, this.Ms = new mA(), this.$s = new yA(A), this.Ys = new vA(), this.Fs = new xA();
1355
- }
1356
- async Rs(A) {
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 I(`Failed to load font file: ${e.status} ${e.statusText}`);
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.Ss(t), this.ws = m.parse(t)[0], await this.zs();
1395
+ await this.Ls(t), this.ps = m.parse(t)[0], await this.Os();
1366
1396
  }
1367
- ks(A) {
1368
- if (A === void 0) return this._s;
1369
- this._s = A, this.bs = this.Ys.calculateMaxGlyphDimensions(this.fs.map((e) => e.character), this._s, this.ws);
1370
- const t = this.$s.createTextureAtlas(this.fs, this.bs, this._s, this.ws);
1371
- this.ds = t.framebuffer, this.ps = t.columns, this.vs = t.rows;
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 Os(A) {
1403
+ async Us(A) {
1374
1404
  try {
1375
1405
  const t = await fetch(A);
1376
- if (!t.ok) throw new I(`Failed to load font file: ${t.status} ${t.statusText}`);
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.Ss(e);
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.ws = s[0], await this.zs();
1411
+ this.ps = s[0], await this.Os();
1382
1412
  } catch (t) {
1383
- throw new I("Failed to load font: " + (t instanceof Error ? t.message : "Unknown error"), t);
1413
+ throw new f("Failed to load font: " + (t instanceof Error ? t.message : "Unknown error"), t);
1384
1414
  }
1385
1415
  }
1386
- async Ss(A) {
1416
+ async Ls(A) {
1387
1417
  const t = Date.now();
1388
- this.Gs = new FontFace("CustomFont_" + t, A), await this.Gs.load(), document.fonts.add(this.Gs);
1418
+ this.Ys = new FontFace("CustomFont_" + t, A), await this.Ys.load(), document.fonts.add(this.Ys);
1389
1419
  }
1390
- async zs() {
1391
- const A = this.Ms.extractCharacters(this.ws), t = this.Ms.filterProblematicCharacters(A);
1392
- this.fs = this.Fs.createCharacterObjects(t, this.ws), this.bs = this.Ys.calculateMaxGlyphDimensions(t, this._s, this.ws);
1393
- const e = this.$s.createTextureAtlas(this.fs, this.bs, this._s, this.ws);
1394
- this.ds = e.framebuffer, this.ps = e.columns, this.vs = e.rows;
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
- us(A) {
1397
- return this.Fs.us(A, this.fs);
1426
+ fs(A) {
1427
+ return this.ks.fs(A, this._s);
1398
1428
  }
1399
- Is(A) {
1400
- return this.Fs.Is(A, this.fs);
1429
+ ds(A) {
1430
+ return this.ks.ds(A, this._s);
1401
1431
  }
1402
- zA() {
1403
- this.ds.zA(), document.fonts.delete(this.Gs);
1432
+ kA() {
1433
+ this.vs.kA(), document.fonts.delete(this.Ys);
1404
1434
  }
1405
1435
  get fontFramebuffer() {
1406
- return this.ds;
1436
+ return this.vs;
1407
1437
  }
1408
1438
  get characters() {
1409
- return this.fs;
1439
+ return this._s;
1410
1440
  }
1411
1441
  get textureColumns() {
1412
- return this.ps;
1442
+ return this.$s;
1413
1443
  }
1414
1444
  get textureRows() {
1415
- return this.vs;
1445
+ return this.Gs;
1416
1446
  }
1417
1447
  get maxGlyphDimensions() {
1418
- return this.bs;
1448
+ return this.Ms;
1419
1449
  }
1420
1450
  get fontSize() {
1421
- return this._s;
1451
+ return this.bs;
1422
1452
  }
1423
1453
  get font() {
1424
- return this.ws;
1454
+ return this.ps;
1425
1455
  }
1426
1456
  }
1427
- class RA {
1457
+ class xA {
1428
1458
  constructor(A, t, e) {
1429
- Q(this, "Ls");
1430
- Q(this, "Us");
1431
- Q(this, "PA");
1432
- Q(this, "uA");
1433
- Q(this, "Ts");
1434
- Q(this, "Hs");
1435
- Q(this, "Ws");
1436
- Q(this, "Ks");
1437
- Q(this, "Js");
1438
- this.Ws = A, this.Ks = t, this.Js = e, this.iA();
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.Ls = Math.floor(this.Ws.width / this.Ks), this.Us = Math.floor(this.Ws.height / this.Js), this.PA = this.Ls * this.Ks, this.uA = this.Us * this.Js, this.Ts = Math.floor((this.Ws.width - this.PA) / 2), this.Hs = Math.floor((this.Ws.height - this.uA) / 2);
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
- Vs(A, t) {
1444
- this.Ks = A, this.Js = t, this.iA();
1473
+ Xs(A, t) {
1474
+ this.Zs = A, this.Ns = t, this.iA();
1445
1475
  }
1446
1476
  get cellWidth() {
1447
- return this.Ks;
1477
+ return this.Zs;
1448
1478
  }
1449
1479
  get cellHeight() {
1450
- return this.Js;
1480
+ return this.Ns;
1451
1481
  }
1452
1482
  get cols() {
1453
- return this.Ls;
1483
+ return this.Ws;
1454
1484
  }
1455
1485
  get rows() {
1456
- return this.Us;
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.Ts;
1495
+ return this.Ks;
1466
1496
  }
1467
1497
  get offsetY() {
1468
- return this.Hs;
1498
+ return this.Js;
1469
1499
  }
1470
1500
  }
1471
1501
  class TA {
1472
1502
  constructor(A = {}) {
1473
- Q(this, "Ws");
1474
- Q(this, "Zs");
1475
- Q(this, "Ns");
1476
- A.canvas ? (this.Ws = A.canvas, this.Ns = !1) : (this.Ws = this.Xs(A.width, A.height), this.Ns = !0), this.Ws.style.imageRendering = "pixelated";
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
- Xs(A, t) {
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
- js(A, t) {
1483
- this.Ws.width = A ?? this.Ws.width, this.Ws.height = t ?? this.Ws.height;
1512
+ ti(A, t) {
1513
+ this.Vs.width = A ?? this.Vs.width, this.Vs.height = t ?? this.Vs.height;
1484
1514
  }
1485
- qs() {
1486
- const A = this.Ws.getContext("webgl2", { alpha: !0, premultipliedAlpha: !1, preserveDrawingBuffer: !0, antialias: !1, depth: !1, stencil: !1, powerPreference: "high-performance" });
1487
- if (!A) throw new I("`textmode.js` requires WebGL2 support.");
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
- zA() {
1491
- this.Zs && this.Zs.disconnect();
1492
- const A = this.Ws.getContext("webgl") || this.Ws.getContext("webgl2");
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.Ns && this.Ws.parentNode && this.Ws.parentNode.removeChild(this.Ws);
1527
+ this.qs && this.Vs.parentNode && this.Vs.parentNode.removeChild(this.Vs);
1498
1528
  }
1499
1529
  get canvas() {
1500
- return this.Ws;
1530
+ return this.Vs;
1501
1531
  }
1502
1532
  get width() {
1503
- return this.Ws.width;
1533
+ return this.Vs.width;
1504
1534
  }
1505
1535
  get height() {
1506
- return this.Ws.height;
1536
+ return this.Vs.height;
1507
1537
  }
1508
1538
  }
1509
1539
  class MA {
1510
1540
  constructor(A = 60) {
1511
- Q(this, "Ai");
1512
- Q(this, "ti");
1513
- Q(this, "ei", null);
1514
- Q(this, "si", 0);
1515
- Q(this, "ii", !0);
1516
- Q(this, "Bi", 0);
1517
- Q(this, "Qi", 0);
1518
- Q(this, "Ei", []);
1519
- Q(this, "ri", 10);
1520
- Q(this, "ni", 0);
1521
- this.Ai = A, this.ti = 1e3 / A;
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.ii) return;
1525
- this.si = performance.now();
1554
+ if (!this.Ei) return;
1555
+ this.Qi = performance.now();
1526
1556
  const t = (e) => {
1527
- if (!this.ii) return void (this.ei = null);
1528
- const s = e - this.si;
1529
- s >= this.ti && (A(), this.si = e - s % this.ti), this.ii && (this.ei = requestAnimationFrame(t));
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.ei = requestAnimationFrame(t);
1561
+ this.Bi = requestAnimationFrame(t);
1532
1562
  }
1533
1563
  stop() {
1534
- this.ei && (cancelAnimationFrame(this.ei), this.ei = null);
1564
+ this.Bi && (cancelAnimationFrame(this.Bi), this.Bi = null);
1535
1565
  }
1536
1566
  pause() {
1537
- this.ii && (this.ii = !1, this.stop());
1567
+ this.Ei && (this.Ei = !1, this.stop());
1538
1568
  }
1539
1569
  resume(A) {
1540
- this.ii || (this.ii = !0, this.start(A));
1570
+ this.Ei || (this.Ei = !0, this.start(A));
1541
1571
  }
1542
1572
  frameRate(A, t) {
1543
- if (A === void 0) return this.Bi;
1544
- this.Ai = A, this.ti = 1e3 / A, this.ii && t && (this.stop(), this.start(t));
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.Qi > 0) {
1549
- const t = A - this.Qi;
1550
- this.Ei.push(t), this.Ei.length > this.ri && this.Ei.shift();
1551
- const e = this.Ei.reduce((s, i) => s + i, 0) / this.Ei.length;
1552
- this.Bi = 1e3 / e;
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.Qi = A;
1584
+ this.ni = A;
1555
1585
  }
1556
1586
  get isLooping() {
1557
- return this.ii;
1587
+ return this.Ei;
1558
1588
  }
1559
1589
  get frameRateLimit() {
1560
- return this.Ai;
1590
+ return this.si;
1561
1591
  }
1562
1592
  get currentFrameRate() {
1563
- return this.Bi;
1593
+ return this.ri;
1564
1594
  }
1565
1595
  get frameCount() {
1566
- return this.ni;
1596
+ return this.ai;
1567
1597
  }
1568
1598
  set frameCount(A) {
1569
- this.ni = A;
1599
+ this.ai = A;
1570
1600
  }
1571
1601
  incrementFrame() {
1572
- this.ni++;
1602
+ this.ai++;
1573
1603
  }
1574
1604
  resetFrameCount() {
1575
- this.ni = 0;
1605
+ this.ai = 0;
1576
1606
  }
1577
1607
  }
1578
1608
  class FA {
1579
1609
  constructor() {
1580
- Q(this, "gi", /* @__PURE__ */ new Map());
1581
- Q(this, "oi", null);
1582
- Q(this, "ai", null);
1583
- Q(this, "hi");
1584
- Q(this, "ci");
1585
- Q(this, "Ci", !1);
1586
- Q(this, "li");
1587
- Q(this, "Di");
1588
- Q(this, "Pi", { 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" });
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.Ci && (window.removeEventListener("keydown", this.hi), window.removeEventListener("keyup", this.ci), this.Ci = !1, this.gi.clear(), this.oi = null, this.ai = null);
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
- di(A) {
1601
- this.li = A;
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
- _i(A) {
1604
- this.Di = A;
1630
+ mi(A) {
1631
+ this.ui = A;
1605
1632
  }
1606
- pi(A) {
1607
- const t = this.mi(A), e = this.gi.get(A) || this.gi.get(t);
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
- yi() {
1611
- return this.oi;
1640
+ Gi() {
1641
+ return this.ci;
1612
1642
  }
1613
- bi() {
1614
- return this.ai;
1643
+ xi() {
1644
+ return this.li;
1615
1645
  }
1616
- Gi() {
1646
+ Mi() {
1617
1647
  const A = [];
1618
- for (const [t, e] of this.gi) e.isPressed && A.push(t);
1648
+ for (const [t, e] of this.hi) e.isPressed && A.push(t);
1619
1649
  return A;
1620
1650
  }
1621
- Mi() {
1622
- return { ctrl: this.pi("Control"), shift: this.pi("Shift"), alt: this.pi("Alt"), meta: this.pi("Meta") };
1651
+ Yi() {
1652
+ return { ctrl: this.bi("Control"), shift: this.bi("Shift"), alt: this.bi("Alt"), meta: this.bi("Meta") };
1623
1653
  }
1624
- $i() {
1625
- this.gi.clear(), this.oi = null, this.ai = null;
1654
+ Fi() {
1655
+ this.hi.clear(), this.ci = null, this.li = null;
1626
1656
  }
1627
- Ii(A) {
1657
+ di(A) {
1628
1658
  const t = A.key, e = Date.now();
1629
- this.gi.has(t) || this.gi.set(t, { isPressed: !1, lastPressTime: 0, lastReleaseTime: 0 });
1630
- const s = this.gi.get(t);
1631
- if (!s.isPressed && (s.isPressed = !0, s.lastPressTime = e, this.oi = t, this.li)) {
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.li(i);
1663
+ this.ui(i);
1634
1664
  }
1635
1665
  }
1636
- wi(A) {
1666
+ pi(A) {
1637
1667
  const t = A.key, e = Date.now();
1638
- this.gi.has(t) || this.gi.set(t, { isPressed: !1, lastPressTime: 0, lastReleaseTime: 0 });
1639
- const s = this.gi.get(t);
1640
- if (s.isPressed = !1, s.lastReleaseTime = e, this.ai = t, this.Di) {
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.Di(i);
1672
+ this.Ii(i);
1643
1673
  }
1644
1674
  }
1645
- mi(A) {
1646
- return this.Pi[A] || A.toLowerCase();
1675
+ $i(A) {
1676
+ return this.wi[A] || A.toLowerCase();
1647
1677
  }
1648
1678
  }
1649
1679
  class GA {
1650
1680
  constructor(A) {
1651
- Q(this, "Ws");
1652
- Q(this, "xi");
1653
- Q(this, "Yi", { x: -1, y: -1 });
1654
- Q(this, "Fi", { x: -1, y: -1 });
1655
- Q(this, "Ri", null);
1656
- Q(this, "Si");
1657
- Q(this, "zi");
1658
- Q(this, "ki");
1659
- Q(this, "Oi");
1660
- Q(this, "Li");
1661
- Q(this, "Ui");
1662
- Q(this, "Ci", !1);
1663
- Q(this, "Ti");
1664
- Q(this, "Hi");
1665
- Q(this, "Wi");
1666
- Q(this, "Ki");
1667
- Q(this, "Ji");
1668
- this.Ws = A;
1669
- }
1670
- Rs(A) {
1671
- this.xi = A, this.Vi();
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 (!this.Ci) return;
1692
- const A = this.Ws.canvas;
1693
- A.removeEventListener("mousemove", this.Si), A.removeEventListener("mouseleave", this.zi), A.removeEventListener("mousedown", this.ki), A.removeEventListener("mouseup", this.Oi), A.removeEventListener("click", this.Li), A.removeEventListener("wheel", this.Ui), this.Ci = !1;
1694
- }
1695
- Vi() {
1696
- if (this.Ci) try {
1697
- if (this.Ri) {
1698
- const A = new MouseEvent("mousemove", { clientX: this.Ri.x, clientY: this.Ri.y, bubbles: !1, cancelable: !1 });
1699
- this.Zi(A);
1700
- } else this.Yi.x !== -1 && this.Yi.y !== -1 && (this.Yi.x >= this.xi.cols || this.Yi.y >= this.xi.rows) && (this.Yi.x = -1, this.Yi.y = -1);
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.Yi.x = -1, this.Yi.y = -1;
1732
+ this.Si.x = -1, this.Si.y = -1;
1703
1733
  }
1704
1734
  }
1705
- tB(A) {
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
- sB(A) {
1738
+ mi(A) {
1718
1739
  this.Ji = A;
1719
1740
  }
1720
- iB() {
1721
- return { x: this.Yi.x, y: this.Yi.y };
1741
+ yi(A) {
1742
+ this.Vi = A;
1722
1743
  }
1723
- Ni(A) {
1724
- if (this.Ki) {
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
- Xi(A) {
1730
- if (this.Hi) {
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
- ji(A) {
1736
- if (this.Wi) {
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.Ti) {
1743
- const t = { position: { ...this.Yi }, previousPosition: { ...this.Fi }, button: A.button, originalEvent: A };
1744
- this.Ti(t);
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.Yi }, previousPosition: { ...this.Fi }, delta: { x: A.deltaX, y: A.deltaY }, originalEvent: A };
1761
+ const t = { position: { ...this.Si }, previousPosition: { ...this.ki }, button: A.button, originalEvent: A };
1750
1762
  this.Ji(t);
1751
1763
  }
1752
1764
  }
1753
- Zi(A) {
1754
- const t = this.Ws.canvas;
1755
- this.Fi = { ...this.Yi }, this.Ri = { x: A.clientX, y: A.clientY };
1756
- 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), n = s * B - this.xi.offsetX, o = r - this.xi.offsetY, a = Math.floor(n / this.xi.cellWidth), g = Math.floor(o / this.xi.cellHeight);
1757
- a >= 0 && a < this.xi.cols && g >= 0 && g < this.xi.rows ? (this.Yi.x = a, this.Yi.y = g) : (this.Yi.x = -1, this.Yi.y = -1);
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 YA = (E) => class extends E {
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.ve(A, t, e, s);
1810
+ this.vA.$e(A, t, e, s);
1781
1811
  }
1782
1812
  point(A, t) {
1783
- this.vA.ve(A, t, 1, 1);
1813
+ this.vA.$e(A, t, 1, 1);
1784
1814
  }
1785
1815
  line(A, t, e, s) {
1786
- this.vA.ye(A, t, e, s);
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.Ye(A, t, e, s);
1822
+ this.vA.Se(A, t, e, s);
1793
1823
  }
1794
1824
  char(A) {
1795
- this.vA.state.gA(this.ws.us(A));
1825
+ this.vA.state.oA(this.ps.fs(A));
1796
1826
  }
1797
1827
  charColor(A, t, e) {
1798
- this.vA.state.oA(A, t, e);
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.lA(A);
1840
+ this.vA.state.CA(A);
1811
1841
  }
1812
1842
  invert(A) {
1813
- this.vA.state.CA(A);
1843
+ this.vA.state.lA(A);
1814
1844
  }
1815
1845
  clear() {
1816
- this.vA.Ye(0, 0, 0, 0);
1846
+ this.vA.Se(0, 0, 0, 0);
1817
1847
  }
1818
1848
  ellipse(A, t, e, s) {
1819
- this.vA.be(A, t, e / 2, s / 2);
1849
+ this.vA.xe(A, t, e / 2, s / 2);
1820
1850
  }
1821
1851
  triangle(A, t, e, s, i, B) {
1822
- this.vA.Ge(A, t, e, s, i, B);
1852
+ this.vA.Me(A, t, e, s, i, B);
1823
1853
  }
1824
- bezierCurve(A, t, e, s, i, B, r, n) {
1825
- this.vA.Me(A, t, e, s, i, B, r, n);
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.xe(A, t, e, s, i, B);
1858
+ this.vA.Re(A, t, e, s, i, B);
1829
1859
  }
1830
1860
  shader(A) {
1831
- this.vA.de(A);
1861
+ this.vA.me(A);
1832
1862
  }
1833
1863
  setUniform(A, t) {
1834
- this.vA.VA(A, t);
1864
+ this.vA.ZA(A, t);
1835
1865
  }
1836
1866
  setUniforms(A) {
1837
- this.vA._e(A);
1867
+ this.vA.ve(A);
1838
1868
  }
1839
1869
  createFilterShader(A) {
1840
- return this.vA.et(A);
1870
+ return this.vA.Bt(A);
1841
1871
  }
1842
1872
  createFramebuffer(A) {
1843
- return this.vA.$e(A.width, A.height, 5, { filter: "nearest", wrap: "clamp", format: "rgba", type: "unsigned_byte" });
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.pe(A, t, e, s ?? A.width, i ?? A.height);
1876
+ this.vA.ye(A, t, e, s ?? A.width, i ?? A.height);
1847
1877
  }
1848
1878
  };
1849
1879
  class O {
1850
- BB(A) {
1851
- const t = A.xA(0), e = A.xA(1), s = A.xA(2), i = A.xA(3);
1852
- return { characterPixels: t, primaryColorPixels: e, secondaryColorPixels: s, transformPixels: A.xA(4), rotationPixels: i };
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
- QB(A, t) {
1884
+ nB(A, t) {
1855
1885
  return A[t] + (A[t + 1] << 8);
1856
1886
  }
1857
- EB(A, t) {
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 W {
1862
- rB(A, t) {
1891
+ class z {
1892
+ gB(A, t) {
1863
1893
  return new Blob([A], { type: t });
1864
1894
  }
1865
- nB(A, t, e) {
1895
+ aB(A, t, e) {
1866
1896
  try {
1867
- const s = this.rB(A, e), i = URL.createObjectURL(s), B = document.createElement("a");
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
- gB() {
1903
+ hB() {
1874
1904
  return (/* @__PURE__ */ new Date()).toISOString().slice(0, 19).replace(/:/g, "-");
1875
1905
  }
1876
- oB() {
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
- aB(A) {
1910
+ lB(A) {
1881
1911
  return A.replace(/[<>:"/\\|?*]/g, "_").replace(/\s+/g, "_").replace(/_{2,}/g, "_").replace(/^_+|_+$/g, "").substring(0, 255);
1882
1912
  }
1883
- hB() {
1884
- return "textmode-export-" + this.gB();
1913
+ CB() {
1914
+ return "textmode-export-" + this.hB();
1885
1915
  }
1886
1916
  }
1887
1917
  class _A extends O {
1888
- cB(A, t, e) {
1889
- const s = A[e] === 255, i = A[e + 1] === 255, B = A[e + 2] === 255, r = t[e], n = t[e + 1];
1890
- return { isInverted: s, flipHorizontal: i, flipVertical: B, rotation: Math.round(360 * (r + n / 255) / 255 * 100) / 100 };
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
- CB(A, t, e) {
1922
+ PB(A, t, e) {
1893
1923
  return { x: A, y: t, cellX: A * e.cellWidth, cellY: t * e.cellHeight };
1894
1924
  }
1895
- lB(A, t) {
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, n = this.QB(A.characterPixels, r);
1900
- let o = this.EB(A.primaryColorPixels, r), a = this.EB(A.secondaryColorPixels, r);
1901
- const g = this.cB(A.transformPixels, A.rotationPixels, r);
1902
- if (g.isInverted) {
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 = a, a = c;
1934
+ o = g, g = c;
1905
1935
  }
1906
- const h = this.CB(B, i, t);
1907
- e.push({ charIndex: n, primaryColor: o, secondaryColor: a, transform: g, position: h }), s++;
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 SA {
1913
- DB(A, t) {
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 n = i.glyphIdArray[r];
1923
- if (n !== 0) return n + i.idDelta[B] & 65535;
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], n = i.groups[B + 1], o = i.groups[B + 2];
1931
- if (t >= r && t <= n) return o + (t - r);
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
- PB(A, t, e, s, i) {
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.uB(t, e, s, B) };
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
- uB(A, t, e, s) {
1970
+ fB(A, t, e, s) {
1941
1971
  if (!A || !A.xs) return "";
1942
- const { xs: i, ys: B, endPts: r, flags: n } = A;
1943
- if (!(i && B && r && n)) return "";
1944
- let o = "", a = 0;
1945
- for (let g = 0; g < r.length; g++) {
1946
- const h = r[g];
1947
- if (!(h < a)) {
1948
- if (h >= a) {
1949
- const c = t + i[a] * s, l = e - B[a] * s;
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 = a + 1;
1981
+ let C = g + 1;
1952
1982
  for (; C <= h; )
1953
- if (1 & n[C]) {
1954
- const f = t + i[C] * s, w = e - B[C] * s;
1955
- o += `L${f.toFixed(2)},${w.toFixed(2)}`, C++;
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 f = t + i[C] * s, w = e - B[C] * s;
1958
- let d = C + 1 > h ? a : C + 1;
1959
- if (1 & n[d]) {
1960
- const p = t + i[d] * s, R = e - B[d] * s;
1961
- o += `Q${f.toFixed(2)},${w.toFixed(2)} ${p.toFixed(2)},${R.toFixed(2)}`, C = d + 1;
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 = (f + (t + i[d] * s)) / 2, R = (w + (e - B[d] * s)) / 2;
1964
- o += `Q${f.toFixed(2)},${w.toFixed(2)} ${p.toFixed(2)},${R.toFixed(2)}`, C = d;
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
- a = h + 1;
1999
+ g = h + 1;
1970
2000
  }
1971
2001
  }
1972
2002
  return o;
1973
2003
  }
1974
- IB(A, t, e, s, i) {
1975
- const B = A.codePointAt(0) || 0, r = this.DB(t, B);
1976
- let n = null;
1977
- return t.glyf && t.glyf[r] !== null ? n = t.glyf[r] : (n = m.T.glyf.Re(t, r), t.glyf[r] = n), this.PB(t, n, e, s, i);
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
- wB(A, t, e, s, i, B, r, n) {
1980
- const o = e + (i - n * (r / t.head.unitsPerEm)) / 2, a = s + (B + 0.7 * r) / 2;
1981
- return this.IB(A, t, o, a, r).toSVG() || null;
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 LA {
2014
+ class YA {
1985
2015
  constructor() {
1986
- Q(this, "fB");
1987
- this.fB = new SA();
2016
+ n(this, "_B");
2017
+ this._B = new LA();
1988
2018
  }
1989
- dB(A) {
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
- _B() {
2023
+ vB() {
1994
2024
  return "</g></svg>";
1995
2025
  }
1996
- pB(A, t) {
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
- mB(A, t) {
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 n = e.flipHorizontal ? -1 : 1, o = e.flipVertical ? -1 : 1;
2007
- r.push(`translate(${i} ${B})scale(${n} ${o})translate(${-i} ${-B})`);
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
- vB(A, t, e) {
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: n } = A.secondaryColor, o = `rgba(${i},${B},${r},${n / 255})`;
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
- IB(A, t, e, s) {
2046
+ dB(A, t, e, s) {
2017
2047
  const i = e.characters[A.charIndex];
2018
2048
  if (!i) return "";
2019
- const B = this.fB.wB(i.character, e.font, A.position.cellX, A.position.cellY, t.cellWidth, t.cellHeight, e.fontSize, i.advanceWidth);
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: n, b: o, a } = A.primaryColor, g = `rgba(${r},${n},${o},${a / 255})`;
2022
- return s.drawMode === "stroke" ? `<path d="${B}" stroke="${g}" stroke-width="${s.strokeWidth}" fill="none"/>` : `<path d="${B}" fill="${g}"/>`;
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
- yB(A, t, e, s) {
2025
- const i = [], B = this.vB(A, t, s);
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.IB(A, t, e, s);
2057
+ const r = this.dB(A, t, e, s);
2028
2058
  if (r) {
2029
- const n = this.mB(A, t);
2030
- i.push(n ? `<g${n}>${r}</g>` : r);
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
- bB(A, t, e, s) {
2035
- const i = [this.dB(t), this.pB(t, s), '<g id="ascii-cells">'];
2036
- for (const B of A) i.push(this.yB(B, t, e, s));
2037
- return i.push(this._B()), i.join("");
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
- GB(A) {
2069
+ MB(A) {
2040
2070
  return A.replace(/<path[^>]*d=""[^>]*\/>/g, "").replace(/\s+/g, " ").replace(/> </g, "><");
2041
2071
  }
2042
2072
  }
2043
- class UA extends W {
2044
- MB(A) {
2045
- return this.rB(A, "image/svg+xml;charset=utf-8");
2073
+ class UA extends z {
2074
+ YB(A) {
2075
+ return this.gB(A, "image/svg+xml;charset=utf-8");
2046
2076
  }
2047
- $B(A, t) {
2048
- this.nB(A, this.aB(t) + ".svg", "image/svg+xml;charset=utf-8");
2077
+ FB(A, t) {
2078
+ this.aB(A, this.lB(t) + ".svg", "image/svg+xml;charset=utf-8");
2049
2079
  }
2050
- xB(A, t) {
2051
- this.$B(A, t || this.hB());
2080
+ RB(A, t) {
2081
+ this.FB(A, t || this.CB());
2052
2082
  }
2053
2083
  }
2054
- class J {
2084
+ class $ {
2055
2085
  constructor() {
2056
- Q(this, "YB");
2057
- Q(this, "FB");
2058
- Q(this, "RB");
2059
- this.YB = new _A(), this.FB = new LA(), this.RB = new UA();
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
- SB(A) {
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.RB.hB() };
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
- zB(A, t = {}) {
2065
- const e = this.YB.lB(this.YB.BB(A.pipeline), A.grid), s = this.FB.bB(e, A.grid, A.font, this.SB(t));
2066
- return this.FB.GB(s);
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
- xB(A, t = {}) {
2069
- this.RB.xB(this.zB(A, t), t.filename);
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
- kB(A, t, e, s = " ") {
2103
+ TB(A, t, e, s = " ") {
2074
2104
  var r;
2075
2105
  const i = [];
2076
2106
  let B = 0;
2077
- for (let n = 0; n < t.rows; n++) {
2107
+ for (let Q = 0; Q < t.rows; Q++) {
2078
2108
  const o = [];
2079
- for (let a = 0; a < t.cols; a++) {
2080
- const g = 4 * B, h = this.QB(A.characterPixels, g), c = ((r = e.characters[h]) == null ? void 0 : r.character) || s;
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 WA {
2089
- OB(A, t) {
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 zA extends W {
2102
- LB(A, t) {
2103
- const e = this.UB(t);
2104
- this.nB(A, e, "text/plain;charset=utf-8");
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
- UB(A) {
2107
- let t = this.aB(A);
2108
- return t === ".txt" || t.length <= 4 ? this.hB() : t;
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 K {
2141
+ class H {
2112
2142
  constructor() {
2113
- Q(this, "YB");
2114
- Q(this, "FB");
2115
- Q(this, "RB");
2116
- this.YB = new OA(), this.FB = new WA(), this.RB = new zA();
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
- SB(A) {
2119
- return { preserveTrailingSpaces: A.preserveTrailingSpaces ?? !1, lineEnding: A.lineEnding ?? "lf", emptyCharacter: A.emptyCharacter ?? " ", filename: A.filename || this.RB.hB() };
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
- TB(A, t = {}) {
2122
- const e = this.SB(t), s = this.YB.kB(this.YB.BB(A.pipeline), A.grid, A.font, e.emptyCharacter);
2123
- return this.FB.OB(s, e);
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
- LB(A, t = {}) {
2126
- this.RB.LB(this.TB(A, t), t.filename);
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
- HB(A, t = 1, e = "transparent") {
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), n = Math.round(s.height * t);
2134
- return i.width = r, i.height = n, e !== "transparent" && (B.fillStyle = e, B.fillRect(0, 0, r, n)), B.imageSmoothingEnabled = !1, B.drawImage(s, 0, 0, s.width, s.height, 0, 0, r, n), i;
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 HA {
2138
- WB(A, t) {
2139
- const e = this.KB(t.format);
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 JB(A, t) {
2172
+ async NB(A, t) {
2143
2173
  return new Promise((e, s) => {
2144
- const i = this.KB(t.format), B = (r) => {
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
- KB(A) {
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 kA = { png: "image/png", jpg: "image/jpeg", webp: "image/webp" }, $ = { png: ".png", jpg: ".jpg", webp: ".webp" };
2164
- class JA extends W {
2165
- VB(A, t, e) {
2166
- this.ZB(A, this.aB(t) + $[e]);
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
- ZB(A, t) {
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
- NB(A) {
2178
- return A in kA && A in $;
2207
+ qB(A) {
2208
+ return A in VA && A in K;
2179
2209
  }
2180
2210
  }
2181
- class KA {
2211
+ class HA {
2182
2212
  constructor() {
2183
- Q(this, "YB");
2184
- Q(this, "FB");
2185
- Q(this, "RB");
2186
- this.YB = new NA(), this.FB = new HA(), this.RB = new JA();
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
- SB(A) {
2189
- return { format: A.format ?? "png", quality: A.quality ?? 1, scale: A.scale ?? 1, backgroundColor: A.backgroundColor ?? "transparent", filename: A.filename || this.RB.hB() };
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
- XB(A) {
2192
- if (!this.RB.NB(A.format)) throw Error(`Saving '${A.format}' files is not supported`);
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 JB(A, t) {
2198
- if (t.scale === 1 && t.backgroundColor === "transparent") return await this.FB.JB(A.canvas, t);
2199
- const e = this.YB.HB(A, t.scale, t.backgroundColor);
2200
- return await this.FB.JB(e, t);
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 VB(A, t = {}) {
2203
- const e = this.SB(t);
2204
- this.XB(e);
2205
- const s = await this.JB(A, e);
2206
- this.RB.VB(s, e.filename, e.format);
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 $A = (E) => class extends E {
2210
- jB() {
2211
- this.vA.FA(this.qB);
2239
+ const KA = (E) => class extends E {
2240
+ tQ() {
2241
+ this.vA.FA(this.eQ);
2212
2242
  }
2213
2243
  toString(A = {}) {
2214
- return this.jB(), new K().TB({ pipeline: this.AQ, grid: this.xi, font: this.ws }, A);
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.jB(), new K().LB({ pipeline: this.AQ, grid: this.xi, font: this.ws }, A);
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.jB(), new J().zB({ pipeline: this.AQ, grid: this.xi, font: this.ws }, A);
2250
+ return this.tQ(), new $().OB({ pipeline: this.sQ, grid: this.Ri, font: this.ps }, A);
2221
2251
  }
2222
2252
  saveSVG(A = {}) {
2223
- this.jB(), new J().xB({ pipeline: this.AQ, grid: this.xi, font: this.ws }, A);
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 KA().VB(this.Ws, A);
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.ws.Os(A).then(() => {
2231
- const t = this.ws.maxGlyphDimensions;
2232
- this.xi.Vs(t.width, t.height), this.AQ.resize(this.xi.cols, this.xi.rows), this.vA.Fe(), this.tQ.Vi();
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.ws.fontSize === A) return;
2237
- this.ws.ks(A);
2238
- const t = this.ws.maxGlyphDimensions;
2239
- this.xi.Vs(t.width, t.height), this.AQ.resize(this.xi.cols, this.xi.rows), this.vA.Fe(), this.tQ.Vi();
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
- }, VA = (E) => class extends E {
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.eQ.frameCount;
2279
+ return this.BQ.frameCount;
2244
2280
  }
2245
2281
  set frameCount(A) {
2246
- this.eQ.frameCount = A;
2282
+ this.BQ.frameCount = A;
2247
2283
  }
2248
2284
  frameRate(A) {
2249
- return A === void 0 ? this.eQ.currentFrameRate : this.eQ.frameRate(A, () => this.sQ());
2285
+ return A === void 0 ? this.BQ.currentFrameRate : this.BQ.frameRate(A, () => this.QQ());
2250
2286
  }
2251
2287
  noLoop() {
2252
- this.eQ.pause();
2288
+ this.BQ.pause();
2253
2289
  }
2254
2290
  loop() {
2255
- this.eQ.resume(() => this.sQ());
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.sQ();
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.eQ.isLooping;
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.tQ.tB(A);
2304
+ this.iQ.iB(A);
2269
2305
  }
2270
2306
  mousePressed(A) {
2271
- this.tQ.di(A);
2307
+ this.iQ.mi(A);
2272
2308
  }
2273
2309
  mouseReleased(A) {
2274
- this.tQ._i(A);
2310
+ this.iQ.yi(A);
2275
2311
  }
2276
2312
  mouseMoved(A) {
2277
- this.tQ.eB(A);
2313
+ this.iQ.BB(A);
2278
2314
  }
2279
2315
  mouseScrolled(A) {
2280
- this.tQ.sB(A);
2316
+ this.iQ.QB(A);
2281
2317
  }
2282
2318
  get mouse() {
2283
- return this.tQ.iB();
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.iQ.di(A);
2326
+ this.EQ.mi(A);
2291
2327
  }
2292
2328
  keyReleased(A) {
2293
- this.iQ._i(A);
2329
+ this.EQ.yi(A);
2294
2330
  }
2295
2331
  isKeyPressed(A) {
2296
- return this.iQ.pi(A);
2297
- }
2298
- clearKeyStates() {
2299
- this.iQ.$i();
2332
+ return this.EQ.bi(A);
2300
2333
  }
2301
2334
  get lastKeyPressed() {
2302
- return this.iQ.yi();
2335
+ return this.EQ.Gi();
2303
2336
  }
2304
2337
  get lastKeyReleased() {
2305
- return this.iQ.bi();
2338
+ return this.EQ.xi();
2306
2339
  }
2307
2340
  get pressedKeys() {
2308
- return this.iQ.Gi();
2341
+ return this.EQ.Mi();
2309
2342
  }
2310
2343
  get modifierState() {
2311
- return this.iQ.Mi();
2344
+ return this.EQ.Yi();
2312
2345
  }
2313
2346
  };
2314
2347
  class qA {
2315
2348
  constructor() {
2316
- Q(this, "vA");
2317
- Q(this, "ws");
2318
- Q(this, "Ws");
2319
- Q(this, "xi");
2320
- Q(this, "eQ");
2321
- Q(this, "tQ");
2322
- Q(this, "iQ");
2323
- Q(this, "qB");
2324
- Q(this, "AQ");
2325
- Q(this, "BQ");
2326
- }
2327
- sQ() {
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, YA, $A, XA, VA, ZA, jA) {
2365
+ }(qA, SA, KA, XA, JA, ZA, jA) {
2333
2366
  constructor(t = {}) {
2334
2367
  super();
2335
- Q(this, "QQ", !1);
2336
- Q(this, "EQ", () => {
2368
+ n(this, "nQ", !1);
2369
+ n(this, "oQ", () => {
2337
2370
  });
2338
- Q(this, "rQ", () => {
2371
+ n(this, "gQ", () => {
2339
2372
  });
2340
- Q(this, "nQ", () => {
2373
+ n(this, "aQ", () => {
2341
2374
  });
2342
- Q(this, "gQ");
2343
- this.Ws = new TA(t), this.vA = new uA(this.Ws.qs()), this.ws = new bA(this.vA, t.fontSize ?? 16), this.eQ = new MA(t.frameRate ?? 60), this.tQ = new GA(this.Ws), this.iQ = new FA(), this.qB = this.vA.YA(), this.BQ = this.vA.tt(), this.oQ(t);
2344
- }
2345
- async oQ(t) {
2346
- await this.ws.Rs(t.fontSource);
2347
- const e = this.ws.maxGlyphDimensions;
2348
- this.xi = new RA(this.Ws.canvas, e.width, e.height), this.tQ.Rs(this.xi), this.AQ = this.vA.$e(this.xi.cols, this.xi.rows, 5), this.aQ(), this.EQ(), this.eQ.start(() => this.sQ());
2349
- }
2350
- aQ() {
2351
- this.gQ = () => {
2352
- this.nQ();
2353
- }, window.addEventListener("resize", this.gQ), this.tQ.ui(), this.iQ.ui(), window.addEventListener("blur", () => {
2354
- this.iQ.$i();
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
- sQ() {
2358
- if (this.eQ.measureFrameRate(), this.eQ.incrementFrame(), this.QQ) return;
2359
- this.AQ.begin(), this.vA.we(this.qB), this.rQ(), this.vA.FA(this.qB), this.AQ.end();
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.Lt(t[0], t[1], t[2], t[3]), this.vA.we(this.BQ), this.BQ.JA({ a: this.ws.fontFramebuffer, b: [this.ws.textureColumns, this.ws.textureRows], c: this.AQ.textures[0], d: this.AQ.textures[1], e: this.AQ.textures[2], f: this.AQ.textures[4], g: this.AQ.textures[3], h: [this.xi.cols, this.xi.rows], i: [this.xi.width, this.xi.height], j: [this.xi.offsetX, this.xi.offsetY], k: this.xi.width / this.xi.height }), this.vA.me(this.xi.offsetX, this.xi.offsetY, this.xi.width, this.xi.height);
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.EQ = t;
2397
+ this.oQ = t;
2365
2398
  }
2366
2399
  draw(t) {
2367
- this.rQ = t;
2400
+ this.gQ = t;
2368
2401
  }
2369
2402
  windowResized(t) {
2370
- this.nQ = t;
2403
+ this.aQ = t;
2371
2404
  }
2372
2405
  resizeCanvas(t, e) {
2373
- this.Ws.js(t, e), this.xi.iA(), this.AQ.resize(this.xi.cols, this.xi.rows), this.vA.Fe(), this.tQ.Vi(), this.sQ();
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.QQ || (this.eQ.stop(), window.removeEventListener("resize", this.gQ), this.tQ.fi(), this.iQ.fi(), this.ws.zA(), this.vA.zA(), this.QQ = !0);
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.xi;
2412
+ return this.Ri;
2380
2413
  }
2381
2414
  get font() {
2382
- return this.ws;
2415
+ return this.ps;
2383
2416
  }
2384
2417
  get width() {
2385
- return this.Ws.width;
2418
+ return this.Vs.width;
2386
2419
  }
2387
2420
  get height() {
2388
- return this.Ws.height;
2421
+ return this.Vs.height;
2389
2422
  }
2390
2423
  get canvas() {
2391
- return this.Ws.canvas;
2424
+ return this.Vs.canvas;
2392
2425
  }
2393
2426
  get isDisposed() {
2394
- return this.QQ;
2427
+ return this.nQ;
2395
2428
  }
2396
2429
  get drawFramebuffer() {
2397
- return this.AQ;
2430
+ return this.sQ;
2398
2431
  }
2399
2432
  }
2400
- class z {
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.2";
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 = z.create, it = z.setErrorLevel, Bt = z.version;
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
- RA as TextmodeGrid,
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
- z as textmode,
2457
+ k as textmode,
2425
2458
  Bt as version
2426
2459
  };