linearly 0.1.0 → 0.2.0

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