@aura3d/animation 3.0.0 → 4.0.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/dist/AnimationController.d.ts +8 -0
- package/dist/AnimationController.d.ts.map +1 -1
- package/dist/AnimationController.js +93 -0
- package/dist/AnimationController.js.map +1 -1
- package/dist/AnimationMixer.d.ts +4 -1
- package/dist/AnimationMixer.d.ts.map +1 -1
- package/dist/AnimationMixer.js +47 -29
- package/dist/AnimationMixer.js.map +1 -1
- package/dist/FootIk.d.ts +50 -0
- package/dist/FootIk.d.ts.map +1 -1
- package/dist/FootIk.js +224 -8
- package/dist/FootIk.js.map +1 -1
- package/dist/HumanoidRetargeting.d.ts +6 -2
- package/dist/HumanoidRetargeting.d.ts.map +1 -1
- package/dist/HumanoidRetargeting.js +18 -8
- package/dist/HumanoidRetargeting.js.map +1 -1
- package/dist/IK.d.ts +26 -0
- package/dist/IK.d.ts.map +1 -1
- package/dist/IK.js +515 -0
- package/dist/IK.js.map +1 -1
- package/dist/Keyframe.d.ts.map +1 -1
- package/dist/Keyframe.js +13 -12
- package/dist/Keyframe.js.map +1 -1
- package/dist/LocomotionEvidence.d.ts +34 -0
- package/dist/LocomotionEvidence.d.ts.map +1 -0
- package/dist/LocomotionEvidence.js +48 -0
- package/dist/LocomotionEvidence.js.map +1 -0
- package/dist/RootMotion.d.ts +13 -4
- package/dist/RootMotion.d.ts.map +1 -1
- package/dist/RootMotion.js +21 -1
- package/dist/RootMotion.js.map +1 -1
- package/dist/SpringBones.d.ts +80 -0
- package/dist/SpringBones.d.ts.map +1 -1
- package/dist/SpringBones.js +593 -49
- package/dist/SpringBones.js.map +1 -1
- package/dist/browser-index.d.ts +1 -1
- package/dist/browser-index.d.ts.map +1 -1
- package/dist/browser-index.js +1 -1
- package/dist/browser-index.js.map +1 -1
- package/dist/contracts/index.d.ts +2 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +7 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/pose.d.ts +25 -0
- package/dist/contracts/pose.d.ts.map +1 -0
- package/dist/contracts/pose.js +41 -0
- package/dist/contracts/pose.js.map +1 -0
- package/dist/experimental/CrowdAnimation.d.ts +13 -0
- package/dist/experimental/CrowdAnimation.d.ts.map +1 -0
- package/dist/experimental/CrowdAnimation.js +14 -0
- package/dist/experimental/CrowdAnimation.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lanes/index.d.ts +17 -0
- package/dist/lanes/index.d.ts.map +1 -0
- package/dist/lanes/index.js +17 -0
- package/dist/lanes/index.js.map +1 -0
- package/dist/lanes/prd01.d.ts +6 -0
- package/dist/lanes/prd01.d.ts.map +1 -0
- package/dist/lanes/prd01.js +6 -0
- package/dist/lanes/prd01.js.map +1 -0
- package/dist/lanes/prd02.d.ts +6 -0
- package/dist/lanes/prd02.d.ts.map +1 -0
- package/dist/lanes/prd02.js +6 -0
- package/dist/lanes/prd02.js.map +1 -0
- package/dist/lanes/prd03.d.ts +6 -0
- package/dist/lanes/prd03.d.ts.map +1 -0
- package/dist/lanes/prd03.js +6 -0
- package/dist/lanes/prd03.js.map +1 -0
- package/dist/lanes/prd04.d.ts +6 -0
- package/dist/lanes/prd04.d.ts.map +1 -0
- package/dist/lanes/prd04.js +6 -0
- package/dist/lanes/prd04.js.map +1 -0
- package/dist/lanes/prd05.d.ts +6 -0
- package/dist/lanes/prd05.d.ts.map +1 -0
- package/dist/lanes/prd05.js +6 -0
- package/dist/lanes/prd05.js.map +1 -0
- package/dist/lanes/prd06.d.ts +37 -0
- package/dist/lanes/prd06.d.ts.map +1 -0
- package/dist/lanes/prd06.js +26 -0
- package/dist/lanes/prd06.js.map +1 -0
- package/dist/lanes/prd07.d.ts +6 -0
- package/dist/lanes/prd07.d.ts.map +1 -0
- package/dist/lanes/prd07.js +6 -0
- package/dist/lanes/prd07.js.map +1 -0
- package/dist/lanes/prd08.d.ts +6 -0
- package/dist/lanes/prd08.d.ts.map +1 -0
- package/dist/lanes/prd08.js +6 -0
- package/dist/lanes/prd08.js.map +1 -0
- package/dist/lanes/prd09.d.ts +6 -0
- package/dist/lanes/prd09.d.ts.map +1 -0
- package/dist/lanes/prd09.js +6 -0
- package/dist/lanes/prd09.js.map +1 -0
- package/dist/lanes/prd10.d.ts +6 -0
- package/dist/lanes/prd10.d.ts.map +1 -0
- package/dist/lanes/prd10.js +6 -0
- package/dist/lanes/prd10.js.map +1 -0
- package/dist/lanes/prd11.d.ts +6 -0
- package/dist/lanes/prd11.d.ts.map +1 -0
- package/dist/lanes/prd11.js +6 -0
- package/dist/lanes/prd11.js.map +1 -0
- package/dist/lanes/prd12.d.ts +6 -0
- package/dist/lanes/prd12.d.ts.map +1 -0
- package/dist/lanes/prd12.js +6 -0
- package/dist/lanes/prd12.js.map +1 -0
- package/dist/lanes/prd13.d.ts +6 -0
- package/dist/lanes/prd13.d.ts.map +1 -0
- package/dist/lanes/prd13.js +6 -0
- package/dist/lanes/prd13.js.map +1 -0
- package/dist/lanes/prd14.d.ts +6 -0
- package/dist/lanes/prd14.d.ts.map +1 -0
- package/dist/lanes/prd14.js +6 -0
- package/dist/lanes/prd14.js.map +1 -0
- package/dist/lanes/prd15.d.ts +6 -0
- package/dist/lanes/prd15.d.ts.map +1 -0
- package/dist/lanes/prd15.js +6 -0
- package/dist/lanes/prd15.js.map +1 -0
- package/dist/pose/BoneMask.d.ts +39 -0
- package/dist/pose/BoneMask.d.ts.map +1 -0
- package/dist/pose/BoneMask.js +160 -0
- package/dist/pose/BoneMask.js.map +1 -0
- package/dist/pose/CcdIkConstraint.d.ts +38 -0
- package/dist/pose/CcdIkConstraint.d.ts.map +1 -0
- package/dist/pose/CcdIkConstraint.js +198 -0
- package/dist/pose/CcdIkConstraint.js.map +1 -0
- package/dist/pose/CompiledClip.d.ts +48 -0
- package/dist/pose/CompiledClip.d.ts.map +1 -0
- package/dist/pose/CompiledClip.js +209 -0
- package/dist/pose/CompiledClip.js.map +1 -0
- package/dist/pose/LookAtConstraint.d.ts +48 -0
- package/dist/pose/LookAtConstraint.d.ts.map +1 -0
- package/dist/pose/LookAtConstraint.js +251 -0
- package/dist/pose/LookAtConstraint.js.map +1 -0
- package/dist/pose/MotionMetrics.d.ts +136 -0
- package/dist/pose/MotionMetrics.d.ts.map +1 -0
- package/dist/pose/MotionMetrics.js +253 -0
- package/dist/pose/MotionMetrics.js.map +1 -0
- package/dist/pose/PoseBuffer.d.ts +23 -0
- package/dist/pose/PoseBuffer.d.ts.map +1 -0
- package/dist/pose/PoseBuffer.js +48 -0
- package/dist/pose/PoseBuffer.js.map +1 -0
- package/dist/pose/PoseInertializer.d.ts +38 -0
- package/dist/pose/PoseInertializer.d.ts.map +1 -0
- package/dist/pose/PoseInertializer.js +208 -0
- package/dist/pose/PoseInertializer.js.map +1 -0
- package/dist/pose/PoseMixer.d.ts +256 -0
- package/dist/pose/PoseMixer.d.ts.map +1 -0
- package/dist/pose/PoseMixer.js +848 -0
- package/dist/pose/PoseMixer.js.map +1 -0
- package/dist/pose/Retarget.d.ts +77 -0
- package/dist/pose/Retarget.d.ts.map +1 -0
- package/dist/pose/Retarget.js +378 -0
- package/dist/pose/Retarget.js.map +1 -0
- package/dist/pose/RetargetCache.d.ts +21 -0
- package/dist/pose/RetargetCache.d.ts.map +1 -0
- package/dist/pose/RetargetCache.js +102 -0
- package/dist/pose/RetargetCache.js.map +1 -0
- package/dist/pose/RetargetWorker.d.ts +21 -0
- package/dist/pose/RetargetWorker.d.ts.map +1 -0
- package/dist/pose/RetargetWorker.js +56 -0
- package/dist/pose/RetargetWorker.js.map +1 -0
- package/dist/pose/SkeletonBinding.d.ts +55 -0
- package/dist/pose/SkeletonBinding.d.ts.map +1 -0
- package/dist/pose/SkeletonBinding.js +62 -0
- package/dist/pose/SkeletonBinding.js.map +1 -0
- package/dist/pose/blendKernels.d.ts +32 -0
- package/dist/pose/blendKernels.d.ts.map +1 -0
- package/dist/pose/blendKernels.js +101 -0
- package/dist/pose/blendKernels.js.map +1 -0
- package/dist/pose/makeClipAdditive.d.ts +22 -0
- package/dist/pose/makeClipAdditive.d.ts.map +1 -0
- package/dist/pose/makeClipAdditive.js +101 -0
- package/dist/pose/makeClipAdditive.js.map +1 -0
- package/dist/pose/poseMixerFlags.d.ts +18 -0
- package/dist/pose/poseMixerFlags.d.ts.map +1 -0
- package/dist/pose/poseMixerFlags.js +30 -0
- package/dist/pose/poseMixerFlags.js.map +1 -0
- package/dist/pose/quatFlat.d.ts +16 -0
- package/dist/pose/quatFlat.d.ts.map +1 -0
- package/dist/pose/quatFlat.js +88 -0
- package/dist/pose/quatFlat.js.map +1 -0
- package/dist/pose/retarget.worker.d.ts +25 -0
- package/dist/pose/retarget.worker.d.ts.map +1 -0
- package/dist/pose/retarget.worker.js +22 -0
- package/dist/pose/retarget.worker.js.map +1 -0
- package/package.json +14 -2
package/dist/IK.js
CHANGED
|
@@ -82,4 +82,519 @@ function normalize(value) {
|
|
|
82
82
|
function clamp(value, min, max) {
|
|
83
83
|
return Math.max(min, Math.min(max, value));
|
|
84
84
|
}
|
|
85
|
+
import { multiplyQuatFlat, normalizeQuatFlat, slerpQuatFlat } from "./pose/quatFlat.js";
|
|
86
|
+
function jointIndex(skeleton, name) {
|
|
87
|
+
const indices = skeleton.jointIndicesByName.get(name);
|
|
88
|
+
if (!indices || indices.length === 0) {
|
|
89
|
+
throw new Error(`solveTwoBoneIkRotations: unknown bone "${name}".`);
|
|
90
|
+
}
|
|
91
|
+
return indices[0];
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* T3.1 (PRD-06 §7.2): solve a two-bone chain in pose space — writes the local
|
|
95
|
+
* rotations of `spec.root` and `spec.mid` so `spec.tip` reaches `target`
|
|
96
|
+
* (world space). The solve is analytic: `solveTwoBoneIk` places the joints,
|
|
97
|
+
* then the new directions convert back to local rotations with pole-plane and
|
|
98
|
+
* twist distribution handled.
|
|
99
|
+
*
|
|
100
|
+
* - `pole`: "auto" (default) keeps the current bend plane; a world point or
|
|
101
|
+
* `{ bone }` steers the plane through that point/bone.
|
|
102
|
+
* - `weight`: blends between the current pose and the solved pose (0 = no-op).
|
|
103
|
+
* - `twistBone`/`twistWeight`: distributes the plane-alignment twist onto an
|
|
104
|
+
* extra joint (e.g. a forearm twist bone).
|
|
105
|
+
* - `allowStretch`: multiplier > 1 lets the tip reach beyond the limb length.
|
|
106
|
+
*/
|
|
107
|
+
// §13 — shared scratch for `solveTwoBoneIkRotations`. Grows once to the
|
|
108
|
+
// largest skeleton seen; a generation mark lets each call reuse the arrays
|
|
109
|
+
// without clearing them.
|
|
110
|
+
const IK_SCRATCH = {
|
|
111
|
+
boneCount: 0,
|
|
112
|
+
pos: new Float32Array(0),
|
|
113
|
+
rot: new Float32Array(0),
|
|
114
|
+
scl: new Float32Array(0),
|
|
115
|
+
mark: new Uint32Array(0),
|
|
116
|
+
gen: 0
|
|
117
|
+
};
|
|
118
|
+
const ikQuatScratchA = new Float32Array(4);
|
|
119
|
+
const ikQuatScratchB = new Float32Array(4);
|
|
120
|
+
const ikQuatScratchC = new Float32Array(4);
|
|
121
|
+
const ikQuatScratchD = new Float32Array(4);
|
|
122
|
+
const ikQuatScratchE = new Float32Array(4);
|
|
123
|
+
const ikQuatScratchF = new Float32Array(4);
|
|
124
|
+
const ikQuatScratchG = new Float32Array(4);
|
|
125
|
+
const ikQuatScratchH = new Float32Array(4);
|
|
126
|
+
const ikQuatScratchI = new Float32Array(4);
|
|
127
|
+
function ikScratch(boneCount) {
|
|
128
|
+
if (boneCount > IK_SCRATCH.boneCount) {
|
|
129
|
+
IK_SCRATCH.boneCount = boneCount;
|
|
130
|
+
IK_SCRATCH.pos = new Float32Array(boneCount * 3);
|
|
131
|
+
IK_SCRATCH.rot = new Float32Array(boneCount * 4);
|
|
132
|
+
IK_SCRATCH.scl = new Float32Array(boneCount * 3);
|
|
133
|
+
IK_SCRATCH.mark = new Uint32Array(boneCount);
|
|
134
|
+
IK_SCRATCH.gen = 0;
|
|
135
|
+
}
|
|
136
|
+
return IK_SCRATCH;
|
|
137
|
+
}
|
|
138
|
+
/** Scalar `quatFromUnitVectors`: minimal-arc rotation `from`→`to` into `out`. */
|
|
139
|
+
function quatFromUnitVectorsInto(out, fx, fy, fz, tx, ty, tz) {
|
|
140
|
+
const d = clamp(fx * tx + fy * ty + fz * tz, -1, 1);
|
|
141
|
+
if (d > 1 - 1e-9) {
|
|
142
|
+
out[0] = 0;
|
|
143
|
+
out[1] = 0;
|
|
144
|
+
out[2] = 0;
|
|
145
|
+
out[3] = 1;
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
if (d < -1 + 1e-9) {
|
|
149
|
+
// 180°: pick any perpendicular axis.
|
|
150
|
+
const ax = Math.abs(fx) < 0.9 ? 1 : 0;
|
|
151
|
+
const ay = Math.abs(fx) < 0.9 ? 0 : 1;
|
|
152
|
+
let cx = fy * 0 - fz * ay;
|
|
153
|
+
let cy = fz * ax - fx * 0;
|
|
154
|
+
let cz = fx * ay - fy * ax;
|
|
155
|
+
const l = Math.hypot(cx, cy, cz) || 1;
|
|
156
|
+
cx /= l;
|
|
157
|
+
cy /= l;
|
|
158
|
+
cz /= l;
|
|
159
|
+
out[0] = cx;
|
|
160
|
+
out[1] = cy;
|
|
161
|
+
out[2] = cz;
|
|
162
|
+
out[3] = 0;
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
const cx = fy * tz - fz * ty;
|
|
166
|
+
const cy = fz * tx - fx * tz;
|
|
167
|
+
const cz = fx * ty - fy * tx;
|
|
168
|
+
const w = Math.sqrt((1 + d) / 2);
|
|
169
|
+
const s = 1 / (2 * w);
|
|
170
|
+
out[0] = cx * s;
|
|
171
|
+
out[1] = cy * s;
|
|
172
|
+
out[2] = cz * s;
|
|
173
|
+
out[3] = w;
|
|
174
|
+
}
|
|
175
|
+
/** Lazy world-frame resolve into IK_SCRATCH — mirrors the removed `jointFrames`. */
|
|
176
|
+
function ikResolveFrame(pose, skeleton, s, gen, index) {
|
|
177
|
+
if (s.mark[index] === gen)
|
|
178
|
+
return;
|
|
179
|
+
const lp = index * 3;
|
|
180
|
+
const lr = index * 4;
|
|
181
|
+
const pPos = pose.positions;
|
|
182
|
+
const pRot = pose.rotations;
|
|
183
|
+
const pScl = pose.scales;
|
|
184
|
+
const parent = skeleton.parentIndices[index] ?? -1;
|
|
185
|
+
if (parent < 0 || parent >= skeleton.boneCount || parent === index) {
|
|
186
|
+
s.pos[lp] = pPos[lp];
|
|
187
|
+
s.pos[lp + 1] = pPos[lp + 1];
|
|
188
|
+
s.pos[lp + 2] = pPos[lp + 2];
|
|
189
|
+
s.rot[lr] = pRot[lr];
|
|
190
|
+
s.rot[lr + 1] = pRot[lr + 1];
|
|
191
|
+
s.rot[lr + 2] = pRot[lr + 2];
|
|
192
|
+
s.rot[lr + 3] = pRot[lr + 3];
|
|
193
|
+
s.scl[lp] = pScl[lp];
|
|
194
|
+
s.scl[lp + 1] = pScl[lp + 1];
|
|
195
|
+
s.scl[lp + 2] = pScl[lp + 2];
|
|
196
|
+
s.mark[index] = gen;
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
ikResolveFrame(pose, skeleton, s, gen, parent);
|
|
200
|
+
const pp = parent * 3;
|
|
201
|
+
const pr = parent * 4;
|
|
202
|
+
const qx = s.rot[pr], qy = s.rot[pr + 1], qz = s.rot[pr + 2], qw = s.rot[pr + 3];
|
|
203
|
+
const sx = pPos[lp] * s.scl[pp];
|
|
204
|
+
const sy = pPos[lp + 1] * s.scl[pp + 1];
|
|
205
|
+
const sz = pPos[lp + 2] * s.scl[pp + 2];
|
|
206
|
+
const ix = qw * sx + qy * sz - qz * sy;
|
|
207
|
+
const iy = qw * sy + qz * sx - qx * sz;
|
|
208
|
+
const iz = qw * sz + qx * sy - qy * sx;
|
|
209
|
+
const iw = -qx * sx - qy * sy - qz * sz;
|
|
210
|
+
s.pos[lp] = s.pos[pp] + (ix * qw + iw * -qx + iy * -qz - iz * -qy);
|
|
211
|
+
s.pos[lp + 1] = s.pos[pp + 1] + (iy * qw + iw * -qy + iz * -qx - ix * -qz);
|
|
212
|
+
s.pos[lp + 2] = s.pos[pp + 2] + (iz * qw + iw * -qz + ix * -qy - iy * -qx);
|
|
213
|
+
multiplyQuatFlat(s.rot, lr, s.rot, pr, pRot, lr);
|
|
214
|
+
normalizeQuatFlat(s.rot, lr);
|
|
215
|
+
s.scl[lp] = s.scl[pp] * pScl[lp];
|
|
216
|
+
s.scl[lp + 1] = s.scl[pp + 1] * pScl[lp + 1];
|
|
217
|
+
s.scl[lp + 2] = s.scl[pp + 2] * pScl[lp + 2];
|
|
218
|
+
s.mark[index] = gen;
|
|
219
|
+
}
|
|
220
|
+
/** Parent's resolved world rotation into `out` (identity at the root). */
|
|
221
|
+
function ikParentRot(pose, skeleton, s, gen, index, out) {
|
|
222
|
+
const parent = skeleton.parentIndices[index] ?? -1;
|
|
223
|
+
if (parent < 0 || parent >= skeleton.boneCount) {
|
|
224
|
+
out[0] = 0;
|
|
225
|
+
out[1] = 0;
|
|
226
|
+
out[2] = 0;
|
|
227
|
+
out[3] = 1;
|
|
228
|
+
return out;
|
|
229
|
+
}
|
|
230
|
+
ikResolveFrame(pose, skeleton, s, gen, parent);
|
|
231
|
+
const pr = parent * 4;
|
|
232
|
+
out[0] = s.rot[pr];
|
|
233
|
+
out[1] = s.rot[pr + 1];
|
|
234
|
+
out[2] = s.rot[pr + 2];
|
|
235
|
+
out[3] = s.rot[pr + 3];
|
|
236
|
+
return out;
|
|
237
|
+
}
|
|
238
|
+
/** Scalar form of the removed `mat3ToQuat` — same sign conventions, writes into `out`. */
|
|
239
|
+
function mat3ToQuatInto(out, m00, m10, m20, m01, m11, m21, m02, m12, m22) {
|
|
240
|
+
const trace = m00 + m11 + m22;
|
|
241
|
+
let x, y, z, w;
|
|
242
|
+
if (trace > 0) {
|
|
243
|
+
const s = 0.5 / Math.sqrt(trace + 1);
|
|
244
|
+
x = (m21 - m12) * s;
|
|
245
|
+
y = (m02 - m20) * s;
|
|
246
|
+
z = (m10 - m01) * s;
|
|
247
|
+
w = 0.25 / s;
|
|
248
|
+
}
|
|
249
|
+
else if (m00 > m11 && m00 > m22) {
|
|
250
|
+
const s = 2 * Math.sqrt(1 + m00 - m11 - m22);
|
|
251
|
+
x = 0.25 * s;
|
|
252
|
+
y = (m01 + m10) / s;
|
|
253
|
+
z = (m02 + m20) / s;
|
|
254
|
+
w = (m21 - m12) / s;
|
|
255
|
+
}
|
|
256
|
+
else if (m11 > m22) {
|
|
257
|
+
const s = 2 * Math.sqrt(1 + m11 - m00 - m22);
|
|
258
|
+
x = (m01 + m10) / s;
|
|
259
|
+
y = 0.25 * s;
|
|
260
|
+
z = (m12 + m21) / s;
|
|
261
|
+
w = (m02 - m20) / s;
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
const s = 2 * Math.sqrt(1 + m22 - m00 - m11);
|
|
265
|
+
x = (m02 + m20) / s;
|
|
266
|
+
y = (m12 + m21) / s;
|
|
267
|
+
z = 0.25 * s;
|
|
268
|
+
w = (m10 - m01) / s;
|
|
269
|
+
}
|
|
270
|
+
const l = Math.sqrt(x * x + y * y + z * z + w * w) || 1;
|
|
271
|
+
out[0] = x / l;
|
|
272
|
+
out[1] = y / l;
|
|
273
|
+
out[2] = z / l;
|
|
274
|
+
out[3] = w / l;
|
|
275
|
+
}
|
|
276
|
+
/** Flat `setLocalRotation`: `local = parent⁻¹·world` slerped into the pose at `weight`. */
|
|
277
|
+
function setLocalRotationFlat(pose, joint, parentRotation, worldRotation, weight) {
|
|
278
|
+
const invP = ikQuatScratchI;
|
|
279
|
+
invP[0] = -parentRotation[0];
|
|
280
|
+
invP[1] = -parentRotation[1];
|
|
281
|
+
invP[2] = -parentRotation[2];
|
|
282
|
+
invP[3] = parentRotation[3];
|
|
283
|
+
const local = ikQuatScratchB;
|
|
284
|
+
multiplyQuatFlat(local, 0, invP, 0, worldRotation, 0);
|
|
285
|
+
normalizeQuatFlat(local, 0);
|
|
286
|
+
const out = ikQuatScratchA;
|
|
287
|
+
slerpQuatFlat(out, 0, pose.rotations, joint * 4, local, 0, weight);
|
|
288
|
+
pose.rotations[joint * 4] = out[0];
|
|
289
|
+
pose.rotations[joint * 4 + 1] = out[1];
|
|
290
|
+
pose.rotations[joint * 4 + 2] = out[2];
|
|
291
|
+
pose.rotations[joint * 4 + 3] = out[3];
|
|
292
|
+
}
|
|
293
|
+
export function solveTwoBoneIkRotations(pose, skeleton, modelMatrix, spec, target) {
|
|
294
|
+
const weight = clamp(spec.weight ?? 1, 0, 1);
|
|
295
|
+
if (weight <= 0)
|
|
296
|
+
return;
|
|
297
|
+
const rootIndex = jointIndex(skeleton, spec.root);
|
|
298
|
+
const midIndex = jointIndex(skeleton, spec.mid);
|
|
299
|
+
const tipIndex = jointIndex(skeleton, spec.tip);
|
|
300
|
+
// §13 — flat scratch + lazy frame resolution: the object-of-arrays
|
|
301
|
+
// `jointFrames` built ~boneCount objects and ~40 array literals per call
|
|
302
|
+
// (~6× over the 2µs two-bone budget). Frames resolve only for the joints
|
|
303
|
+
// this solve touches (chain + ancestors + pole/twist), into grow-once
|
|
304
|
+
// module scratch marked by a generation counter — zero per-call alloc.
|
|
305
|
+
const s = ikScratch(skeleton.boneCount);
|
|
306
|
+
const gen = ++s.gen;
|
|
307
|
+
ikResolveFrame(pose, skeleton, s, gen, rootIndex);
|
|
308
|
+
ikResolveFrame(pose, skeleton, s, gen, midIndex);
|
|
309
|
+
ikResolveFrame(pose, skeleton, s, gen, tipIndex);
|
|
310
|
+
const rp = rootIndex * 3;
|
|
311
|
+
const mp = midIndex * 3;
|
|
312
|
+
const tp = tipIndex * 3;
|
|
313
|
+
const rootX = s.pos[rp], rootY = s.pos[rp + 1], rootZ = s.pos[rp + 2];
|
|
314
|
+
const midX = s.pos[mp], midY = s.pos[mp + 1], midZ = s.pos[mp + 2];
|
|
315
|
+
const tipX = s.pos[tp], tipY = s.pos[tp + 1], tipZ = s.pos[tp + 2];
|
|
316
|
+
// invModel = invertTRS(modelMatrix) → scalars; targetLocal = S⁻¹·Rᵀ·(t − pos).
|
|
317
|
+
const m0c = modelMatrix[0], m1c = modelMatrix[1], m2c = modelMatrix[2];
|
|
318
|
+
const m4c = modelMatrix[4], m5c = modelMatrix[5], m6c = modelMatrix[6];
|
|
319
|
+
const m8c = modelMatrix[8], m9c = modelMatrix[9], m10c = modelMatrix[10];
|
|
320
|
+
const m12c = modelMatrix[12], m13c = modelMatrix[13], m14c = modelMatrix[14];
|
|
321
|
+
const msx = Math.sqrt(m0c * m0c + m1c * m1c + m2c * m2c) || 1;
|
|
322
|
+
const msy = Math.sqrt(m4c * m4c + m5c * m5c + m6c * m6c) || 1;
|
|
323
|
+
const msz = Math.sqrt(m8c * m8c + m9c * m9c + m10c * m10c) || 1;
|
|
324
|
+
const mRot = ikQuatScratchF;
|
|
325
|
+
mat3ToQuatInto(mRot, m0c / msx, m1c / msx, m2c / msx, m4c / msy, m5c / msy, m6c / msy, m8c / msz, m9c / msz, m10c / msz);
|
|
326
|
+
const tpx = target[0] - m12c, tpy = target[1] - m13c, tpz = target[2] - m14c;
|
|
327
|
+
// rotate by conjugate of mRot
|
|
328
|
+
const crx = -mRot[0], cry = -mRot[1], crz = -mRot[2], crw = mRot[3];
|
|
329
|
+
const tIx = crw * tpx + cry * tpz - crz * tpy;
|
|
330
|
+
const tIy = crw * tpy + crz * tpx - crx * tpz;
|
|
331
|
+
const tIz = crw * tpz + crx * tpy - cry * tpx;
|
|
332
|
+
const tIw = -crx * tpx - cry * tpy - crz * tpz;
|
|
333
|
+
const targetX = (tIx * crw + tIw * -crx + tIy * -crz - tIz * -cry) / msx;
|
|
334
|
+
const targetY = (tIy * crw + tIw * -cry + tIz * -crx - tIx * -crz) / msy;
|
|
335
|
+
const targetZ = (tIz * crw + tIw * -crz + tIx * -cry - tIy * -crx) / msz;
|
|
336
|
+
// polePoint (model space) — bone position or transformed world point.
|
|
337
|
+
let poleX = 0, poleY = 0, poleZ = 0;
|
|
338
|
+
let hasPole = false;
|
|
339
|
+
if (spec.pole && spec.pole !== "auto") {
|
|
340
|
+
if ("bone" in spec.pole) {
|
|
341
|
+
const poleJoint = jointIndex(skeleton, spec.pole.bone);
|
|
342
|
+
ikResolveFrame(pose, skeleton, s, gen, poleJoint);
|
|
343
|
+
const pp = poleJoint * 3;
|
|
344
|
+
poleX = s.pos[pp];
|
|
345
|
+
poleY = s.pos[pp + 1];
|
|
346
|
+
poleZ = s.pos[pp + 2];
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
const ppx = spec.pole[0] - m12c, ppy = spec.pole[1] - m13c, ppz = spec.pole[2] - m14c;
|
|
350
|
+
const pIx = crw * ppx + cry * ppz - crz * ppy;
|
|
351
|
+
const pIy = crw * ppy + crz * ppx - crx * ppz;
|
|
352
|
+
const pIz = crw * ppz + crx * ppy - cry * ppx;
|
|
353
|
+
const pIw = -crx * ppx - cry * ppy - crz * ppz;
|
|
354
|
+
poleX = (pIx * crw + pIw * -crx + pIy * -crz - pIz * -cry) / msx;
|
|
355
|
+
poleY = (pIy * crw + pIw * -cry + pIz * -crx - pIx * -crz) / msy;
|
|
356
|
+
poleZ = (pIz * crw + pIw * -crz + pIx * -cry - pIy * -crx) / msz;
|
|
357
|
+
}
|
|
358
|
+
hasPole = true;
|
|
359
|
+
}
|
|
360
|
+
// solveTwoBoneIk inline — same math (chain lengths, pole-projected plane,
|
|
361
|
+
// adjacent/height), scalar form.
|
|
362
|
+
const udx = midX - rootX, udy = midY - rootY, udz = midZ - rootZ;
|
|
363
|
+
const upperLength = Math.sqrt(udx * udx + udy * udy + udz * udz);
|
|
364
|
+
const ldx = tipX - midX, ldy = tipY - midY, ldz = tipZ - midZ;
|
|
365
|
+
const lowerLength = Math.sqrt(ldx * ldx + ldy * ldy + ldz * ldz);
|
|
366
|
+
if (upperLength <= 1e-6 || lowerLength <= 1e-6) {
|
|
367
|
+
throw new Error("Two-bone IK requires non-zero upper and lower segment lengths.");
|
|
368
|
+
}
|
|
369
|
+
const tdx = targetX - rootX, tdy = targetY - rootY, tdz = targetZ - rootZ;
|
|
370
|
+
const targetDistance = Math.sqrt(tdx * tdx + tdy * tdy + tdz * tdz);
|
|
371
|
+
if (targetDistance <= 1e-6) {
|
|
372
|
+
throw new Error("Two-bone IK target must be distinct from the root.");
|
|
373
|
+
}
|
|
374
|
+
const maxReach = upperLength + lowerLength;
|
|
375
|
+
const minReach = Math.abs(upperLength - lowerLength) + 1e-5;
|
|
376
|
+
const allowStretch = (spec.allowStretch ?? 0) > 1;
|
|
377
|
+
const solveDistance = allowStretch ? targetDistance : clamp(targetDistance, minReach, maxReach - 1e-5);
|
|
378
|
+
const axisX = tdx / targetDistance, axisY = tdy / targetDistance, axisZ = tdz / targetDistance;
|
|
379
|
+
// projectedPoleDirection: pole = polePoint ?? mid
|
|
380
|
+
const plX = hasPole ? poleX : midX, plY = hasPole ? poleY : midY, plZ = hasPole ? poleZ : midZ;
|
|
381
|
+
const pdx = plX - rootX, pdy = plY - rootY, pdz = plZ - rootZ;
|
|
382
|
+
const pdDot = pdx * axisX + pdy * axisY + pdz * axisZ;
|
|
383
|
+
let prjX = pdx - axisX * pdDot, prjY = pdy - axisY * pdDot, prjZ = pdz - axisZ * pdDot;
|
|
384
|
+
const prjLen = Math.sqrt(prjX * prjX + prjY * prjY + prjZ * prjZ);
|
|
385
|
+
if (prjLen > 1e-6) {
|
|
386
|
+
prjX /= prjLen;
|
|
387
|
+
prjY /= prjLen;
|
|
388
|
+
prjZ /= prjLen;
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
const fx = Math.abs(axisY) < 0.9 ? 0 : 1;
|
|
392
|
+
const fy = Math.abs(axisY) < 0.9 ? 1 : 0;
|
|
393
|
+
const fDot = fx * axisX + fy * axisY;
|
|
394
|
+
let fpx = fx - axisX * fDot, fpy = fy - axisY * fDot, fpz = -axisZ * fDot;
|
|
395
|
+
const fl = Math.sqrt(fpx * fpx + fpy * fpy + fpz * fpz) || 1;
|
|
396
|
+
prjX = fpx / fl;
|
|
397
|
+
prjY = fpy / fl;
|
|
398
|
+
prjZ = fpz / fl;
|
|
399
|
+
}
|
|
400
|
+
const adjacent = clamp((upperLength * upperLength + solveDistance * solveDistance - lowerLength * lowerLength) / (2 * solveDistance), 0, upperLength);
|
|
401
|
+
const height = Math.sqrt(Math.max(0, upperLength * upperLength - adjacent * adjacent));
|
|
402
|
+
const sEndX = rootX + axisX * solveDistance, sEndY = rootY + axisY * solveDistance, sEndZ = rootZ + axisZ * solveDistance;
|
|
403
|
+
const sMidX = rootX + axisX * adjacent + prjX * height;
|
|
404
|
+
const sMidY = rootY + axisY * adjacent + prjY * height;
|
|
405
|
+
const sMidZ = rootZ + axisZ * adjacent + prjZ * height;
|
|
406
|
+
// The solve itself is unblended — solveTwoBoneIk lerps mid/end at weight=1
|
|
407
|
+
// here (the caller never passed weight), and `setLocalRotation` applies the
|
|
408
|
+
// real blend when writing back into the pose.
|
|
409
|
+
const smX = sMidX, smY = sMidY, smZ = sMidZ;
|
|
410
|
+
const seX = sEndX, seY = sEndY, seZ = sEndZ;
|
|
411
|
+
// Root swing: minimal arc midDir0 → midDir1, then a residual roll about the
|
|
412
|
+
// new axis so the bend plane matches the pole plane (solvedMid sits on it).
|
|
413
|
+
let m0x = midX - rootX, m0y = midY - rootY, m0z = midZ - rootZ;
|
|
414
|
+
let m0l = Math.sqrt(m0x * m0x + m0y * m0y + m0z * m0z);
|
|
415
|
+
if (m0l <= 1e-6) {
|
|
416
|
+
m0x = 0;
|
|
417
|
+
m0y = 1;
|
|
418
|
+
m0z = 0;
|
|
419
|
+
m0l = 1;
|
|
420
|
+
}
|
|
421
|
+
const md0x = m0x / m0l, md0y = m0y / m0l, md0z = m0z / m0l;
|
|
422
|
+
let m1x = smX - rootX, m1y = smY - rootY, m1z = smZ - rootZ;
|
|
423
|
+
let m1l = Math.sqrt(m1x * m1x + m1y * m1y + m1z * m1z);
|
|
424
|
+
if (m1l <= 1e-6) {
|
|
425
|
+
m1x = 0;
|
|
426
|
+
m1y = 1;
|
|
427
|
+
m1z = 0;
|
|
428
|
+
m1l = 1;
|
|
429
|
+
}
|
|
430
|
+
const md1x = m1x / m1l, md1y = m1y / m1l, md1z = m1z / m1l;
|
|
431
|
+
const swing = ikQuatScratchA;
|
|
432
|
+
quatFromUnitVectorsInto(swing, md0x, md0y, md0z, md1x, md1y, md1z);
|
|
433
|
+
// poleDir0/1 = planeNormal(midDir, normalize(polePoint|mid - root))
|
|
434
|
+
let p0x = (hasPole ? poleX : midX) - rootX, p0y = (hasPole ? poleY : midY) - rootY, p0z = (hasPole ? poleZ : midZ) - rootZ;
|
|
435
|
+
const p0l = Math.sqrt(p0x * p0x + p0y * p0y + p0z * p0z);
|
|
436
|
+
if (p0l <= 1e-6) {
|
|
437
|
+
p0x = 0;
|
|
438
|
+
p0y = 1;
|
|
439
|
+
p0z = 0;
|
|
440
|
+
}
|
|
441
|
+
else {
|
|
442
|
+
p0x /= p0l;
|
|
443
|
+
p0y /= p0l;
|
|
444
|
+
p0z /= p0l;
|
|
445
|
+
}
|
|
446
|
+
let pd0x = md0y * p0z - md0z * p0y, pd0y = md0z * p0x - md0x * p0z, pd0z = md0x * p0y - md0y * p0x;
|
|
447
|
+
const pd0l = Math.sqrt(pd0x * pd0x + pd0y * pd0y + pd0z * pd0z);
|
|
448
|
+
if (pd0l <= 1e-6) {
|
|
449
|
+
const ux = Math.abs(md0x) < 0.9 ? 1 : 0, uy = Math.abs(md0x) < 0.9 ? 0 : 1;
|
|
450
|
+
pd0x = md0y * 0 - md0z * uy;
|
|
451
|
+
pd0y = md0z * ux - md0x * 0;
|
|
452
|
+
pd0z = md0x * uy - md0y * ux;
|
|
453
|
+
const ul = Math.sqrt(pd0x * pd0x + pd0y * pd0y + pd0z * pd0z) || 1;
|
|
454
|
+
pd0x /= ul;
|
|
455
|
+
pd0y /= ul;
|
|
456
|
+
pd0z /= ul;
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
pd0x /= pd0l;
|
|
460
|
+
pd0y /= pd0l;
|
|
461
|
+
pd0z /= pd0l;
|
|
462
|
+
}
|
|
463
|
+
let p1x = (hasPole ? poleX : smX) - rootX, p1y = (hasPole ? poleY : smY) - rootY, p1z = (hasPole ? poleZ : smZ) - rootZ;
|
|
464
|
+
const p1l = Math.sqrt(p1x * p1x + p1y * p1y + p1z * p1z);
|
|
465
|
+
if (p1l <= 1e-6) {
|
|
466
|
+
p1x = 0;
|
|
467
|
+
p1y = 1;
|
|
468
|
+
p1z = 0;
|
|
469
|
+
}
|
|
470
|
+
else {
|
|
471
|
+
p1x /= p1l;
|
|
472
|
+
p1y /= p1l;
|
|
473
|
+
p1z /= p1l;
|
|
474
|
+
}
|
|
475
|
+
let pd1x = md1y * p1z - md1z * p1y, pd1y = md1z * p1x - md1x * p1z, pd1z = md1x * p1y - md1y * p1x;
|
|
476
|
+
const pd1l = Math.sqrt(pd1x * pd1x + pd1y * pd1y + pd1z * pd1z);
|
|
477
|
+
if (pd1l <= 1e-6) {
|
|
478
|
+
const ux = Math.abs(md1x) < 0.9 ? 1 : 0, uy = Math.abs(md1x) < 0.9 ? 0 : 1;
|
|
479
|
+
pd1x = md1y * 0 - md1z * uy;
|
|
480
|
+
pd1y = md1z * ux - md1x * 0;
|
|
481
|
+
pd1z = md1x * uy - md1y * ux;
|
|
482
|
+
const ul = Math.sqrt(pd1x * pd1x + pd1y * pd1y + pd1z * pd1z) || 1;
|
|
483
|
+
pd1x /= ul;
|
|
484
|
+
pd1y /= ul;
|
|
485
|
+
pd1z /= ul;
|
|
486
|
+
}
|
|
487
|
+
else {
|
|
488
|
+
pd1x /= pd1l;
|
|
489
|
+
pd1y /= pd1l;
|
|
490
|
+
pd1z /= pd1l;
|
|
491
|
+
}
|
|
492
|
+
// swungNormal = rotateVec3(swing, poleDir0)
|
|
493
|
+
const swx = swing[0], swy = swing[1], swz = swing[2], sww = swing[3];
|
|
494
|
+
const snIx = sww * pd0x + swy * pd0z - swz * pd0y;
|
|
495
|
+
const snIy = sww * pd0y + swz * pd0x - swx * pd0z;
|
|
496
|
+
const snIz = sww * pd0z + swx * pd0y - swy * pd0x;
|
|
497
|
+
const snIw = -swx * pd0x - swy * pd0y - swz * pd0z;
|
|
498
|
+
const snx = snIx * sww + snIw * -swx + snIy * -swz - snIz * -swy;
|
|
499
|
+
const sny = snIy * sww + snIw * -swy + snIz * -swx - snIx * -swz;
|
|
500
|
+
const snz = snIz * sww + snIw * -swz + snIx * -swy - snIy * -swx;
|
|
501
|
+
// twistAngle = signedAngleAbout(swungNormal, poleDir1, midDir1)
|
|
502
|
+
const tacx = sny * pd1z - snz * pd1y;
|
|
503
|
+
const tacy = snz * pd1x - snx * pd1z;
|
|
504
|
+
const tacz = snx * pd1y - sny * pd1x;
|
|
505
|
+
const twistAngle = Math.atan2(tacx * md1x + tacy * md1y + tacz * md1z, snx * pd1x + sny * pd1y + snz * pd1z);
|
|
506
|
+
// roll = axisAngleQuat(midDir1, twistAngle); q1 = roll * swing
|
|
507
|
+
const half = twistAngle / 2;
|
|
508
|
+
const sHalf = Math.sin(half);
|
|
509
|
+
const roll = ikQuatScratchB;
|
|
510
|
+
roll[0] = md1x * sHalf;
|
|
511
|
+
roll[1] = md1y * sHalf;
|
|
512
|
+
roll[2] = md1z * sHalf;
|
|
513
|
+
roll[3] = Math.cos(half);
|
|
514
|
+
const q1 = ikQuatScratchC;
|
|
515
|
+
multiplyQuatFlat(q1, 0, roll, 0, swing, 0);
|
|
516
|
+
// Mid swing: tip direction under the root's solved frame onto solved-end dir.
|
|
517
|
+
const tvx = tipX - rootX, tvy = tipY - rootY, tvz = tipZ - rootZ;
|
|
518
|
+
const q1x = q1[0], q1y = q1[1], q1z = q1[2], q1w = q1[3];
|
|
519
|
+
const tdIx = q1w * tvx + q1y * tvz - q1z * tvy;
|
|
520
|
+
const tdIy = q1w * tvy + q1z * tvx - q1x * tvz;
|
|
521
|
+
const tdIz = q1w * tvz + q1x * tvy - q1y * tvx;
|
|
522
|
+
const tdIw = -q1x * tvx - q1y * tvy - q1z * tvz;
|
|
523
|
+
const tipAfterX = rootX + tdIx * q1w + tdIw * -q1x + tdIy * -q1z - tdIz * -q1y;
|
|
524
|
+
const tipAfterY = rootY + tdIy * q1w + tdIw * -q1y + tdIz * -q1x - tdIx * -q1z;
|
|
525
|
+
const tipAfterZ = rootZ + tdIz * q1w + tdIw * -q1z + tdIx * -q1y - tdIy * -q1x;
|
|
526
|
+
let td1x = tipAfterX - smX, td1y = tipAfterY - smY, td1z = tipAfterZ - smZ;
|
|
527
|
+
const td1l = Math.sqrt(td1x * td1x + td1y * td1y + td1z * td1z);
|
|
528
|
+
if (td1l <= 1e-6) {
|
|
529
|
+
td1x = 0;
|
|
530
|
+
td1y = 1;
|
|
531
|
+
td1z = 0;
|
|
532
|
+
}
|
|
533
|
+
else {
|
|
534
|
+
td1x /= td1l;
|
|
535
|
+
td1y /= td1l;
|
|
536
|
+
td1z /= td1l;
|
|
537
|
+
}
|
|
538
|
+
let td2x = seX - smX, td2y = seY - smY, td2z = seZ - smZ;
|
|
539
|
+
const td2l = Math.sqrt(td2x * td2x + td2y * td2y + td2z * td2z);
|
|
540
|
+
if (td2l <= 1e-6) {
|
|
541
|
+
td2x = 0;
|
|
542
|
+
td2y = 1;
|
|
543
|
+
td2z = 0;
|
|
544
|
+
}
|
|
545
|
+
else {
|
|
546
|
+
td2x /= td2l;
|
|
547
|
+
td2y /= td2l;
|
|
548
|
+
td2z /= td2l;
|
|
549
|
+
}
|
|
550
|
+
const q2 = ikQuatScratchD;
|
|
551
|
+
quatFromUnitVectorsInto(q2, td1x, td1y, td1z, td2x, td2y, td2z);
|
|
552
|
+
const rootWorldSolved = ikQuatScratchE;
|
|
553
|
+
multiplyQuatFlat(rootWorldSolved, 0, q1, 0, s.rot, rootIndex * 4);
|
|
554
|
+
normalizeQuatFlat(rootWorldSolved, 0);
|
|
555
|
+
setLocalRotationFlat(pose, rootIndex, ikParentRot(pose, skeleton, s, gen, rootIndex, ikQuatScratchF), rootWorldSolved, weight);
|
|
556
|
+
const midWorldAfterRoot = ikQuatScratchG;
|
|
557
|
+
multiplyQuatFlat(midWorldAfterRoot, 0, q1, 0, s.rot, midIndex * 4);
|
|
558
|
+
const midWorldSolved = ikQuatScratchH;
|
|
559
|
+
multiplyQuatFlat(midWorldSolved, 0, q2, 0, midWorldAfterRoot, 0);
|
|
560
|
+
normalizeQuatFlat(midWorldSolved, 0);
|
|
561
|
+
// The mid's parent is the root in a strict two-bone chain; if a joint sits
|
|
562
|
+
// between them, its frame rode the root's rotation too.
|
|
563
|
+
const midParentSolved = ikQuatScratchI;
|
|
564
|
+
if (skeleton.parentIndices[midIndex] === rootIndex) {
|
|
565
|
+
midParentSolved.set(rootWorldSolved);
|
|
566
|
+
}
|
|
567
|
+
else {
|
|
568
|
+
const p = skeleton.parentIndices[midIndex] ?? -1;
|
|
569
|
+
if (p < 0) {
|
|
570
|
+
midParentSolved[0] = 0;
|
|
571
|
+
midParentSolved[1] = 0;
|
|
572
|
+
midParentSolved[2] = 0;
|
|
573
|
+
midParentSolved[3] = 1;
|
|
574
|
+
}
|
|
575
|
+
else {
|
|
576
|
+
ikResolveFrame(pose, skeleton, s, gen, p);
|
|
577
|
+
multiplyQuatFlat(midParentSolved, 0, q1, 0, s.rot, p * 4);
|
|
578
|
+
normalizeQuatFlat(midParentSolved, 0);
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
setLocalRotationFlat(pose, midIndex, midParentSolved, midWorldSolved, weight);
|
|
582
|
+
// Twist distribution: apply `twistWeight` of the plane-align roll to the
|
|
583
|
+
// twist bone's local rotation (twist bones sit between mid and tip).
|
|
584
|
+
if (spec.twistBone && (spec.twistWeight ?? 0) > 0) {
|
|
585
|
+
const twistIndex = jointIndex(skeleton, spec.twistBone);
|
|
586
|
+
ikResolveFrame(pose, skeleton, s, gen, twistIndex);
|
|
587
|
+
const tHalf = (twistAngle * (spec.twistWeight ?? 0)) / 2;
|
|
588
|
+
const tS = Math.sin(tHalf);
|
|
589
|
+
const twistQ = ikQuatScratchB;
|
|
590
|
+
twistQ[0] = md1x * tS;
|
|
591
|
+
twistQ[1] = md1y * tS;
|
|
592
|
+
twistQ[2] = md1z * tS;
|
|
593
|
+
twistQ[3] = Math.cos(tHalf);
|
|
594
|
+
const twistWorld = ikQuatScratchG;
|
|
595
|
+
multiplyQuatFlat(twistWorld, 0, twistQ, 0, s.rot, twistIndex * 4);
|
|
596
|
+
normalizeQuatFlat(twistWorld, 0);
|
|
597
|
+
setLocalRotationFlat(pose, twistIndex, ikParentRot(pose, skeleton, s, gen, twistIndex, ikQuatScratchF), twistWorld, weight);
|
|
598
|
+
}
|
|
599
|
+
}
|
|
85
600
|
//# sourceMappingURL=IK.js.map
|
package/dist/IK.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IK.js","sourceRoot":"","sources":["../../../../packages/animation/src/IK.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IK.js","sourceRoot":"","sources":["../../../../packages/animation/src/IK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,MAAM,eAAe,CAAC;AAyBpD,MAAM,UAAU,cAAc,CAAC,KAAqB;IAClD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;IAC5D,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC;IAC7G,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACpC,MAAM,aAAa,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;IACtJ,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC;IACvF,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5F,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,mBAAmB,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG;QACH,GAAG;QACH,OAAO,EAAE,mBAAmB,IAAI,IAAI;QACpC,SAAS,EAAE,cAAc,GAAG,QAAQ,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI;QACnE,WAAW;QACX,WAAW;QACX,cAAc;QACd,mBAAmB;QACnB,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;KAClF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAU,EAAE,GAAS,EAAE,OAAa,EAAE,QAAQ,GAAG,CAAC;IAC7E,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9F,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;AACvG,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAU,EAAE,IAAU,EAAE,IAAU;IAChE,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,eAAe,GAAG,IAAI;QAAE,OAAO,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAU,CAAC;IACnF,MAAM,iBAAiB,GAAG,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/E,OAAO,SAAS,CAAC,iBAAiB,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,GAAG,CAAC,IAAU,EAAE,KAAW;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,QAAQ,CAAC,IAAU,EAAE,KAAW;IACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,KAAK,CAAC,KAAW,EAAE,MAAc;IACxC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,GAAG,CAAC,IAAU,EAAE,KAAW;IAClC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,MAAM,CAAC,KAAW;IACzB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAU,EAAE,KAAW;IACvC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,SAAS,CAAC,KAAW;IAC5B,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,WAAW,IAAI,IAAI;QAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACpD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C,CAAC;AAeD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAmBxF,SAAS,UAAU,CAAC,QAAyB,EAAE,IAAY;IACzD,MAAM,OAAO,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,IAAI,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAE,CAAC;AACrB,CAAC;AAGD;;;;;;;;;;;;;GAaG;AACH,wEAAwE;AACxE,2EAA2E;AAC3E,yBAAyB;AACzB,MAAM,UAAU,GAAG;IACjB,SAAS,EAAE,CAAC;IACZ,GAAG,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC;IACxB,GAAG,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC;IACxB,GAAG,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC;IACxB,IAAI,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC;IACxB,GAAG,EAAE,CAAC;CACP,CAAC;AAEF,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AAC3C,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AAC3C,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AAC3C,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AAC3C,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AAC3C,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AAC3C,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AAC3C,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AAC3C,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AAE3C,SAAS,SAAS,CAAC,SAAiB;IAClC,IAAI,SAAS,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;QACrC,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;QACjC,UAAU,CAAC,GAAG,GAAG,IAAI,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACjD,UAAU,CAAC,GAAG,GAAG,IAAI,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACjD,UAAU,CAAC,GAAG,GAAG,IAAI,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACjD,UAAU,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;QAC7C,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,iFAAiF;AACjF,SAAS,uBAAuB,CAAC,GAAiB,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU;IACxH,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;QACjB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;QAClB,qCAAqC;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QAC1B,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1B,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACtC,EAAE,IAAI,CAAC,CAAC;QAAC,EAAE,IAAI,CAAC,CAAC;QAAC,EAAE,IAAI,CAAC,CAAC;QAC1B,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC7B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC7B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAChE,CAAC;AAED,oFAAoF;AACpF,SAAS,cAAc,CAAC,IAAgB,EAAE,QAAyB,EAAE,CAAoB,EAAE,GAAW,EAAE,KAAa;IACnH,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;QAAE,OAAO;IAClC,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;IACrB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;IACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,QAAQ,CAAC,SAAS,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACnE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAE,CAAC;QAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QACpF,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAE,CAAC;QAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QACnH,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAE,CAAC;QAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QACpF,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;QACpB,OAAO;IACT,CAAC;IACD,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC;IACtB,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAE,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;IACrF,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;IAClC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;IAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;IAC1C,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACvC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACvC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACvC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACxC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5E,gBAAgB,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACjD,iBAAiB,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7B,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAE,GAAG,IAAI,CAAC,EAAE,CAAE,CAAC;IACnC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;IAC/C,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;IAC/C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AACtB,CAAC;AAED,0EAA0E;AAC1E,SAAS,WAAW,CAAC,IAAgB,EAAE,QAAyB,EAAE,CAAoB,EAAE,GAAW,EAAE,KAAa,EAAE,GAAiB;IACnI,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC/C,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,GAAG,CAAC;IACb,CAAC;IACD,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC;IACtB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;IAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;IAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;IAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;IAC/F,OAAO,GAAG,CAAC;AACb,CAAC;AAED,0FAA0F;AAC1F,SAAS,cAAc,CAAC,GAAiB,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW;IAC5J,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC9B,IAAI,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,CAAC;IAC/C,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IAC9E,CAAC;SAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAC7C,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9E,CAAC;SAAM,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAC7C,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAC7C,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACxD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjE,CAAC;AAED,2FAA2F;AAC3F,SAAS,oBAAoB,CAAC,IAAgB,EAAE,KAAa,EAAE,cAA4B,EAAE,aAA2B,EAAE,MAAc;IACtI,MAAM,IAAI,GAAG,cAAc,CAAC;IAC5B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAE,CAAC;IAC9B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAE,CAAC;IAC9B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAE,CAAC;IAC9B,IAAI,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,cAAc,CAAC;IAC7B,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;IACtD,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,cAAc,CAAC;IAC3B,aAAa,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACnE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;IACpC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;IACxC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;IACxC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAAgB,EAChB,QAAyB,EACzB,WAA6C,EAC7C,IAA6B,EAC7B,MAAyC;IAEzC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO;IAExB,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAEhD,mEAAmE;IACnE,yEAAyE;IACzE,yEAAyE;IACzE,sEAAsE;IACtE,uEAAuE;IACvE,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;IACpB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAClD,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IACjD,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAEjD,MAAM,EAAE,GAAG,SAAS,GAAG,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAC;IACxB,MAAM,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAC;IACxB,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAE,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;IACzE,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAE,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;IACtE,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAE,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;IAEtE,+EAA+E;IAC/E,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAE,EAAE,GAAG,GAAG,WAAW,CAAC,CAAC,CAAE,EAAE,GAAG,GAAG,WAAW,CAAC,CAAC,CAAE,CAAC;IAC1E,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAE,EAAE,GAAG,GAAG,WAAW,CAAC,CAAC,CAAE,EAAE,GAAG,GAAG,WAAW,CAAC,CAAC,CAAE,CAAC;IAC1E,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAE,EAAE,GAAG,GAAG,WAAW,CAAC,CAAC,CAAE,EAAE,IAAI,GAAG,WAAW,CAAC,EAAE,CAAE,CAAC;IAC5E,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAE,EAAE,IAAI,GAAG,WAAW,CAAC,EAAE,CAAE,EAAE,IAAI,GAAG,WAAW,CAAC,EAAE,CAAE,CAAC;IAChF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,cAAc,CAAC;IAC5B,cAAc,CACZ,IAAI,EACJ,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAC/B,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAC/B,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,CACjC,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC7E,8BAA8B;IAC9B,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC9C,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC9C,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC9C,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC/C,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACzE,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACzE,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAEzE,sEAAsE;IACtE,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;IACpC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACtC,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;YAClD,MAAM,EAAE,GAAG,SAAS,GAAG,CAAC,CAAC;YACzB,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;YAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;YAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACtF,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YAC9C,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YAC9C,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YAC9C,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;YAC/C,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACjE,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACjE,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACnE,CAAC;QACD,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,0EAA0E;IAC1E,iCAAiC;IACjC,MAAM,GAAG,GAAG,IAAI,GAAG,KAAK,EAAE,GAAG,GAAG,IAAI,GAAG,KAAK,EAAE,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;IACjE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;IAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACjE,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,GAAG,KAAK,EAAE,GAAG,GAAG,OAAO,GAAG,KAAK,EAAE,GAAG,GAAG,OAAO,GAAG,KAAK,CAAC;IAC1E,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACpE,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;IAC5D,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC;IACvG,MAAM,KAAK,GAAG,GAAG,GAAG,cAAc,EAAE,KAAK,GAAG,GAAG,GAAG,cAAc,EAAE,KAAK,GAAG,GAAG,GAAG,cAAc,CAAC;IAC/F,kDAAkD;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/F,MAAM,GAAG,GAAG,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;IAC9D,MAAM,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;IACtD,IAAI,IAAI,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC;IACvF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IAClE,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC;QAClB,IAAI,IAAI,MAAM,CAAC;QAAC,IAAI,IAAI,MAAM,CAAC;QAAC,IAAI,IAAI,MAAM,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,CAAC;QACrC,IAAI,GAAG,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;QAC1E,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QAAC,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QAAC,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;IACpD,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;IACtJ,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC;IACvF,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,aAAa,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,aAAa,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,aAAa,CAAC;IAC1H,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC;IACvD,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC;IACvD,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC;IACvD,2EAA2E;IAC3E,4EAA4E;IAC5E,8CAA8C;IAC9C,MAAM,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;IAC5C,MAAM,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;IAE5C,4EAA4E;IAC5E,4EAA4E;IAC5E,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK,EAAE,GAAG,GAAG,IAAI,GAAG,KAAK,EAAE,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;IAC/D,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACvD,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAAC,GAAG,GAAG,CAAC,CAAC;QAAC,GAAG,GAAG,CAAC,CAAC;QAAC,GAAG,GAAG,CAAC,CAAC;QAAC,GAAG,GAAG,CAAC,CAAC;IAAC,CAAC;IACxD,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;IAC3D,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;IAC5D,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACvD,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAAC,GAAG,GAAG,CAAC,CAAC;QAAC,GAAG,GAAG,CAAC,CAAC;QAAC,GAAG,GAAG,CAAC,CAAC;QAAC,GAAG,GAAG,CAAC,CAAC;IAAC,CAAC;IACxD,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;IAC3D,MAAM,KAAK,GAAG,cAAc,CAAC;IAC7B,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAEnE,oEAAoE;IACpE,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC3H,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACzD,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAAC,GAAG,GAAG,CAAC,CAAC;QAAC,GAAG,GAAG,CAAC,CAAC;QAAC,GAAG,GAAG,CAAC,CAAC;IAAC,CAAC;SAAM,CAAC;QAAC,GAAG,IAAI,GAAG,CAAC;QAAC,GAAG,IAAI,GAAG,CAAC;QAAC,GAAG,IAAI,GAAG,CAAC;IAAC,CAAC;IAC5F,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;IACnG,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IAChE,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5B,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC;QAC5B,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,IAAI,EAAE,CAAC;QAAC,IAAI,IAAI,EAAE,CAAC;QAAC,IAAI,IAAI,EAAE,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,IAAI,IAAI,IAAI,CAAC;QAAC,IAAI,IAAI,IAAI,CAAC;QAAC,IAAI,IAAI,IAAI,CAAC;IAC3C,CAAC;IACD,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACxH,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACzD,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAAC,GAAG,GAAG,CAAC,CAAC;QAAC,GAAG,GAAG,CAAC,CAAC;QAAC,GAAG,GAAG,CAAC,CAAC;IAAC,CAAC;SAAM,CAAC;QAAC,GAAG,IAAI,GAAG,CAAC;QAAC,GAAG,IAAI,GAAG,CAAC;QAAC,GAAG,IAAI,GAAG,CAAC;IAAC,CAAC;IAC5F,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;IACnG,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IAChE,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5B,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC;QAC5B,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,IAAI,EAAE,CAAC;QAAC,IAAI,IAAI,EAAE,CAAC;QAAC,IAAI,IAAI,EAAE,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,IAAI,IAAI,IAAI,CAAC;QAAC,IAAI,IAAI,IAAI,CAAC;QAAC,IAAI,IAAI,IAAI,CAAC;IAC3C,CAAC;IACD,4CAA4C;IAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IAClD,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IAClD,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IAClD,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IACnD,MAAM,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;IACjE,MAAM,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;IACjE,MAAM,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;IACjE,gEAAgE;IAChE,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IACrC,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IACrC,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAC3B,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EACvC,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CACrC,CAAC;IACF,+DAA+D;IAC/D,MAAM,IAAI,GAAG,UAAU,GAAG,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,cAAc,CAAC;IAC5B,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;IAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;IAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;IAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjG,MAAM,EAAE,GAAG,cAAc,CAAC;IAC1B,gBAAgB,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAE3C,8EAA8E;IAC9E,MAAM,GAAG,GAAG,IAAI,GAAG,KAAK,EAAE,GAAG,GAAG,IAAI,GAAG,KAAK,EAAE,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;IACjE,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC/C,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC/C,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC/C,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAChD,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;IAC/E,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;IAC/E,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;IAC/E,IAAI,IAAI,GAAG,SAAS,GAAG,GAAG,EAAE,IAAI,GAAG,SAAS,GAAG,GAAG,EAAE,IAAI,GAAG,SAAS,GAAG,GAAG,CAAC;IAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IAChE,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QAAC,IAAI,GAAG,CAAC,CAAC;QAAC,IAAI,GAAG,CAAC,CAAC;QAAC,IAAI,GAAG,CAAC,CAAC;IAAC,CAAC;SAAM,CAAC;QAAC,IAAI,IAAI,IAAI,CAAC;QAAC,IAAI,IAAI,IAAI,CAAC;QAAC,IAAI,IAAI,IAAI,CAAC;IAAC,CAAC;IACtG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;IACzD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IAChE,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QAAC,IAAI,GAAG,CAAC,CAAC;QAAC,IAAI,GAAG,CAAC,CAAC;QAAC,IAAI,GAAG,CAAC,CAAC;IAAC,CAAC;SAAM,CAAC;QAAC,IAAI,IAAI,IAAI,CAAC;QAAC,IAAI,IAAI,IAAI,CAAC;QAAC,IAAI,IAAI,IAAI,CAAC;IAAC,CAAC;IACtG,MAAM,EAAE,GAAG,cAAc,CAAC;IAC1B,uBAAuB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAEhE,MAAM,eAAe,GAAG,cAAc,CAAC;IACvC,gBAAgB,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IAClE,iBAAiB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IACtC,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;IAE/H,MAAM,iBAAiB,GAAG,cAAc,CAAC;IACzC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IACnE,MAAM,cAAc,GAAG,cAAc,CAAC;IACtC,gBAAgB,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACjE,iBAAiB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACrC,2EAA2E;IAC3E,wDAAwD;IACxD,MAAM,eAAe,GAAG,cAAc,CAAC;IACvC,IAAI,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;QACnD,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACjG,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1C,gBAAgB,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1D,iBAAiB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IACD,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAE9E,yEAAyE;IACzE,qEAAqE;IACrE,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACxD,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,cAAc,CAAC;QAC9B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjG,MAAM,UAAU,GAAG,cAAc,CAAC;QAClC,gBAAgB,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;QAClE,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACjC,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC9H,CAAC;AACH,CAAC"}
|
package/dist/Keyframe.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Keyframe.d.ts","sourceRoot":"","sources":["../../../../packages/animation/src/Keyframe.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACrD,MAAM,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7D,MAAM,MAAM,IAAI,GAAG,SAAS;IAC1B,MAAM;IAAE,MAAM;IAAE,MAAM;IAAE,MAAM;IAC9B,MAAM;IAAE,MAAM;IAAE,MAAM;IAAE,MAAM;IAC9B,MAAM;IAAE,MAAM;IAAE,MAAM;IAAE,MAAM;IAC9B,MAAM;IAAE,MAAM;IAAE,MAAM;IAAE,MAAM;CAC/B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,SAAS,MAAM,EAAE,CAAC;AAE5C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,WAAW,CAAC;AAEnF,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,aAAa,CAAC;AAElE,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI;IAC1E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;CACzB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,cAAc,EAAE,SAAS,EAAE,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAcnG;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAQxG;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,cAAc,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAE1G;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,cAAc,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAEzE;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAE1D;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAM3C;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAqB3D;AAED,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAED,wBAAgB,WAAW,CAAC,WAAW,GAAE,IAAgB,EAAE,QAAQ,GAAE,IAAmB,EAAE,KAAK,GAAE,IAAgB,GAAG,IAAI,CAoBvH;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"Keyframe.d.ts","sourceRoot":"","sources":["../../../../packages/animation/src/Keyframe.ts"],"names":[],"mappings":"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"}
|
package/dist/Keyframe.js
CHANGED
|
@@ -88,19 +88,20 @@ export function composeMat4(translation = [0, 0, 0], rotation = [0, 0, 0, 1], sc
|
|
|
88
88
|
];
|
|
89
89
|
}
|
|
90
90
|
export function multiplyMat4(a, b) {
|
|
91
|
+
// Column-major A·B — the convention `@aura3d/scene`'s multiplyMat4, every
|
|
92
|
+
// GLSL `mat4` consumer, and the palette writers read. The previous body
|
|
93
|
+
// indexed `a` row-major over column-major storage, computing B·A and
|
|
94
|
+
// leaving a non-affine row 3 in skinning palettes (06-QXX).
|
|
91
95
|
const out = new Array(16).fill(0);
|
|
92
|
-
for (let
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
a2 * b[col + 8] +
|
|
102
|
-
a3 * b[col + 12];
|
|
103
|
-
}
|
|
96
|
+
for (let col = 0; col < 4; col += 1) {
|
|
97
|
+
const b0 = b[col * 4];
|
|
98
|
+
const b1 = b[col * 4 + 1];
|
|
99
|
+
const b2 = b[col * 4 + 2];
|
|
100
|
+
const b3 = b[col * 4 + 3];
|
|
101
|
+
out[col * 4] = a[0] * b0 + a[4] * b1 + a[8] * b2 + a[12] * b3;
|
|
102
|
+
out[col * 4 + 1] = a[1] * b0 + a[5] * b1 + a[9] * b2 + a[13] * b3;
|
|
103
|
+
out[col * 4 + 2] = a[2] * b0 + a[6] * b1 + a[10] * b2 + a[14] * b3;
|
|
104
|
+
out[col * 4 + 3] = a[3] * b0 + a[7] * b1 + a[11] * b2 + a[15] * b3;
|
|
104
105
|
}
|
|
105
106
|
return out;
|
|
106
107
|
}
|