@tolokoban/tgd 2.0.118 → 2.0.121
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/dist/bounding-box.js +2 -2
- package/lib/dist/buffer/buffer.js +7 -9
- package/lib/dist/camera/camera-orthographic.d.ts +1 -0
- package/lib/dist/camera/camera-orthographic.d.ts.map +1 -1
- package/lib/dist/camera/camera-orthographic.js +13 -3
- package/lib/dist/camera/camera-perspective.d.ts +1 -0
- package/lib/dist/camera/camera-perspective.d.ts.map +1 -1
- package/lib/dist/camera/camera-perspective.js +13 -3
- package/lib/dist/camera/camera.d.ts +1 -0
- package/lib/dist/camera/camera.d.ts.map +1 -1
- package/lib/dist/camera/camera.js +7 -8
- package/lib/dist/canvas/gizmo/gizmo.js +16 -15
- package/lib/dist/canvas/landscape/landscape.js +8 -2
- package/lib/dist/code/math.js +6 -3
- package/lib/dist/code/noise.js +18 -6
- package/lib/dist/color/color.d.ts +1 -1
- package/lib/dist/color/color.d.ts.map +1 -1
- package/lib/dist/color/color.js +16 -2
- package/lib/dist/context/animation/animation-manager.d.ts +3 -0
- package/lib/dist/context/animation/animation-manager.d.ts.map +1 -1
- package/lib/dist/context/animation/animation-manager.js +10 -11
- package/lib/dist/context/console.d.ts +12 -0
- package/lib/dist/context/console.d.ts.map +1 -0
- package/lib/dist/context/console.js +31 -0
- package/lib/dist/context/context.d.ts +23 -1
- package/lib/dist/context/context.d.ts.map +1 -1
- package/lib/dist/context/context.js +65 -26
- package/lib/dist/context/webgl-params.d.ts +9 -3
- package/lib/dist/context/webgl-params.d.ts.map +1 -1
- package/lib/dist/context/webgl-params.js +39 -12
- package/lib/dist/controller/camera/orbit.js +26 -6
- package/lib/dist/dataset/dataset.d.ts.map +1 -1
- package/lib/dist/dataset/dataset.js +26 -35
- package/lib/dist/debug/console.js +6 -4
- package/lib/dist/debug/debug.js +5 -6
- package/lib/dist/factory/mesh-glb.d.ts +4 -6
- package/lib/dist/factory/mesh-glb.d.ts.map +1 -1
- package/lib/dist/factory/mesh-glb.js +6 -6
- package/lib/dist/filter/blur.js +14 -8
- package/lib/dist/filter/filter.js +2 -3
- package/lib/dist/filter/hue-rotation.js +2 -2
- package/lib/dist/geometry/geometry.js +7 -10
- package/lib/dist/geometry/grid.js +3 -3
- package/lib/dist/geometry/tools/marching-cubes/marching-cubes.d.ts +1 -1
- package/lib/dist/geometry/tools/marching-cubes/marching-cubes.d.ts.map +1 -1
- package/lib/dist/geometry/tools/marching-cubes/marching-cubes.js +2 -10
- package/lib/dist/input/gamepad.js +9 -17
- package/lib/dist/input/pointer.d.ts.map +1 -1
- package/lib/dist/input/pointer.js +53 -22
- package/lib/dist/light/light.js +2 -3
- package/lib/dist/loader/asset.js +11 -14
- package/lib/dist/loader/binary.js +44 -51
- package/lib/dist/loader/font.d.ts +13 -0
- package/lib/dist/loader/font.d.ts.map +1 -0
- package/lib/dist/loader/font.js +28 -0
- package/lib/dist/loader/image.js +13 -16
- package/lib/dist/loader/index.d.ts +1 -0
- package/lib/dist/loader/index.d.ts.map +1 -1
- package/lib/dist/loader/index.js +2 -1
- package/lib/dist/loader/video.js +13 -16
- package/lib/dist/log.js +2 -3
- package/lib/dist/material/camera-light.d.ts +1 -0
- package/lib/dist/material/camera-light.d.ts.map +1 -1
- package/lib/dist/material/camera-light.js +7 -3
- package/lib/dist/material/diffuse.js +2 -3
- package/lib/dist/material/flat.js +2 -3
- package/lib/dist/material/glass.js +6 -8
- package/lib/dist/material/global.js +6 -8
- package/lib/dist/material/gltf.d.ts +29 -0
- package/lib/dist/material/gltf.d.ts.map +1 -0
- package/lib/dist/material/gltf.js +186 -0
- package/lib/dist/material/hull.js +4 -5
- package/lib/dist/material/index.d.ts +2 -0
- package/lib/dist/material/index.d.ts.map +1 -1
- package/lib/dist/material/index.js +3 -1
- package/lib/dist/material/material.js +5 -2
- package/lib/dist/material/mirror.d.ts +18 -0
- package/lib/dist/material/mirror.d.ts.map +1 -0
- package/lib/dist/material/mirror.js +56 -0
- package/lib/dist/material/solid.js +2 -3
- package/lib/dist/material/toon.js +7 -7
- package/lib/dist/math/mat2.d.ts +1 -1
- package/lib/dist/math/mat2.d.ts.map +1 -1
- package/lib/dist/math/mat2.js +5 -5
- package/lib/dist/math/mat3.d.ts.map +1 -1
- package/lib/dist/math/mat3.js +4 -4
- package/lib/dist/math/mat4.js +3 -4
- package/lib/dist/math/transfo.js +11 -14
- package/lib/dist/math/vec4.d.ts +1 -0
- package/lib/dist/math/vec4.d.ts.map +1 -1
- package/lib/dist/math/vec4.js +18 -14
- package/lib/dist/painter/background/background.js +2 -2
- package/lib/dist/painter/clear.js +5 -6
- package/lib/dist/painter/filter/filter.js +9 -7
- package/lib/dist/painter/fragment-shader/fragment-shader.js +3 -5
- package/lib/dist/painter/framebuffer-msaa.js +5 -2
- package/lib/dist/painter/framebuffer.d.ts +1 -1
- package/lib/dist/painter/framebuffer.d.ts.map +1 -1
- package/lib/dist/painter/framebuffer.js +8 -11
- package/lib/dist/painter/gizmo/gizmo.d.ts.map +1 -1
- package/lib/dist/painter/gizmo/gizmo.js +5 -5
- package/lib/dist/painter/gizmo/painters/normal.js +4 -7
- package/lib/dist/painter/gizmo/painters/tips.d.ts.map +1 -1
- package/lib/dist/painter/gizmo/painters/tips.js +11 -13
- package/lib/dist/painter/group-camera.js +2 -3
- package/lib/dist/painter/group.js +6 -8
- package/lib/dist/painter/icon/icon.js +10 -8
- package/lib/dist/painter/icon/sprite.js +2 -3
- package/lib/dist/painter/lod/lod.js +26 -30
- package/lib/dist/painter/logic.js +2 -3
- package/lib/dist/painter/mesh/gltf/gltf.d.ts +28 -6
- package/lib/dist/painter/mesh/gltf/gltf.d.ts.map +1 -1
- package/lib/dist/painter/mesh/gltf/gltf.js +99 -53
- package/lib/dist/painter/mesh/mesh/mesh.js +24 -17
- package/lib/dist/painter/mix/mix.js +6 -7
- package/lib/dist/painter/node/node.js +11 -17
- package/lib/dist/painter/overlay/overlay.js +14 -19
- package/lib/dist/painter/painter.js +2 -2
- package/lib/dist/painter/points-cloud/points-cloud-morphing.js +12 -14
- package/lib/dist/painter/points-cloud/points-cloud.d.ts +2 -2
- package/lib/dist/painter/points-cloud/points-cloud.d.ts.map +1 -1
- package/lib/dist/painter/points-cloud/points-cloud.js +20 -21
- package/lib/dist/painter/program.js +24 -11
- package/lib/dist/painter/segments/segments-morphing.js +30 -14
- package/lib/dist/painter/segments/segments.d.ts +1 -1
- package/lib/dist/painter/segments/segments.d.ts.map +1 -1
- package/lib/dist/painter/segments/segments.js +34 -21
- package/lib/dist/painter/skybox/skybox.d.ts +18 -8
- package/lib/dist/painter/skybox/skybox.d.ts.map +1 -1
- package/lib/dist/painter/skybox/skybox.js +89 -44
- package/lib/dist/painter/sprites/accessor.js +2 -2
- package/lib/dist/painter/sprites/sprites-hue.js +18 -8
- package/lib/dist/painter/sprites/sprites.d.ts.map +1 -1
- package/lib/dist/painter/sprites/sprites.js +53 -21
- package/lib/dist/painter/state/state.d.ts +1 -1
- package/lib/dist/painter/state/state.d.ts.map +1 -1
- package/lib/dist/painter/state/state.js +6 -11
- package/lib/dist/painter/tubes/geometry.js +3 -4
- package/lib/dist/painter/tubes/tubes.js +3 -4
- package/lib/dist/painter/x-ray/background.js +2 -2
- package/lib/dist/painter/x-ray/x-ray.js +8 -5
- package/lib/dist/parser/gltf/gltf.d.ts +13 -5
- package/lib/dist/parser/gltf/gltf.d.ts.map +1 -1
- package/lib/dist/parser/gltf/gltf.js +113 -114
- package/lib/dist/parser/gltf/parser.d.ts.map +1 -1
- package/lib/dist/parser/gltf/parser.js +12 -1
- package/lib/dist/parser/mesh/wavefront.js +3 -5
- package/lib/dist/program/program.d.ts.map +1 -1
- package/lib/dist/program/program.js +6 -7
- package/lib/dist/reference-map.js +3 -5
- package/lib/dist/shader/code.js +2 -2
- package/lib/dist/texture/texture-cube.d.ts +20 -8
- package/lib/dist/texture/texture-cube.d.ts.map +1 -1
- package/lib/dist/texture/texture-cube.js +54 -2
- package/lib/dist/texture/texture2d.d.ts +10 -3
- package/lib/dist/texture/texture2d.d.ts.map +1 -1
- package/lib/dist/texture/texture2d.js +54 -52
- package/lib/dist/time/interval/interval.js +2 -3
- package/lib/dist/types/gltf.d.ts +2 -1
- package/lib/dist/types/gltf.d.ts.map +1 -1
- package/lib/dist/types/gltf.js +10 -4
- package/lib/dist/types/guards.js +2 -3
- package/lib/dist/types/input-pointer.d.ts +5 -0
- package/lib/dist/types/input-pointer.d.ts.map +1 -1
- package/lib/dist/types/texture-cube.d.ts +1 -0
- package/lib/dist/types/texture-cube.d.ts.map +1 -1
- package/lib/dist/uniform/ubo-camera.d.ts +2 -1
- package/lib/dist/uniform/ubo-camera.d.ts.map +1 -1
- package/lib/dist/uniform/ubo-camera.js +9 -2
- package/lib/dist/uniform/uniform-buffer-object.js +2 -2
- package/lib/dist/utils/action/camera.js +3 -4
- package/lib/dist/utils/animation/chain-transfo-interpolations.js +6 -2
- package/lib/dist/utils/animation/chain.js +12 -12
- package/lib/dist/utils/bbox.js +3 -3
- package/lib/dist/utils/canvas.js +3 -3
- package/lib/dist/utils/ensure.d.ts +2 -0
- package/lib/dist/utils/ensure.d.ts.map +1 -1
- package/lib/dist/utils/ensure.js +21 -5
- package/lib/dist/utils/fullscreen.js +31 -38
- package/lib/dist/utils/reference-map.js +3 -5
- package/lib/dist/utils/state/blend.d.ts +1 -1
- package/lib/dist/utils/state/blend.d.ts.map +1 -1
- package/lib/dist/utils/state/blend.js +28 -1
- package/lib/dist/utils/state/stencil.js +2 -2
- package/lib/dist/vao/vao.js +8 -9
- package/lib/dist/version.d.ts +1 -1
- package/lib/dist/version.js +1 -1
- package/lib/dist/wasm/function.js +2 -3
- package/lib/dist/wasm/index.js +16 -19
- package/lib/dist/wasm/wast.js +3 -4
- package/lib/dist/webgl/texture/texture2d.js +2 -3
- package/package.json +1 -1
- package/lib/dist/math/common.test.d.ts +0 -2
- package/lib/dist/math/common.test.d.ts.map +0 -1
- package/lib/dist/math/common.test.js +0 -22
- package/lib/dist/math/mat3.test.d.ts +0 -2
- package/lib/dist/math/mat3.test.d.ts.map +0 -1
- package/lib/dist/math/mat3.test.js +0 -32
- package/lib/dist/math/mat4.test.d.ts +0 -2
- package/lib/dist/math/mat4.test.d.ts.map +0 -1
- package/lib/dist/math/mat4.test.js +0 -57
- package/lib/dist/math/math.test.d.ts +0 -2
- package/lib/dist/math/math.test.d.ts.map +0 -1
- package/lib/dist/math/math.test.js +0 -23
- package/lib/dist/math/quat.test.d.ts +0 -3
- package/lib/dist/math/quat.test.d.ts.map +0 -1
- package/lib/dist/math/quat.test.js +0 -99
- package/lib/dist/math/vec3.test.d.ts +0 -2
- package/lib/dist/math/vec3.test.d.ts.map +0 -1
- package/lib/dist/math/vec3.test.js +0 -36
- package/lib/dist/math/vec4.test.d.ts +0 -2
- package/lib/dist/math/vec4.test.d.ts.map +0 -1
- package/lib/dist/math/vec4.test.js +0 -15
- package/lib/dist/painter/gizmo/painters/axes.1.d.ts +0 -14
- package/lib/dist/painter/gizmo/painters/axes.1.d.ts.map +0 -1
- package/lib/dist/painter/gizmo/painters/axes.1.js +0 -50
- package/lib/dist/painter/skybox/skybox.frag +0 -15
- package/lib/dist/painter/skybox/skybox.vert +0 -13
- package/lib/dist/utils/bbox.test.d.ts +0 -2
- package/lib/dist/utils/bbox.test.d.ts.map +0 -1
- package/lib/dist/utils/bbox.test.js +0 -45
- package/lib/dist/utils/template.test.d.ts +0 -2
- package/lib/dist/utils/template.test.d.ts.map +0 -1
- package/lib/dist/utils/template.test.js +0 -17
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
1
|
/**
|
|
3
2
|
* GLTF specs can be found here:
|
|
4
3
|
* https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html
|
|
@@ -12,51 +11,48 @@ import { TgdGeometry } from "./../../geometry/index.js";
|
|
|
12
11
|
import { tgdLoadImage, tgdLoadImageFromArrayBuffer } from "./../../loader/index.js";
|
|
13
12
|
import { TgdQuat, TgdTransfo, TgdVec3 } from "./../../math/index.js";
|
|
14
13
|
import { TgdTexture2D } from "./../../texture/index.js";
|
|
15
|
-
import { assertTgdFormatGltf, assertTgdTypeArrayForElements } from "./../../types/index.js";
|
|
14
|
+
import { assertTgdFormatGltf, assertTgdTypeArrayForElements, } from "./../../types/index.js";
|
|
16
15
|
import { isNumber } from "./../../types/guards.js";
|
|
17
16
|
const EMPTY_IMAGE = new Image();
|
|
18
17
|
export class TgdDataGlb {
|
|
19
|
-
static parse(content) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
18
|
+
static async parse(content) {
|
|
19
|
+
const blob = new Blob([content]);
|
|
20
|
+
const url = URL.createObjectURL(blob);
|
|
21
|
+
const gltfWithBuffers = await load(url, GLTFLoader, {
|
|
22
|
+
DracoLoader,
|
|
23
|
+
decompress: true,
|
|
24
|
+
decompressMeshes: true,
|
|
25
|
+
loadBuffers: true,
|
|
26
|
+
loadImages: true,
|
|
27
|
+
});
|
|
28
|
+
URL.revokeObjectURL(url);
|
|
29
|
+
const gltf = gltfWithBuffers.json;
|
|
30
|
+
const chunks = [];
|
|
31
|
+
for (const buffer of gltfWithBuffers.buffers) {
|
|
32
|
+
chunks.push(buffer.arrayBuffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength));
|
|
33
|
+
}
|
|
34
|
+
const images = [];
|
|
35
|
+
for (let imageIndex = 0; imageIndex < (gltf.images ?? []).length; imageIndex++) {
|
|
36
|
+
const image = gltf.images?.[imageIndex];
|
|
37
|
+
if (!image) {
|
|
38
|
+
images.push(EMPTY_IMAGE);
|
|
39
|
+
continue;
|
|
36
40
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (!image) {
|
|
41
|
-
images.push(EMPTY_IMAGE);
|
|
42
|
-
continue;
|
|
43
|
-
}
|
|
44
|
-
if (image.uri) {
|
|
45
|
-
images.push((_c = (yield tgdLoadImage(image.uri))) !== null && _c !== void 0 ? _c : EMPTY_IMAGE);
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
if (typeof image.bufferView !== "number") {
|
|
49
|
-
images.push(EMPTY_IMAGE);
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
// const buffer = this.getBufferViewData(image.bufferView, "Uint8")
|
|
53
|
-
const bufferView = (_d = gltf.bufferViews) === null || _d === void 0 ? void 0 : _d[image.bufferView];
|
|
54
|
-
if (!bufferView)
|
|
55
|
-
throw new Error(`No bufferView with index #${image.bufferView}!`);
|
|
56
|
-
images.push((_g = (yield tgdLoadImageFromArrayBuffer(chunks[bufferView.buffer].slice((_e = bufferView.byteOffset) !== null && _e !== void 0 ? _e : 0, ((_f = bufferView.byteOffset) !== null && _f !== void 0 ? _f : 0) + bufferView.byteLength)))) !== null && _g !== void 0 ? _g : EMPTY_IMAGE);
|
|
41
|
+
if (image.uri) {
|
|
42
|
+
images.push((await tgdLoadImage(image.uri)) ?? EMPTY_IMAGE);
|
|
43
|
+
continue;
|
|
57
44
|
}
|
|
58
|
-
|
|
59
|
-
|
|
45
|
+
if (typeof image.bufferView !== "number") {
|
|
46
|
+
images.push(EMPTY_IMAGE);
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
// const buffer = this.getBufferViewData(image.bufferView, "Uint8")
|
|
50
|
+
const bufferView = gltf.bufferViews?.[image.bufferView];
|
|
51
|
+
if (!bufferView)
|
|
52
|
+
throw new Error(`No bufferView with index #${image.bufferView}!`);
|
|
53
|
+
images.push((await tgdLoadImageFromArrayBuffer(chunks[bufferView.buffer].slice(bufferView.byteOffset ?? 0, (bufferView.byteOffset ?? 0) + bufferView.byteLength))) ?? EMPTY_IMAGE);
|
|
54
|
+
}
|
|
55
|
+
return new TgdDataGlb(gltf, chunks, images, content.byteLength);
|
|
60
56
|
}
|
|
61
57
|
/**
|
|
62
58
|
* @param content The binary content of a GLB file.
|
|
@@ -113,40 +109,35 @@ export class TgdDataGlb {
|
|
|
113
109
|
throw new Error(`Node "${name}" is not of type Camera!`);
|
|
114
110
|
}
|
|
115
111
|
getBufferViews() {
|
|
116
|
-
|
|
117
|
-
return (_a = this.json.bufferViews) !== null && _a !== void 0 ? _a : [];
|
|
112
|
+
return this.json.bufferViews ?? [];
|
|
118
113
|
}
|
|
119
114
|
getBufferView(bufferViewIndex) {
|
|
120
|
-
|
|
121
|
-
return (_a = this.json.bufferViews) === null || _a === void 0 ? void 0 : _a[bufferViewIndex];
|
|
115
|
+
return this.json.bufferViews?.[bufferViewIndex];
|
|
122
116
|
}
|
|
123
117
|
getCamera(cameraIndex) {
|
|
124
|
-
|
|
125
|
-
const camera = (_a = this.json.cameras) === null || _a === void 0 ? void 0 : _a[cameraIndex];
|
|
118
|
+
const camera = this.json.cameras?.[cameraIndex];
|
|
126
119
|
if (!camera) {
|
|
127
120
|
throw new Error(`Asset has no camera with index #${cameraIndex}!`);
|
|
128
121
|
}
|
|
129
122
|
return camera;
|
|
130
123
|
}
|
|
131
124
|
getImages() {
|
|
132
|
-
|
|
133
|
-
return (_a = this.json.images) !== null && _a !== void 0 ? _a : [];
|
|
125
|
+
return this.json.images ?? [];
|
|
134
126
|
}
|
|
135
127
|
getImage(imageIndexOrName) {
|
|
136
128
|
const { images } = this.json;
|
|
137
129
|
if (!images)
|
|
138
130
|
return;
|
|
139
131
|
if (typeof imageIndexOrName === "number")
|
|
140
|
-
return images
|
|
132
|
+
return images?.[imageIndexOrName];
|
|
141
133
|
return images.find((img) => img.name === imageIndexOrName);
|
|
142
134
|
}
|
|
143
135
|
getImageAsHTMLElement(imageIndexOrName) {
|
|
144
|
-
var _a;
|
|
145
136
|
const { images } = this.json;
|
|
146
137
|
if (!images)
|
|
147
138
|
return;
|
|
148
139
|
if (typeof imageIndexOrName === "number") {
|
|
149
|
-
return
|
|
140
|
+
return this.images[imageIndexOrName] ?? EMPTY_IMAGE;
|
|
150
141
|
}
|
|
151
142
|
for (let i = 0; i < images.length; i++) {
|
|
152
143
|
if (images[i].name === imageIndexOrName)
|
|
@@ -155,24 +146,20 @@ export class TgdDataGlb {
|
|
|
155
146
|
throw new Error(`There is no image with name "${imageIndexOrName}" in this GLB file!\nPossible names are: ${images.map((img) => img.name).join(", ")}.`);
|
|
156
147
|
}
|
|
157
148
|
getScenes() {
|
|
158
|
-
|
|
159
|
-
return (_a = this.json.scenes) !== null && _a !== void 0 ? _a : [];
|
|
149
|
+
return this.json.scenes ?? [];
|
|
160
150
|
}
|
|
161
151
|
getScene(sceneIndex) {
|
|
162
|
-
|
|
163
|
-
const scene = (_a = this.json.scenes) === null || _a === void 0 ? void 0 : _a[sceneIndex];
|
|
152
|
+
const scene = this.json.scenes?.[sceneIndex];
|
|
164
153
|
if (!scene) {
|
|
165
154
|
throw new Error(`Asset has no scene with index #${sceneIndex}!`);
|
|
166
155
|
}
|
|
167
156
|
return scene;
|
|
168
157
|
}
|
|
169
158
|
getNodes() {
|
|
170
|
-
|
|
171
|
-
return (_a = this.json.nodes) !== null && _a !== void 0 ? _a : [];
|
|
159
|
+
return this.json.nodes ?? [];
|
|
172
160
|
}
|
|
173
161
|
getNode(nodeIndex) {
|
|
174
|
-
|
|
175
|
-
const node = (_a = this.json.nodes) === null || _a === void 0 ? void 0 : _a[nodeIndex];
|
|
162
|
+
const node = this.json.nodes?.[nodeIndex];
|
|
176
163
|
if (!node) {
|
|
177
164
|
throw new Error(`Asset has no node with index #${nodeIndex}!`);
|
|
178
165
|
}
|
|
@@ -188,60 +175,57 @@ export class TgdDataGlb {
|
|
|
188
175
|
}
|
|
189
176
|
}
|
|
190
177
|
getNodeByNameOrThrow(nodeName) {
|
|
191
|
-
var _a;
|
|
192
178
|
const node = this.getNodeByName(nodeName);
|
|
193
179
|
if (node)
|
|
194
180
|
return node;
|
|
195
|
-
throw new Error(`Unknown node "${nodeName}"!\nAvailable names:${(
|
|
181
|
+
throw new Error(`Unknown node "${nodeName}"!\nAvailable names:${(this.json.nodes ?? [])
|
|
196
182
|
.map((node, index) => `\n - ${typeof node.name === "string" ? JSON.stringify(node.name) : `#${index}`}`)
|
|
197
183
|
.join("")}`);
|
|
198
184
|
}
|
|
199
185
|
getAccessor(accessorIndex = 0) {
|
|
200
|
-
|
|
201
|
-
const accessor = (_a = this.json.accessors) === null || _a === void 0 ? void 0 : _a[accessorIndex];
|
|
186
|
+
const accessor = this.json.accessors?.[accessorIndex];
|
|
202
187
|
if (!accessor) {
|
|
203
188
|
throw new Error(`Asset has no accessor with index #${accessorIndex}!`);
|
|
204
189
|
}
|
|
205
190
|
return accessor;
|
|
206
191
|
}
|
|
207
192
|
getMaterial(materialIndex) {
|
|
208
|
-
|
|
209
|
-
const material = (_a = this.json.materials) === null || _a === void 0 ? void 0 : _a[materialIndex];
|
|
193
|
+
const material = this.json.materials?.[materialIndex];
|
|
210
194
|
if (!material) {
|
|
211
195
|
throw new Error(`Asset has no material with index #${materialIndex}!`);
|
|
212
196
|
}
|
|
213
197
|
return material;
|
|
214
198
|
}
|
|
215
199
|
getMesh(meshIndexOrName = 0) {
|
|
216
|
-
var _a, _b;
|
|
217
200
|
if (typeof meshIndexOrName !== "number" && typeof meshIndexOrName !== "string")
|
|
218
201
|
return meshIndexOrName;
|
|
219
202
|
const mesh = typeof meshIndexOrName === "number"
|
|
220
|
-
?
|
|
221
|
-
: (
|
|
203
|
+
? this.json.meshes?.[meshIndexOrName]
|
|
204
|
+
: (this.json.meshes ?? []).find((item) => item.name === meshIndexOrName);
|
|
222
205
|
if (!mesh)
|
|
223
206
|
return undefined;
|
|
224
207
|
return mesh;
|
|
225
208
|
}
|
|
226
209
|
getMeshOrThrow(meshIndexOrName = 0) {
|
|
227
|
-
var _a, _b, _c;
|
|
228
210
|
if (typeof meshIndexOrName !== "number" && typeof meshIndexOrName !== "string")
|
|
229
211
|
return meshIndexOrName;
|
|
230
212
|
const mesh = typeof meshIndexOrName === "number"
|
|
231
|
-
?
|
|
232
|
-
: (
|
|
213
|
+
? this.json.meshes?.[meshIndexOrName]
|
|
214
|
+
: (this.json.meshes ?? []).find((item) => item.name === meshIndexOrName);
|
|
233
215
|
if (!mesh) {
|
|
234
|
-
throw new Error(`Asset has no mesh with index/name ${JSON.stringify(meshIndexOrName)}!\nAvailable names are: ${(
|
|
216
|
+
throw new Error(`Asset has no mesh with index/name ${JSON.stringify(meshIndexOrName)}!\nAvailable names are: ${(this.json.meshes ?? [])
|
|
217
|
+
.sort()
|
|
218
|
+
.map((mesh) => mesh.name)
|
|
219
|
+
.join(", ")}.`);
|
|
235
220
|
}
|
|
236
221
|
return mesh;
|
|
237
222
|
}
|
|
238
223
|
getMeshPrimitive(meshIndexOrName = 0, primitiveIndex = 0) {
|
|
239
|
-
var _a;
|
|
240
224
|
const mesh = typeof meshIndexOrName === "number" || typeof meshIndexOrName === "string"
|
|
241
225
|
? this.getMesh(meshIndexOrName)
|
|
242
226
|
: meshIndexOrName;
|
|
243
227
|
if (!mesh) {
|
|
244
|
-
throw new Error(`Asset has no mesh with index/name ${JSON.stringify(meshIndexOrName)}!\nAvailable names are: ${(
|
|
228
|
+
throw new Error(`Asset has no mesh with index/name ${JSON.stringify(meshIndexOrName)}!\nAvailable names are: ${(this.json.meshes ?? []).map((mesh) => mesh.name).join(", ")}.`);
|
|
245
229
|
}
|
|
246
230
|
const primitive = mesh.primitives[primitiveIndex];
|
|
247
231
|
if (!primitive) {
|
|
@@ -250,12 +234,11 @@ export class TgdDataGlb {
|
|
|
250
234
|
return primitive;
|
|
251
235
|
}
|
|
252
236
|
getMeshPrimitiveIndices(meshIndexOrName = 0, primitiveIndex = 0) {
|
|
253
|
-
var _a;
|
|
254
237
|
const primitive = this.getMeshPrimitive(meshIndexOrName, primitiveIndex);
|
|
255
238
|
const { indices } = primitive;
|
|
256
239
|
if (isNumber(indices)) {
|
|
257
240
|
const accessor = this.getAccessor(indices);
|
|
258
|
-
const elements = this.getBufferViewData(
|
|
241
|
+
const elements = this.getBufferViewData(accessor.bufferView ?? 0, accessor.componentType);
|
|
259
242
|
assertTgdTypeArrayForElements(elements);
|
|
260
243
|
return elements;
|
|
261
244
|
}
|
|
@@ -290,44 +273,40 @@ export class TgdDataGlb {
|
|
|
290
273
|
return attribute;
|
|
291
274
|
}
|
|
292
275
|
}
|
|
293
|
-
createTexture2D(context, textureIndex) {
|
|
294
|
-
|
|
295
|
-
const gltfTex = (_a = this.json.textures) === null || _a === void 0 ? void 0 : _a[textureIndex];
|
|
276
|
+
createTexture2D(context, textureIndex, color = [0, 0, 0, 1]) {
|
|
277
|
+
const gltfTex = this.json.textures?.[textureIndex];
|
|
296
278
|
if (!gltfTex) {
|
|
297
279
|
throw new Error(`Asset has no texture with index #${textureIndex}!`);
|
|
298
280
|
}
|
|
299
|
-
const source =
|
|
300
|
-
const texture = new TgdTexture2D(context).loadBitmap(this.images[source]);
|
|
281
|
+
const source = gltfTex.source ?? gltfTex.extensions?.EXT_texture_webp?.source ?? 0;
|
|
282
|
+
const texture = new TgdTexture2D(context, { color }).loadBitmap(this.images[source]);
|
|
301
283
|
return texture;
|
|
302
284
|
}
|
|
303
285
|
getBufferViewData(accessor, type = "Float32") {
|
|
304
|
-
var _a, _b, _c, _d, _e;
|
|
305
286
|
if (typeof accessor !== "number") {
|
|
306
|
-
return this.getBufferViewData(
|
|
287
|
+
return this.getBufferViewData(accessor.bufferView ?? 0, accessor.componentType);
|
|
307
288
|
}
|
|
308
289
|
const bufferViewIndex = accessor;
|
|
309
290
|
const fromCache = this.cacheBufferViewDatas.get(bufferViewIndex);
|
|
310
291
|
if (fromCache)
|
|
311
292
|
return fromCache;
|
|
312
293
|
const { json: gltf } = this;
|
|
313
|
-
const bufferView =
|
|
294
|
+
const bufferView = gltf.bufferViews?.[bufferViewIndex];
|
|
314
295
|
if (!bufferView)
|
|
315
296
|
throw new Error(`No bufferView with index #${bufferViewIndex}!`);
|
|
316
297
|
const buffer = this.chunks[bufferView.buffer];
|
|
317
|
-
const byteOffset =
|
|
298
|
+
const byteOffset = bufferView.byteOffset ?? 0;
|
|
318
299
|
const data = buffer.slice(byteOffset, byteOffset + bufferView.byteLength);
|
|
319
|
-
const view = figureOutView(data, convertTypeToNumber(
|
|
300
|
+
const view = figureOutView(data, convertTypeToNumber(type ?? this.findAccessorForBufferView(bufferViewIndex)?.componentType ?? "Float32"));
|
|
320
301
|
this.cacheBufferViewDatas.set(bufferViewIndex, view);
|
|
321
302
|
return view;
|
|
322
303
|
}
|
|
323
304
|
findAccessorForBufferView(bufferViewIndex) {
|
|
324
|
-
|
|
325
|
-
return ((_a = this.json.accessors) !== null && _a !== void 0 ? _a : []).find((accessor) => accessor.bufferView === bufferViewIndex);
|
|
305
|
+
return (this.json.accessors ?? []).find((accessor) => accessor.bufferView === bufferViewIndex);
|
|
326
306
|
}
|
|
327
307
|
setAttrib(dataset, attribName, meshIndexOrName = 0, primitiveIndex = 0, primitiveAttribName) {
|
|
328
|
-
var _a, _b, _c, _d;
|
|
329
308
|
const { json: gltf } = this;
|
|
330
|
-
const attribute =
|
|
309
|
+
const attribute = this.getMeshOrThrow(meshIndexOrName).primitives[primitiveIndex].attributes[primitiveAttribName ?? attribName] ?? -1;
|
|
331
310
|
if (!isNumber(attribute)) {
|
|
332
311
|
dataset.set(attribName, attribute.value, {
|
|
333
312
|
byteStride: attribute.size * 4,
|
|
@@ -336,12 +315,12 @@ export class TgdDataGlb {
|
|
|
336
315
|
});
|
|
337
316
|
return;
|
|
338
317
|
}
|
|
339
|
-
const accessor =
|
|
318
|
+
const accessor = gltf.accessors?.[attribute];
|
|
340
319
|
if (!accessor) {
|
|
341
|
-
throw new Error(`No attribute "${primitiveAttribName
|
|
320
|
+
throw new Error(`No attribute "${primitiveAttribName ?? attribName}" for primitive #${primitiveIndex} of mesh #${meshIndexOrName}!`);
|
|
342
321
|
}
|
|
343
|
-
const bufferViewIndex =
|
|
344
|
-
const bufferView =
|
|
322
|
+
const bufferViewIndex = accessor.bufferView ?? 0;
|
|
323
|
+
const bufferView = gltf.bufferViews?.[bufferViewIndex];
|
|
345
324
|
if (!bufferView) {
|
|
346
325
|
throw new Error(`No bufferView with index #${bufferViewIndex}!`);
|
|
347
326
|
}
|
|
@@ -352,42 +331,62 @@ export class TgdDataGlb {
|
|
|
352
331
|
count: accessor.count,
|
|
353
332
|
});
|
|
354
333
|
}
|
|
355
|
-
makeGeometry(
|
|
334
|
+
makeGeometry(options = {}) {
|
|
335
|
+
const { computeNormals, meshIndex = 0, primitiveIndex = 0, attPositionName = "POSITION", attNormalName = "NORMAL", attTextureCoordsName = "TEXCOORD_0", } = options;
|
|
336
|
+
try {
|
|
337
|
+
const dataset = this.makeDataset(options);
|
|
338
|
+
const elements = this.getMeshPrimitiveIndices(meshIndex, primitiveIndex);
|
|
339
|
+
return new TgdGeometry({
|
|
340
|
+
computeNormalsIfMissing: computeNormals,
|
|
341
|
+
dataset,
|
|
342
|
+
elements,
|
|
343
|
+
attPosition: attPositionName,
|
|
344
|
+
attNormal: attNormalName,
|
|
345
|
+
attUV: attTextureCoordsName,
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
catch (error) {
|
|
349
|
+
const message = error instanceof Error ? error.message : JSON.stringify(error);
|
|
350
|
+
throw new Error(`Error in primitive #${primitiveIndex} of mesh #${meshIndex}:\n${message}`);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
makeDataset({ meshIndex = 0, primitiveIndex = 0, attPositionName = "POSITION", attNormalName = "NORMAL", attTextureCoordsName = "TEXCOORD_0", } = {}) {
|
|
356
354
|
const primitive = this.getMeshPrimitive(meshIndex, primitiveIndex);
|
|
357
355
|
try {
|
|
358
356
|
const { attributes } = primitive;
|
|
359
357
|
if (!attributes)
|
|
360
358
|
throw new Error("No attributes found!");
|
|
361
|
-
const elements = this.getMeshPrimitiveIndices(meshIndex, primitiveIndex);
|
|
362
359
|
const definition = {
|
|
363
360
|
[attPositionName]: "vec3",
|
|
364
361
|
};
|
|
365
|
-
if (
|
|
362
|
+
if (attributes[attNormalName] !== undefined) {
|
|
366
363
|
definition[attNormalName] = "vec3";
|
|
367
364
|
}
|
|
368
|
-
if (
|
|
365
|
+
if (attributes[attTextureCoordsName] !== undefined) {
|
|
369
366
|
definition[attTextureCoordsName] = "vec2";
|
|
370
367
|
}
|
|
371
368
|
const dataset = new TgdDataset(definition);
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
dataset.set(attNormalName, returnFloat32Array(this.getBufferViewData(this.getAccessorByAttributeName(primitive, attNormalName))));
|
|
369
|
+
if (isNumber(attributes[attPositionName])) {
|
|
370
|
+
dataset.set(attPositionName, returnFloat32Array(this.getBufferViewData(this.getAccessorByAttributeName(primitive, attPositionName))));
|
|
375
371
|
}
|
|
376
|
-
|
|
377
|
-
dataset.set(
|
|
372
|
+
else {
|
|
373
|
+
dataset.set(attPositionName, attributes[attPositionName].value);
|
|
378
374
|
}
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
375
|
+
if (typeof definition[attNormalName] === "string") {
|
|
376
|
+
dataset.set(attNormalName, isNumber(attributes[attNormalName])
|
|
377
|
+
? returnFloat32Array(this.getBufferViewData(this.getAccessorByAttributeName(primitive, attNormalName)))
|
|
378
|
+
: attributes[attNormalName].value);
|
|
379
|
+
}
|
|
380
|
+
if (typeof definition[attTextureCoordsName] === "string") {
|
|
381
|
+
dataset.set(attTextureCoordsName, isNumber(attributes[attTextureCoordsName])
|
|
382
|
+
? returnFloat32Array(this.getBufferViewData(this.getAccessorByAttributeName(primitive, attTextureCoordsName)))
|
|
383
|
+
: attributes[attTextureCoordsName].value);
|
|
384
|
+
}
|
|
385
|
+
return dataset;
|
|
387
386
|
}
|
|
388
387
|
catch (error) {
|
|
389
388
|
const message = error instanceof Error ? error.message : JSON.stringify(error);
|
|
390
|
-
throw new Error(`Error in primitive #${primitiveIndex} of mesh
|
|
389
|
+
throw new Error(`Error in primitive #${primitiveIndex} of mesh ${typeof meshIndex === "number" ? `#${meshIndex}` : JSON.stringify(meshIndex)}:\n${message}`);
|
|
391
390
|
}
|
|
392
391
|
}
|
|
393
392
|
}
|
|
@@ -430,4 +429,4 @@ function returnFloat32Array(data) {
|
|
|
430
429
|
return data;
|
|
431
430
|
throw new Error("We were expecting a Float32Array!");
|
|
432
431
|
}
|
|
433
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x0Zi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJzZXIvZ2x0Zi9nbHRmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7QUFDSCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQy9DLE9BQU8sRUFBYSxVQUFVLEVBQXdCLE1BQU0sa0JBQWtCLENBQUE7QUFDOUUsT0FBTyxFQUFrQixvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVsRSxPQUFPLEVBQUUsVUFBVSxFQUE2QixNQUFNLGNBQWMsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQTBCLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSw2QkFBNkIsRUFBZ0MsTUFBTSxZQUFZLENBQUE7QUFlN0csT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRTVDLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7QUFFL0IsTUFBTSxPQUFPLFVBQVU7SUFDWixNQUFNLENBQU8sS0FBSyxDQUFDLE9BQW9COzs7WUFDMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1lBQ2hDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDckMsTUFBTSxlQUFlLEdBQW9CLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUU7Z0JBQ2pFLFdBQVc7Z0JBQ1gsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLGdCQUFnQixFQUFFLElBQUk7Z0JBQ3RCLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixVQUFVLEVBQUUsSUFBSTthQUNuQixDQUFDLENBQUE7WUFDRixHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ3hCLE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUE7WUFDakMsTUFBTSxNQUFNLEdBQWtCLEVBQUUsQ0FBQTtZQUNoQyxLQUFLLE1BQU0sTUFBTSxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7WUFDbkcsQ0FBQztZQUNELE1BQU0sTUFBTSxHQUF1QixFQUFFLENBQUE7WUFDckMsS0FBSyxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsTUFBQSxJQUFJLENBQUMsTUFBTSxtQ0FBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDN0UsTUFBTSxLQUFLLEdBQUcsTUFBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRyxVQUFVLENBQUMsQ0FBQTtnQkFDdkMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNULE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7b0JBQ3hCLFNBQVE7Z0JBQ1osQ0FBQztnQkFFRCxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDWixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQUEsQ0FBQyxNQUFNLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsbUNBQUksV0FBVyxDQUFDLENBQUE7b0JBQzNELFNBQVE7Z0JBQ1osQ0FBQztnQkFFRCxJQUFJLE9BQU8sS0FBSyxDQUFDLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDdkMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtvQkFDeEIsU0FBUTtnQkFDWixDQUFDO2dCQUVELG1FQUFtRTtnQkFDbkUsTUFBTSxVQUFVLEdBQUcsTUFBQSxJQUFJLENBQUMsV0FBVywwQ0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7Z0JBQ3ZELElBQUksQ0FBQyxVQUFVO29CQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFBO2dCQUVsRixNQUFNLENBQUMsSUFBSSxDQUNQLE1BQUEsQ0FBQyxNQUFNLDJCQUEyQixDQUM5QixNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FDM0IsTUFBQSxVQUFVLENBQUMsVUFBVSxtQ0FBSSxDQUFDLEVBQzFCLENBQUMsTUFBQSxVQUFVLENBQUMsVUFBVSxtQ0FBSSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUN2RCxDQUNKLENBQUMsbUNBQUksV0FBVyxDQUNwQixDQUFBO1lBQ0wsQ0FBQztZQUNELE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ25FLENBQUM7S0FBQTtJQVNEOztPQUVHO0lBQ0gsWUFDSSxJQUFVLEVBQ08sTUFBcUIsRUFDckIsTUFBMEIsRUFDM0IsUUFBZ0I7UUFGZixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFabkIseUJBQW9CLEdBQUcsSUFBSSxHQUFHLEVBRzVDLENBQUE7UUFXQyxJQUFJLENBQUM7WUFDRCxpQ0FBaUM7WUFDakMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7WUFDaEIsNEJBQTRCO1lBQzVCLHNDQUFzQztRQUMxQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE1BQU0sT0FBTyxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDOUUsT0FBTyxDQUFDLEtBQUssQ0FBQywrQ0FBK0MsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUNwRSxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQ3BFLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNILE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBRUQscUJBQXFCLENBQUMsSUFBdUI7UUFDekMsTUFBTSxPQUFPLEdBQStCLEVBQUUsQ0FBQTtRQUM5QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNwRCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ3RFLElBQUksSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN2RCxPQUFPLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFZO1FBQzNCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM1QyxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUMxQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssYUFBYSxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sV0FBVyxHQUFHLElBQUksb0JBQW9CLENBQUM7b0JBQ3pDLElBQUk7b0JBQ0osSUFBSSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSztvQkFDOUIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSTtvQkFDNUIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSTtvQkFDN0IsT0FBTyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7aUJBQzVDLENBQUMsQ0FBQTtnQkFDRixPQUFPLFdBQVcsQ0FBQTtZQUN0QixDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQywrREFBK0QsQ0FBQyxDQUFBO1FBQ3BGLENBQUM7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxJQUFJLDBCQUEwQixDQUFDLENBQUE7SUFDNUQsQ0FBQztJQUVELGNBQWM7O1FBQ1YsT0FBTyxNQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxtQ0FBSSxFQUFFLENBQUE7SUFDdEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxlQUF1Qjs7UUFDakMsT0FBTyxNQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVywwQ0FBRyxlQUFlLENBQUMsQ0FBQTtJQUNuRCxDQUFDO0lBRUQsU0FBUyxDQUFDLFdBQW1COztRQUN6QixNQUFNLE1BQU0sR0FBRyxNQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTywwQ0FBRyxXQUFXLENBQUMsQ0FBQTtRQUMvQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxXQUFXLEdBQUcsQ0FBQyxDQUFBO1FBQ3RFLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQTtJQUNqQixDQUFDO0lBRUQsU0FBUzs7UUFDTCxPQUFPLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLG1DQUFJLEVBQUUsQ0FBQTtJQUNqQyxDQUFDO0lBRUQsUUFBUSxDQUFDLGdCQUFpQztRQUN0QyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTtRQUM1QixJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU07UUFFbkIsSUFBSSxPQUFPLGdCQUFnQixLQUFLLFFBQVE7WUFBRSxPQUFPLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRyxnQkFBZ0IsQ0FBQyxDQUFBO1FBRTNFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQzlELENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxnQkFBaUM7O1FBQ25ELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO1FBQzVCLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTTtRQUVuQixJQUFJLE9BQU8sZ0JBQWdCLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdkMsT0FBTyxNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsbUNBQUksV0FBVyxDQUFBO1FBQ3ZELENBQUM7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3JDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxnQkFBZ0I7Z0JBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2xFLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUNYLGdDQUFnQyxnQkFBZ0IsNENBQTRDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDMUksQ0FBQTtJQUNMLENBQUM7SUFFRCxTQUFTOztRQUNMLE9BQU8sTUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sbUNBQUksRUFBRSxDQUFBO0lBQ2pDLENBQUM7SUFFRCxRQUFRLENBQUMsVUFBa0I7O1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLDBDQUFHLFVBQVUsQ0FBQyxDQUFBO1FBQzVDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLFVBQVUsR0FBRyxDQUFDLENBQUE7UUFDcEUsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFBO0lBQ2hCLENBQUM7SUFFRCxRQUFROztRQUNKLE9BQU8sTUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssbUNBQUksRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxPQUFPLENBQUMsU0FBaUI7O1FBQ3JCLE1BQU0sSUFBSSxHQUFHLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLDBDQUFHLFNBQVMsQ0FBQyxDQUFBO1FBQ3pDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLFNBQVMsR0FBRyxDQUFDLENBQUE7UUFDbEUsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUFnQjtRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUM3QixJQUFJLENBQUMsS0FBSztZQUFFLE9BQU07UUFFbEIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN2QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUTtnQkFBRSxPQUFPLElBQUksQ0FBQTtRQUMzQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG9CQUFvQixDQUFDLFFBQWdCOztRQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3pDLElBQUksSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFBO1FBRXJCLE1BQU0sSUFBSSxLQUFLLENBQ1gsaUJBQWlCLFFBQVEsdUJBQXVCLENBQUMsTUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssbUNBQUksRUFBRSxDQUFDO2FBQ2xFLEdBQUcsQ0FDQSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLFNBQVMsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLEVBQUUsQ0FDdEc7YUFDQSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDbEIsQ0FBQTtJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsYUFBYSxHQUFHLENBQUM7O1FBQ3pCLE1BQU0sUUFBUSxHQUFHLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLDBDQUFHLGFBQWEsQ0FBQyxDQUFBO1FBQ3JELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLGFBQWEsR0FBRyxDQUFDLENBQUE7UUFDMUUsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFBO0lBQ25CLENBQUM7SUFFRCxXQUFXLENBQUMsYUFBcUI7O1FBQzdCLE1BQU0sUUFBUSxHQUFHLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLDBDQUFHLGFBQWEsQ0FBQyxDQUFBO1FBQ3JELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLGFBQWEsR0FBRyxDQUFDLENBQUE7UUFDMUUsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFBO0lBQ25CLENBQUM7SUFFRCxPQUFPLENBQUMsa0JBQXVELENBQUM7O1FBQzVELElBQUksT0FBTyxlQUFlLEtBQUssUUFBUSxJQUFJLE9BQU8sZUFBZSxLQUFLLFFBQVE7WUFBRSxPQUFPLGVBQWUsQ0FBQTtRQUV0RyxNQUFNLElBQUksR0FDTixPQUFPLGVBQWUsS0FBSyxRQUFRO1lBQy9CLENBQUMsQ0FBQyxNQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSwwQ0FBRyxlQUFlLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUMsTUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sbUNBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxDQUFBO1FBQ2hGLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxTQUFTLENBQUE7UUFFM0IsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO0lBRUQsY0FBYyxDQUFDLGtCQUF1RCxDQUFDOztRQUNuRSxJQUFJLE9BQU8sZUFBZSxLQUFLLFFBQVEsSUFBSSxPQUFPLGVBQWUsS0FBSyxRQUFRO1lBQUUsT0FBTyxlQUFlLENBQUE7UUFFdEcsTUFBTSxJQUFJLEdBQ04sT0FBTyxlQUFlLEtBQUssUUFBUTtZQUMvQixDQUFDLENBQUMsTUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sMENBQUcsZUFBZSxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFDLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLG1DQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsQ0FBQTtRQUNoRixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDUixNQUFNLElBQUksS0FBSyxDQUNYLHFDQUFxQyxJQUFJLENBQUMsU0FBUyxDQUMvQyxlQUFlLENBQ2xCLDJCQUEyQixDQUFDLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLG1DQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUM5RixDQUFBO1FBQ0wsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUVELGdCQUFnQixDQUNaLGtCQUF1RCxDQUFDLEVBQ3hELGNBQWMsR0FBRyxDQUFDOztRQUVsQixNQUFNLElBQUksR0FDTixPQUFPLGVBQWUsS0FBSyxRQUFRLElBQUksT0FBTyxlQUFlLEtBQUssUUFBUTtZQUN0RSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7WUFDL0IsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUN6QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDUixNQUFNLElBQUksS0FBSyxDQUNYLHFDQUFxQyxJQUFJLENBQUMsU0FBUyxDQUMvQyxlQUFlLENBQ2xCLDJCQUEyQixDQUFDLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLG1DQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUM5RixDQUFBO1FBQ0wsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDakQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsY0FBYyxZQUFZLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzVHLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQTtJQUNwQixDQUFDO0lBRUQsdUJBQXVCLENBQ25CLGtCQUF1RCxDQUFDLEVBQ3hELGNBQWMsR0FBRyxDQUFDOztRQUVsQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFBO1FBQ3hFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUE7UUFDN0IsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNwQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQzFDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFBLFFBQVEsQ0FBQyxVQUFVLG1DQUFJLENBQUMsRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUE7WUFDekYsNkJBQTZCLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDdkMsT0FBTyxRQUFRLENBQUE7UUFDbkIsQ0FBQztRQUNELElBQUksT0FBTyxFQUFFLENBQUM7WUFDVixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFBO1lBQzlCLDZCQUE2QixDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ3ZDLE9BQU8sUUFBUSxDQUFBO1FBQ25CLENBQUM7UUFDRCxPQUFPLElBQUksVUFBVSxFQUFFLENBQUE7SUFDM0IsQ0FBQztJQUVELDBCQUEwQixDQUN0QixTQUFxQyxFQUNyQyxVQUFrQjtRQUVsQixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsU0FBUyxDQUFBO1FBQ2hDLElBQUksQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO1FBQzNDLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDeEMsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLFNBQVMsQ0FDZiwyQkFBMkIsVUFBVSw0QkFBNEIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7aUJBQ25GLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ3JCLENBQUE7UUFDTCxDQUFDO1FBQ0QsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUM7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ3RDLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNiLE1BQU0sT0FBTyxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQzlFLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxVQUFVLHlDQUF5QyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1lBQy9GLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sU0FBUyxDQUFBO1FBQ3BCLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQW1CLEVBQUUsWUFBb0I7O1FBQ3JELE1BQU0sT0FBTyxHQUFHLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLDBDQUFHLFlBQVksQ0FBQyxDQUFBO1FBQ2xELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLFlBQVksR0FBRyxDQUFDLENBQUE7UUFDeEUsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLE1BQUEsTUFBQSxPQUFPLENBQUMsTUFBTSxtQ0FBSSxNQUFBLE1BQUEsT0FBTyxDQUFDLFVBQVUsMENBQUUsZ0JBQWdCLDBDQUFFLE1BQU0sbUNBQUksQ0FBQyxDQUFBO1FBQ2xGLE1BQU0sT0FBTyxHQUFHLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFDekUsT0FBTyxPQUFPLENBQUE7SUFDbEIsQ0FBQztJQVNELGlCQUFpQixDQUNiLFFBQXdDLEVBQ3hDLE9BQThFLFNBQVM7O1FBRXZGLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBQSxRQUFRLENBQUMsVUFBVSxtQ0FBSSxDQUFDLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQ25GLENBQUM7UUFDRCxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUE7UUFDaEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUNoRSxJQUFJLFNBQVM7WUFBRSxPQUFPLFNBQVMsQ0FBQTtRQUUvQixNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQTtRQUMzQixNQUFNLFVBQVUsR0FBRyxNQUFBLElBQUksQ0FBQyxXQUFXLDBDQUFHLGVBQWUsQ0FBQyxDQUFBO1FBQ3RELElBQUksQ0FBQyxVQUFVO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsZUFBZSxHQUFHLENBQUMsQ0FBQTtRQUVqRixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUM3QyxNQUFNLFVBQVUsR0FBRyxNQUFBLFVBQVUsQ0FBQyxVQUFVLG1DQUFJLENBQUMsQ0FBQTtRQUM3QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ3pFLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FDdEIsSUFBSSxFQUNKLG1CQUFtQixDQUFDLE1BQUEsSUFBSSxhQUFKLElBQUksY0FBSixJQUFJLEdBQUksTUFBQSxJQUFJLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLDBDQUFFLGFBQWEsbUNBQUksU0FBUyxDQUFDLENBQzNHLENBQUE7UUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUNwRCxPQUFPLElBQUksQ0FBQTtJQUNmLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxlQUF1Qjs7UUFDN0MsT0FBTyxDQUFDLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLG1DQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsS0FBSyxlQUFlLENBQUMsQ0FBQTtJQUNsRyxDQUFDO0lBRUQsU0FBUyxDQUNMLE9BQW1CLEVBQ25CLFVBQWtCLEVBQ2xCLGtCQUF1RCxDQUFDLEVBQ3hELGNBQWMsR0FBRyxDQUFDLEVBQ2xCLG1CQUE0Qjs7UUFFNUIsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUE7UUFDM0IsTUFBTSxTQUFTLEdBQ1gsTUFBQSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxVQUFVLENBQ3RFLG1CQUFtQixhQUFuQixtQkFBbUIsY0FBbkIsbUJBQW1CLEdBQUksVUFBVSxDQUNwQyxtQ0FBSSxDQUFDLENBQUMsQ0FBQTtRQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsS0FBSyxFQUFFO2dCQUNyQyxVQUFVLEVBQUUsU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDO2dCQUM5QixVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQVU7Z0JBQ2hDLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSzthQUN6QixDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1YsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUcsU0FBUyxDQUFDLENBQUE7UUFDNUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FDWCxpQkFDSSxtQkFBbUIsYUFBbkIsbUJBQW1CLGNBQW5CLG1CQUFtQixHQUFJLFVBQzNCLG9CQUFvQixjQUFjLGFBQWEsZUFBZSxHQUFHLENBQ3BFLENBQUE7UUFDTCxDQUFDO1FBRUQsTUFBTSxlQUFlLEdBQUcsTUFBQSxRQUFRLENBQUMsVUFBVSxtQ0FBSSxDQUFDLENBQUE7UUFDaEQsTUFBTSxVQUFVLEdBQUcsTUFBQSxJQUFJLENBQUMsV0FBVywwQ0FBRyxlQUFlLENBQUMsQ0FBQTtRQUN0RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixlQUFlLEdBQUcsQ0FBQyxDQUFBO1FBQ3BFLENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUM1RSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUU7WUFDMUIsVUFBVSxFQUFFLFVBQVUsQ0FBQyxVQUFVO1lBQ2pDLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtZQUMvQixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7U0FDeEIsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELFlBQVksQ0FBQyxFQUNULGNBQWMsRUFDZCxTQUFTLEdBQUcsQ0FBQyxFQUNiLGNBQWMsR0FBRyxDQUFDLEVBQ2xCLGVBQWUsR0FBRyxVQUFVLEVBQzVCLGFBQWEsR0FBRyxRQUFRLEVBQ3hCLG9CQUFvQixHQUFHLFlBQVksTUFRbkMsRUFBRTtRQUNGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUE7UUFDbEUsSUFBSSxDQUFDO1lBQ0QsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLFNBQVMsQ0FBQTtZQUNoQyxJQUFJLENBQUMsVUFBVTtnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUE7WUFDeEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQTtZQUN4RSxNQUFNLFVBQVUsR0FBeUI7Z0JBQ3JDLENBQUMsZUFBZSxDQUFDLEVBQUUsTUFBTTthQUM1QixDQUFBO1lBQ0QsSUFBSSxPQUFPLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDaEQsVUFBVSxDQUFDLGFBQWEsQ0FBQyxHQUFHLE1BQU0sQ0FBQTtZQUN0QyxDQUFDO1lBQ0QsSUFBSSxPQUFPLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN2RCxVQUFVLENBQUMsb0JBQW9CLENBQUMsR0FBRyxNQUFNLENBQUE7WUFDN0MsQ0FBQztZQUNELE1BQU0sT0FBTyxHQUFHLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQ1AsZUFBZSxFQUNmLGtCQUFrQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FDMUcsQ0FBQTtZQUNELElBQUksT0FBTyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ2hELE9BQU8sQ0FBQyxHQUFHLENBQ1AsYUFBYSxFQUNiLGtCQUFrQixDQUNkLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQ3BGLENBQ0osQ0FBQTtZQUNMLENBQUM7WUFDRCxJQUFJLE9BQU8sVUFBVSxDQUFDLG9CQUFvQixDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3ZELE9BQU8sQ0FBQyxHQUFHLENBQ1Asb0JBQW9CLEVBQ3BCLGtCQUFrQixDQUNkLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsU0FBUyxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FDM0YsQ0FDSixDQUFBO1lBQ0wsQ0FBQztZQUNELE9BQU8sSUFBSSxXQUFXLENBQUM7Z0JBQ25CLHVCQUF1QixFQUFFLGNBQWM7Z0JBQ3ZDLE9BQU87Z0JBQ1AsUUFBUTtnQkFDUixXQUFXLEVBQUUsZUFBZTtnQkFDNUIsU0FBUyxFQUFFLGFBQWE7Z0JBQ3hCLEtBQUssRUFBRSxvQkFBb0I7YUFDOUIsQ0FBQyxDQUFBO1FBQ04sQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDYixNQUFNLE9BQU8sR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQzlFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLGNBQWMsYUFBYSxTQUFTLE1BQU0sT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUMvRixDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBRUQsU0FBUyxhQUFhLENBQUMsSUFBaUIsRUFBRSxhQUFxQjtJQUMzRCxRQUFRLGFBQWEsRUFBRSxDQUFDO1FBQ3BCLEtBQUssSUFBSTtZQUNMLE9BQU8sSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDOUIsS0FBSyxJQUFJO1lBQ0wsT0FBTyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMvQixLQUFLLElBQUk7WUFDTCxPQUFPLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQy9CLEtBQUssSUFBSTtZQUNMLE9BQU8sSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDaEMsS0FBSyxJQUFJO1lBQ0wsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNoQztZQUNJLE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDckMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLElBQXFCO0lBQzlDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUTtRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRXpDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDWCxLQUFLLE1BQU07WUFDUCxPQUFPLElBQUksQ0FBQTtRQUNmLEtBQUssT0FBTztZQUNSLE9BQU8sSUFBSSxDQUFBO1FBQ2YsS0FBSyxPQUFPO1lBQ1IsT0FBTyxJQUFJLENBQUE7UUFDZixLQUFLLFFBQVE7WUFDVCxPQUFPLElBQUksQ0FBQTtRQUNmLEtBQUssUUFBUTtZQUNULE9BQU8sSUFBSSxDQUFBO1FBQ2Y7WUFDSSxPQUFPLHNCQUFzQixDQUFDLEtBQUssQ0FBQTtJQUMzQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsSUFBYTtJQUNyQyxJQUFJLElBQUksWUFBWSxZQUFZO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFFN0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO0FBQ3hELENBQUMifQ==
|
|
432
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x0Zi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJzZXIvZ2x0Zi9nbHRmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDL0MsT0FBTyxFQUFhLFVBQVUsRUFBd0IsTUFBTSxrQkFBa0IsQ0FBQTtBQUM5RSxPQUFPLEVBQWtCLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBR2xFLE9BQU8sRUFBRSxVQUFVLEVBQTZCLE1BQU0sY0FBYyxDQUFBO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBMEIsT0FBTyxFQUFXLE1BQU0sV0FBVyxDQUFBO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDM0MsT0FBTyxFQUVILG1CQUFtQixFQUNuQiw2QkFBNkIsR0FFaEMsTUFBTSxZQUFZLENBQUE7QUFlbkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRTVDLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7QUFFL0IsTUFBTSxPQUFPLFVBQVU7SUFDWixNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFvQjtRQUMxQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFDaEMsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNyQyxNQUFNLGVBQWUsR0FBb0IsTUFBTSxJQUFJLENBQUMsR0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/parser/gltf/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAuB,MAAM,kBAAkB,CAAA;AAErE;;GAEG;AAEH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG;IACzC,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAA;KAAE,CAAC,CAAA;CAC5D,
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/parser/gltf/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAuB,MAAM,kBAAkB,CAAA;AAErE;;GAEG;AAEH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG;IACzC,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAA;KAAE,CAAC,CAAA;CAC5D,CA4CA"}
|
|
@@ -30,6 +30,7 @@ export function parseGLB(data) {
|
|
|
30
30
|
try {
|
|
31
31
|
const object = JSON.parse(json);
|
|
32
32
|
assertTgdFormatGltf(object);
|
|
33
|
+
addMissingMeshNames(object);
|
|
33
34
|
gltf = object;
|
|
34
35
|
chunkTypes.push({ type: "JSON", size: chunkData.byteLength });
|
|
35
36
|
}
|
|
@@ -49,4 +50,14 @@ export function parseGLB(data) {
|
|
|
49
50
|
}
|
|
50
51
|
return { gltf, chunks, chunkTypes };
|
|
51
52
|
}
|
|
52
|
-
|
|
53
|
+
function addMissingMeshNames(object) {
|
|
54
|
+
const { meshes } = object;
|
|
55
|
+
if (!meshes)
|
|
56
|
+
return;
|
|
57
|
+
for (let index = 0; index < meshes.length; index++) {
|
|
58
|
+
const mesh = meshes[index];
|
|
59
|
+
if (!mesh.name)
|
|
60
|
+
mesh.name = `mesh_${index}`;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhcnNlci9nbHRmL3BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFckU7O0dBRUc7QUFFSCxNQUFNLFVBQVUsUUFBUSxDQUFDLElBQWlCO0lBS3RDLE1BQU0sSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9CLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzNDLElBQUksV0FBVyxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQTtJQUN6RCxDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdkMsSUFBSSxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsT0FBTyxHQUFHLENBQUMsQ0FBQTtJQUN6RixDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdEMsSUFBSSxJQUFJLEdBQUcsRUFBbUIsQ0FBQTtJQUM5QixNQUFNLE1BQU0sR0FBa0IsRUFBRSxDQUFBO0lBQ2hDLE1BQU0sVUFBVSxHQUFrRCxFQUFFLENBQUE7SUFDcEUsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFBO0lBQ2YsT0FBTyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDckIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDaEQsTUFBTSxJQUFJLENBQUMsQ0FBQTtRQUNYLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzlDLE1BQU0sSUFBSSxDQUFDLENBQUE7UUFDWCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUE7UUFDMUQsTUFBTSxJQUFJLFdBQVcsQ0FBQTtRQUNyQixJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUMzQix5QkFBeUI7WUFDekIsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDaEQsSUFBSSxDQUFDO2dCQUNELE1BQU0sTUFBTSxHQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQ3hDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUMzQixtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFDM0IsSUFBSSxHQUFHLE1BQU0sQ0FBQTtnQkFDYixVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUE7WUFDakUsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDdEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQkFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFBO1lBQ3RELENBQUM7UUFDTCxDQUFDO2FBQU0sSUFBSSxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDbEMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUN0QixVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUE7UUFDaEUsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ2xHLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUE7QUFDdkMsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsTUFBcUI7SUFDOUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQTtJQUN6QixJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU07SUFFbkIsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNqRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLEtBQUssRUFBRSxDQUFBO0lBQy9DLENBQUM7QUFDTCxDQUFDIn0=
|