linearly 0.20.2 → 0.20.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/mat3.js ADDED
@@ -0,0 +1,450 @@
1
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
2
+ if (k2 === undefined) k2 = k;
3
+ var desc = Object.getOwnPropertyDescriptor(m, k);
4
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
5
+ desc = { enumerable: true, get: function() { return m[k]; } };
6
+ }
7
+ Object.defineProperty(o, k2, desc);
8
+ }) : (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ o[k2] = m[k];
11
+ }));
12
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
13
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
14
+ }) : function(o, v) {
15
+ o["default"] = v;
16
+ });
17
+ var __importStar = (this && this.__importStar) || function (mod) {
18
+ if (mod && mod.__esModule) return mod;
19
+ var result = {};
20
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
21
+ __setModuleDefault(result, mod);
22
+ return result;
23
+ };
24
+ (function (factory) {
25
+ if (typeof module === "object" && typeof module.exports === "object") {
26
+ var v = factory(require, exports);
27
+ if (v !== undefined) module.exports = v;
28
+ }
29
+ else if (typeof define === "function" && define.amd) {
30
+ define(["require", "exports", "./common"], factory);
31
+ }
32
+ })(function (require, exports) {
33
+ "use strict";
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.equals = exports.exactEquals = exports.multiplyScalarAndAdd = exports.multiplyScalar = exports.subtract = exports.add = exports.frob = exports.projection = exports.normalFromMat4 = exports.fromQuat = exports.fromMat2d = exports.fromScaling = exports.fromRotation = exports.fromTranslation = exports.scale = exports.rotate = exports.translate = exports.multiply = exports.determinant = exports.adjoint = exports.invert = exports.transpose = exports.zero = exports.identity = exports.fromMat4 = void 0;
36
+ const Common = __importStar(require("./common"));
37
+ /**
38
+ * 3x3 Matrix
39
+ * @module mat3
40
+ */
41
+ /**
42
+ * Copies the upper-left 3x3 values into the given mat3.
43
+ */
44
+ function fromMat4(a) {
45
+ // prettier-ignore
46
+ return [
47
+ a[0], a[1], a[2],
48
+ a[4], a[5], a[6],
49
+ a[8], a[9], a[10]
50
+ ];
51
+ }
52
+ exports.fromMat4 = fromMat4;
53
+ /**
54
+ * The identity matrix of mat3
55
+ */
56
+ // prettier-ignore
57
+ exports.identity = Object.freeze([
58
+ 1, 0, 0,
59
+ 0, 1, 0,
60
+ 0, 0, 1,
61
+ ]);
62
+ exports.zero = Object.freeze([0, 0, 0, 0, 0, 0, 0, 0, 0]);
63
+ /**
64
+ * Transpose the values of a mat3
65
+ */
66
+ function transpose(a) {
67
+ // prettier-ignore
68
+ return [
69
+ a[0], a[3], a[6],
70
+ a[1], a[4], a[7],
71
+ a[2], a[5], a[8]
72
+ ];
73
+ }
74
+ exports.transpose = transpose;
75
+ /**
76
+ * Inverts a mat3
77
+ */
78
+ function invert(a) {
79
+ const [a00, a01, a02, a10, a11, a12, a20, a21, a22] = a;
80
+ const b01 = a22 * a11 - a12 * a21;
81
+ const b11 = -a22 * a10 + a12 * a20;
82
+ const b21 = a21 * a10 - a11 * a20;
83
+ // Calculate the determinant
84
+ const det = a00 * b01 + a01 * b11 + a02 * b21;
85
+ if (!det) {
86
+ return null;
87
+ }
88
+ const detinv = 1 / det;
89
+ return [
90
+ b01 * detinv,
91
+ (-a22 * a01 + a02 * a21) * detinv,
92
+ (a12 * a01 - a02 * a11) * detinv,
93
+ b11 * detinv,
94
+ (a22 * a00 - a02 * a20) * detinv,
95
+ (-a12 * a00 + a02 * a10) * detinv,
96
+ b21 * detinv,
97
+ (-a21 * a00 + a01 * a20) * detinv,
98
+ (a11 * a00 - a01 * a10) * detinv,
99
+ ];
100
+ }
101
+ exports.invert = invert;
102
+ /**
103
+ * Calculates the adjugate of a mat3
104
+ */
105
+ function adjoint(a) {
106
+ const [a00, a01, a02, a10, a11, a12, a20, a21, a22] = a;
107
+ return [
108
+ a11 * a22 - a12 * a21,
109
+ a02 * a21 - a01 * a22,
110
+ a01 * a12 - a02 * a11,
111
+ a12 * a20 - a10 * a22,
112
+ a00 * a22 - a02 * a20,
113
+ a02 * a10 - a00 * a12,
114
+ a10 * a21 - a11 * a20,
115
+ a01 * a20 - a00 * a21,
116
+ a00 * a11 - a01 * a10,
117
+ ];
118
+ }
119
+ exports.adjoint = adjoint;
120
+ /**
121
+ * Calculates the determinant of a mat3
122
+ */
123
+ function determinant(a) {
124
+ const [a00, a01, a02, a10, a11, a12, a20, a21, a22] = a;
125
+ return (a00 * (a22 * a11 - a12 * a21) +
126
+ a01 * (-a22 * a10 + a12 * a20) +
127
+ a02 * (a21 * a10 - a11 * a20));
128
+ }
129
+ exports.determinant = determinant;
130
+ /**
131
+ * Multiplies two mat3's
132
+ */
133
+ function multiply(a, b) {
134
+ const [a00, a01, a02, a10, a11, a12, a20, a21, a22] = a;
135
+ const [b00, b01, b02, b10, b11, b12, b20, b21, b22] = b;
136
+ return [
137
+ b00 * a00 + b01 * a10 + b02 * a20,
138
+ b00 * a01 + b01 * a11 + b02 * a21,
139
+ b00 * a02 + b01 * a12 + b02 * a22,
140
+ b10 * a00 + b11 * a10 + b12 * a20,
141
+ b10 * a01 + b11 * a11 + b12 * a21,
142
+ b10 * a02 + b11 * a12 + b12 * a22,
143
+ b20 * a00 + b21 * a10 + b22 * a20,
144
+ b20 * a01 + b21 * a11 + b22 * a21,
145
+ b20 * a02 + b21 * a12 + b22 * a22,
146
+ ];
147
+ }
148
+ exports.multiply = multiply;
149
+ /**
150
+ * Translate a mat3 by the given vector
151
+ */
152
+ function translate(a, v) {
153
+ const [a00, a01, a02, a10, a11, a12, a20, a21, a22] = a;
154
+ const [x, y] = v;
155
+ // prettier-ignore
156
+ return [
157
+ a00, a01, a02,
158
+ a10, a11, a12,
159
+ x * a00 + y * a10 + a20,
160
+ x * a01 + y * a11 + a21,
161
+ x * a02 + y * a12 + a22,
162
+ ];
163
+ }
164
+ exports.translate = translate;
165
+ /**
166
+ * Rotates a mat3 by the given angle
167
+ */
168
+ function rotate(a, rad) {
169
+ const [a00, a01, a02, a10, a11, a12, a20, a21, a22] = a;
170
+ const s = Math.sin(rad);
171
+ const c = Math.cos(rad);
172
+ // prettier-ignore
173
+ return [
174
+ c * a00 + s * a10,
175
+ c * a01 + s * a11,
176
+ c * a02 + s * a12,
177
+ c * a10 - s * a00,
178
+ c * a11 - s * a01,
179
+ c * a12 - s * a02,
180
+ a20, a21, a22,
181
+ ];
182
+ }
183
+ exports.rotate = rotate;
184
+ /**
185
+ * Scales the mat3 by the dimensions in the given vec2
186
+ **/
187
+ function scale(a, v) {
188
+ const [x, y] = v;
189
+ // prettier-ignore
190
+ return [
191
+ a[0] * x, a[1] * x, a[2] & x,
192
+ a[3] * y, a[4] * y, a[5] * y,
193
+ a[6], a[7], a[8],
194
+ ];
195
+ }
196
+ exports.scale = scale;
197
+ /**
198
+ * Creates a matrix from a vector translation
199
+ */
200
+ function fromTranslation(v) {
201
+ const [x, y] = v;
202
+ // prettier-ignore
203
+ return [
204
+ 1, 0, 0,
205
+ 0, 1, 0,
206
+ x, y, 1,
207
+ ];
208
+ }
209
+ exports.fromTranslation = fromTranslation;
210
+ /**
211
+ * Creates a matrix from a given angle
212
+ */
213
+ function fromRotation(rad) {
214
+ const s = Math.sin(rad);
215
+ const c = Math.cos(rad);
216
+ // prettier-ignore
217
+ return [
218
+ c, s, 0,
219
+ -s, c, 0,
220
+ 0, 0, 1,
221
+ ];
222
+ }
223
+ exports.fromRotation = fromRotation;
224
+ /**
225
+ * Creates a matrix from a vector scaling
226
+ */
227
+ function fromScaling(v) {
228
+ const [x, y] = v;
229
+ // prettier-ignore
230
+ return [
231
+ x, 0, 0,
232
+ 0, y, 0,
233
+ 0, 0, 1
234
+ ];
235
+ }
236
+ exports.fromScaling = fromScaling;
237
+ /**
238
+ * Copies the values from a mat2d into a mat3
239
+ **/
240
+ function fromMat2d(a) {
241
+ // prettier-ignore
242
+ return [
243
+ a[0], a[1], 0,
244
+ a[2], a[3], 0,
245
+ a[4], a[5], 1
246
+ ];
247
+ }
248
+ exports.fromMat2d = fromMat2d;
249
+ /**
250
+ * Calculates a 3x3 matrix from the given quaternion
251
+ *
252
+ */
253
+ function fromQuat(q) {
254
+ const [x, y, z, w] = q;
255
+ const x2 = x + x;
256
+ const y2 = y + y;
257
+ const z2 = z + z;
258
+ const xx = x * x2;
259
+ const yx = y * x2;
260
+ const yy = y * y2;
261
+ const zx = z * x2;
262
+ const zy = z * y2;
263
+ const zz = z * z2;
264
+ const wx = w * x2;
265
+ const wy = w * y2;
266
+ const wz = w * z2;
267
+ return [
268
+ 1 - yy - zz,
269
+ yx - wz,
270
+ zx + wy,
271
+ yx + wz,
272
+ 1 - xx - zz,
273
+ zy - wx,
274
+ zx - wy,
275
+ zy + wx,
276
+ 1 - xx - yy,
277
+ ];
278
+ }
279
+ exports.fromQuat = fromQuat;
280
+ /**
281
+ * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix
282
+ *
283
+ */
284
+ function normalFromMat4(a) {
285
+ // prettier-ignore
286
+ const [a00, a01, a02, a03, a10, a11, a12, a13, a20, a21, a22, a23, a30, a31, a32, a33] = a;
287
+ const b00 = a00 * a11 - a01 * a10;
288
+ const b01 = a00 * a12 - a02 * a10;
289
+ const b02 = a00 * a13 - a03 * a10;
290
+ const b03 = a01 * a12 - a02 * a11;
291
+ const b04 = a01 * a13 - a03 * a11;
292
+ const b05 = a02 * a13 - a03 * a12;
293
+ const b06 = a20 * a31 - a21 * a30;
294
+ const b07 = a20 * a32 - a22 * a30;
295
+ const b08 = a20 * a33 - a23 * a30;
296
+ const b09 = a21 * a32 - a22 * a31;
297
+ const b10 = a21 * a33 - a23 * a31;
298
+ const b11 = a22 * a33 - a23 * a32;
299
+ // Calculate the determinant
300
+ const det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;
301
+ if (!det) {
302
+ return null;
303
+ }
304
+ const detinv = 1 / det;
305
+ return [
306
+ (a11 * b11 - a12 * b10 + a13 * b09) * detinv,
307
+ (a12 * b08 - a10 * b11 - a13 * b07) * detinv,
308
+ (a10 * b10 - a11 * b08 + a13 * b06) * detinv,
309
+ (a02 * b10 - a01 * b11 - a03 * b09) * detinv,
310
+ (a00 * b11 - a02 * b08 + a03 * b07) * detinv,
311
+ (a01 * b08 - a00 * b10 - a03 * b06) * detinv,
312
+ (a31 * b05 - a32 * b04 + a33 * b03) * detinv,
313
+ (a32 * b02 - a30 * b05 - a33 * b01) * detinv,
314
+ (a30 * b04 - a31 * b02 + a33 * b00) * detinv,
315
+ ];
316
+ }
317
+ exports.normalFromMat4 = normalFromMat4;
318
+ /**
319
+ * Generates a 2D projection matrix with the given bounds
320
+ */
321
+ function projection(width, height) {
322
+ return [2 / width, 0, 0, 0, -2 / height, 0, -1, 1, 1];
323
+ }
324
+ exports.projection = projection;
325
+ /**
326
+ * Returns Frobenius norm of a mat3
327
+ */
328
+ function frob(a) {
329
+ return Math.sqrt(a[0] * a[0] +
330
+ a[1] * a[1] +
331
+ a[2] * a[2] +
332
+ a[3] * a[3] +
333
+ a[4] * a[4] +
334
+ a[5] * a[5] +
335
+ a[6] * a[6] +
336
+ a[7] * a[7] +
337
+ a[8] * a[8]);
338
+ }
339
+ exports.frob = frob;
340
+ /**
341
+ * Adds two mat3's
342
+ */
343
+ function add(a, b) {
344
+ return [
345
+ a[0] + b[0],
346
+ a[1] + b[1],
347
+ a[2] + b[2],
348
+ a[3] + b[3],
349
+ a[4] + b[4],
350
+ a[5] + b[5],
351
+ a[6] + b[6],
352
+ a[7] + b[7],
353
+ a[8] + b[8],
354
+ ];
355
+ }
356
+ exports.add = add;
357
+ /**
358
+ * Subtracts matrix b from matrix a
359
+ */
360
+ function subtract(a, b) {
361
+ return [
362
+ a[0] - b[0],
363
+ a[1] - b[1],
364
+ a[2] - b[2],
365
+ a[3] - b[3],
366
+ a[4] - b[4],
367
+ a[5] - b[5],
368
+ a[6] - b[6],
369
+ a[7] - b[7],
370
+ a[8] - b[8],
371
+ ];
372
+ }
373
+ exports.subtract = subtract;
374
+ /**
375
+ * Multiply each element of the matrix by a scalar.
376
+ */
377
+ function multiplyScalar(a, s) {
378
+ return [
379
+ a[0] * s,
380
+ a[1] * s,
381
+ a[2] * s,
382
+ a[3] * s,
383
+ a[4] * s,
384
+ a[5] * s,
385
+ a[6] * s,
386
+ a[7] * s,
387
+ a[8] * s,
388
+ ];
389
+ }
390
+ exports.multiplyScalar = multiplyScalar;
391
+ /**
392
+ * Adds two mat3's after multiplying each element of the second operand by a scalar value.
393
+ */
394
+ function multiplyScalarAndAdd(a, b, scale) {
395
+ return [
396
+ a[0] + b[0] * scale,
397
+ a[1] + b[1] * scale,
398
+ a[2] + b[2] * scale,
399
+ a[3] + b[3] * scale,
400
+ a[4] + b[4] * scale,
401
+ a[5] + b[5] * scale,
402
+ a[6] + b[6] * scale,
403
+ a[7] + b[7] * scale,
404
+ a[8] + b[8] * scale,
405
+ ];
406
+ }
407
+ exports.multiplyScalarAndAdd = multiplyScalarAndAdd;
408
+ /**
409
+ * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)
410
+ */
411
+ function exactEquals(a, b) {
412
+ return (a[0] === b[0] &&
413
+ a[1] === b[1] &&
414
+ a[2] === b[2] &&
415
+ a[3] === b[3] &&
416
+ a[4] === b[4] &&
417
+ a[5] === b[5] &&
418
+ a[6] === b[6] &&
419
+ a[7] === b[7] &&
420
+ a[8] === b[8]);
421
+ }
422
+ exports.exactEquals = exactEquals;
423
+ /**
424
+ * Returns whether or not the matrices have approximately the same elements in the same position.
425
+ */
426
+ function equals(a, b) {
427
+ const a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7], a8 = a[8];
428
+ const b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8];
429
+ return (Math.abs(a0 - b0) <=
430
+ Common.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) &&
431
+ Math.abs(a1 - b1) <=
432
+ Common.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) &&
433
+ Math.abs(a2 - b2) <=
434
+ Common.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) &&
435
+ Math.abs(a3 - b3) <=
436
+ Common.EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)) &&
437
+ Math.abs(a4 - b4) <=
438
+ Common.EPSILON * Math.max(1, Math.abs(a4), Math.abs(b4)) &&
439
+ Math.abs(a5 - b5) <=
440
+ Common.EPSILON * Math.max(1, Math.abs(a5), Math.abs(b5)) &&
441
+ Math.abs(a6 - b6) <=
442
+ Common.EPSILON * Math.max(1, Math.abs(a6), Math.abs(b6)) &&
443
+ Math.abs(a7 - b7) <=
444
+ Common.EPSILON * Math.max(1, Math.abs(a7), Math.abs(b7)) &&
445
+ Math.abs(a8 - b8) <=
446
+ Common.EPSILON * Math.max(1, Math.abs(a8), Math.abs(b8)));
447
+ }
448
+ exports.equals = equals;
449
+ });
450
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0My5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXQzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsaURBQWtDO0lBYWxDOzs7T0FHRztJQUVIOztPQUVHO0lBQ0gsU0FBZ0IsUUFBUSxDQUFDLENBQU87UUFDL0Isa0JBQWtCO1FBQ2xCLE9BQU87WUFDTixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNqQixDQUFBO0lBQ0YsQ0FBQztJQVBELDRCQU9DO0lBRUQ7O09BRUc7SUFDSCxrQkFBa0I7SUFDTCxRQUFBLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3JDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNQLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNQLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztLQUNQLENBQUMsQ0FBQTtJQUVXLFFBQUEsSUFBSSxHQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFcEU7O09BRUc7SUFDSCxTQUFnQixTQUFTLENBQUMsQ0FBTztRQUNoQyxrQkFBa0I7UUFDbEIsT0FBTztZQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxD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QUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFBO1FBQ2pDLE1BQU0sR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQTtRQUNqQyxNQUFNLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUE7UUFDakMsTUFBTSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFBO1FBQ2pDLE1BQU0sR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQTtRQUVqQyw0QkFBNEI7UUFDNUIsTUFBTSxHQUFHLEdBQ1IsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUE7UUFFdEUsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNULE9BQU8sSUFBSSxDQUFBO1NBQ1g7UUFDRCxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFBO1FBRXRCLE9BQU87WUFDTixDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTTtZQUM1QyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTTtZQUM1QyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTTtZQUU1QyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTTtZQUM1QyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdB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